@api-client/core 0.6.13 → 0.6.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/browser.d.ts +9 -2
- package/build/browser.js +12 -2
- package/build/browser.js.map +1 -1
- package/build/index.d.ts +9 -2
- package/build/index.js +12 -2
- package/build/index.js.map +1 -1
- package/build/src/amf/AmfMixin.d.ts +395 -0
- package/build/src/amf/AmfMixin.js +1146 -0
- package/build/src/amf/AmfMixin.js.map +1 -0
- package/build/src/amf/AmfSerializer.d.ts +136 -0
- package/build/src/amf/AmfSerializer.js +1913 -0
- package/build/src/amf/AmfSerializer.js.map +1 -0
- package/build/src/amf/AmfShapeGenerator.d.ts +85 -0
- package/build/src/amf/AmfShapeGenerator.js +385 -0
- package/build/src/amf/AmfShapeGenerator.js.map +1 -0
- package/build/src/amf/AmfTypes.d.ts +24 -0
- package/build/src/amf/AmfTypes.js +122 -0
- package/build/src/amf/AmfTypes.js.map +1 -0
- package/build/src/amf/ApiExampleGenerator.d.ts +36 -0
- package/build/src/amf/ApiExampleGenerator.js +109 -0
- package/build/src/amf/ApiExampleGenerator.js.map +1 -0
- package/build/src/amf/ApiMonacoSchemaGenerator.d.ts +67 -0
- package/build/src/amf/ApiMonacoSchemaGenerator.js +243 -0
- package/build/src/amf/ApiMonacoSchemaGenerator.js.map +1 -0
- package/build/src/amf/ApiSchemaGenerator.d.ts +55 -0
- package/build/src/amf/ApiSchemaGenerator.js +94 -0
- package/build/src/amf/ApiSchemaGenerator.js.map +1 -0
- package/build/src/amf/ApiSchemaValues.d.ts +98 -0
- package/build/src/amf/ApiSchemaValues.js +382 -0
- package/build/src/amf/ApiSchemaValues.js.map +1 -0
- package/build/src/amf/Utils.d.ts +41 -0
- package/build/src/amf/Utils.js +176 -0
- package/build/src/amf/Utils.js.map +1 -0
- package/build/src/amf/data-node/DataNodeBase.d.ts +31 -0
- package/build/src/amf/data-node/DataNodeBase.js +77 -0
- package/build/src/amf/data-node/DataNodeBase.js.map +1 -0
- package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts +15 -0
- package/build/src/amf/data-node/JsonDataNodeGenerator.js +24 -0
- package/build/src/amf/data-node/JsonDataNodeGenerator.js.map +1 -0
- package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts +13 -0
- package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js +42 -0
- package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js.map +1 -0
- package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts +21 -0
- package/build/src/amf/data-node/XmlDataNodeGenerator.js +30 -0
- package/build/src/amf/data-node/XmlDataNodeGenerator.js.map +1 -0
- package/build/src/amf/definitions/Amf.d.ts +362 -0
- package/build/src/amf/definitions/Amf.js +2 -0
- package/build/src/amf/definitions/Amf.js.map +1 -0
- package/build/src/amf/definitions/Api.d.ts +381 -0
- package/build/src/amf/definitions/Api.js +2 -0
- package/build/src/amf/definitions/Api.js.map +1 -0
- package/build/src/amf/definitions/Base.d.ts +11 -0
- package/build/src/amf/definitions/Base.js +2 -0
- package/build/src/amf/definitions/Base.js.map +1 -0
- package/build/src/amf/definitions/Namespace.d.ts +311 -0
- package/build/src/amf/definitions/Namespace.js +330 -0
- package/build/src/amf/definitions/Namespace.js.map +1 -0
- package/build/src/amf/definitions/Shapes.d.ts +309 -0
- package/build/src/amf/definitions/Shapes.js +87 -0
- package/build/src/amf/definitions/Shapes.js.map +1 -0
- package/build/src/amf/models/AmfDataNode.d.ts +68 -0
- package/build/src/amf/models/AmfDataNode.js +188 -0
- package/build/src/amf/models/AmfDataNode.js.map +1 -0
- package/build/src/amf/shape/ShapeBase.d.ts +75 -0
- package/build/src/amf/shape/ShapeBase.js +90 -0
- package/build/src/amf/shape/ShapeBase.js.map +1 -0
- package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts +46 -0
- package/build/src/amf/shape/ShapeJsonSchemaGenerator.js +406 -0
- package/build/src/amf/shape/ShapeJsonSchemaGenerator.js.map +1 -0
- package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts +84 -0
- package/build/src/amf/shape/ShapeXmlSchemaGenerator.js +820 -0
- package/build/src/amf/shape/ShapeXmlSchemaGenerator.js.map +1 -0
- package/build/src/models/Thing.d.ts +17 -0
- package/build/src/models/Thing.js +19 -1
- package/build/src/models/Thing.js.map +1 -1
- package/build/src/models/data/Bindings.d.ts +161 -0
- package/build/src/models/data/Bindings.js +2 -0
- package/build/src/models/data/Bindings.js.map +1 -0
- package/build/src/models/data/DataAssociation.d.ts +135 -14
- package/build/src/models/data/DataAssociation.js +154 -21
- package/build/src/models/data/DataAssociation.js.map +1 -1
- package/build/src/models/data/DataAssociationSchema.d.ts +36 -0
- package/build/src/models/data/DataEntity.d.ts +76 -4
- package/build/src/models/data/DataEntity.js +136 -9
- package/build/src/models/data/DataEntity.js.map +1 -1
- package/build/src/models/data/DataFile.d.ts +3 -0
- package/build/src/models/data/DataFile.js +3 -0
- package/build/src/models/data/DataFile.js.map +1 -1
- package/build/src/models/data/DataModel.d.ts +1 -1
- package/build/src/models/data/DataModel.js.map +1 -1
- package/build/src/models/data/DataNamespace.d.ts +6 -0
- package/build/src/models/data/DataNamespace.js +11 -1
- package/build/src/models/data/DataNamespace.js.map +1 -1
- package/build/src/models/data/DataProperty.d.ts +131 -36
- package/build/src/models/data/DataProperty.js +200 -17
- package/build/src/models/data/DataProperty.js.map +1 -1
- package/data/apis/oas-date/oas-date.yaml +28 -0
- package/data/apis/oas-types/oas-types.yaml +159 -0
- package/data/apis/oas-unions/oas-unions.yaml +75 -0
- package/data/apis/raml-date/raml-date.raml +28 -0
- package/data/apis/recursive/recursive.raml +14 -0
- package/data/apis/schema-api/examples/person.json +14 -0
- package/data/apis/schema-api/examples/person.raml +14 -0
- package/data/apis/schema-api/examples/person.url.encoded +1 -0
- package/data/apis/schema-api/examples/person.xml +14 -0
- package/data/apis/schema-api/library/demo-types.raml +43 -0
- package/data/apis/schema-api/schema-api.raml +644 -0
- package/data/apis/schema-api/schemas/person.json +104 -0
- package/data/apis/schema-api/schemas/person.xsd +26 -0
- package/data/apis/schema-api/types/DemoPerson.raml +67 -0
- package/data/model.js +106 -0
- package/data/models/oas-date.json +637 -0
- package/data/models/oas-types.json +5352 -0
- package/data/models/oas-unions.json +1881 -0
- package/data/models/raml-date.json +1096 -0
- package/data/models/recursive.json +610 -0
- package/data/models/schema-api.json +37319 -0
- package/package.json +9 -6
- package/src/amf/AmfMixin.ts +1623 -0
- package/src/amf/AmfSerializer.ts +2028 -0
- package/src/amf/AmfShapeGenerator.ts +400 -0
- package/src/amf/AmfTypes.ts +126 -0
- package/src/amf/ApiExampleGenerator.ts +112 -0
- package/src/amf/ApiMonacoSchemaGenerator.ts +296 -0
- package/src/amf/ApiSchemaGenerator.ts +108 -0
- package/src/amf/ApiSchemaValues.ts +411 -0
- package/src/amf/Utils.ts +182 -0
- package/src/amf/data-node/DataNodeBase.ts +81 -0
- package/src/amf/data-node/JsonDataNodeGenerator.ts +26 -0
- package/src/amf/data-node/README.md +3 -0
- package/src/amf/data-node/UrlEncodedDataNodeGenerator.ts +43 -0
- package/src/amf/data-node/XmlDataNodeGenerator.ts +38 -0
- package/src/amf/definitions/Amf.ts +443 -0
- package/src/amf/definitions/Api.ts +427 -0
- package/src/amf/definitions/Base.ts +13 -0
- package/src/amf/definitions/Namespace.ts +341 -0
- package/src/amf/definitions/Shapes.ts +414 -0
- package/src/amf/models/AmfDataNode.ts +200 -0
- package/src/amf/shape/README.md +4 -0
- package/src/amf/shape/ShapeBase.ts +160 -0
- package/src/amf/shape/ShapeJsonSchemaGenerator.ts +422 -0
- package/src/amf/shape/ShapeXmlSchemaGenerator.ts +876 -0
- package/src/models/Thing.ts +25 -1
- package/src/models/data/Bindings.ts +186 -0
- package/src/models/data/DataAssociation.ts +226 -29
- package/src/models/data/DataAssociationSchema.ts +38 -0
- package/src/models/data/DataEntity.ts +170 -13
- package/src/models/data/DataFile.ts +3 -0
- package/src/models/data/DataModel.ts +1 -1
- package/src/models/data/DataNamespace.ts +16 -1
- package/src/models/data/DataProperty.ts +250 -47
- package/build/src/models/data/DataPropertySchema.d.ts +0 -125
- package/build/src/models/data/DataPropertySchema.js +0 -33
- package/build/src/models/data/DataPropertySchema.js.map +0 -1
- package/src/models/data/DataPropertySchema.ts +0 -156
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { UrlEncoder } from "../lib/parsers/UrlEncoder.js";
|
|
2
|
+
import { AmfNamespace } from "./definitions/Namespace.js";
|
|
3
|
+
/**
|
|
4
|
+
* @param indent The current indent
|
|
5
|
+
*/
|
|
6
|
+
export function toXml(obj, indent = 0) {
|
|
7
|
+
if (typeof obj !== 'object') {
|
|
8
|
+
return obj;
|
|
9
|
+
}
|
|
10
|
+
let xml = '';
|
|
11
|
+
const tabs = new Array(indent).fill(' ').join('');
|
|
12
|
+
Object.keys(obj).forEach((prop) => {
|
|
13
|
+
xml += Array.isArray(obj[prop]) ? '' : `${tabs}<${prop}>`;
|
|
14
|
+
if (Array.isArray(obj[prop])) {
|
|
15
|
+
obj[prop].forEach((item) => {
|
|
16
|
+
xml += `<${prop}>\n`;
|
|
17
|
+
xml += tabs;
|
|
18
|
+
xml += toXml({ ...item }, indent + 1);
|
|
19
|
+
xml += `</${prop}>\n`;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
else if (typeof obj[prop] === "object") {
|
|
23
|
+
xml += `\n`;
|
|
24
|
+
xml += toXml({ ...obj[prop] }, indent + 1);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
xml += `${obj[prop]}`;
|
|
28
|
+
}
|
|
29
|
+
xml += Array.isArray(obj[prop]) ? '' : `</${prop}>\n`;
|
|
30
|
+
});
|
|
31
|
+
xml = xml.replace(/<\/?[0-9]{1,}>/g, '');
|
|
32
|
+
return xml;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @param fill The fill value (spaces to put in front of the value)
|
|
36
|
+
* @param value The value to format
|
|
37
|
+
*/
|
|
38
|
+
export function formatXmlValue(fill, value) {
|
|
39
|
+
const typed = String(value);
|
|
40
|
+
const parts = typed.split('\n').filter(i => !!i);
|
|
41
|
+
const formatted = parts.map(i => `${fill}${i}`).join('\n');
|
|
42
|
+
return formatted;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @param str A key or value to encode as x-www-form-urlencoded.
|
|
46
|
+
* @param replacePlus When set it replaces `%20` with `+`.
|
|
47
|
+
* @deprecated Use `UrlEncoder.encodeQueryString()` instead.
|
|
48
|
+
*/
|
|
49
|
+
export function wwwFormUrlEncode(str, replacePlus) {
|
|
50
|
+
// Spec says to normalize newlines to \r\n and replace %20 spaces with +.
|
|
51
|
+
// jQuery does this as well, so this is likely to be widely compatible.
|
|
52
|
+
if (str === undefined) {
|
|
53
|
+
return '';
|
|
54
|
+
}
|
|
55
|
+
return UrlEncoder.encodeQueryString(String(str), replacePlus);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Processes a value that should be a number.
|
|
59
|
+
*/
|
|
60
|
+
export function parseNumberInput(value, defaultValue) {
|
|
61
|
+
if (typeof value === 'number') {
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
const n = Number(value);
|
|
65
|
+
if (Number.isNaN(n)) {
|
|
66
|
+
return defaultValue;
|
|
67
|
+
}
|
|
68
|
+
return n;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Processes a value that should be a number.
|
|
72
|
+
*/
|
|
73
|
+
export function parseBooleanInput(value, defaultValue) {
|
|
74
|
+
const type = typeof value;
|
|
75
|
+
if (type === 'boolean') {
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
if (type === 'string') {
|
|
79
|
+
const trimmed = value.trim();
|
|
80
|
+
if (trimmed === 'true') {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
if (trimmed === 'false') {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return defaultValue;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Casts the `value` to the corresponding data type
|
|
91
|
+
* @param type The w3 schema type
|
|
92
|
+
*/
|
|
93
|
+
export function readTypedValue(value, type) {
|
|
94
|
+
if (value === undefined || value === null) {
|
|
95
|
+
return value;
|
|
96
|
+
}
|
|
97
|
+
switch (type) {
|
|
98
|
+
case AmfNamespace.aml.vocabularies.shapes.number:
|
|
99
|
+
case AmfNamespace.aml.vocabularies.shapes.integer:
|
|
100
|
+
case AmfNamespace.aml.vocabularies.shapes.float:
|
|
101
|
+
case AmfNamespace.aml.vocabularies.shapes.long:
|
|
102
|
+
case AmfNamespace.aml.vocabularies.shapes.double:
|
|
103
|
+
case AmfNamespace.w3.xmlSchema.number:
|
|
104
|
+
case AmfNamespace.w3.xmlSchema.integer:
|
|
105
|
+
case AmfNamespace.w3.xmlSchema.float:
|
|
106
|
+
case AmfNamespace.w3.xmlSchema.long:
|
|
107
|
+
case AmfNamespace.w3.xmlSchema.double: return parseNumberInput(value, 0);
|
|
108
|
+
case AmfNamespace.aml.vocabularies.shapes.boolean:
|
|
109
|
+
case AmfNamespace.w3.xmlSchema.boolean: return parseBooleanInput(value, false);
|
|
110
|
+
case AmfNamespace.aml.vocabularies.shapes.nil:
|
|
111
|
+
case AmfNamespace.w3.xmlSchema.nil:
|
|
112
|
+
return null;
|
|
113
|
+
default:
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Picks the union member to render.
|
|
119
|
+
* @param anyOf The list of union members
|
|
120
|
+
* @param selectedUnions Optional list of domain ids of currently selected unions. When set is returns a member that is "selected" or the first member otherwise.
|
|
121
|
+
*/
|
|
122
|
+
export function getUnionMember(anyOf, selectedUnions = []) {
|
|
123
|
+
let renderedItem;
|
|
124
|
+
if (Array.isArray(selectedUnions) && selectedUnions.length) {
|
|
125
|
+
renderedItem = anyOf.find((item) => selectedUnions.includes(item.id));
|
|
126
|
+
}
|
|
127
|
+
if (!renderedItem) {
|
|
128
|
+
[renderedItem] = anyOf;
|
|
129
|
+
}
|
|
130
|
+
return renderedItem;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* @param {ApiNodeShape} schema
|
|
134
|
+
* @param {string[]=} [selectedUnions=[]]
|
|
135
|
+
* @returns {ApiPropertyShape[]}
|
|
136
|
+
*/
|
|
137
|
+
export function collectNodeProperties(schema, selectedUnions) {
|
|
138
|
+
let result = [];
|
|
139
|
+
const { properties, inherits } = schema;
|
|
140
|
+
if (properties.length) {
|
|
141
|
+
result = [...properties];
|
|
142
|
+
}
|
|
143
|
+
if (Array.isArray(inherits) && inherits.length) {
|
|
144
|
+
inherits.forEach((s) => {
|
|
145
|
+
let node = s;
|
|
146
|
+
if (node.types.includes(AmfNamespace.aml.vocabularies.shapes.UnionShape)) {
|
|
147
|
+
const union = node;
|
|
148
|
+
const { anyOf = [] } = union;
|
|
149
|
+
node = getUnionMember(anyOf, selectedUnions);
|
|
150
|
+
}
|
|
151
|
+
if (!node.types.includes(AmfNamespace.w3.shacl.NodeShape)) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const typed = node;
|
|
155
|
+
// const p = typed.properties;
|
|
156
|
+
// if (Array.isArray(p) && p.length) {
|
|
157
|
+
// result = result.concat(p);
|
|
158
|
+
// }
|
|
159
|
+
const upper = collectNodeProperties(typed);
|
|
160
|
+
if (upper.length) {
|
|
161
|
+
result = result.concat(upper);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
const merged = [];
|
|
166
|
+
result.forEach((item) => {
|
|
167
|
+
const existing = merged.find(i => i.name === item.name);
|
|
168
|
+
if (existing) {
|
|
169
|
+
// this should (?) merge properties from the two.
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
merged.push(item);
|
|
173
|
+
});
|
|
174
|
+
return merged;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=Utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../src/amf/Utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { IArrayNode, IDataNode, IObjectNode, IScalarNode } from "../definitions/Shapes.js";
|
|
2
|
+
/**
|
|
3
|
+
* Base class for all schema generators based on AMF's DataNode which includes AMF's examples.
|
|
4
|
+
*/
|
|
5
|
+
export declare class DataNodeBase {
|
|
6
|
+
/**
|
|
7
|
+
* @param node The AMF data node to turn into a schema.
|
|
8
|
+
* @returns Undefined when passed non-DataNode domain element.
|
|
9
|
+
*/
|
|
10
|
+
processNode(node: IDataNode): any | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* @param scalar The scalar node to process.
|
|
13
|
+
* @returns The scalar value.
|
|
14
|
+
*/
|
|
15
|
+
processScalarNode(scalar: IScalarNode): any;
|
|
16
|
+
/**
|
|
17
|
+
* @param array The array node to process.
|
|
18
|
+
* @returns Array value.
|
|
19
|
+
*/
|
|
20
|
+
processArrayNode(array: IArrayNode): any[];
|
|
21
|
+
/**
|
|
22
|
+
* @param object The object node to process.
|
|
23
|
+
* @returns Object value.
|
|
24
|
+
*/
|
|
25
|
+
processObjectNode(object: IObjectNode): any;
|
|
26
|
+
/**
|
|
27
|
+
* Normalizes a property name. It decodes URL encoded values.
|
|
28
|
+
* @param name The property name to normalize
|
|
29
|
+
*/
|
|
30
|
+
normalizePropertyName(name: string): string;
|
|
31
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { AmfNamespace as ns } from "../definitions/Namespace.js";
|
|
2
|
+
import { readTypedValue } from '../Utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for all schema generators based on AMF's DataNode which includes AMF's examples.
|
|
5
|
+
*/
|
|
6
|
+
export class DataNodeBase {
|
|
7
|
+
/**
|
|
8
|
+
* @param node The AMF data node to turn into a schema.
|
|
9
|
+
* @returns Undefined when passed non-DataNode domain element.
|
|
10
|
+
*/
|
|
11
|
+
processNode(node) {
|
|
12
|
+
const { types } = node;
|
|
13
|
+
if (types.includes(ns.aml.vocabularies.data.Scalar)) {
|
|
14
|
+
return this.processScalarNode(node);
|
|
15
|
+
}
|
|
16
|
+
if (types.includes(ns.aml.vocabularies.data.Array)) {
|
|
17
|
+
return this.processArrayNode(node);
|
|
18
|
+
}
|
|
19
|
+
if (types.includes(ns.aml.vocabularies.data.Object)) {
|
|
20
|
+
return this.processObjectNode(node);
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @param scalar The scalar node to process.
|
|
26
|
+
* @returns The scalar value.
|
|
27
|
+
*/
|
|
28
|
+
processScalarNode(scalar) {
|
|
29
|
+
return readTypedValue(scalar.value, scalar.dataType);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @param array The array node to process.
|
|
33
|
+
* @returns Array value.
|
|
34
|
+
*/
|
|
35
|
+
processArrayNode(array) {
|
|
36
|
+
const container = [];
|
|
37
|
+
array.members.forEach((member) => {
|
|
38
|
+
const result = this.processNode(member);
|
|
39
|
+
if (result !== undefined) {
|
|
40
|
+
container.push(result);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return container;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @param object The object node to process.
|
|
47
|
+
* @returns Object value.
|
|
48
|
+
*/
|
|
49
|
+
processObjectNode(object) {
|
|
50
|
+
const container = {};
|
|
51
|
+
const { properties } = object;
|
|
52
|
+
Object.keys(properties).forEach((key) => {
|
|
53
|
+
const definition = properties[key];
|
|
54
|
+
const result = this.processNode(definition);
|
|
55
|
+
if (typeof result !== 'undefined') {
|
|
56
|
+
const name = this.normalizePropertyName(key);
|
|
57
|
+
container[name] = result;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return container;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Normalizes a property name. It decodes URL encoded values.
|
|
64
|
+
* @param name The property name to normalize
|
|
65
|
+
*/
|
|
66
|
+
normalizePropertyName(name) {
|
|
67
|
+
let result = name;
|
|
68
|
+
try {
|
|
69
|
+
result = decodeURIComponent(result);
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
// ...
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=DataNodeBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataNodeBase.js","sourceRoot":"","sources":["../../../../src/amf/data-node/DataNodeBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,OAAO,YAAY;IACvB;;;OAGG;IACH,WAAW,CAAC,IAAe;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAmB,CAAC,CAAC;SACpD;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAClD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAkB,CAAC,CAAC;SAClD;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAmB,CAAC,CAAC;SACpD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,MAAmB;QACnC,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,KAAiB;QAChC,MAAM,SAAS,GAAU,EAAE,CAAC;QAC5B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,MAAM,KAAK,SAAS,EAAE;gBACxB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACxB;QACH,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,MAAmB;QACnC,MAAM,SAAS,GAAQ,EAAE,CAAC;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACtC,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,qBAAqB,CAAC,IAAY;QAChC,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI;YACF,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;SACpC;QAAC,OAAO,CAAC,EAAE;YACV,MAAM;SACP;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IDataNode } from '../definitions/Shapes.js';
|
|
2
|
+
import { DataNodeBase } from './DataNodeBase.js';
|
|
3
|
+
/** @typedef {import('../../helpers/api').ApiDataNode} ApiDataNode */
|
|
4
|
+
/**
|
|
5
|
+
* A class that processes AMF's `structuredValue` into a JSON example.
|
|
6
|
+
*/
|
|
7
|
+
export declare class JsonDataNodeGenerator extends DataNodeBase {
|
|
8
|
+
/**
|
|
9
|
+
* Generates a JSON schema from the AMF's DataNode.
|
|
10
|
+
*
|
|
11
|
+
* @param node The AMF's data node to transform into a schema.
|
|
12
|
+
* @returns Undefined when passed non-DataNode domain element.
|
|
13
|
+
*/
|
|
14
|
+
generate(node: IDataNode): string | undefined;
|
|
15
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DataNodeBase } from './DataNodeBase.js';
|
|
2
|
+
/** @typedef {import('../../helpers/api').ApiDataNode} ApiDataNode */
|
|
3
|
+
/**
|
|
4
|
+
* A class that processes AMF's `structuredValue` into a JSON example.
|
|
5
|
+
*/
|
|
6
|
+
export class JsonDataNodeGenerator extends DataNodeBase {
|
|
7
|
+
/**
|
|
8
|
+
* Generates a JSON schema from the AMF's DataNode.
|
|
9
|
+
*
|
|
10
|
+
* @param node The AMF's data node to transform into a schema.
|
|
11
|
+
* @returns Undefined when passed non-DataNode domain element.
|
|
12
|
+
*/
|
|
13
|
+
generate(node) {
|
|
14
|
+
const result = this.processNode(node);
|
|
15
|
+
if (!result) {
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
if (typeof result === 'string') {
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
return JSON.stringify(result, null, 2);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=JsonDataNodeGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonDataNodeGenerator.js","sourceRoot":"","sources":["../../../../src/amf/data-node/JsonDataNodeGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,qEAAqE;AAErE;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACrD;;;;;OAKG;IACH,QAAQ,CAAC,IAAe;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,MAAM,CAAC;SACf;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DataNodeBase } from './DataNodeBase.js';
|
|
2
|
+
import { IDataNode } from '../definitions/Shapes.js';
|
|
3
|
+
/** @typedef {import('../../helpers/api').ApiDataNode} ApiDataNode */
|
|
4
|
+
export declare class UrlEncodedDataNodeGenerator extends DataNodeBase {
|
|
5
|
+
/**
|
|
6
|
+
* Generates a JSON example from the structured value.
|
|
7
|
+
* @param node The AMF's data node to transform into a schema.
|
|
8
|
+
* @param shapeName When provided it wraps the returned value with the shape name.
|
|
9
|
+
* @returns Undefined when passed non-DataNode domain element.
|
|
10
|
+
*/
|
|
11
|
+
generate(node: IDataNode, shapeName?: string): string | undefined;
|
|
12
|
+
createUrlEncoded(obj: any): string;
|
|
13
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { DataNodeBase } from './DataNodeBase.js';
|
|
2
|
+
import { UrlEncoder } from "../../lib/parsers/UrlEncoder.js";
|
|
3
|
+
/** @typedef {import('../../helpers/api').ApiDataNode} ApiDataNode */
|
|
4
|
+
export class UrlEncodedDataNodeGenerator extends DataNodeBase {
|
|
5
|
+
/**
|
|
6
|
+
* Generates a JSON example from the structured value.
|
|
7
|
+
* @param node The AMF's data node to transform into a schema.
|
|
8
|
+
* @param shapeName When provided it wraps the returned value with the shape name.
|
|
9
|
+
* @returns Undefined when passed non-DataNode domain element.
|
|
10
|
+
*/
|
|
11
|
+
generate(node, shapeName) {
|
|
12
|
+
const result = this.processNode(node);
|
|
13
|
+
const isArray = Array.isArray(result);
|
|
14
|
+
if (shapeName && (typeof result !== 'object' || isArray)) {
|
|
15
|
+
if (isArray) {
|
|
16
|
+
return result.map(v => `${shapeName}[]=${v}`).filter(v => !!v).join('&');
|
|
17
|
+
}
|
|
18
|
+
return `${shapeName}=${result}`;
|
|
19
|
+
}
|
|
20
|
+
return this.createUrlEncoded(result);
|
|
21
|
+
}
|
|
22
|
+
createUrlEncoded(obj) {
|
|
23
|
+
if (typeof obj !== 'object') {
|
|
24
|
+
return String(obj);
|
|
25
|
+
}
|
|
26
|
+
const parts = Object.keys(obj).map((key) => {
|
|
27
|
+
let value = obj[key];
|
|
28
|
+
if (typeof value === 'object' && value !== null) {
|
|
29
|
+
value = this.createUrlEncoded(value);
|
|
30
|
+
}
|
|
31
|
+
else if (value) {
|
|
32
|
+
value = UrlEncoder.encodeQueryString(value, true);
|
|
33
|
+
}
|
|
34
|
+
else if (value === null) {
|
|
35
|
+
value = 'null';
|
|
36
|
+
}
|
|
37
|
+
return `${key}=${value}`;
|
|
38
|
+
});
|
|
39
|
+
return parts.join('&');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=UrlEncodedDataNodeGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UrlEncodedDataNodeGenerator.js","sourceRoot":"","sources":["../../../../src/amf/data-node/UrlEncodedDataNodeGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,qEAAqE;AAErE,MAAM,OAAO,2BAA4B,SAAQ,YAAY;IAC3D;;;;;OAKG;IACH,QAAQ,CAAC,IAAe,EAAE,SAAkB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,SAAS,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,EAAE;YACxD,IAAI,OAAO,EAAE;gBACX,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC1E;YACD,OAAO,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC;SACjC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,gBAAgB,CAAC,GAAQ;QACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;SACpB;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;gBAC/C,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;aACtC;iBAAM,IAAI,KAAK,EAAE;gBAChB,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aACnD;iBAAM,IAAI,KAAK,KAAK,IAAI,EAAE;gBACzB,KAAK,GAAG,MAAM,CAAC;aAChB;YACD,OAAO,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DataNodeBase } from './DataNodeBase.js';
|
|
2
|
+
import { IDataNode } from '../definitions/Shapes.js';
|
|
3
|
+
export interface IDataGenerateOptions {
|
|
4
|
+
/**
|
|
5
|
+
* A string to prefix the generated value with. This is added before the element.
|
|
6
|
+
*/
|
|
7
|
+
indent?: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* A class that processes AMF's `structuredValue` into an XML example.
|
|
11
|
+
*/
|
|
12
|
+
export declare class XmlDataNodeGenerator extends DataNodeBase {
|
|
13
|
+
/**
|
|
14
|
+
* Generates a JSON example from the structured value.
|
|
15
|
+
*
|
|
16
|
+
* @param node The AMF's data node to transform into a schema.
|
|
17
|
+
* @param shapeName When provided it wraps the returned value with the shape name.
|
|
18
|
+
* @returns Undefined when passed non-DataNode domain element.
|
|
19
|
+
*/
|
|
20
|
+
generate(node: IDataNode, shapeName?: string, opts?: IDataGenerateOptions): string | undefined;
|
|
21
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { DataNodeBase } from './DataNodeBase.js';
|
|
2
|
+
import { toXml } from '../Utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* A class that processes AMF's `structuredValue` into an XML example.
|
|
5
|
+
*/
|
|
6
|
+
export class XmlDataNodeGenerator extends DataNodeBase {
|
|
7
|
+
/**
|
|
8
|
+
* Generates a JSON example from the structured value.
|
|
9
|
+
*
|
|
10
|
+
* @param node The AMF's data node to transform into a schema.
|
|
11
|
+
* @param shapeName When provided it wraps the returned value with the shape name.
|
|
12
|
+
* @returns Undefined when passed non-DataNode domain element.
|
|
13
|
+
*/
|
|
14
|
+
generate(node, shapeName, opts = {}) {
|
|
15
|
+
const result = this.processNode(node);
|
|
16
|
+
if (!result) {
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
const { indent = 0 } = opts;
|
|
20
|
+
const tabs = new Array(indent).fill(' ').join('');
|
|
21
|
+
if (shapeName) {
|
|
22
|
+
if (Array.isArray(result)) {
|
|
23
|
+
return result.map(v => `${tabs}<${shapeName}>${toXml(v)}</${shapeName}>`).filter(v => !!v).join('\n');
|
|
24
|
+
}
|
|
25
|
+
return `${tabs}<${shapeName}>${toXml(result)}</${shapeName}>`;
|
|
26
|
+
}
|
|
27
|
+
return `${toXml(result, indent)}`;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=XmlDataNodeGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XmlDataNodeGenerator.js","sourceRoot":"","sources":["../../../../src/amf/data-node/XmlDataNodeGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAUpC;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD;;;;;;OAMG;IACH,QAAQ,CAAC,IAAe,EAAE,SAAkB,EAAE,OAA6B,EAAE;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,MAAM,CAAC;SACf;QACD,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,SAAS,EAAE;YACb,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACzB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvG;YACD,OAAO,GAAG,IAAI,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,CAAC;SAC/D;QACD,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACpC,CAAC;CACF"}
|