@speclynx/apidom-ns-json-schema-draft-4 1.12.2 → 2.0.1

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 (82) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/NOTICE +16 -7
  3. package/README.md +24 -24
  4. package/dist/apidom-ns-json-schema-draft-4.browser.js +1 -1
  5. package/package.json +8 -8
  6. package/src/elements/JSONReference.cjs +2 -2
  7. package/src/elements/JSONReference.mjs +1 -2
  8. package/src/elements/JSONSchema.cjs +9 -9
  9. package/src/elements/JSONSchema.mjs +8 -8
  10. package/src/elements/LinkDescription.cjs +2 -2
  11. package/src/elements/LinkDescription.mjs +1 -1
  12. package/src/elements/Media.cjs +2 -2
  13. package/src/elements/Media.mjs +1 -2
  14. package/src/index.cjs +24 -21
  15. package/src/index.mjs +3 -4
  16. package/src/predicates.cjs +8 -29
  17. package/src/predicates.mjs +4 -29
  18. package/src/refractor/index.cjs +57 -16
  19. package/src/refractor/index.mjs +51 -15
  20. package/src/refractor/inspect.cjs +55 -0
  21. package/src/refractor/inspect.mjs +47 -0
  22. package/src/refractor/plugins/replace-empty-element.cjs +27 -21
  23. package/src/refractor/plugins/replace-empty-element.mjs +14 -8
  24. package/src/refractor/predicates.cjs +2 -2
  25. package/src/refractor/predicates.mjs +1 -1
  26. package/src/refractor/specification.cjs +14 -3
  27. package/src/refractor/specification.mjs +14 -3
  28. package/src/refractor/toolbox.cjs +10 -3
  29. package/src/refractor/toolbox.mjs +8 -2
  30. package/src/refractor/visitors/FallbackVisitor.cjs +4 -4
  31. package/src/refractor/visitors/FallbackVisitor.mjs +4 -4
  32. package/src/refractor/visitors/SpecificationVisitor.cjs +4 -3
  33. package/src/refractor/visitors/SpecificationVisitor.mjs +3 -2
  34. package/src/refractor/visitors/Visitor.cjs +10 -8
  35. package/src/refractor/visitors/Visitor.mjs +11 -9
  36. package/src/refractor/visitors/generics/AlternatingVisitor.cjs +3 -3
  37. package/src/refractor/visitors/generics/AlternatingVisitor.mjs +3 -3
  38. package/src/refractor/visitors/generics/FixedFieldsVisitor.cjs +10 -7
  39. package/src/refractor/visitors/generics/FixedFieldsVisitor.mjs +9 -6
  40. package/src/refractor/visitors/generics/PatternedFieldsVisitor.cjs +9 -6
  41. package/src/refractor/visitors/generics/PatternedFieldsVisitor.mjs +8 -5
  42. package/src/refractor/visitors/json-schema/AllOfVisitor.cjs +7 -10
  43. package/src/refractor/visitors/json-schema/AllOfVisitor.mjs +6 -8
  44. package/src/refractor/visitors/json-schema/AnyOfVisitor.cjs +7 -10
  45. package/src/refractor/visitors/json-schema/AnyOfVisitor.mjs +6 -8
  46. package/src/refractor/visitors/json-schema/DefinitionsVisitor.cjs +4 -8
  47. package/src/refractor/visitors/json-schema/DefinitionsVisitor.mjs +3 -6
  48. package/src/refractor/visitors/json-schema/DependenciesVisitor.cjs +4 -8
  49. package/src/refractor/visitors/json-schema/DependenciesVisitor.mjs +3 -6
  50. package/src/refractor/visitors/json-schema/EnumVisitor.cjs +2 -3
  51. package/src/refractor/visitors/json-schema/EnumVisitor.mjs +2 -3
  52. package/src/refractor/visitors/json-schema/ItemsVisitor.cjs +10 -12
  53. package/src/refractor/visitors/json-schema/ItemsVisitor.mjs +9 -10
  54. package/src/refractor/visitors/json-schema/LinksVisitor.cjs +7 -10
  55. package/src/refractor/visitors/json-schema/LinksVisitor.mjs +6 -8
  56. package/src/refractor/visitors/json-schema/OneOfVisitor.cjs +7 -10
  57. package/src/refractor/visitors/json-schema/OneOfVisitor.mjs +6 -8
  58. package/src/refractor/visitors/json-schema/PatternPropertiesVisitor.cjs +4 -8
  59. package/src/refractor/visitors/json-schema/PatternPropertiesVisitor.mjs +3 -6
  60. package/src/refractor/visitors/json-schema/PropertiesVisitor.cjs +4 -8
  61. package/src/refractor/visitors/json-schema/PropertiesVisitor.mjs +3 -6
  62. package/src/refractor/visitors/json-schema/RequiredVisitor.cjs +2 -3
  63. package/src/refractor/visitors/json-schema/RequiredVisitor.mjs +2 -3
  64. package/src/refractor/visitors/json-schema/TypeVisitor.cjs +4 -6
  65. package/src/refractor/visitors/json-schema/TypeVisitor.mjs +4 -6
  66. package/src/refractor/visitors/json-schema/bases.cjs +45 -0
  67. package/src/refractor/visitors/json-schema/bases.mjs +39 -0
  68. package/src/refractor/visitors/json-schema/index.cjs +12 -12
  69. package/src/refractor/visitors/json-schema/index.mjs +11 -11
  70. package/src/refractor/visitors/json-schema/json-reference/$RefVisitor.cjs +2 -3
  71. package/src/refractor/visitors/json-schema/json-reference/$RefVisitor.mjs +2 -3
  72. package/src/refractor/visitors/json-schema/json-reference/index.cjs +6 -8
  73. package/src/refractor/visitors/json-schema/json-reference/index.mjs +5 -7
  74. package/src/refractor/visitors/json-schema/link-description/index.cjs +2 -4
  75. package/src/refractor/visitors/json-schema/link-description/index.mjs +2 -4
  76. package/src/refractor/visitors/json-schema/media/index.cjs +2 -4
  77. package/src/refractor/visitors/json-schema/media/index.mjs +2 -4
  78. package/types/apidom-ns-json-schema-draft-4.d.ts +169 -151
  79. package/src/refractor/registration.cjs +0 -19
  80. package/src/refractor/registration.mjs +0 -10
  81. package/src/traversal/visitor.cjs +0 -26
  82. package/src/traversal/visitor.mjs +0 -22
