@speclynx/apidom-ns-json-schema-draft-6 3.2.1 → 4.0.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 (33) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/apidom-ns-json-schema-draft-6.browser.js +24 -20
  3. package/package.json +7 -7
  4. package/src/elements/JSONSchema.cjs +0 -124
  5. package/src/elements/JSONSchema.mjs +0 -121
  6. package/src/elements/LinkDescription.cjs +0 -60
  7. package/src/elements/LinkDescription.mjs +0 -56
  8. package/src/index.cjs +0 -46
  9. package/src/index.mjs +0 -14
  10. package/src/media-types.cjs +0 -34
  11. package/src/media-types.mjs +0 -30
  12. package/src/namespace.cjs +0 -24
  13. package/src/namespace.mjs +0 -19
  14. package/src/predicates.cjs +0 -30
  15. package/src/predicates.mjs +0 -21
  16. package/src/refractor/index.cjs +0 -76
  17. package/src/refractor/index.mjs +0 -67
  18. package/src/refractor/inspect.cjs +0 -47
  19. package/src/refractor/inspect.mjs +0 -39
  20. package/src/refractor/plugins/replace-empty-element.cjs +0 -218
  21. package/src/refractor/plugins/replace-empty-element.mjs +0 -212
  22. package/src/refractor/specification.cjs +0 -29
  23. package/src/refractor/specification.mjs +0 -24
  24. package/src/refractor/toolbox.cjs +0 -26
  25. package/src/refractor/toolbox.mjs +0 -19
  26. package/src/refractor/visitors/json-schema/ExamplesVisitor.cjs +0 -15
  27. package/src/refractor/visitors/json-schema/ExamplesVisitor.mjs +0 -11
  28. package/src/refractor/visitors/json-schema/ItemsVisitor.cjs +0 -15
  29. package/src/refractor/visitors/json-schema/ItemsVisitor.mjs +0 -11
  30. package/src/refractor/visitors/json-schema/index.cjs +0 -29
  31. package/src/refractor/visitors/json-schema/index.mjs +0 -24
  32. package/src/refractor/visitors/json-schema/link-description/index.cjs +0 -19
  33. package/src/refractor/visitors/json-schema/link-description/index.mjs +0 -14
