@speclynx/apidom-ns-json-schema-draft-6 2.13.1 → 3.1.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.
- package/CHANGELOG.md +19 -0
- package/dist/apidom-ns-json-schema-draft-6.browser.js +246 -100
- package/dist/apidom-ns-json-schema-draft-6.browser.min.js +1 -1
- package/package.json +7 -7
- package/src/refractor/index.cjs +4 -2
- package/src/refractor/index.mjs +4 -2
- package/src/refractor/plugins/replace-empty-element.cjs +4 -3
- package/src/refractor/plugins/replace-empty-element.mjs +4 -3
- package/types/apidom-ns-json-schema-draft-6.d.ts +2 -1
|
@@ -366,7 +366,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
366
366
|
const refract = (value, {
|
|
367
367
|
element = 'jSONSchemaDraft6',
|
|
368
368
|
plugins = [],
|
|
369
|
-
specificationObj = _specification_ts__WEBPACK_IMPORTED_MODULE_5__["default"]
|
|
369
|
+
specificationObj = _specification_ts__WEBPACK_IMPORTED_MODULE_5__["default"],
|
|
370
|
+
consume = false
|
|
370
371
|
} = {}) => {
|
|
371
372
|
const genericElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.refract)(value);
|
|
372
373
|
const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_1__.resolveSpecification)(specificationObj);
|
|
@@ -383,7 +384,8 @@ const refract = (value, {
|
|
|
383
384
|
*/
|
|
384
385
|
const RootVisitorClass = (0,ramda__WEBPACK_IMPORTED_MODULE_4__["default"])(specPath, resolvedSpec);
|
|
385
386
|
const rootVisitor = new RootVisitorClass({
|
|
386
|
-
specObj: resolvedSpec
|
|
387
|
+
specObj: resolvedSpec,
|
|
388
|
+
consume
|
|
387
389
|
});
|
|
388
390
|
(0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_2__.traverse)(genericElement, rootVisitor);
|
|
389
391
|
|
|
@@ -609,8 +611,9 @@ const schema = {
|
|
|
609
611
|
}
|
|
610
612
|
};
|
|
611
613
|
const findElementFactory = (ancestor, keyName) => {
|
|
612
|
-
const elementType = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.getNodeType)(ancestor);
|
|
613
|
-
const
|
|
614
|
+
const elementType = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.getNodeType)(ancestor);
|
|
615
|
+
const classType = ancestor.isMetaEmpty ? undefined : ancestor.classes.at(0); // @ts-ignore
|
|
616
|
+
const keyMapping = schema[elementType] || schema[classType];
|
|
614
617
|
return typeof keyMapping === 'undefined' ? undefined : Object.hasOwn(keyMapping, '[key: *]') ? keyMapping['[key: *]'] : keyMapping[keyName];
|
|
615
618
|
};
|
|
616
619
|
|
|
@@ -640,7 +643,7 @@ const plugin = () => () => ({
|
|
|
640
643
|
if (typeof elementFactory !== 'function') return;
|
|
641
644
|
const replacement = elementFactory.call({
|
|
642
645
|
context
|
|
643
|
-
}, undefined,
|
|
646
|
+
}, undefined, element.isMetaEmpty ? undefined : element.meta.cloneDeep(), element.isAttributesEmpty ? undefined : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.attributes));
|
|
644
647
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__["default"].transfer(element, replacement);
|
|
645
648
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_6__["default"].transfer(element, replacement);
|
|
646
649
|
path.replaceWith(replacement);
|
|
@@ -16349,7 +16352,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
16349
16352
|
* @public
|
|
16350
16353
|
*/
|
|
16351
16354
|
const emptyElement = element => {
|
|
16352
|
-
const meta = !element.isMetaEmpty ?
|
|
16355
|
+
const meta = !element.isMetaEmpty ? element.meta.cloneDeep() : undefined;
|
|
16353
16356
|
const attributes = !element.isAttributesEmpty ? (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.attributes) : undefined;
|
|
16354
16357
|
|
|
16355
16358
|
// @ts-ignore
|
|
@@ -16365,7 +16368,7 @@ const getMergeFunction = (keyElement, options) => {
|
|
|
16365
16368
|
};
|
|
16366
16369
|
const getMetaMergeFunction = options => {
|
|
16367
16370
|
if (typeof options.customMetaMerge !== 'function') {
|
|
16368
|
-
return targetMeta =>
|
|
16371
|
+
return targetMeta => targetMeta.cloneDeep();
|
|
16369
16372
|
}
|
|
16370
16373
|
return options.customMetaMerge;
|
|
16371
16374
|
};
|
|
@@ -16437,8 +16440,20 @@ const deepmerge = (targetElement, sourceElement, options) => {
|
|
|
16437
16440
|
const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
|
|
16438
16441
|
|
|
16439
16442
|
// merging meta & attributes
|
|
16440
|
-
|
|
16441
|
-
|
|
16443
|
+
if (!targetElement.isMetaEmpty && !sourceElement.isMetaEmpty) {
|
|
16444
|
+
mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
|
|
16445
|
+
} else if (!targetElement.isMetaEmpty) {
|
|
16446
|
+
mergedElement.meta = targetElement.meta.cloneDeep();
|
|
16447
|
+
} else if (!sourceElement.isMetaEmpty) {
|
|
16448
|
+
mergedElement.meta = sourceElement.meta.cloneDeep();
|
|
16449
|
+
}
|
|
16450
|
+
if (!targetElement.isAttributesEmpty && !sourceElement.isAttributesEmpty) {
|
|
16451
|
+
mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
|
|
16452
|
+
} else if (!targetElement.isAttributesEmpty) {
|
|
16453
|
+
mergedElement.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(targetElement.attributes);
|
|
16454
|
+
} else if (!sourceElement.isAttributesEmpty) {
|
|
16455
|
+
mergedElement.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(sourceElement.attributes);
|
|
16456
|
+
}
|
|
16442
16457
|
return mergedElement;
|
|
16443
16458
|
};
|
|
16444
16459
|
deepmerge.all = (list, options) => {
|
|
@@ -16771,6 +16786,104 @@ class KeyValuePair {
|
|
|
16771
16786
|
|
|
16772
16787
|
/***/ },
|
|
16773
16788
|
|
|
16789
|
+
/***/ 1844
|
|
16790
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
16791
|
+
|
|
16792
|
+
__webpack_require__.r(__webpack_exports__);
|
|
16793
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
16794
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
16795
|
+
/* harmony export */ });
|
|
16796
|
+
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8138);
|
|
16797
|
+
|
|
16798
|
+
/**
|
|
16799
|
+
* Lightweight meta container for Element metadata.
|
|
16800
|
+
*
|
|
16801
|
+
* Data is stored as own properties on the instance; methods live on the prototype.
|
|
16802
|
+
* `Object.keys()`, `Object.entries()`, etc. only see data properties.
|
|
16803
|
+
*
|
|
16804
|
+
* @public
|
|
16805
|
+
*/
|
|
16806
|
+
class Metadata {
|
|
16807
|
+
// Set via prototype assignment in registration.ts to avoid circular dependency
|
|
16808
|
+
|
|
16809
|
+
get(name) {
|
|
16810
|
+
return this[name];
|
|
16811
|
+
}
|
|
16812
|
+
set(name, value) {
|
|
16813
|
+
this[name] = value;
|
|
16814
|
+
}
|
|
16815
|
+
hasKey(name) {
|
|
16816
|
+
return Object.hasOwn(this, name);
|
|
16817
|
+
}
|
|
16818
|
+
keys() {
|
|
16819
|
+
return Object.keys(this);
|
|
16820
|
+
}
|
|
16821
|
+
remove(name) {
|
|
16822
|
+
delete this[name];
|
|
16823
|
+
}
|
|
16824
|
+
get isEmpty() {
|
|
16825
|
+
return Object.keys(this).length === 0;
|
|
16826
|
+
}
|
|
16827
|
+
get isFrozen() {
|
|
16828
|
+
return Object.isFrozen(this);
|
|
16829
|
+
}
|
|
16830
|
+
freeze() {
|
|
16831
|
+
for (const value of Object.values(this)) {
|
|
16832
|
+
if (value instanceof this.Element) {
|
|
16833
|
+
value.freeze();
|
|
16834
|
+
} else if (Array.isArray(value) || value !== null && typeof value === 'object') {
|
|
16835
|
+
Object.freeze(value);
|
|
16836
|
+
}
|
|
16837
|
+
}
|
|
16838
|
+
Object.freeze(this);
|
|
16839
|
+
}
|
|
16840
|
+
|
|
16841
|
+
/**
|
|
16842
|
+
* Creates a shallow clone. Same references, new container.
|
|
16843
|
+
*/
|
|
16844
|
+
cloneShallow() {
|
|
16845
|
+
const clone = new Metadata();
|
|
16846
|
+
Object.assign(clone, this);
|
|
16847
|
+
return clone;
|
|
16848
|
+
}
|
|
16849
|
+
|
|
16850
|
+
/**
|
|
16851
|
+
* Merges another Metadata into a new instance.
|
|
16852
|
+
* Arrays are concatenated, all other values are overwritten by source.
|
|
16853
|
+
*/
|
|
16854
|
+
merge(source) {
|
|
16855
|
+
const result = this.cloneShallow();
|
|
16856
|
+
for (const [key, value] of Object.entries(source)) {
|
|
16857
|
+
const existing = result.get(key);
|
|
16858
|
+
if (Array.isArray(existing) && Array.isArray(value)) {
|
|
16859
|
+
result.set(key, [...existing, ...value]);
|
|
16860
|
+
} else {
|
|
16861
|
+
result.set(key, value);
|
|
16862
|
+
}
|
|
16863
|
+
}
|
|
16864
|
+
return result;
|
|
16865
|
+
}
|
|
16866
|
+
|
|
16867
|
+
/**
|
|
16868
|
+
* Creates a deep clone. Elements are deep cloned,
|
|
16869
|
+
* all other values are deep cloned via ramda clone.
|
|
16870
|
+
*/
|
|
16871
|
+
cloneDeep() {
|
|
16872
|
+
const copy = new Metadata();
|
|
16873
|
+
for (const [key, value] of Object.entries(this)) {
|
|
16874
|
+
if (value instanceof this.Element) {
|
|
16875
|
+
copy.set(key, this.cloneDeepElement(value));
|
|
16876
|
+
} else {
|
|
16877
|
+
copy.set(key, (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(value));
|
|
16878
|
+
}
|
|
16879
|
+
}
|
|
16880
|
+
return copy;
|
|
16881
|
+
}
|
|
16882
|
+
}
|
|
16883
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Metadata);
|
|
16884
|
+
|
|
16885
|
+
/***/ },
|
|
16886
|
+
|
|
16774
16887
|
/***/ 5156
|
|
16775
16888
|
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
16776
16889
|
|
|
@@ -17411,7 +17524,7 @@ const cloneShallowElement = element => {
|
|
|
17411
17524
|
const copy = new Ctor();
|
|
17412
17525
|
copy.element = element.element;
|
|
17413
17526
|
if (!element.isMetaEmpty) {
|
|
17414
|
-
copy.meta =
|
|
17527
|
+
copy.meta = element.meta.cloneDeep();
|
|
17415
17528
|
}
|
|
17416
17529
|
if (!element.isAttributesEmpty) {
|
|
17417
17530
|
copy.attributes = cloneDeep(element.attributes);
|
|
@@ -17439,8 +17552,8 @@ const cloneShallowElement = element => {
|
|
|
17439
17552
|
|
|
17440
17553
|
/**
|
|
17441
17554
|
* Creates a shallow clone of an ApiDOM Element, KeyValuePair, or ObjectSlice.
|
|
17442
|
-
* The element itself is cloned, but content references are shared
|
|
17443
|
-
*
|
|
17555
|
+
* The element itself is cloned, but content references are shared.
|
|
17556
|
+
* Meta and attributes are deep cloned to preserve semantic information.
|
|
17444
17557
|
* @public
|
|
17445
17558
|
*/
|
|
17446
17559
|
const cloneShallow = value => {
|
|
@@ -18502,7 +18615,7 @@ class CollectionElement extends _Element_mjs__WEBPACK_IMPORTED_MODULE_0__["defau
|
|
|
18502
18615
|
* Search the tree recursively and find the element with the matching ID.
|
|
18503
18616
|
*/
|
|
18504
18617
|
getById(id) {
|
|
18505
|
-
return this.find(item => item.id
|
|
18618
|
+
return this.find(item => item.id === id).first;
|
|
18506
18619
|
}
|
|
18507
18620
|
|
|
18508
18621
|
/**
|
|
@@ -18531,18 +18644,24 @@ class CollectionElement extends _Element_mjs__WEBPACK_IMPORTED_MODULE_0__["defau
|
|
|
18531
18644
|
|
|
18532
18645
|
__webpack_require__.r(__webpack_exports__);
|
|
18533
18646
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
18647
|
+
/* harmony export */ Metadata: () => (/* reexport safe */ _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]),
|
|
18534
18648
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
18535
18649
|
/* harmony export */ });
|
|
18536
18650
|
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3654);
|
|
18537
|
-
/* harmony import */ var
|
|
18538
|
-
/* harmony import */ var
|
|
18651
|
+
/* harmony import */ var _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1844);
|
|
18652
|
+
/* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6663);
|
|
18653
|
+
/* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8504);
|
|
18654
|
+
|
|
18539
18655
|
|
|
18540
18656
|
|
|
18657
|
+
// shared singleton for frozen elements with no meta — avoids allocation on every access
|
|
18658
|
+
const FROZEN_EMPTY_METADATA = Object.freeze(new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]());
|
|
18541
18659
|
|
|
18542
18660
|
/**
|
|
18543
18661
|
* Valid content types for an Element.
|
|
18544
18662
|
* @public
|
|
18545
18663
|
*/
|
|
18664
|
+
|
|
18546
18665
|
/**
|
|
18547
18666
|
* Base Element class that all ApiDOM elements extend.
|
|
18548
18667
|
*
|
|
@@ -18640,7 +18759,7 @@ class Element {
|
|
|
18640
18759
|
_attributes;
|
|
18641
18760
|
|
|
18642
18761
|
// ============================================================
|
|
18643
|
-
// Prototype-assigned properties (set in
|
|
18762
|
+
// Prototype-assigned properties (set in registration.ts)
|
|
18644
18763
|
// Using 'declare' allows TypeScript to know about these
|
|
18645
18764
|
// without generating runtime code.
|
|
18646
18765
|
// ============================================================
|
|
@@ -18701,13 +18820,13 @@ class Element {
|
|
|
18701
18820
|
}
|
|
18702
18821
|
|
|
18703
18822
|
// KeyValuePair
|
|
18704
|
-
if (value instanceof
|
|
18823
|
+
if (value instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
|
|
18705
18824
|
this._content = value;
|
|
18706
18825
|
return;
|
|
18707
18826
|
}
|
|
18708
18827
|
|
|
18709
18828
|
// ObjectSlice - extract elements array
|
|
18710
|
-
if (value instanceof
|
|
18829
|
+
if (value instanceof _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]) {
|
|
18711
18830
|
this._content = value.elements;
|
|
18712
18831
|
return;
|
|
18713
18832
|
}
|
|
@@ -18728,24 +18847,22 @@ class Element {
|
|
|
18728
18847
|
|
|
18729
18848
|
/**
|
|
18730
18849
|
* Metadata about this element (id, classes, title, description, links).
|
|
18731
|
-
* Lazily creates
|
|
18850
|
+
* Lazily creates a Metadata instance if not set.
|
|
18732
18851
|
*/
|
|
18733
18852
|
get meta() {
|
|
18734
18853
|
if (!this._meta) {
|
|
18735
|
-
if (this.isFrozen)
|
|
18736
|
-
|
|
18737
|
-
meta.freeze();
|
|
18738
|
-
return meta;
|
|
18739
|
-
}
|
|
18740
|
-
this._meta = new this.ObjectElement();
|
|
18854
|
+
if (this.isFrozen) return FROZEN_EMPTY_METADATA;
|
|
18855
|
+
this._meta = new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]();
|
|
18741
18856
|
}
|
|
18742
18857
|
return this._meta;
|
|
18743
18858
|
}
|
|
18744
18859
|
set meta(value) {
|
|
18745
|
-
if (value instanceof
|
|
18860
|
+
if (value instanceof _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]) {
|
|
18746
18861
|
this._meta = value;
|
|
18747
|
-
} else {
|
|
18748
|
-
|
|
18862
|
+
} else if (value && typeof value === 'object') {
|
|
18863
|
+
const meta = new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]();
|
|
18864
|
+
Object.assign(meta, value);
|
|
18865
|
+
this._meta = meta;
|
|
18749
18866
|
}
|
|
18750
18867
|
}
|
|
18751
18868
|
|
|
@@ -18778,10 +18895,8 @@ class Element {
|
|
|
18778
18895
|
|
|
18779
18896
|
/** Unique identifier for this element. */
|
|
18780
18897
|
get id() {
|
|
18781
|
-
if (this.isFrozen) {
|
|
18782
|
-
return this.getMetaProperty('id', '');
|
|
18783
|
-
}
|
|
18784
18898
|
if (!this.hasMetaProperty('id')) {
|
|
18899
|
+
if (this.isFrozen) return '';
|
|
18785
18900
|
this.setMetaProperty('id', '');
|
|
18786
18901
|
}
|
|
18787
18902
|
return this.meta.get('id');
|
|
@@ -18792,10 +18907,8 @@ class Element {
|
|
|
18792
18907
|
|
|
18793
18908
|
/** CSS-like class names. */
|
|
18794
18909
|
get classes() {
|
|
18795
|
-
if (this.isFrozen) {
|
|
18796
|
-
return this.getMetaProperty('classes', []);
|
|
18797
|
-
}
|
|
18798
18910
|
if (!this.hasMetaProperty('classes')) {
|
|
18911
|
+
if (this.isFrozen) return [];
|
|
18799
18912
|
this.setMetaProperty('classes', []);
|
|
18800
18913
|
}
|
|
18801
18914
|
return this.meta.get('classes');
|
|
@@ -18806,11 +18919,13 @@ class Element {
|
|
|
18806
18919
|
|
|
18807
18920
|
/** Hyperlinks associated with this element. */
|
|
18808
18921
|
get links() {
|
|
18809
|
-
if (this.isFrozen) {
|
|
18810
|
-
return this.getMetaProperty('links', []);
|
|
18811
|
-
}
|
|
18812
18922
|
if (!this.hasMetaProperty('links')) {
|
|
18813
|
-
this.
|
|
18923
|
+
if (this.isFrozen) {
|
|
18924
|
+
const empty = new this.ArrayElement();
|
|
18925
|
+
empty.freeze();
|
|
18926
|
+
return empty;
|
|
18927
|
+
}
|
|
18928
|
+
this.setMetaProperty('links', new this.ArrayElement());
|
|
18814
18929
|
}
|
|
18815
18930
|
return this.meta.get('links');
|
|
18816
18931
|
}
|
|
@@ -18830,7 +18945,7 @@ class Element {
|
|
|
18830
18945
|
if (Array.isArray(content)) {
|
|
18831
18946
|
return content;
|
|
18832
18947
|
}
|
|
18833
|
-
if (content instanceof
|
|
18948
|
+
if (content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
|
|
18834
18949
|
const children = [];
|
|
18835
18950
|
if (content.key) children.push(content.key);
|
|
18836
18951
|
if (content.value) children.push(content.value);
|
|
@@ -18860,7 +18975,6 @@ class Element {
|
|
|
18860
18975
|
|
|
18861
18976
|
// Freeze meta and attributes
|
|
18862
18977
|
if (this._meta) {
|
|
18863
|
-
this._meta.parent = this;
|
|
18864
18978
|
this._meta.freeze();
|
|
18865
18979
|
}
|
|
18866
18980
|
if (this._attributes) {
|
|
@@ -18895,7 +19009,7 @@ class Element {
|
|
|
18895
19009
|
if (_content instanceof Element) {
|
|
18896
19010
|
return _content.toValue();
|
|
18897
19011
|
}
|
|
18898
|
-
if (_content instanceof
|
|
19012
|
+
if (_content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
|
|
18899
19013
|
return _content.toValue();
|
|
18900
19014
|
}
|
|
18901
19015
|
if (Array.isArray(_content)) {
|
|
@@ -18951,7 +19065,7 @@ class Element {
|
|
|
18951
19065
|
* @throws Error if this element has no ID
|
|
18952
19066
|
*/
|
|
18953
19067
|
toRef(path) {
|
|
18954
|
-
const idValue = this.id
|
|
19068
|
+
const idValue = this.id;
|
|
18955
19069
|
if (idValue === '') {
|
|
18956
19070
|
throw new Error('Cannot create reference to an element without an ID');
|
|
18957
19071
|
}
|
|
@@ -18963,26 +19077,16 @@ class Element {
|
|
|
18963
19077
|
}
|
|
18964
19078
|
|
|
18965
19079
|
/**
|
|
18966
|
-
* Gets a meta property.
|
|
19080
|
+
* Gets a meta property value.
|
|
18967
19081
|
*
|
|
18968
19082
|
* When the property doesn't exist:
|
|
18969
|
-
* - With defaultValue: returns
|
|
19083
|
+
* - With defaultValue: returns the provided default value
|
|
18970
19084
|
* - Without defaultValue: returns undefined
|
|
18971
|
-
*
|
|
18972
|
-
* Note: Each call with a default creates a new instance. Use setMetaProperty
|
|
18973
|
-
* first if you need reference equality across multiple accesses.
|
|
18974
19085
|
*/
|
|
18975
19086
|
|
|
18976
19087
|
getMetaProperty(name, defaultValue) {
|
|
18977
19088
|
if (!this.hasMetaProperty(name)) {
|
|
18978
|
-
|
|
18979
|
-
return undefined;
|
|
18980
|
-
}
|
|
18981
|
-
const element = this.refract(defaultValue);
|
|
18982
|
-
if (element && this.isFrozen) {
|
|
18983
|
-
element.freeze();
|
|
18984
|
-
}
|
|
18985
|
-
return element;
|
|
19089
|
+
return defaultValue;
|
|
18986
19090
|
}
|
|
18987
19091
|
return this.meta.get(name);
|
|
18988
19092
|
}
|
|
@@ -18995,20 +19099,17 @@ class Element {
|
|
|
18995
19099
|
}
|
|
18996
19100
|
|
|
18997
19101
|
/**
|
|
18998
|
-
*
|
|
19102
|
+
* Checks whether a meta property exists.
|
|
18999
19103
|
*/
|
|
19000
19104
|
hasMetaProperty(name) {
|
|
19001
|
-
|
|
19002
|
-
return this.meta.hasKey(name);
|
|
19003
|
-
}
|
|
19004
|
-
return false;
|
|
19105
|
+
return this._meta !== undefined && this._meta.hasKey(name);
|
|
19005
19106
|
}
|
|
19006
19107
|
|
|
19007
19108
|
/**
|
|
19008
19109
|
* Checks if meta is empty.
|
|
19009
19110
|
*/
|
|
19010
19111
|
get isMetaEmpty() {
|
|
19011
|
-
return this._meta === undefined || this.
|
|
19112
|
+
return this._meta === undefined || this._meta.isEmpty;
|
|
19012
19113
|
}
|
|
19013
19114
|
|
|
19014
19115
|
/**
|
|
@@ -19034,7 +19135,7 @@ class Element {
|
|
|
19034
19135
|
}
|
|
19035
19136
|
|
|
19036
19137
|
/**
|
|
19037
|
-
*
|
|
19138
|
+
* Checks whether an attributes property exists.
|
|
19038
19139
|
*/
|
|
19039
19140
|
hasAttributesProperty(name) {
|
|
19040
19141
|
if (!this.isAttributesEmpty) {
|
|
@@ -19053,6 +19154,7 @@ class Element {
|
|
|
19053
19154
|
|
|
19054
19155
|
// Re-export types for convenience
|
|
19055
19156
|
|
|
19157
|
+
|
|
19056
19158
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Element);
|
|
19057
19159
|
|
|
19058
19160
|
/***/ },
|
|
@@ -19485,6 +19587,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
19485
19587
|
/* harmony import */ var _elements_Style_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(9686);
|
|
19486
19588
|
/* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(8504);
|
|
19487
19589
|
/* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(6663);
|
|
19590
|
+
/* harmony import */ var _Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(1844);
|
|
19591
|
+
/* harmony import */ var _clone_index_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(2111);
|
|
19592
|
+
|
|
19593
|
+
|
|
19488
19594
|
|
|
19489
19595
|
|
|
19490
19596
|
|
|
@@ -19544,14 +19650,16 @@ function refract(value) {
|
|
|
19544
19650
|
}
|
|
19545
19651
|
|
|
19546
19652
|
// Set up prototype assignments for circular dependency resolution.
|
|
19547
|
-
// These allow Element instances to
|
|
19548
|
-
//
|
|
19653
|
+
// These allow Element and Metadata instances to reference classes they can't import
|
|
19654
|
+
// directly (which would cause circular imports).
|
|
19549
19655
|
// Using 'declare' in the class definitions enables type-safe access to these properties.
|
|
19550
19656
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.ObjectElement = _primitives_ObjectElement_mjs__WEBPACK_IMPORTED_MODULE_8__["default"];
|
|
19551
19657
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.ArrayElement = _primitives_ArrayElement_mjs__WEBPACK_IMPORTED_MODULE_6__["default"];
|
|
19552
19658
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.RefElement = _elements_RefElement_mjs__WEBPACK_IMPORTED_MODULE_10__["default"];
|
|
19553
19659
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.MemberElement = _primitives_MemberElement_mjs__WEBPACK_IMPORTED_MODULE_7__["default"];
|
|
19554
19660
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.refract = refract;
|
|
19661
|
+
_Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__["default"].prototype.Element = _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"];
|
|
19662
|
+
_Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__["default"].prototype.cloneDeepElement = element => (0,_clone_index_mjs__WEBPACK_IMPORTED_MODULE_19__.cloneDeep)(element);
|
|
19555
19663
|
|
|
19556
19664
|
/**
|
|
19557
19665
|
* Contains all of the element classes, and related structures and methods
|
|
@@ -19615,7 +19723,13 @@ class JSONSerialiser {
|
|
|
19615
19723
|
element: element.element
|
|
19616
19724
|
};
|
|
19617
19725
|
if (!element.isMetaEmpty) {
|
|
19618
|
-
|
|
19726
|
+
const serialisedMeta = this.serialiseMeta(element);
|
|
19727
|
+
if (serialisedMeta) {
|
|
19728
|
+
payload.meta = serialisedMeta.meta;
|
|
19729
|
+
if (serialisedMeta.rawKeys.length > 0) {
|
|
19730
|
+
payload.__meta_raw__ = serialisedMeta.rawKeys;
|
|
19731
|
+
}
|
|
19732
|
+
}
|
|
19619
19733
|
}
|
|
19620
19734
|
if (!element.isAttributesEmpty) {
|
|
19621
19735
|
payload.attributes = this.serialiseObject(element.attributes);
|
|
@@ -19662,7 +19776,7 @@ class JSONSerialiser {
|
|
|
19662
19776
|
element.element = value.element;
|
|
19663
19777
|
}
|
|
19664
19778
|
|
|
19665
|
-
// Extract
|
|
19779
|
+
// Extract special meta keys without mutating input, filter remaining meta
|
|
19666
19780
|
let mappingsDoc;
|
|
19667
19781
|
let stylesDoc;
|
|
19668
19782
|
let metaToDeserialize = value.meta;
|
|
@@ -19676,8 +19790,15 @@ class JSONSerialiser {
|
|
|
19676
19790
|
stylesDoc = __styles__;
|
|
19677
19791
|
metaToDeserialize = Object.keys(rest).length > 0 ? rest : undefined;
|
|
19678
19792
|
}
|
|
19793
|
+
|
|
19794
|
+
// determine which meta keys were raw primitives before serialization
|
|
19795
|
+
const rawKeys = value.__meta_raw__ ? new Set(value.__meta_raw__) : undefined;
|
|
19679
19796
|
if (metaToDeserialize) {
|
|
19680
|
-
|
|
19797
|
+
for (const [key, doc] of Object.entries(metaToDeserialize)) {
|
|
19798
|
+
const deserialized = this.deserialise(doc);
|
|
19799
|
+
// unwrap keys that were raw primitives before serialization
|
|
19800
|
+
element.setMetaProperty(key, rawKeys?.has(key) ? deserialized.toValue() : deserialized);
|
|
19801
|
+
}
|
|
19681
19802
|
}
|
|
19682
19803
|
|
|
19683
19804
|
// Restore source position from __mappings__
|
|
@@ -19740,6 +19861,27 @@ class JSONSerialiser {
|
|
|
19740
19861
|
}
|
|
19741
19862
|
return content;
|
|
19742
19863
|
}
|
|
19864
|
+
serialiseMeta(element) {
|
|
19865
|
+
const meta = {};
|
|
19866
|
+
const rawKeys = [];
|
|
19867
|
+
let hasEntries = false;
|
|
19868
|
+
for (const [key, value] of Object.entries(element.meta)) {
|
|
19869
|
+
if (value instanceof this.namespace.elements.Element) {
|
|
19870
|
+
meta[key] = this.serialise(value);
|
|
19871
|
+
hasEntries = true;
|
|
19872
|
+
} else if (value !== undefined) {
|
|
19873
|
+
// refract primitives to maintain JSON Refract spec compatibility
|
|
19874
|
+
const refracted = element.refract(value);
|
|
19875
|
+
meta[key] = this.serialise(refracted);
|
|
19876
|
+
rawKeys.push(key);
|
|
19877
|
+
hasEntries = true;
|
|
19878
|
+
}
|
|
19879
|
+
}
|
|
19880
|
+
return hasEntries ? {
|
|
19881
|
+
meta,
|
|
19882
|
+
rawKeys
|
|
19883
|
+
} : undefined;
|
|
19884
|
+
}
|
|
19743
19885
|
serialiseObject(obj) {
|
|
19744
19886
|
const result = {};
|
|
19745
19887
|
obj.forEach((value, key) => {
|
|
@@ -20694,7 +20836,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
20694
20836
|
*/
|
|
20695
20837
|
class FallbackVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
|
20696
20838
|
enter(path) {
|
|
20697
|
-
this.element = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
|
|
20839
|
+
this.element = this.consume ? path.node : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
|
|
20698
20840
|
path.stop();
|
|
20699
20841
|
}
|
|
20700
20842
|
}
|
|
@@ -20733,7 +20875,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
20733
20875
|
*/
|
|
20734
20876
|
class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
|
|
20735
20877
|
specObj;
|
|
20736
|
-
passingOptionsNames = ['specObj', 'parent'];
|
|
20878
|
+
passingOptionsNames = ['specObj', 'parent', 'consume'];
|
|
20737
20879
|
constructor({
|
|
20738
20880
|
specObj,
|
|
20739
20881
|
...rest
|
|
@@ -20779,7 +20921,7 @@ class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["de
|
|
|
20779
20921
|
*/
|
|
20780
20922
|
const visitor = this.retrieveVisitorInstance(specPath, options);
|
|
20781
20923
|
if (visitor instanceof _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"] && visitor?.constructor === _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]) {
|
|
20782
|
-
return (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
|
|
20924
|
+
return this.consume ? element : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
|
|
20783
20925
|
}
|
|
20784
20926
|
(0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_5__.traverse)(element, visitor, options);
|
|
20785
20927
|
return visitor.element;
|
|
@@ -20797,7 +20939,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
20797
20939
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
20798
20940
|
/* harmony export */ });
|
|
20799
20941
|
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8400);
|
|
20800
|
-
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
20942
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2111);
|
|
20801
20943
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5810);
|
|
20802
20944
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9686);
|
|
20803
20945
|
|
|
@@ -20812,19 +20954,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
20812
20954
|
*/
|
|
20813
20955
|
class Visitor {
|
|
20814
20956
|
element;
|
|
20957
|
+
consume = false;
|
|
20958
|
+
consumeSafe = false;
|
|
20815
20959
|
constructor(options) {
|
|
20816
20960
|
Object.assign(this, options);
|
|
20817
20961
|
}
|
|
20818
20962
|
copyMetaAndAttributes(from, to) {
|
|
20819
|
-
if (!from.isMetaEmpty
|
|
20820
|
-
|
|
20821
|
-
|
|
20822
|
-
to.meta = (
|
|
20963
|
+
if (!from.isMetaEmpty && !to.isMetaEmpty) {
|
|
20964
|
+
to.meta = to.meta.merge(from.meta);
|
|
20965
|
+
} else if (!from.isMetaEmpty) {
|
|
20966
|
+
to.meta = from.meta.cloneDeep();
|
|
20823
20967
|
}
|
|
20824
|
-
if (!from.isAttributesEmpty
|
|
20825
|
-
|
|
20826
|
-
|
|
20827
|
-
to.attributes = (0,
|
|
20968
|
+
if (!from.isAttributesEmpty && !to.isAttributesEmpty) {
|
|
20969
|
+
to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(to.attributes, from.attributes);
|
|
20970
|
+
} else if (!from.isAttributesEmpty) {
|
|
20971
|
+
to.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(from.attributes);
|
|
20828
20972
|
}
|
|
20829
20973
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"].transfer(from, to);
|
|
20830
20974
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"].transfer(from, to);
|
|
@@ -20932,12 +21076,13 @@ class FixedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED_MOD
|
|
|
20932
21076
|
const keyValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key);
|
|
20933
21077
|
if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isStringElement)(key) && fields.includes(keyValue) && !this.ignoredFields.includes(keyValue)) {
|
|
20934
21078
|
const fixedFieldElement = this.toRefractedElement([...specPath, 'fixedFields', keyValue], value);
|
|
20935
|
-
const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), fixedFieldElement);
|
|
21079
|
+
const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](this.consume ? key : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), fixedFieldElement);
|
|
20936
21080
|
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
20937
|
-
newMemberElement.classes.push('fixed-field');
|
|
20938
21081
|
this.element.content.push(newMemberElement);
|
|
21082
|
+
// consume: release processed generic subtree
|
|
21083
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
|
|
20939
21084
|
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
20940
|
-
this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
21085
|
+
this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
20941
21086
|
}
|
|
20942
21087
|
});
|
|
20943
21088
|
this.copyMetaAndAttributes(objectElement, this.element);
|
|
@@ -21024,12 +21169,14 @@ class PatternedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED
|
|
|
21024
21169
|
if (!this.ignoredFields.includes(keyValue) && this.fieldPatternPredicate(keyValue)) {
|
|
21025
21170
|
const specPath = this.specPath(value);
|
|
21026
21171
|
const patternedFieldElement = this.toRefractedElement(specPath, value);
|
|
21027
|
-
const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), patternedFieldElement);
|
|
21172
|
+
const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](this.consume ? key : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), patternedFieldElement);
|
|
21028
21173
|
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
21029
21174
|
newMemberElement.classes.push('patterned-field');
|
|
21030
21175
|
this.element.content.push(newMemberElement);
|
|
21176
|
+
// consume: release processed generic subtree
|
|
21177
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
|
|
21031
21178
|
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
21032
|
-
this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
21179
|
+
this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
21033
21180
|
}
|
|
21034
21181
|
});
|
|
21035
21182
|
this.copyMetaAndAttributes(objectElement, this.element);
|
|
@@ -21571,13 +21718,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
21571
21718
|
/* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3031);
|
|
21572
21719
|
/* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6513);
|
|
21573
21720
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5162);
|
|
21574
|
-
/* harmony import */ var
|
|
21575
|
-
/* harmony import */ var
|
|
21576
|
-
/* harmony import */ var
|
|
21577
|
-
/* harmony import */ var
|
|
21578
|
-
/* harmony import */ var
|
|
21579
|
-
/* harmony import */ var _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(4686);
|
|
21580
|
-
/* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(6059);
|
|
21721
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4673);
|
|
21722
|
+
/* harmony import */ var _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5320);
|
|
21723
|
+
/* harmony import */ var _bases_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(9033);
|
|
21724
|
+
/* harmony import */ var _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(4686);
|
|
21725
|
+
/* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(6059);
|
|
21581
21726
|
|
|
21582
21727
|
|
|
21583
21728
|
|
|
@@ -21592,10 +21737,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
21592
21737
|
/**
|
|
21593
21738
|
* @public
|
|
21594
21739
|
*/
|
|
21595
|
-
class JSONSchemaVisitor extends
|
|
21740
|
+
class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_7__.JSONSchemaVisitorBase {
|
|
21596
21741
|
constructor(options) {
|
|
21597
21742
|
super(options);
|
|
21598
|
-
this.element = new
|
|
21743
|
+
this.element = new _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]();
|
|
21744
|
+
this.consumeSafe = true;
|
|
21599
21745
|
this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'JSONSchema']);
|
|
21600
21746
|
}
|
|
21601
21747
|
get defaultDialectIdentifier() {
|
|
@@ -21608,27 +21754,27 @@ class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_9__.JSONSche
|
|
|
21608
21754
|
|
|
21609
21755
|
// for further processing consider this JSONSchema Element as parent for all sub-schemas
|
|
21610
21756
|
this.parent = this.element;
|
|
21611
|
-
return
|
|
21757
|
+
return _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"].prototype.ObjectElement.call(this, path);
|
|
21612
21758
|
}
|
|
21613
21759
|
handleDialectIdentifier(objectElement) {
|
|
21614
21760
|
// handle $schema keyword in embedded resources
|
|
21615
21761
|
if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__["default"])(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
|
|
21616
21762
|
// no parent available and no $schema is defined, set default $schema
|
|
21617
21763
|
this.element.meta.set('inheritedDialectIdentifier', this.defaultDialectIdentifier);
|
|
21618
|
-
} else if ((0,
|
|
21764
|
+
} else if ((0,_predicates_mjs__WEBPACK_IMPORTED_MODULE_9__.isJSONSchemaElement)(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
|
|
21619
21765
|
// parent is available and no $schema is defined, set parent $schema
|
|
21620
|
-
const inheritedDialectIdentifier = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(
|
|
21766
|
+
const inheritedDialectIdentifier = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(this.parent.meta.get('inheritedDialectIdentifier'), (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(this.parent.$schema));
|
|
21621
21767
|
this.element.meta.set('inheritedDialectIdentifier', inheritedDialectIdentifier);
|
|
21622
21768
|
}
|
|
21623
21769
|
}
|
|
21624
21770
|
handleSchemaIdentifier(objectElement, identifierKeyword = 'id') {
|
|
21625
21771
|
// handle schema identifier in embedded resources
|
|
21626
|
-
// fetch parent's ancestorsSchemaIdentifiers
|
|
21627
|
-
const ancestorsSchemaIdentifiers = this.parent !== undefined ? (
|
|
21772
|
+
// fetch parent's ancestorsSchemaIdentifiers (stored as plain string[])
|
|
21773
|
+
const ancestorsSchemaIdentifiers = this.parent !== undefined ? [...(this.parent.meta.get('ancestorsSchemaIdentifiers') ?? [])] : [];
|
|
21628
21774
|
// get current schema identifier
|
|
21629
|
-
const schemaIdentifier = (0,
|
|
21775
|
+
const schemaIdentifier = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(objectElement.get(identifierKeyword));
|
|
21630
21776
|
|
|
21631
|
-
// remember schema identifier if it's a non-empty
|
|
21777
|
+
// remember schema identifier if it's a non-empty string
|
|
21632
21778
|
if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(schemaIdentifier)) {
|
|
21633
21779
|
ancestorsSchemaIdentifiers.push(schemaIdentifier);
|
|
21634
21780
|
}
|