@swagger-api/apidom-ns-openapi-3-1 1.0.0-beta.9 → 1.0.0-rc.0

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.
Files changed (54) hide show
  1. package/CHANGELOG.md +187 -0
  2. package/README.md +371 -1
  3. package/dist/apidom-ns-openapi-3-1.browser.js +29414 -24750
  4. package/dist/apidom-ns-openapi-3-1.browser.min.js +1 -1
  5. package/package.json +10 -9
  6. package/src/elements/Schema.cjs +2 -427
  7. package/src/elements/Schema.mjs +2 -427
  8. package/src/index.cjs +3 -1
  9. package/src/index.mjs +1 -0
  10. package/src/refractor/plugins/normalize-discriminator-mapping.cjs +173 -0
  11. package/src/refractor/plugins/normalize-discriminator-mapping.mjs +167 -0
  12. package/src/refractor/plugins/replace-empty-element.cjs +2 -1
  13. package/src/refractor/plugins/replace-empty-element.mjs +3 -2
  14. package/src/refractor/specification.cjs +55 -157
  15. package/src/refractor/specification.mjs +13 -115
  16. package/src/refractor/toolbox.cjs +2 -2
  17. package/src/refractor/toolbox.mjs +1 -1
  18. package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.cjs +13 -0
  19. package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.mjs +13 -2
  20. package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.cjs +2 -10
  21. package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.mjs +4 -9
  22. package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.cjs +2 -25
  23. package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.mjs +2 -23
  24. package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.cjs +2 -25
  25. package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.mjs +2 -23
  26. package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.cjs +2 -14
  27. package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.mjs +2 -12
  28. package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.cjs +2 -25
  29. package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.mjs +2 -23
  30. package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.cjs +2 -14
  31. package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.mjs +2 -12
  32. package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.cjs +2 -25
  33. package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.mjs +2 -23
  34. package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.cjs +2 -14
  35. package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.mjs +2 -12
  36. package/src/refractor/visitors/open-api-3-1/schema/index.cjs +10 -31
  37. package/src/refractor/visitors/open-api-3-1/schema/index.mjs +12 -33
  38. package/types/apidom-ns-openapi-3-1.d.ts +183 -408
  39. package/src/refractor/visitors/open-api-3-1/schema/$refVisitor.cjs +0 -16
  40. package/src/refractor/visitors/open-api-3-1/schema/$refVisitor.mjs +0 -12
  41. package/src/refractor/visitors/open-api-3-1/schema/$vocabularyVisitor.cjs +0 -16
  42. package/src/refractor/visitors/open-api-3-1/schema/$vocabularyVisitor.mjs +0 -12
  43. package/src/refractor/visitors/open-api-3-1/schema/DependentRequiredVisitor.cjs +0 -16
  44. package/src/refractor/visitors/open-api-3-1/schema/DependentRequiredVisitor.mjs +0 -12
  45. package/src/refractor/visitors/open-api-3-1/schema/EnumVisitor.cjs +0 -16
  46. package/src/refractor/visitors/open-api-3-1/schema/EnumVisitor.mjs +0 -12
  47. package/src/refractor/visitors/open-api-3-1/schema/ExamplesVisitor.cjs +0 -16
  48. package/src/refractor/visitors/open-api-3-1/schema/ExamplesVisitor.mjs +0 -12
  49. package/src/refractor/visitors/open-api-3-1/schema/ParentSchemaAwareVisitor.cjs +0 -17
  50. package/src/refractor/visitors/open-api-3-1/schema/ParentSchemaAwareVisitor.mjs +0 -13
  51. package/src/refractor/visitors/open-api-3-1/schema/RequiredVisitor.cjs +0 -16
  52. package/src/refractor/visitors/open-api-3-1/schema/RequiredVisitor.mjs +0 -12
  53. package/src/refractor/visitors/open-api-3-1/schema/TypeVisitor.cjs +0 -21
  54. package/src/refractor/visitors/open-api-3-1/schema/TypeVisitor.mjs +0 -17
@@ -1,38 +1,15 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
3
  exports.__esModule = true;
5
4
  exports.default = void 0;