@@ -1,30 +0,0 @@
1
- import { last } from 'ramda';
2
- import { MediaTypes } from '@speclynx/apidom-core';
3
-
4
- /**
5
- * @public
6
- */
7
-
8
- /**
9
- * @public
10
- */
11
- export class JSONSchemaDraft6MediaTypes extends MediaTypes {
12
- filterByFormat(format = 'generic') {
13
- const effectiveFormat = format === 'generic' ? 'schema;version' : format;
14
- return this.filter(mediaType => mediaType.includes(effectiveFormat));
15
- }
16
- findBy(version = 'draft-06', format = 'generic') {
17
- const search = format === 'generic' ? `schema;version=${version}` : `schema+${format};version=${version}`;
18
- const found = this.find(mediaType => mediaType.includes(search));
19
- return found || this.unknownMediaType;
20
- }
21
- latest(format = 'generic') {
22
- return last(this.filterByFormat(format));
23
- }
24
- }
25
-
26
- /**
27
- * @public
28
- */
29
- const mediaTypes = new JSONSchemaDraft6MediaTypes('application/schema;version=draft-06', 'application/schema+json;version=draft-06', 'application/schema+yaml;version=draft-06');
30
- export default mediaTypes;
package/src/namespace.cjs DELETED
@@ -1,24 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
- exports.__esModule = true;
5
- exports.default = void 0;
6
- var _apidomNsJsonSchemaDraft = require("@speclynx/apidom-ns-json-schema-draft-4");
7
- var _JSONSchema = _interopRequireDefault(require("./elements/JSONSchema.cjs"));
8
- var _LinkDescription = _interopRequireDefault(require("./elements/LinkDescription.cjs"));
9
- /**
10
- * @public
11
- */
12
- const jsonSchemaDraft6 = {
13
- namespace: options => {
14
- const {
15
- base
16
- } = options;
17
- base.register('jSONSchemaDraft6', _JSONSchema.default);
18
- base.register('jSONReference', _apidomNsJsonSchemaDraft.JSONReferenceElement);
19
- base.register('media', _apidomNsJsonSchemaDraft.MediaElement);
20
- base.register('linkDescription', _LinkDescription.default);
21
- return base;
22
- }
23
- };
24
- var _default = exports.default = jsonSchemaDraft6;
package/src/namespace.mjs DELETED
@@ -1,19 +0,0 @@
1
- import { JSONReferenceElement, MediaElement } from '@speclynx/apidom-ns-json-schema-draft-4';
2
- import JSONSchemaElement from "./elements/JSONSchema.mjs";
3
- import LinkDescriptionElement from "./elements/LinkDescription.mjs";
4
- /**
5
- * @public
6
- */
7
- const jsonSchemaDraft6 = {
8
- namespace: options => {
9
- const {
10
- base
11
- } = options;
12
- base.register('jSONSchemaDraft6', JSONSchemaElement);
13
- base.register('jSONReference', JSONReferenceElement);
14
- base.register('media', MediaElement);
15
- base.register('linkDescription', LinkDescriptionElement);
16
- return base;
17
- }
18
- };
19
- export default jsonSchemaDraft6;
@@ -1,30 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
- exports.__esModule = true;
5
- exports.isMediaElement = exports.isLinkDescriptionElement = exports.isJSONSchemaElement = exports.isJSONReferenceElement = exports.isBooleanJSONSchemaElement = void 0;
6
- var _apidomDatamodel = require("@speclynx/apidom-datamodel");
7
- var _JSONSchema = _interopRequireDefault(require("./elements/JSONSchema.cjs"));
8
- var _LinkDescription = _interopRequireDefault(require("./elements/LinkDescription.cjs"));
9
- var _apidomNsJsonSchemaDraft = require("@speclynx/apidom-ns-json-schema-draft-4");
10
- exports.isJSONReferenceElement = _apidomNsJsonSchemaDraft.isJSONReferenceElement;
11
- exports.isMediaElement = _apidomNsJsonSchemaDraft.isMediaElement;
12
- /**
13
- * @public
14
- */
15
- const isBooleanJSONSchemaElement = element => {
16
- return (0, _apidomDatamodel.isBooleanElement)(element) && (0, _apidomDatamodel.includesClasses)(element, ['boolean-json-schema']);
17
- };
18
-
19
- /**
20
- * @public
21
- */
22
- exports.isBooleanJSONSchemaElement = isBooleanJSONSchemaElement;
23
- const isJSONSchemaElement = element => element instanceof _JSONSchema.default;
24
-
25
- /**
26
- * @public
27
- */
28
- exports.isJSONSchemaElement = isJSONSchemaElement;
29
- const isLinkDescriptionElement = element => element instanceof _LinkDescription.default;
30
- exports.isLinkDescriptionElement = isLinkDescriptionElement;
@@ -1,21 +0,0 @@
1
- import { isBooleanElement, includesClasses } from '@speclynx/apidom-datamodel';
2
- import JSONSchemaElement from "./elements/JSONSchema.mjs";
3
- import LinkDescriptionElement from "./elements/LinkDescription.mjs";
4
- export { isJSONReferenceElement, isMediaElement } from '@speclynx/apidom-ns-json-schema-draft-4';
5
-
6
- /**
7
- * @public
8
- */
9
- export const isBooleanJSONSchemaElement = element => {
10
- return isBooleanElement(element) && includesClasses(element, ['boolean-json-schema']);
11
- };
12
-
13
- /**
14
- * @public
15
- */
16
- export const isJSONSchemaElement = element => element instanceof JSONSchemaElement;
17
-
18
- /**
19
- * @public
20
- */
21
- export const isLinkDescriptionElement = element => element instanceof LinkDescriptionElement;
@@ -1,76 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
- exports.__esModule = true;
5
- exports.refractLinkDescription = exports.refractJSONSchema = exports.default = void 0;
6
- var _apidomCore = require("@speclynx/apidom-core");
7
- var _apidomTraverse = require("@speclynx/apidom-traverse");
8
- var _apidomDatamodel = require("@speclynx/apidom-datamodel");
9
- var _ramda = require("ramda");
10
- var _specification = _interopRequireDefault(require("./specification.cjs"));
11
- var _toolbox = _interopRequireDefault(require("./toolbox.cjs"));
12
- /**
13
- * @public
14
- */
15
-
16
- /**
17
- * @public
18
- */
19
-
20
- /**
21
- * @public
22
- */
23
- const refract = (value, {
24
- element = 'jSONSchemaDraft6',
25
- plugins = [],
26
- specificationObj = _specification.default,
27
- consume = false
28
- } = {}) => {
29
- const genericElement = (0, _apidomDatamodel.refract)(value);
30
- const resolvedSpec = (0, _apidomCore.resolveSpecification)(specificationObj);
31
- const elementMap = resolvedSpec.elementMap;
32
- const specPath = elementMap[element];
33
- if (!specPath) {
34
- throw new Error(`Unknown element type: "${element}"`);
35
- }
36
-
37
- /**
38
- * This is where generic ApiDOM becomes semantic (namespace applied).
39
- * We don't allow consumers to hook into this translation.
40
- * Though we allow consumers to define their own plugins on already transformed ApiDOM.
41
- */
42
- const RootVisitorClass = (0, _ramda.path)(specPath, resolvedSpec);
43
- const rootVisitor = new RootVisitorClass({
44
- specObj: resolvedSpec,
45
- consume
46
- });
47
- (0, _apidomTraverse.traverse)(genericElement, rootVisitor);
48
-
49
- /**
50
- * Running plugins visitors means extra single traversal === performance hit.
51
- */
52
- return (0, _apidomCore.dispatchRefractorPlugins)(rootVisitor.element, plugins, {
53
- toolboxCreator: _toolbox.default
54
- });
55
- };
56
-
57
- /**
58
- * Refracts a value into a JSONSchemaElement.
59
- * @public
60
- */
61
- const refractJSONSchema = (value, options = {}) => refract(value, {
62
- ...options,
63
- element: 'jSONSchemaDraft6'
64
- });
65
-
66
- /**
67
- * Refracts a value into a LinkDescriptionElement.
68
- * @public
69
- */
70
- exports.refractJSONSchema = refractJSONSchema;
71
- const refractLinkDescription = (value, options = {}) => refract(value, {
72
- ...options,
73
- element: 'linkDescription'
74
- });
75
- exports.refractLinkDescription = refractLinkDescription;
76
- var _default = exports.default = refract;
@@ -1,67 +0,0 @@
1
- import { resolveSpecification, dispatchRefractorPlugins } from '@speclynx/apidom-core';
2
- import { traverse } from '@speclynx/apidom-traverse';
3
- import { refract as baseRefract } from '@speclynx/apidom-datamodel';
4
- import { path } from 'ramda';
5
- import specification from "./specification.mjs";
6
- import createToolbox from "./toolbox.mjs";
7
- /**
8
- * @public
9
- */
10
- /**
11
- * @public
12
- */
13
- /**
14
- * @public
15
- */
16
- const refract = (value, {
17
- element = 'jSONSchemaDraft6',
18
- plugins = [],
19
- specificationObj = specification,
20
- consume = false
21
- } = {}) => {
22
- const genericElement = baseRefract(value);
23
- const resolvedSpec = resolveSpecification(specificationObj);
24
- const elementMap = resolvedSpec.elementMap;
25
- const specPath = elementMap[element];
26
- if (!specPath) {
27
- throw new Error(`Unknown element type: "${element}"`);
28
- }
29
-
30
- /**
31
- * This is where generic ApiDOM becomes semantic (namespace applied).
32
- * We don't allow consumers to hook into this translation.
33
- * Though we allow consumers to define their own plugins on already transformed ApiDOM.
34
- */
35
- const RootVisitorClass = path(specPath, resolvedSpec);
36
- const rootVisitor = new RootVisitorClass({
37
- specObj: resolvedSpec,
38
- consume
39
- });
40
- traverse(genericElement, rootVisitor);
41
-
42
- /**
43
- * Running plugins visitors means extra single traversal === performance hit.
44
- */
45
- return dispatchRefractorPlugins(rootVisitor.element, plugins, {
46
- toolboxCreator: createToolbox
47
- });
48
- };
49
-
50
- /**
51
- * Refracts a value into a JSONSchemaElement.
52
- * @public
53
- */
54
- export const refractJSONSchema = (value, options = {}) => refract(value, {
55
- ...options,
56
- element: 'jSONSchemaDraft6'
57
- });
58
-
59
- /**
60
- * Refracts a value into a LinkDescriptionElement.
61
- * @public
62
- */
63
- export const refractLinkDescription = (value, options = {}) => refract(value, {
64
- ...options,
65
- element: 'linkDescription'
66
- });
67
- export default refract;
@@ -1,47 +0,0 @@
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 _apidomNsJsonSchemaDraft = require("@speclynx/apidom-ns-json-schema-draft-4");
8
- exports.JSONReferenceElement = _apidomNsJsonSchemaDraft.JSONReferenceElement;
9
- exports.MediaElement = _apidomNsJsonSchemaDraft.MediaElement;
10
- var _JSONSchema = _interopRequireDefault(require("../elements/JSONSchema.cjs"));
11
- exports.JSONSchemaElement = _JSONSchema.default;
12
- var _LinkDescription = _interopRequireDefault(require("../elements/LinkDescription.cjs"));
13
- exports.LinkDescriptionElement = _LinkDescription.default;
14
- var _specification = _interopRequireDefault(require("./specification.cjs"));
15
- /**
16
- * @public
17
- */
18
-
19
- // Resolve specification to dereference $ref pointers
20
- const resolvedSpec = (0, _apidomCore.resolveSpecification)(_specification.default);
21
-
22
- // Extract fixed fields as list of { name, alias?, $visitor }
23
- const getFixedFields = fixedFieldsSpec => {
24
- return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
25
- if ((0, _ramdaAdjunct.isPlainObject)(fieldSpec)) {
26
- return {
27
- name,
28
- ...fieldSpec
29
- };
30
- }
31
- return {
32
- name,
33
- $visitor: fieldSpec
34
- };
35
- });
36
- };
37
-
38
- // Define lazy getters for fixedFields on element classes
39
- // Note: JSONReferenceElement and MediaElement inherit fixedFields from draft-4
40
- Object.defineProperty(_JSONSchema.default, 'fixedFields', {
41
- get: () => getFixedFields(resolvedSpec.visitors.document.objects.JSONSchema.fixedFields),
42
- enumerable: true
43
- });
44
- Object.defineProperty(_LinkDescription.default, 'fixedFields', {
45
- get: () => getFixedFields(resolvedSpec.visitors.document.objects.LinkDescription.fixedFields),
46
- enumerable: true
47
- });
@@ -1,39 +0,0 @@
1
- import { resolveSpecification } from '@speclynx/apidom-core';
2
- import { isPlainObject } from 'ramda-adjunct';
3
- import { JSONReferenceElement, MediaElement } from '@speclynx/apidom-ns-json-schema-draft-4';
4
- import JSONSchemaElement from "../elements/JSONSchema.mjs";
5
- import LinkDescriptionElement from "../elements/LinkDescription.mjs";
6
- import specification from "./specification.mjs";
7
- /**
8
- * @public
9
- */
10
- // Resolve specification to dereference $ref pointers
11
- const resolvedSpec = resolveSpecification(specification);
12
-
13
- // Extract fixed fields as list of { name, alias?, $visitor }
14
- const getFixedFields = fixedFieldsSpec => {
15
- return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
16
- if (isPlainObject(fieldSpec)) {
17
- return {
18
- name,
19
- ...fieldSpec
20
- };
21
- }
22
- return {
23
- name,
24
- $visitor: fieldSpec
25
- };
26
- });
27
- };
28
-
29
- // Define lazy getters for fixedFields on element classes
30
- // Note: JSONReferenceElement and MediaElement inherit fixedFields from draft-4
31
- Object.defineProperty(JSONSchemaElement, 'fixedFields', {
32
- get: () => getFixedFields(resolvedSpec.visitors.document.objects.JSONSchema.fixedFields),
33
- enumerable: true
34
- });
35
- Object.defineProperty(LinkDescriptionElement, 'fixedFields', {
36
- get: () => getFixedFields(resolvedSpec.visitors.document.objects.LinkDescription.fixedFields),
37
- enumerable: true
38
- });
39
- export { JSONSchemaElement, JSONReferenceElement, MediaElement, LinkDescriptionElement };
@@ -1,218 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
- exports.__esModule = true;
5
- exports.default = void 0;
6
- var _apidomDatamodel = require("@speclynx/apidom-datamodel");
7
- var _apidomCore = require("@speclynx/apidom-core");
8
- var _apidomTraverse = require("@speclynx/apidom-traverse");
9
- var _apidomNsJsonSchemaDraft = require("@speclynx/apidom-ns-json-schema-draft-4");
10
- var _JSONSchema = _interopRequireDefault(require("../../elements/JSONSchema.cjs"));
11
- var _LinkDescription = _interopRequireDefault(require("../../elements/LinkDescription.cjs"));
12
- /**
13
- * This plugin is specific to YAML 1.2 format, which allows defining key-value pairs
14
- * with empty key, empty value, or both. If the value is not provided in YAML format,
15
- * this plugin compensates for this missing value with the most appropriate semantic element type.
16
- *
17
- * https://yaml.org/spec/1.2.2/#72-empty-nodes
18
- *
19
- * @example
20
- *
21
- * ```yaml
22
- * $schema: http://json-schema.org/draft-06/schema#
23
- * items:
24
- * ```
25
- * Refracting result without this plugin:
26
- *
27
- * (JSONSchemaElement
28
- * (MemberElement
29
- * (StringElement)
30
- * (StringElement))
31
- * (MemberElement
32
- * (StringElement)
33
- * (StringElement))
34
- *
35
- * Refracting result with this plugin:
36
- *
37
- * (JSONSchemaElement
38
- * (MemberElement
39
- * (StringElement)
40
- * (StringElement))
41
- * (MemberElement
42
- * (StringElement)
43
- * (JSONSchemaElement))
44
- */
45
-
46
- const isEmptyElement = element => (0, _apidomDatamodel.isStringElement)(element) && (0, _apidomDatamodel.includesClasses)(element, ['yaml-e-node', 'yaml-e-scalar']);
47
- const schema = {
48
- JSONSchemaDraft6Element: {
49
- additionalItems(...args) {
50
- return new _JSONSchema.default(...args);
51
- },
52
- items(...args) {
53
- return new _JSONSchema.default(...args);
54
- },
55
- contains(...args) {
56
- return new _JSONSchema.default(...args);
57
- },
58
- required(...args) {
59
- const element = new _apidomDatamodel.ArrayElement(...args);
60
- element.classes.push('json-schema-required');
61
- return element;
62
- },
63
- properties(...args) {
64
- const element = new _apidomDatamodel.ObjectElement(...args);
65
- element.classes.push('json-schema-properties');
66
- return element;
67
- },
68
- additionalProperties(...args) {
69
- return new _JSONSchema.default(...args);
70
- },
71
- patternProperties(...args) {
72
- const element = new _apidomDatamodel.ObjectElement(...args);
73
- element.classes.push('json-schema-patternProperties');
74
- return element;
75
- },
76
- dependencies(...args) {
77
- const element = new _apidomDatamodel.ObjectElement(...args);
78
- element.classes.push('json-schema-dependencies');
79
- return element;
80
- },
81
- propertyNames(...args) {
82
- return new _JSONSchema.default(...args);
83
- },
84
- enum(...args) {
85
- const element = new _apidomDatamodel.ArrayElement(...args);
86
- element.classes.push('json-schema-enum');
87
- return element;
88
- },
89
- allOf(...args) {
90
- const element = new _apidomDatamodel.ArrayElement(...args);
91
- element.classes.push('json-schema-allOf');
92
- return element;
93
- },
94
- anyOf(...args) {
95
- const element = new _apidomDatamodel.ArrayElement(...args);
96
- element.classes.push('json-schema-anyOf');
97
- return element;
98
- },
99
- oneOf(...args) {
100
- const element = new _apidomDatamodel.ArrayElement(...args);
101
- element.classes.push('json-schema-oneOf');
102
- return element;
103
- },
104
- not(...args) {
105
- return new _JSONSchema.default(...args);
106
- },
107
- definitions(...args) {
108
- const element = new _apidomDatamodel.ObjectElement(...args);
109
- element.classes.push('json-schema-definitions');
110
- return element;
111
- },
112
- examples(...args) {
113
- const element = new _apidomDatamodel.ArrayElement(...args);
114
- element.classes.push('json-schema-examples');
115
- return element;
116
- },
117
- links(...args) {
118
- const element = new _apidomDatamodel.ArrayElement(...args);
119
- element.classes.push('json-schema-links');
120
- return element;
121
- },
122
- media(...args) {
123
- return new _apidomNsJsonSchemaDraft.MediaElement(...args);
124
- }
125
- },
126
- LinkDescriptionElement: {
127
- hrefSchema(...args) {
128
- return new _JSONSchema.default(...args);
129
- },
130
- targetSchema(...args) {
131
- return new _JSONSchema.default(...args);
132
- },
133
- submissionSchema(...args) {
134
- return new _JSONSchema.default(...args);
135
- }
136
- },
137
- 'json-schema-properties': {
138
- '[key: *]': function key(...args) {
139
- return new _JSONSchema.default(...args);
140
- }
141
- },
142
- 'json-schema-patternProperties': {
143
- '[key: *]': function key(...args) {
144
- return new _JSONSchema.default(...args);
145
- }
146
- },
147
- 'json-schema-dependencies': {
148
- '[key: *]': function key(...args) {
149
- return new _JSONSchema.default(...args);
150
- }
151
- },
152
- 'json-schema-allOf': {
153
- '<*>': function asterisk(...args) {
154
- return new _JSONSchema.default(...args);
155
- }
156
- },
157
- 'json-schema-anyOf': {
158
- '<*>': function asterisk(...args) {
159
- return new _JSONSchema.default(...args);
160
- }
161
- },
162
- 'json-schema-oneOf': {
163
- '<*>': function asterisk(...args) {
164
- return new _JSONSchema.default(...args);
165
- }
166
- },
167
- 'json-schema-definitions': {
168
- '[key: *]': function key(...args) {
169
- return new _JSONSchema.default(...args);
170
- }
171
- },
172
- 'json-schema-links': {
173
- '<*>': function asterisk(...args) {
174
- return new _LinkDescription.default(...args);
175
- }
176
- }
177
- };
178
- const findElementFactory = (ancestor, keyName) => {
179
- const elementType = (0, _apidomTraverse.getNodeType)(ancestor);
180
- const classType = ancestor.isMetaEmpty ? undefined : ancestor.classes.at(0); // @ts-ignore
181
- const keyMapping = schema[elementType] || schema[classType];
182
- return typeof keyMapping === 'undefined' ? undefined : Object.hasOwn(keyMapping, '[key: *]') ? keyMapping['[key: *]'] : keyMapping[keyName];
183
- };
184
-
185
- /**
186
- * @public
187
- */
188
- const plugin = () => () => ({
189
- visitor: {
190
- StringElement(path) {
191
- const element = path.node;
192
- if (!isEmptyElement(element)) return;
193
-
194
- // getAncestorNodes() returns [parent, grandparent, ..., root], so reverse to get [root, ..., parent]
195
- const lineage = path.getAncestorNodes().reverse().filter(_apidomDatamodel.isElement);
196
- const parentElement = lineage.at(-1);
197
- let elementFactory;
198
- let context;
199
- if ((0, _apidomDatamodel.isArrayElement)(parentElement)) {
200
- context = element;
201
- elementFactory = findElementFactory(parentElement, '<*>');
202
- } else if ((0, _apidomDatamodel.isMemberElement)(parentElement)) {
203
- context = lineage.at(-2);
204
- elementFactory = findElementFactory(context, (0, _apidomCore.toValue)(parentElement.key));
205
- }
206
-
207
- // no element factory found
208
- if (typeof elementFactory !== 'function') return;
209
- const replacement = elementFactory.call({
210
- context
211
- }, undefined, element.isMetaEmpty ? undefined : element.meta.cloneDeep(), element.isAttributesEmpty ? undefined : (0, _apidomDatamodel.cloneDeep)(element.attributes));
212
- _apidomDatamodel.SourceMapElement.transfer(element, replacement);
213
- _apidomDatamodel.StyleElement.transfer(element, replacement);
214
- path.replaceWith(replacement);
215
- }
216
- }
217
- });
218
- var _default = exports.default = plugin;