# @api-components/api-view-model-transformer

> AMF model transformer to a form view model used in API components.

Latest version **4.2.2** (published 2020-11-11) · Apache-2.0 license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install @api-components/api-view-model-transformer
pnpm add @api-components/api-view-model-transformer
yarn add @api-components/api-view-model-transformer
bun add @api-components/api-view-model-transformer
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 4.2.2 |
| Published | 2020-11-11 |
| First published | 2018-05-18 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 4 |
| Unpacked size | 176.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | lbauret, twoplustwoone, jarrodek |
| Keywords | web-components, api-console, api-components, model-helper |

## Links

- npm: https://www.npmjs.com/package/@api-components/api-view-model-transformer
- Repository: https://github.com/advanced-rest-client/api-view-model-tranformer
- Homepage: https://github.com/advanced-rest-client/api-view-model-tranformer#readme
- Issues: https://github.com/advanced-rest-client/api-view-model-tranformer/issues
- npm.io page: https://npm.io/package/@api-components/api-view-model-transformer

## Dependencies (4)

- [lit-element](https://npm.io/package/lit-element.md) ^2.4.0
- [@api-components/amf-helper-mixin](https://npm.io/package/@api-components/amf-helper-mixin.md) ^4.2.0
- [@api-components/api-example-generator](https://npm.io/package/@api-components/api-example-generator.md) ^4.4.5
- [@advanced-rest-client/events-target-mixin](https://npm.io/package/@advanced-rest-client/events-target-mixin.md) ^3.2.3

## Alternatives

- [lodash.assign](https://npm.io/package/lodash.assign.md) — 2.3M weekly downloads
- [lodash.chunk](https://npm.io/package/lodash.chunk.md) — 1.8M weekly downloads
- [react-native-ios-utilities](https://npm.io/package/react-native-ios-utilities.md) — 138.5K weekly downloads
- [@technically/lodash](https://npm.io/package/@technically/lodash.md) — 50.9K weekly downloads
- [@fluid-topics/ft-icon](https://npm.io/package/@fluid-topics/ft-icon.md) — 20.6K weekly downloads

## Recent versions

- 4.2.2 (latest) — 2020-11-11
- 4.2.0 — 2020-07-24
- 4.1.1 — 2020-04-25
- 4.1.0 — 2020-04-25
- 4.0.4 — 2020-04-25
- 4.0.3 — 2020-04-21
- 4.0.2 — 2019-10-24
- 4.0.1 — 2019-10-16
- 4.0.0 — 2019-10-12
- 3.0.5 — 2019-08-26
- 3.0.4 — 2019-08-24
- 3.0.3 — 2019-08-23
- 3.0.2 — 2019-08-23
- 3.0.1 — 2019-07-31
- 3.0.0 — 2019-06-20
- … 5 more at https://npm.io/package/@api-components/api-view-model-transformer/versions

## README

[![Published on NPM](https://img.shields.io/npm/v/@api-components/api-view-model-transformer.svg)](https://www.npmjs.com/package/@api-components/api-view-model-transformer)

[![Build Status](https://travis-ci.com/advanced-rest-client/api-view-model-transformer.svg)](https://travis-ci.org/advanced-rest-client/api-view-model-transformer)

[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/advanced-rest-client/api-view-model-transformer)

# ApiViewModel

A library to transform AMF's ld-json model into a form view model. The form view is used to power editors embedded in the api-request-editor element.
The model should be used to build a form view for request parameters like header, query parameters, uri parameters or the body.

## Version compatibility

This version only works with AMF model version 2 (AMF parser >= 4.0.0).
For compatibility with previous model version use `3.x.x` version of the component.

## Deprecation notice

The `api-view-model-transformer` custom element was build when the `AmfHelperMixin` was requiring a `HTMLElement` as a base class. Since it is not the case any more this element is being transformed
into a JS library. The custom element has only previously accessible public properties. With the next major release the custom element will be removed.
Please, use `ApiViewModel` class instead of element.

## Usage

### Installation

```sh
npm install --save @api-components/api-view-model-transformer
```

### Example

```javascript
import { ApiViewModel } from '@api-components/api-view-model-transformer';
const amf = getAmfFromRamlOrOas();
const headers = extractHeadersForMethod(amf); // or other types.
const worker = new ApiViewModel();
const viewModel = worker.computeViewModel(headers);
```

This example uses `getAmfFromRamlOrOas()` function where you implement the logic of getting AMF json/ld data. It can be stored in file or parsed using AMF parsers. The `extractHeadersForMethod()` represents a logic to extract properties that you want to transform. It can be headers, query parameters or body type.

## Deprecated example

```html
<api-view-model-transformer></api-view-model-transformer>
<script>
const amfModel = getAmfFromRamlOrOas();
const processor = document.querySelector('api-view-model-transformer');
processor.amf = amfModel;
processor.shape = extractHeadersForMethod(amfModel);
processor.addEventListener('view-model-changed', (e) => {
 console.log(e.detail.value);
});
</script>
```

## ld+json context

JSON schema may contain `@context` property. It can be used to reduce size of the schema by replacing namespace ids with defined in `@context` keyword. For the component to properly compute AMF values the full AMF model has to be set on `amf` property.

## Development

```sh
git clone https://github.com/advanced-rest-client/api-view-model-transformer
cd api-view-model-transformer
npm install
```

### Running the demo locally

```sh
npm start
```

### Running the tests

```sh
npm test
```

---
_Source: https://npm.io/package/@api-components/api-view-model-transformer · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