@@ -1,4 +1,4 @@
1
- import { ObjectElement } from '@speclynx/apidom-core';
1
+ import { ObjectElement } from '@speclynx/apidom-datamodel';
2
2
  /**
3
3
  * @public
4
4
  */
@@ -14,11 +14,11 @@ class JSONSchema extends ObjectElement {
14
14
  * URI: https://tools.ietf.org/html/draft-wright-json-schema-00
15
15
  */
16
16
 
17
- get idProp() {
17
+ get idField() {
18
18
  return this.get('id');
19
19
  }
20
- set idProp(idProp) {
21
- this.set('id', idProp);
20
+ set idField(idField) {
21
+ this.set('id', idField);
22
22
  }
23
23
  get $schema() {
24
24
  return this.get('$schema');
@@ -101,10 +101,10 @@ class JSONSchema extends ObjectElement {
101
101
  set additionalItems(additionalItems) {
102
102
  this.set('additionalItems', additionalItems);
103
103
  }
104
- get items() {
104
+ get itemsField() {
105
105
  return this.get('items');
106
106
  }
107
- set items(items) {
107
+ set itemsField(items) {
108
108
  this.set('items', items);
109
109
  }
110
110
  get maxItems() {
@@ -270,10 +270,10 @@ class JSONSchema extends ObjectElement {
270
270
  set base(base) {
271
271
  this.set('base', base);
272
272
  }
273
- get links() {
273
+ get linksField() {
274
274
  return this.get('links');
275
275
  }
276
- set links(links) {
276
+ set linksField(links) {
277
277
  this.set('links', links);
278
278
  }
279
279
  get media() {
@@ -2,13 +2,13 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.default = void 0;
5
- var _apidomCore = require("@speclynx/apidom-core");
5
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
6
6
  /**
7
7
  * URI: https://datatracker.ietf.org/doc/html/draft-wright-json-schema-hyperschema-00#section-5
8
8
  * @public
9
9
  */
10
10
 
11
- class LinkDescription extends _apidomCore.ObjectElement {
11
+ class LinkDescription extends _apidomDatamodel.ObjectElement {
12
12
  constructor(content, meta, attributes) {
13
13
  super(content, meta, attributes);
14
14
  this.element = 'linkDescription';
@@ -1,4 +1,4 @@
1
- import { ObjectElement } from '@speclynx/apidom-core';
1
+ import { ObjectElement } from '@speclynx/apidom-datamodel';
2
2
  /**
3
3
  * URI: https://datatracker.ietf.org/doc/html/draft-wright-json-schema-hyperschema-00#section-5
4
4
  * @public
@@ -2,13 +2,13 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.default = void 0;
5
- var _apidomCore = require("@speclynx/apidom-core");
5
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
6
6
  /**
7
7
  * URI: https://datatracker.ietf.org/doc/html/draft-wright-json-schema-hyperschema-00#section-4.3
8
8
  * @public
9
9
  */
10
10
 
11
- class Media extends _apidomCore.ObjectElement {
11
+ class Media extends _apidomDatamodel.ObjectElement {
12
12
  constructor(content, meta, attributes) {
13
13
  super(content, meta, attributes);
14
14
  this.element = 'media';
@@ -1,5 +1,4 @@
1
- import { ObjectElement } from '@speclynx/apidom-core';
2
-
1
+ import { ObjectElement } from '@speclynx/apidom-datamodel';
3
2
  /**
4
3
  * URI: https://datatracker.ietf.org/doc/html/draft-wright-json-schema-hyperschema-00#section-4.3
5
4
  * @public
package/src/index.cjs CHANGED
@@ -3,18 +3,7 @@
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
4
  var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
5
5
  exports.__esModule = true;
6
- exports.specificationObj = exports.refractorPluginReplaceEmptyElement = exports.refract = exports.mediaTypes = exports.keyMap = exports.isStringElement = exports.isRefElement = exports.isObjectElement = exports.isNumberElement = exports.isNullElement = exports.isMemberElement = exports.isMediaElement = exports.isLinkElement = exports.isLinkDescriptionElement = exports.isJSONSchemaElement = exports.isJSONReferenceLikeElement = exports.isJSONReferenceElement = exports.isElement = exports.isBooleanElement = exports.isArrayElement = exports.getNodeType = exports.default = exports.createRefractor = exports.Visitor = exports.SpecificationVisitor = exports.PatternedFieldsVisitor = exports.ParentSchemaAwareVisitor = exports.MediaElement = exports.MapVisitor = exports.LinkDescriptionVisitor = exports.LinkDescriptionElement = exports.JSONSchemaVisitor = exports.JSONSchemaElement = exports.JSONSchemaDraft4MediaTypes = exports.JSONReferenceElement = exports.ItemsVisitor = exports.FixedFieldsVisitor = exports.FallbackVisitor = exports.AlternatingVisitor = void 0;
7
- var _apidomCore = require("@speclynx/apidom-core");
8
- exports.isRefElement = _apidomCore.isRefElement;
9
- exports.isLinkElement = _apidomCore.isLinkElement;
10
- exports.isMemberElement = _apidomCore.isMemberElement;
11
- exports.isObjectElement = _apidomCore.isObjectElement;
12
- exports.isArrayElement = _apidomCore.isArrayElement;
13
- exports.isBooleanElement = _apidomCore.isBooleanElement;
14
- exports.isNullElement = _apidomCore.isNullElement;
15
- exports.isElement = _apidomCore.isElement;
16
- exports.isNumberElement = _apidomCore.isNumberElement;
17
- exports.isStringElement = _apidomCore.isStringElement;
6
+ exports.specificationObj = exports.refractorPluginReplaceEmptyElement = exports.refractMedia = exports.refractLinkDescription = exports.refractJSONSchema = exports.refractJSONReference = exports.refract = exports.mediaTypes = exports.isMediaElement = exports.isLinkDescriptionElement = exports.isJSONSchemaElement = exports.isJSONReferenceLikeElement = exports.isJSONReferenceElement = exports.default = exports.Visitor = exports.SpecificationVisitor = exports.PropertiesVisitorBase = exports.PatternedFieldsVisitor = exports.PatternPropertiesVisitorBase = exports.ParentSchemaAwareVisitor = exports.OneOfVisitorBase = exports.MediaVisitorBase = exports.MediaElement = exports.MapVisitor = exports.LinksVisitorBase = exports.LinkDescriptionVisitorBase = exports.LinkDescriptionVisitor = exports.LinkDescriptionElement = exports.JSONSchemaVisitorBase = exports.JSONSchemaVisitor = exports.JSONSchemaElement = exports.JSONSchemaDraft4MediaTypes = exports.JSONReferenceVisitorBase = exports.JSONReferenceElement = exports.ItemsVisitorBase = exports.ItemsVisitor = exports.FixedFieldsVisitor = exports.FallbackVisitor = exports.DependenciesVisitorBase = exports.DefinitionsVisitorBase = exports.AnyOfVisitorBase = exports.AlternatingVisitor = exports.AllOfVisitorBase = void 0;
18
7
  var _mediaTypes = _interopRequireWildcard(require("./media-types.cjs"));
19
8
  exports.mediaTypes = _mediaTypes.default;
20
9
  exports.JSONSchemaDraft4MediaTypes = _mediaTypes.JSONSchemaDraft4MediaTypes;
@@ -24,7 +13,10 @@ var _replaceEmptyElement = _interopRequireDefault(require("./refractor/plugins/r
24
13
  exports.refractorPluginReplaceEmptyElement = _replaceEmptyElement.default;
25
14
  var _index = _interopRequireWildcard(require("./refractor/index.cjs"));
26
15
  exports.refract = _index.default;
27
- exports.createRefractor = _index.createRefractor;
16
+ exports.refractJSONSchema = _index.refractJSONSchema;
17
+ exports.refractJSONReference = _index.refractJSONReference;
18
+ exports.refractMedia = _index.refractMedia;
19
+ exports.refractLinkDescription = _index.refractLinkDescription;
28
20
  var _specification = _interopRequireDefault(require("./refractor/specification.cjs"));
29
21
  exports.specificationObj = _specification.default;
30
22
  var _predicates = require("./predicates.cjs");
@@ -50,17 +42,28 @@ var _AlternatingVisitor = _interopRequireDefault(require("./refractor/visitors/g
50
42
  exports.AlternatingVisitor = _AlternatingVisitor.default;
51
43
  var _ParentSchemaAwareVisitor = _interopRequireDefault(require("./refractor/visitors/json-schema/ParentSchemaAwareVisitor.cjs"));
52
44
  exports.ParentSchemaAwareVisitor = _ParentSchemaAwareVisitor.default;
45
+ var _bases = require("./refractor/visitors/json-schema/bases.cjs");
46
+ exports.JSONSchemaVisitorBase = _bases.JSONSchemaVisitorBase;
47
+ exports.JSONReferenceVisitorBase = _bases.JSONReferenceVisitorBase;
48
+ exports.LinkDescriptionVisitorBase = _bases.LinkDescriptionVisitorBase;
49
+ exports.MediaVisitorBase = _bases.MediaVisitorBase;
50
+ exports.AllOfVisitorBase = _bases.AllOfVisitorBase;
51
+ exports.AnyOfVisitorBase = _bases.AnyOfVisitorBase;
52
+ exports.OneOfVisitorBase = _bases.OneOfVisitorBase;
53
+ exports.ItemsVisitorBase = _bases.ItemsVisitorBase;
54
+ exports.LinksVisitorBase = _bases.LinksVisitorBase;
55
+ exports.DefinitionsVisitorBase = _bases.DefinitionsVisitorBase;
56
+ exports.DependenciesVisitorBase = _bases.DependenciesVisitorBase;
57
+ exports.PatternPropertiesVisitorBase = _bases.PatternPropertiesVisitorBase;
58
+ exports.PropertiesVisitorBase = _bases.PropertiesVisitorBase;
53
59
  var _index2 = _interopRequireDefault(require("./refractor/visitors/json-schema/link-description/index.cjs"));
54
60
  exports.LinkDescriptionVisitor = _index2.default;
55
61
  var _index3 = _interopRequireDefault(require("./refractor/visitors/json-schema/index.cjs"));
56
62
  exports.JSONSchemaVisitor = _index3.default;
57
63
  var _ItemsVisitor = _interopRequireDefault(require("./refractor/visitors/json-schema/ItemsVisitor.cjs"));
58
64
  exports.ItemsVisitor = _ItemsVisitor.default;
59
- var _visitor = require("./traversal/visitor.cjs");
60
- exports.keyMap = _visitor.keyMap;
61
- exports.getNodeType = _visitor.getNodeType;
62
- var _registration = require("./refractor/registration.cjs");
63
- exports.JSONSchemaElement = _registration.JSONSchemaElement;
64
- exports.JSONReferenceElement = _registration.JSONReferenceElement;
65
- exports.MediaElement = _registration.MediaElement;
66
- exports.LinkDescriptionElement = _registration.LinkDescriptionElement;
65
+ var _inspect = require("./refractor/inspect.cjs");
66
+ exports.JSONSchemaElement = _inspect.JSONSchemaElement;
67
+ exports.JSONReferenceElement = _inspect.JSONReferenceElement;
68
+ exports.MediaElement = _inspect.MediaElement;
69
+ exports.LinkDescriptionElement = _inspect.LinkDescriptionElement;
package/src/index.mjs CHANGED
@@ -1,8 +1,7 @@
1
- export { isRefElement, isLinkElement, isMemberElement, isObjectElement, isArrayElement, isBooleanElement, isNullElement, isElement, isNumberElement, isStringElement } from '@speclynx/apidom-core';
2
1
  export { default as mediaTypes, JSONSchemaDraft4MediaTypes } from "./media-types.mjs";
3
2
  export { default } from "./namespace.mjs";
4
3
  export { default as refractorPluginReplaceEmptyElement } from "./refractor/plugins/replace-empty-element.mjs";
5
- export { default as refract, createRefractor } from "./refractor/index.mjs";
4
+ export { default as refract, refractJSONSchema, refractJSONReference, refractMedia, refractLinkDescription } from "./refractor/index.mjs";
6
5
  export { default as specificationObj } from "./refractor/specification.mjs";
7
6
  export { isJSONReferenceElement, isJSONSchemaElement, isLinkDescriptionElement, isMediaElement } from "./predicates.mjs";
8
7
  export { isJSONReferenceLikeElement } from "./refractor/predicates.mjs";
@@ -14,11 +13,11 @@ export { default as PatternedFieldsVisitor } from "./refractor/visitors/generics
14
13
  export { default as MapVisitor } from "./refractor/visitors/generics/MapVisitor.mjs";
15
14
  export { default as AlternatingVisitor } from "./refractor/visitors/generics/AlternatingVisitor.mjs";
16
15
  export { default as ParentSchemaAwareVisitor } from "./refractor/visitors/json-schema/ParentSchemaAwareVisitor.mjs";
16
+ export { JSONSchemaVisitorBase, JSONReferenceVisitorBase, LinkDescriptionVisitorBase, MediaVisitorBase, AllOfVisitorBase, AnyOfVisitorBase, OneOfVisitorBase, ItemsVisitorBase, LinksVisitorBase, DefinitionsVisitorBase, DependenciesVisitorBase, PatternPropertiesVisitorBase, PropertiesVisitorBase } from "./refractor/visitors/json-schema/bases.mjs";
17
17
  export { default as LinkDescriptionVisitor } from "./refractor/visitors/json-schema/link-description/index.mjs";
18
18
  export { default as JSONSchemaVisitor } from "./refractor/visitors/json-schema/index.mjs";
19
19
  export { default as ItemsVisitor } from "./refractor/visitors/json-schema/ItemsVisitor.mjs";
20
- export { keyMap, getNodeType } from "./traversal/visitor.mjs";
21
20
  /**
22
21
  * JSON Schema Draft 4 specification elements.
23
22
  */
24
- export { JSONSchemaElement, JSONReferenceElement, MediaElement, LinkDescriptionElement } from "./refractor/registration.mjs";
23
+ export { JSONSchemaElement, JSONReferenceElement, MediaElement, LinkDescriptionElement } from "./refractor/inspect.mjs";
@@ -3,7 +3,6 @@
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
4
  exports.__esModule = true;
5
5
  exports.isMediaElement = exports.isLinkDescriptionElement = exports.isJSONSchemaElement = exports.isJSONReferenceElement = void 0;
6
- var _apidomCore = require("@speclynx/apidom-core");
7
6
  var _JSONSchema = _interopRequireDefault(require("./elements/JSONSchema.cjs"));
8
7
  var _JSONReference = _interopRequireDefault(require("./elements/JSONReference.cjs"));
9
8
  var _Media = _interopRequireDefault(require("./elements/Media.cjs"));
@@ -11,43 +10,23 @@ var _LinkDescription = _interopRequireDefault(require("./elements/LinkDescriptio
11
10
  /**
12
11
  * @public
13
12
  */
14
- const isJSONSchemaElement = exports.isJSONSchemaElement = (0, _apidomCore.createPredicate)(({
15
- hasBasicElementProps,
16
- isElementType,
17
- primitiveEq
18
- }) => {
19
- return element => element instanceof _JSONSchema.default || hasBasicElementProps(element) && isElementType('JSONSchemaDraft4', element) && primitiveEq('object', element);
20
- });
13
+ const isJSONSchemaElement = element => element instanceof _JSONSchema.default;
21
14
 
22
15
  /**
23
16
  * @public
24
17
  */
25
- const isJSONReferenceElement = exports.isJSONReferenceElement = (0, _apidomCore.createPredicate)(({
26
- hasBasicElementProps,
27
- isElementType,
28
- primitiveEq
29
- }) => {
30
- return element => element instanceof _JSONReference.default || hasBasicElementProps(element) && isElementType('JSONReference', element) && primitiveEq('object', element);
31
- });
18
+ exports.isJSONSchemaElement = isJSONSchemaElement;
19
+ const isJSONReferenceElement = element => element instanceof _JSONReference.default;
32
20
 
33
21
  /**
34
22
  * @public
35
23
  */
36
- const isMediaElement = exports.isMediaElement = (0, _apidomCore.createPredicate)(({
37
- hasBasicElementProps,
38
- isElementType,
39
- primitiveEq
40
- }) => {
41
- return element => element instanceof _Media.default || hasBasicElementProps(element) && isElementType('media', element) && primitiveEq('object', element);
42
- });
24
+ exports.isJSONReferenceElement = isJSONReferenceElement;
25
+ const isMediaElement = element => element instanceof _Media.default;
43
26
 
44
27
  /**
45
28
  * @public
46
29
  */
47
- const isLinkDescriptionElement = exports.isLinkDescriptionElement = (0, _apidomCore.createPredicate)(({
48
- hasBasicElementProps,
49
- isElementType,
50
- primitiveEq
51
- }) => {
52
- return element => element instanceof _LinkDescription.default || hasBasicElementProps(element) && isElementType('linkDescription', element) && primitiveEq('object', element);
53
- });
30
+ exports.isMediaElement = isMediaElement;
31
+ const isLinkDescriptionElement = element => element instanceof _LinkDescription.default;
32
+ exports.isLinkDescriptionElement = isLinkDescriptionElement;
@@ -1,4 +1,3 @@
1
- import { createPredicate } from '@speclynx/apidom-core';
2
1
  import JSONSchemaElement from "./elements/JSONSchema.mjs";
3
2
  import JSONReferenceElement from "./elements/JSONReference.mjs";
4
3
  import MediaElement from "./elements/Media.mjs";
@@ -6,43 +5,19 @@ import LinkDescriptionElement from "./elements/LinkDescription.mjs";
6
5
  /**
7
6
  * @public
8
7
  */
9
- export const isJSONSchemaElement = createPredicate(({
10
- hasBasicElementProps,
11
- isElementType,
12
- primitiveEq
13
- }) => {
14
- return element => element instanceof JSONSchemaElement || hasBasicElementProps(element) && isElementType('JSONSchemaDraft4', element) && primitiveEq('object', element);
15
- });
8
+ export const isJSONSchemaElement = element => element instanceof JSONSchemaElement;
16
9
 
17
10
  /**
18
11
  * @public
19
12
  */
20
- export const isJSONReferenceElement = createPredicate(({
21
- hasBasicElementProps,
22
- isElementType,
23
- primitiveEq
24
- }) => {
25
- return element => element instanceof JSONReferenceElement || hasBasicElementProps(element) && isElementType('JSONReference', element) && primitiveEq('object', element);
26
- });
13
+ export const isJSONReferenceElement = element => element instanceof JSONReferenceElement;
27
14
 
28
15
  /**
29
16
  * @public
30
17
  */
31
- export const isMediaElement = createPredicate(({
32
- hasBasicElementProps,
33
- isElementType,
34
- primitiveEq
35
- }) => {
36
- return element => element instanceof MediaElement || hasBasicElementProps(element) && isElementType('media', element) && primitiveEq('object', element);
37
- });
18
+ export const isMediaElement = element => element instanceof MediaElement;
38
19
 
39
20
  /**
40
21
  * @public
41
22
  */
42
- export const isLinkDescriptionElement = createPredicate(({
43
- hasBasicElementProps,
44
- isElementType,
45
- primitiveEq
46
- }) => {
47
- return element => element instanceof LinkDescriptionElement || hasBasicElementProps(element) && isElementType('linkDescription', element) && primitiveEq('object', element);
48
- });
23
+ export const isLinkDescriptionElement = element => element instanceof LinkDescriptionElement;
@@ -2,52 +2,93 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
4
  exports.__esModule = true;
5
- exports.default = exports.createRefractor = void 0;
5
+ exports.refractMedia = exports.refractLinkDescription = exports.refractJSONSchema = exports.refractJSONReference = exports.default = void 0;
6
6
  var _apidomCore = require("@speclynx/apidom-core");
7
+ var _apidomTraverse = require("@speclynx/apidom-traverse");
8
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
7
9
  var _ramda = require("ramda");
8
10
  var _specification = _interopRequireDefault(require("./specification.cjs"));
9
- var _visitor = require("../traversal/visitor.cjs");
10
11
  var _toolbox = _interopRequireDefault(require("./toolbox.cjs"));
12
+ /**
13
+ * @public
14
+ */
15
+
16
+ /**
17
+ * @public
18
+ */
19
+
11
20
  /**
12
21
  * @public
13
22
  */
14
23
  const refract = (value, {
15
- specPath = ['visitors', 'document', 'objects', 'JSONSchema', '$visitor'],
24
+ element = 'jSONSchemaDraft4',
16
25
  plugins = [],
17
26
  specificationObj = _specification.default
18
27
  } = {}) => {
19
- const element = (0, _apidomCore.refract)(value);
20
- const resolvedSpec = (0, _apidomCore.dereference)(specificationObj);
28
+ const genericElement = (0, _apidomDatamodel.refract)(value);
29
+ const resolvedSpec = (0, _apidomCore.resolveSpecification)(specificationObj);
30
+ const elementMap = resolvedSpec.elementMap;
31
+ const specPath = elementMap[element];
32
+ if (!specPath) {
33
+ throw new Error(`Unknown element type: "${element}"`);
34
+ }
21
35
 
22
36
  /**
23
37
  * This is where generic ApiDOM becomes semantic (namespace applied).
24
38
  * We don't allow consumers to hook into this translation.
25
- * Though we allow consumers to define their onw plugins on already transformed ApiDOM.
39
+ * Though we allow consumers to define their own plugins on already transformed ApiDOM.
26
40
  */
27
41
  const RootVisitorClass = (0, _ramda.path)(specPath, resolvedSpec);
28
42
  const rootVisitor = new RootVisitorClass({
29
43
  specObj: resolvedSpec
30
44
  });
31
- (0, _apidomCore.visit)(element, rootVisitor);
45
+ (0, _apidomTraverse.traverse)(genericElement, rootVisitor);
32
46
 
33
47
  /**
34
48
  * Running plugins visitors means extra single traversal === performance hit.
35
49
  */
36
50
  return (0, _apidomCore.dispatchRefractorPlugins)(rootVisitor.element, plugins, {
37
- toolboxCreator: _toolbox.default,
38
- visitorOptions: {
39
- keyMap: _visitor.keyMap,
40
- nodeTypeGetter: _visitor.getNodeType
41
- }
51
+ toolboxCreator: _toolbox.default
42
52
  });
43
53
  };
44
54
 
45
55
  /**
56
+ * Refracts a value into a JSONSchemaElement.
57
+ * @public
58
+ */
59
+ const refractJSONSchema = (value, options = {}) => refract(value, {
60
+ ...options,
61
+ element: 'jSONSchemaDraft4'
62
+ });
63
+
64
+ /**
65
+ * Refracts a value into a JSONReferenceElement.
66
+ * @public
67
+ */
68
+ exports.refractJSONSchema = refractJSONSchema;
69
+ const refractJSONReference = (value, options = {}) => refract(value, {
70
+ ...options,
71
+ element: 'jSONReference'
72
+ });
73
+
74
+ /**
75
+ * Refracts a value into a MediaElement.
76
+ * @public
77
+ */
78
+ exports.refractJSONReference = refractJSONReference;
79
+ const refractMedia = (value, options = {}) => refract(value, {
80
+ ...options,
81
+ element: 'media'
82
+ });
83
+
84
+ /**
85
+ * Refracts a value into a LinkDescriptionElement.
46
86
  * @public
47
87
  */
48
- const createRefractor = specPath => (value, options = {}) => refract(value, {
49
- specPath,
50
- ...options
88
+ exports.refractMedia = refractMedia;
89
+ const refractLinkDescription = (value, options = {}) => refract(value, {
90
+ ...options,
91
+ element: 'linkDescription'
51
92
  });
52
- exports.createRefractor = createRefractor;
93
+ exports.refractLinkDescription = refractLinkDescription;
53
94
  var _default = exports.default = refract;
@@ -1,47 +1,83 @@
1
- import { visit, dereference, refract as baseRefract, dispatchRefractorPlugins } from '@speclynx/apidom-core';
1
+ import { resolveSpecification, dispatchRefractorPlugins } from '@speclynx/apidom-core';
2
+ import { traverse } from '@speclynx/apidom-traverse';
3
+ import { refract as baseRefract } from '@speclynx/apidom-datamodel';
2
4
  import { path } from 'ramda';
3
5
  import specification from "./specification.mjs";
4
- import { keyMap, getNodeType } from "../traversal/visitor.mjs";
5
6
  import createToolbox from "./toolbox.mjs";
7
+ /**
8
+ * @public
9
+ */
10
+ /**
11
+ * @public
12
+ */
6
13
  /**
7
14
  * @public
8
15
  */
9
16
  const refract = (value, {
10
- specPath = ['visitors', 'document', 'objects', 'JSONSchema', '$visitor'],
17
+ element = 'jSONSchemaDraft4',
11
18
  plugins = [],
12
19
  specificationObj = specification
13
20
  } = {}) => {
14
- const element = baseRefract(value);
15
- const resolvedSpec = dereference(specificationObj);
21
+ const genericElement = baseRefract(value);
22
+ const resolvedSpec = resolveSpecification(specificationObj);
23
+ const elementMap = resolvedSpec.elementMap;
24
+ const specPath = elementMap[element];
25
+ if (!specPath) {
26
+ throw new Error(`Unknown element type: "${element}"`);
27
+ }
16
28
 
17
29
  /**
18
30
  * This is where generic ApiDOM becomes semantic (namespace applied).
19
31
  * We don't allow consumers to hook into this translation.
20
- * Though we allow consumers to define their onw plugins on already transformed ApiDOM.
32
+ * Though we allow consumers to define their own plugins on already transformed ApiDOM.
21
33
  */
22
34
  const RootVisitorClass = path(specPath, resolvedSpec);
23
35
  const rootVisitor = new RootVisitorClass({
24
36
  specObj: resolvedSpec
25
37
  });
26
- visit(element, rootVisitor);
38
+ traverse(genericElement, rootVisitor);
27
39
 
28
40
  /**
29
41
  * Running plugins visitors means extra single traversal === performance hit.
30
42
  */
31
43
  return dispatchRefractorPlugins(rootVisitor.element, plugins, {
32
- toolboxCreator: createToolbox,
33
- visitorOptions: {
34
- keyMap,
35
- nodeTypeGetter: getNodeType
36
- }
44
+ toolboxCreator: createToolbox
37
45
  });
38
46
  };
39
47
 
40
48
  /**
49
+ * Refracts a value into a JSONSchemaElement.
50
+ * @public
51
+ */
52
+ export const refractJSONSchema = (value, options = {}) => refract(value, {
53
+ ...options,
54
+ element: 'jSONSchemaDraft4'
55
+ });
56
+
57
+ /**
58
+ * Refracts a value into a JSONReferenceElement.
59
+ * @public
60
+ */
61
+ export const refractJSONReference = (value, options = {}) => refract(value, {
62
+ ...options,
63
+ element: 'jSONReference'
64
+ });
65
+
66
+ /**
67
+ * Refracts a value into a MediaElement.
68
+ * @public
69
+ */
70
+ export const refractMedia = (value, options = {}) => refract(value, {
71
+ ...options,
72
+ element: 'media'
73
+ });
74
+
75
+ /**
76
+ * Refracts a value into a LinkDescriptionElement.
41
77
  * @public
42
78
  */
43
- export const createRefractor = specPath => (value, options = {}) => refract(value, {
44
- specPath,
45
- ...options
79
+ export const refractLinkDescription = (value, options = {}) => refract(value, {
80
+ ...options,
81
+ element: 'linkDescription'
46
82
  });
47
83
  export default refract;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ var _apidomCore = require("@speclynx/apidom-core");
6
+ var _ramdaAdjunct = require("ramda-adjunct");
7
+ var _JSONSchema = _interopRequireDefault(require("../elements/JSONSchema.cjs"));
8
+ exports.JSONSchemaElement = _JSONSchema.default;
9
+ var _JSONReference = _interopRequireDefault(require("../elements/JSONReference.cjs"));
10
+ exports.JSONReferenceElement = _JSONReference.default;
11
+ var _Media = _interopRequireDefault(require("../elements/Media.cjs"));
12
+ exports.MediaElement = _Media.default;
13
+ var _LinkDescription = _interopRequireDefault(require("../elements/LinkDescription.cjs"));
14
+ exports.LinkDescriptionElement = _LinkDescription.default;
15
+ var _specification = _interopRequireDefault(require("./specification.cjs"));
16
+ /**
17
+ * @public
18
+ */
19
+
20
+ // Resolve specification to dereference $ref pointers
21
+ const resolvedSpec = (0, _apidomCore.resolveSpecification)(_specification.default);
22
+
23
+ // Extract fixed fields as list of { name, alias?, $visitor }
24
+ const getFixedFields = fixedFieldsSpec => {
25
+ return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
26
+ if ((0, _ramdaAdjunct.isPlainObject)(fieldSpec)) {
27
+ return {
28
+ name,
29
+ ...fieldSpec
30
+ };
31
+ }
32
+ return {
33
+ name,
34
+ $visitor: fieldSpec
35
+ };
36
+ });
37
+ };
38
+
39
+ // Define lazy getters for fixedFields on element classes
40
+ Object.defineProperty(_JSONSchema.default, 'fixedFields', {
41
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.JSONSchema.fixedFields),
42
+ enumerable: true
43
+ });
44
+ Object.defineProperty(_JSONReference.default, 'fixedFields', {
45
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.JSONReference.fixedFields),
46
+ enumerable: true
47
+ });
48
+ Object.defineProperty(_Media.default, 'fixedFields', {
49
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Media.fixedFields),
50
+ enumerable: true
51
+ });
52
+ Object.defineProperty(_LinkDescription.default, 'fixedFields', {
53
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.LinkDescription.fixedFields),
54
+ enumerable: true
55
+ });
@@ -0,0 +1,47 @@
1
+ import { resolveSpecification } from '@speclynx/apidom-core';
2
+ import { isPlainObject } from 'ramda-adjunct';
3
+ import JSONSchemaElement from "../elements/JSONSchema.mjs";
4
+ import JSONReferenceElement from "../elements/JSONReference.mjs";
5
+ import MediaElement from "../elements/Media.mjs";
6
+ import LinkDescriptionElement from "../elements/LinkDescription.mjs";
7
+ import specification from "./specification.mjs";
8
+ /**
9
+ * @public
10
+ */
11
+ // Resolve specification to dereference $ref pointers
12
+ const resolvedSpec = resolveSpecification(specification);
13
+
14
+ // Extract fixed fields as list of { name, alias?, $visitor }
15
+ const getFixedFields = fixedFieldsSpec => {
16
+ return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
17
+ if (isPlainObject(fieldSpec)) {
18
+ return {
19
+ name,
20
+ ...fieldSpec
21
+ };
22
+ }
23
+ return {
24
+ name,
25
+ $visitor: fieldSpec
26
+ };
27
+ });
28
+ };
29
+
30
+ // Define lazy getters for fixedFields on element classes
31
+ Object.defineProperty(JSONSchemaElement, 'fixedFields', {
32
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.JSONSchema.fixedFields),
33
+ enumerable: true
34
+ });
35
+ Object.defineProperty(JSONReferenceElement, 'fixedFields', {
36
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.JSONReference.fixedFields),
37
+ enumerable: true
38
+ });
39
+ Object.defineProperty(MediaElement, 'fixedFields', {
40
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Media.fixedFields),
41
+ enumerable: true
42
+ });
43
+ Object.defineProperty(LinkDescriptionElement, 'fixedFields', {
44
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.LinkDescription.fixedFields),
45
+ enumerable: true
46
+ });
47
+ export { JSONSchemaElement, JSONReferenceElement, MediaElement, LinkDescriptionElement };