6
- var _tsMixer = require("ts-mixer");
7
- var _apidomCore = require("@swagger-api/apidom-core");
8
- var _apidomNsOpenapi = require("@swagger-api/apidom-ns-openapi-3-0");
9
- var _ParentSchemaAwareVisitor = _interopRequireDefault(require("./ParentSchemaAwareVisitor.cjs"));
5
+ var _apidomNsJsonSchema = require("@swagger-api/apidom-ns-json-schema-2020-12");
10
6
  /**
11
7
  * @public
12
8
  */
13
-
14
- /**
15
- * @public
16
- */
17
- class PrefixItemsVisitor extends (0, _tsMixer.Mixin)(_apidomNsOpenapi.SpecificationVisitor, _ParentSchemaAwareVisitor.default, _apidomNsOpenapi.FallbackVisitor) {
9
+ class PrefixItemsVisitor extends _apidomNsJsonSchema.PrefixItemsVisitor {
18
10
  constructor(options) {
19
11
  super(options);
20
- this.element = new _apidomCore.ArrayElement();
21
- this.element.classes.push('json-schema-prefixItems');
22
12
  this.passingOptionsNames.push('parent');
23
13
  }
24
- ArrayElement(arrayElement) {
25
- arrayElement.forEach(item => {
26
- if ((0, _apidomCore.isObjectElement)(item)) {
27
- const schemaElement = this.toRefractedElement(['document', 'objects', 'Schema'], item);
28
- this.element.push(schemaElement);
29
- } else {
30
- const element = (0, _apidomCore.cloneDeep)(item);
31
- this.element.push(element);
32
- }
33
- });
34
- this.copyMetaAndAttributes(arrayElement, this.element);
35
- return _apidomCore.BREAK;
36
- }
37
14
  }
38
15
  var _default = exports.default = PrefixItemsVisitor;
@@ -1,32 +1,11 @@
1
- import { Mixin } from 'ts-mixer';
2
- import { ArrayElement, isObjectElement, BREAK, cloneDeep } from '@swagger-api/apidom-core';
3
- import { FallbackVisitor, SpecificationVisitor } from '@swagger-api/apidom-ns-openapi-3-0';
4
- import ParentSchemaAwareVisitor from "./ParentSchemaAwareVisitor.mjs";
1
+ import { PrefixItemsVisitor as PrefixItemsJSONSchema202012Visitor } from '@swagger-api/apidom-ns-json-schema-2020-12';
5
2
  /**
6
3
  * @public
7
4
  */
8
- /**
9
- * @public
10
- */
11
- class PrefixItemsVisitor extends Mixin(SpecificationVisitor, ParentSchemaAwareVisitor, FallbackVisitor) {
5
+ class PrefixItemsVisitor extends PrefixItemsJSONSchema202012Visitor {
12
6
  constructor(options) {
13
7
  super(options);
14
- this.element = new ArrayElement();
15
- this.element.classes.push('json-schema-prefixItems');
16
8
  this.passingOptionsNames.push('parent');
17
9
  }
18
- ArrayElement(arrayElement) {
19
- arrayElement.forEach(item => {
20
- if (isObjectElement(item)) {
21
- const schemaElement = this.toRefractedElement(['document', 'objects', 'Schema'], item);
22
- this.element.push(schemaElement);
23
- } else {
24
- const element = cloneDeep(item);
25
- this.element.push(element);
26
- }
27
- });
28
- this.copyMetaAndAttributes(arrayElement, this.element);
29
- return BREAK;
30
- }
31
10
  }
32
11
  export default PrefixItemsVisitor;
@@ -1,26 +1,14 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
3
  exports.__esModule = true;
5
4
  exports.default = void 0;
6
- var _tsMixer = require("ts-mixer");
7
- var _ramda = require("ramda");
8
- var _apidomCore = require("@swagger-api/apidom-core");
9
- var _apidomNsOpenapi = require("@swagger-api/apidom-ns-openapi-3-0");
10
- var _ParentSchemaAwareVisitor = _interopRequireDefault(require("./ParentSchemaAwareVisitor.cjs"));
5
+ var _apidomNsJsonSchema = require("@swagger-api/apidom-ns-json-schema-2020-12");
11
6
  /**
12
7
  * @public
13
8
  */
14
-
15
- /**
16
- * @public
17
- */
18
- class PropertiesVisitor extends (0, _tsMixer.Mixin)(_apidomNsOpenapi.MapVisitor, _ParentSchemaAwareVisitor.default, _apidomNsOpenapi.FallbackVisitor) {
9
+ class PropertiesVisitor extends _apidomNsJsonSchema.PropertiesVisitor {
19
10
  constructor(options) {
20
11
  super(options);
21
- this.element = new _apidomCore.ObjectElement();
22
- this.element.classes.push('json-schema-properties');
23
- this.specPath = (0, _ramda.always)(['document', 'objects', 'Schema']);
24
12
  this.passingOptionsNames.push('parent');
25
13
  }
26
14
  }
@@ -1,20 +1,10 @@
1
- import { Mixin } from 'ts-mixer';
2
- import { always } from 'ramda';
3
- import { ObjectElement } from '@swagger-api/apidom-core';
4
- import { FallbackVisitor, MapVisitor } from '@swagger-api/apidom-ns-openapi-3-0';
5
- import ParentSchemaAwareVisitor from "./ParentSchemaAwareVisitor.mjs";
1
+ import { PropertiesVisitor as PropertiesJSONSchema202012Visitor } from '@swagger-api/apidom-ns-json-schema-2020-12';
6
2
  /**
7
3
  * @public
8
4
  */
9
- /**
10
- * @public
11
- */
12
- class PropertiesVisitor extends Mixin(MapVisitor, ParentSchemaAwareVisitor, FallbackVisitor) {
5
+ class PropertiesVisitor extends PropertiesJSONSchema202012Visitor {
13
6
  constructor(options) {
14
7
  super(options);
15
- this.element = new ObjectElement();
16
- this.element.classes.push('json-schema-properties');
17
- this.specPath = always(['document', 'objects', 'Schema']);
18
8
  this.passingOptionsNames.push('parent');
19
9
  }
20
10
  }
@@ -5,13 +5,12 @@ exports.__esModule = true;
5
5
  exports.default = void 0;
6
6
  var _tsMixer = require("ts-mixer");
7
7
  var _ramda = require("ramda");
8
- var _ramdaAdjunct = require("ramda-adjunct");
9
8
  var _apidomCore = require("@swagger-api/apidom-core");
10
9
  var _apidomNsOpenapi = require("@swagger-api/apidom-ns-openapi-3-0");
10
+ var _apidomNsJsonSchema = require("@swagger-api/apidom-ns-json-schema-2020-12");
11
11
  var _predicates = require("../../../../predicates.cjs");
12
12
  var _Schema = _interopRequireDefault(require("../../../../elements/Schema.cjs"));
13
13
  var _JsonSchemaDialect = _interopRequireDefault(require("../../../../elements/JsonSchemaDialect.cjs"));
14
- var _ParentSchemaAwareVisitor = _interopRequireDefault(require("./ParentSchemaAwareVisitor.cjs"));
15
14
  /**
16
15
  * @public
17
16
  */
@@ -19,7 +18,7 @@ var _ParentSchemaAwareVisitor = _interopRequireDefault(require("./ParentSchemaAw
19
18
  /**
20
19
  * @public
21
20
  */
22
- class SchemaVisitor extends (0, _tsMixer.Mixin)(_apidomNsOpenapi.FixedFieldsVisitor, _ParentSchemaAwareVisitor.default, _apidomNsOpenapi.FallbackVisitor) {
21
+ class SchemaVisitor extends (0, _tsMixer.Mixin)(_apidomNsOpenapi.FixedFieldsVisitor, _apidomNsJsonSchema.ParentSchemaAwareVisitor, _apidomNsOpenapi.FallbackVisitor) {
23
22
  constructor(options) {
24
23
  super(options);
25
24
  this.element = new _Schema.default();
@@ -29,8 +28,8 @@ class SchemaVisitor extends (0, _tsMixer.Mixin)(_apidomNsOpenapi.FixedFieldsVisi
29
28
  this.passingOptionsNames.push('parent');
30
29
  }
31
30
  ObjectElement(objectElement) {
32
- this.handle$schema(objectElement);
33
- this.handle$id(objectElement);
31
+ this.handleDialectIdentifier(objectElement);
32
+ this.handleSchemaIdentifier(objectElement);
34
33
 
35
34
  // for further processing consider this Schema Element as parent for all embedded Schema Elements
36
35
  this.parent = this.element;
@@ -44,9 +43,7 @@ class SchemaVisitor extends (0, _tsMixer.Mixin)(_apidomNsOpenapi.FixedFieldsVisi
44
43
  return result;
45
44
  }
46
45
  BooleanElement(booleanElement) {
47
- const result = super.enter(booleanElement);
48
- this.element.classes.push('boolean-json-schema');
49
- return result;
46
+ return _apidomNsJsonSchema.JSONSchemaVisitor.prototype.BooleanElement.call(this, booleanElement);
50
47
  }
51
48
 
52
49
  /**
@@ -54,7 +51,7 @@ class SchemaVisitor extends (0, _tsMixer.Mixin)(_apidomNsOpenapi.FixedFieldsVisi
54
51
  * works even when no context is provided like when directly refracting generic Object Element
55
52
  * into Schema Element: `SchemaElement.refract(new ObjectElement({ type: 'object' });`
56
53
  */
57
- getJsonSchemaDialect() {
54
+ get defaultDialectIdentifier() {
58
55
  let jsonSchemaDialect;
59
56
  if (this.openApiSemanticElement !== undefined &&
60
57
  // @ts-ignore
@@ -68,29 +65,11 @@ class SchemaVisitor extends (0, _tsMixer.Mixin)(_apidomNsOpenapi.FixedFieldsVisi
68
65
  }
69
66
  return jsonSchemaDialect;
70
67
  }
71
- handle$schema(objectElement) {
72
- // handle $schema keyword in embedded resources
73
- if ((0, _ramdaAdjunct.isUndefined)(this.parent) && !(0, _apidomCore.isStringElement)(objectElement.get('$schema'))) {
74
- // no parent available and no $schema is defined, set default jsonSchemaDialect
75
- this.element.setMetaProperty('inherited$schema', this.getJsonSchemaDialect());
76
- } else if ((0, _predicates.isSchemaElement)(this.parent) && !(0, _apidomCore.isStringElement)(objectElement.get('$schema'))) {
77
- // parent is available and no $schema is defined, set parent $schema
78
- const inherited$schema = (0, _ramda.defaultTo)((0, _apidomCore.toValue)(this.parent.meta.get('inherited$schema')), (0, _apidomCore.toValue)(this.parent.$schema));
79
- this.element.setMetaProperty('inherited$schema', inherited$schema);
80
- }
68
+ handleDialectIdentifier(objectElement) {
69
+ return _apidomNsJsonSchema.JSONSchemaVisitor.prototype.handleDialectIdentifier.call(this, objectElement);
81
70
  }
82
- handle$id(objectElement) {
83
- // handle $id keyword in embedded resources
84
- // fetch parent's inherited$id
85
- const inherited$id = this.parent !== undefined ? (0, _apidomCore.cloneDeep)(this.parent.getMetaProperty('inherited$id', [])) : new _apidomCore.ArrayElement();
86
- // get current $id keyword
87
- const $id = (0, _apidomCore.toValue)(objectElement.get('$id'));
88
-
89
- // remember $id keyword if it's a non-empty strings
90
- if ((0, _ramdaAdjunct.isNonEmptyString)($id)) {
91
- inherited$id.push($id);
92
- }
93
- this.element.setMetaProperty('inherited$id', inherited$id);
71
+ handleSchemaIdentifier(objectElement) {
72
+ return _apidomNsJsonSchema.JSONSchemaVisitor.prototype.handleSchemaIdentifier.call(this, objectElement);
94
73
  }
95
74
  }
96
75
  var _default = exports.default = SchemaVisitor;
@@ -1,12 +1,11 @@
1
1
  import { Mixin } from 'ts-mixer';
2
- import { always, defaultTo } from 'ramda';
3
- import { isNonEmptyString, isUndefined } from 'ramda-adjunct';
4
- import { ArrayElement, isStringElement, cloneDeep, toValue } from '@swagger-api/apidom-core';
2
+ import { always } from 'ramda';
3
+ import { isStringElement, toValue } from '@swagger-api/apidom-core';
5
4
  import { FallbackVisitor, FixedFieldsVisitor } from '@swagger-api/apidom-ns-openapi-3-0';
6
- import { isSchemaElement, isJsonSchemaDialectElement } from "../../../../predicates.mjs";
5
+ import { JSONSchemaVisitor, ParentSchemaAwareVisitor } from '@swagger-api/apidom-ns-json-schema-2020-12';
6
+ import { isJsonSchemaDialectElement } from "../../../../predicates.mjs";
7
7
  import SchemaElement from "../../../../elements/Schema.mjs";
8
8
  import JsonSchemaDialectElement from "../../../../elements/JsonSchemaDialect.mjs";
9
- import ParentSchemaAwareVisitor from "./ParentSchemaAwareVisitor.mjs";
10
9
  /**
11
10
  * @public
12
11
  */
@@ -23,8 +22,8 @@ class SchemaVisitor extends Mixin(FixedFieldsVisitor, ParentSchemaAwareVisitor,
23
22
  this.passingOptionsNames.push('parent');
24
23
  }
25
24
  ObjectElement(objectElement) {
26
- this.handle$schema(objectElement);
27
- this.handle$id(objectElement);
25
+ this.handleDialectIdentifier(objectElement);
26
+ this.handleSchemaIdentifier(objectElement);
28
27
 
29
28
  // for further processing consider this Schema Element as parent for all embedded Schema Elements
30
29
  this.parent = this.element;
@@ -38,9 +37,7 @@ class SchemaVisitor extends Mixin(FixedFieldsVisitor, ParentSchemaAwareVisitor,
38
37
  return result;
39
38
  }
40
39
  BooleanElement(booleanElement) {
41
- const result = super.enter(booleanElement);
42
- this.element.classes.push('boolean-json-schema');
43
- return result;
40
+ return JSONSchemaVisitor.prototype.BooleanElement.call(this, booleanElement);
44
41
  }
45
42
 
46
43
  /**
@@ -48,7 +45,7 @@ class SchemaVisitor extends Mixin(FixedFieldsVisitor, ParentSchemaAwareVisitor,
48
45
  * works even when no context is provided like when directly refracting generic Object Element
49
46
  * into Schema Element: `SchemaElement.refract(new ObjectElement({ type: 'object' });`
50
47
  */
51
- getJsonSchemaDialect() {
48
+ get defaultDialectIdentifier() {
52
49
  let jsonSchemaDialect;
53
50
  if (this.openApiSemanticElement !== undefined &&
54
51
  // @ts-ignore
@@ -62,29 +59,11 @@ class SchemaVisitor extends Mixin(FixedFieldsVisitor, ParentSchemaAwareVisitor,
62
59
  }
63
60
  return jsonSchemaDialect;
64
61
  }
65
- handle$schema(objectElement) {
66
- // handle $schema keyword in embedded resources
67
- if (isUndefined(this.parent) && !isStringElement(objectElement.get('$schema'))) {
68
- // no parent available and no $schema is defined, set default jsonSchemaDialect
69
- this.element.setMetaProperty('inherited$schema', this.getJsonSchemaDialect());
70
- } else if (isSchemaElement(this.parent) && !isStringElement(objectElement.get('$schema'))) {
71
- // parent is available and no $schema is defined, set parent $schema
72
- const inherited$schema = defaultTo(toValue(this.parent.meta.get('inherited$schema')), toValue(this.parent.$schema));
73
- this.element.setMetaProperty('inherited$schema', inherited$schema);
74
- }
62
+ handleDialectIdentifier(objectElement) {
63
+ return JSONSchemaVisitor.prototype.handleDialectIdentifier.call(this, objectElement);
75
64
  }
76
- handle$id(objectElement) {
77
- // handle $id keyword in embedded resources
78
- // fetch parent's inherited$id
79
- const inherited$id = this.parent !== undefined ? cloneDeep(this.parent.getMetaProperty('inherited$id', [])) : new ArrayElement();
80
- // get current $id keyword
81
- const $id = toValue(objectElement.get('$id'));
82
-
83
- // remember $id keyword if it's a non-empty strings
84
- if (isNonEmptyString($id)) {
85
- inherited$id.push($id);
86
- }
87
- this.element.setMetaProperty('inherited$id', inherited$id);
65
+ handleSchemaIdentifier(objectElement) {
66
+ return JSONSchemaVisitor.prototype.handleSchemaIdentifier.call(this, objectElement);
88
67
  }
89
68
  }
90
69
  export default SchemaVisitor;