@speclynx/apidom-ns-json-schema-draft-7 2.13.1 → 3.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.
- package/CHANGELOG.md +15 -0
- package/dist/apidom-ns-json-schema-draft-7.browser.js +246 -100
- package/dist/apidom-ns-json-schema-draft-7.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-7.d.ts +2 -1
|
@@ -432,7 +432,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
432
432
|
const refract = (value, {
|
|
433
433
|
element = 'jSONSchemaDraft7',
|
|
434
434
|
plugins = [],
|
|
435
|
-
specificationObj = _specification_ts__WEBPACK_IMPORTED_MODULE_5__["default"]
|
|
435
|
+
specificationObj = _specification_ts__WEBPACK_IMPORTED_MODULE_5__["default"],
|
|
436
|
+
consume = false
|
|
436
437
|
} = {}) => {
|
|
437
438
|
const genericElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.refract)(value);
|
|
438
439
|
const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_1__.resolveSpecification)(specificationObj);
|
|
@@ -449,7 +450,8 @@ const refract = (value, {
|
|
|
449
450
|
*/
|
|
450
451
|
const RootVisitorClass = (0,ramda__WEBPACK_IMPORTED_MODULE_4__["default"])(specPath, resolvedSpec);
|
|
451
452
|
const rootVisitor = new RootVisitorClass({
|
|
452
|
-
specObj: resolvedSpec
|
|
453
|
+
specObj: resolvedSpec,
|
|
454
|
+
consume
|
|
453
455
|
});
|
|
454
456
|
(0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_2__.traverse)(genericElement, rootVisitor);
|
|
455
457
|
|
|
@@ -691,8 +693,9 @@ const schema = {
|
|
|
691
693
|
}
|
|
692
694
|
};
|
|
693
695
|
const findElementFactory = (ancestor, keyName) => {
|
|
694
|
-
const elementType = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.getNodeType)(ancestor);
|
|
695
|
-
const
|
|
696
|
+
const elementType = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.getNodeType)(ancestor);
|
|
697
|
+
const classType = ancestor.isMetaEmpty ? undefined : ancestor.classes.at(0); // @ts-ignore
|
|
698
|
+
const keyMapping = schema[elementType] || schema[classType];
|
|
696
699
|
return typeof keyMapping === 'undefined' ? undefined : Object.hasOwn(keyMapping, '[key: *]') ? keyMapping['[key: *]'] : keyMapping[keyName];
|
|
697
700
|
};
|
|
698
701
|
|
|
@@ -722,7 +725,7 @@ const plugin = () => () => ({
|
|
|
722
725
|
if (typeof elementFactory !== 'function') return;
|
|
723
726
|
const replacement = elementFactory.call({
|
|
724
727
|
context
|
|
725
|
-
}, undefined,
|
|
728
|
+
}, undefined, element.isMetaEmpty ? undefined : element.meta.cloneDeep(), element.isAttributesEmpty ? undefined : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.attributes));
|
|
726
729
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__["default"].transfer(element, replacement);
|
|
727
730
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_6__["default"].transfer(element, replacement);
|
|
728
731
|
path.replaceWith(replacement);
|
|
@@ -16360,7 +16363,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
16360
16363
|
* @public
|
|
16361
16364
|
*/
|
|
16362
16365
|
const emptyElement = element => {
|
|
16363
|
-
const meta = !element.isMetaEmpty ?
|
|
16366
|
+
const meta = !element.isMetaEmpty ? element.meta.cloneDeep() : undefined;
|
|
16364
16367
|
const attributes = !element.isAttributesEmpty ? (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.attributes) : undefined;
|
|
16365
16368
|
|
|
16366
16369
|
// @ts-ignore
|
|
@@ -16376,7 +16379,7 @@ const getMergeFunction = (keyElement, options) => {
|
|
|
16376
16379
|
};
|
|
16377
16380
|
const getMetaMergeFunction = options => {
|
|
16378
16381
|
if (typeof options.customMetaMerge !== 'function') {
|
|
16379
|
-
return targetMeta =>
|
|
16382
|
+
return targetMeta => targetMeta.cloneDeep();
|
|
16380
16383
|
}
|
|
16381
16384
|
return options.customMetaMerge;
|
|
16382
16385
|
};
|
|
@@ -16448,8 +16451,20 @@ const deepmerge = (targetElement, sourceElement, options) => {
|
|
|
16448
16451
|
const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
|
|
16449
16452
|
|
|
16450
16453
|
// merging meta & attributes
|
|
16451
|
-
|
|
16452
|
-
|
|
16454
|
+
if (!targetElement.isMetaEmpty && !sourceElement.isMetaEmpty) {
|
|
16455
|
+
mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
|
|
16456
|
+
} else if (!targetElement.isMetaEmpty) {
|
|
16457
|
+
mergedElement.meta = targetElement.meta.cloneDeep();
|
|
16458
|
+
} else if (!sourceElement.isMetaEmpty) {
|
|
16459
|
+
mergedElement.meta = sourceElement.meta.cloneDeep();
|
|
16460
|
+
}
|
|
16461
|
+
if (!targetElement.isAttributesEmpty && !sourceElement.isAttributesEmpty) {
|
|
16462
|
+
mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
|
|
16463
|
+
} else if (!targetElement.isAttributesEmpty) {
|
|
16464
|
+
mergedElement.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(targetElement.attributes);
|
|
16465
|
+
} else if (!sourceElement.isAttributesEmpty) {
|
|
16466
|
+
mergedElement.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(sourceElement.attributes);
|
|
16467
|
+
}
|
|
16453
16468
|
return mergedElement;
|
|
16454
16469
|
};
|
|
16455
16470
|
deepmerge.all = (list, options) => {
|
|
@@ -16782,6 +16797,104 @@ class KeyValuePair {
|
|
|
16782
16797
|
|
|
16783
16798
|
/***/ },
|
|
16784
16799
|
|
|
16800
|
+
/***/ 1844
|
|
16801
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
16802
|
+
|
|
16803
|
+
__webpack_require__.r(__webpack_exports__);
|
|
16804
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
16805
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
16806
|
+
/* harmony export */ });
|
|
16807
|
+
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8138);
|
|
16808
|
+
|
|
16809
|
+
/**
|
|
16810
|
+
* Lightweight meta container for Element metadata.
|
|
16811
|
+
*
|
|
16812
|
+
* Data is stored as own properties on the instance; methods live on the prototype.
|
|
16813
|
+
* `Object.keys()`, `Object.entries()`, etc. only see data properties.
|
|
16814
|
+
*
|
|
16815
|
+
* @public
|
|
16816
|
+
*/
|
|
16817
|
+
class Metadata {
|
|
16818
|
+
// Set via prototype assignment in registration.ts to avoid circular dependency
|
|
16819
|
+
|
|
16820
|
+
get(name) {
|
|
16821
|
+
return this[name];
|
|
16822
|
+
}
|
|
16823
|
+
set(name, value) {
|
|
16824
|
+
this[name] = value;
|
|
16825
|
+
}
|
|
16826
|
+
hasKey(name) {
|
|
16827
|
+
return Object.hasOwn(this, name);
|
|
16828
|
+
}
|
|
16829
|
+
keys() {
|
|
16830
|
+
return Object.keys(this);
|
|
16831
|
+
}
|
|
16832
|
+
remove(name) {
|
|
16833
|
+
delete this[name];
|
|
16834
|
+
}
|
|
16835
|
+
get isEmpty() {
|
|
16836
|
+
return Object.keys(this).length === 0;
|
|
16837
|
+
}
|
|
16838
|
+
get isFrozen() {
|
|
16839
|
+
return Object.isFrozen(this);
|
|
16840
|
+
}
|
|
16841
|
+
freeze() {
|
|
16842
|
+
for (const value of Object.values(this)) {
|
|
16843
|
+
if (value instanceof this.Element) {
|
|
16844
|
+
value.freeze();
|
|
16845
|
+
} else if (Array.isArray(value) || value !== null && typeof value === 'object') {
|
|
16846
|
+
Object.freeze(value);
|
|
16847
|
+
}
|
|
16848
|
+
}
|
|
16849
|
+
Object.freeze(this);
|
|
16850
|
+
}
|
|
16851
|
+
|
|
16852
|
+
/**
|
|
16853
|
+
* Creates a shallow clone. Same references, new container.
|
|
16854
|
+
*/
|
|
16855
|
+
cloneShallow() {
|
|
16856
|
+
const clone = new Metadata();
|
|
16857
|
+
Object.assign(clone, this);
|
|
16858
|
+
return clone;
|
|
16859
|
+
}
|
|
16860
|
+
|
|
16861
|
+
/**
|
|
16862
|
+
* Merges another Metadata into a new instance.
|
|
16863
|
+
* Arrays are concatenated, all other values are overwritten by source.
|
|
16864
|
+
*/
|
|
16865
|
+
merge(source) {
|
|
16866
|
+
const result = this.cloneShallow();
|
|
16867
|
+
for (const [key, value] of Object.entries(source)) {
|
|
16868
|
+
const existing = result.get(key);
|
|
16869
|
+
if (Array.isArray(existing) && Array.isArray(value)) {
|
|
16870
|
+
result.set(key, [...existing, ...value]);
|
|
16871
|
+
} else {
|
|
16872
|
+
result.set(key, value);
|
|
16873
|
+
}
|
|
16874
|
+
}
|
|
16875
|
+
return result;
|
|
16876
|
+
}
|
|
16877
|
+
|
|
16878
|
+
/**
|
|
16879
|
+
* Creates a deep clone. Elements are deep cloned,
|
|
16880
|
+
* all other values are deep cloned via ramda clone.
|
|
16881
|
+
*/
|
|
16882
|
+
cloneDeep() {
|
|
16883
|
+
const copy = new Metadata();
|
|
16884
|
+
for (const [key, value] of Object.entries(this)) {
|
|
16885
|
+
if (value instanceof this.Element) {
|
|
16886
|
+
copy.set(key, this.cloneDeepElement(value));
|
|
16887
|
+
} else {
|
|
16888
|
+
copy.set(key, (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(value));
|
|
16889
|
+
}
|
|
16890
|
+
}
|
|
16891
|
+
return copy;
|
|
16892
|
+
}
|
|
16893
|
+
}
|
|
16894
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Metadata);
|
|
16895
|
+
|
|
16896
|
+
/***/ },
|
|
16897
|
+
|
|
16785
16898
|
/***/ 5156
|
|
16786
16899
|
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
16787
16900
|
|
|
@@ -17422,7 +17535,7 @@ const cloneShallowElement = element => {
|
|
|
17422
17535
|
const copy = new Ctor();
|
|
17423
17536
|
copy.element = element.element;
|
|
17424
17537
|
if (!element.isMetaEmpty) {
|
|
17425
|
-
copy.meta =
|
|
17538
|
+
copy.meta = element.meta.cloneDeep();
|
|
17426
17539
|
}
|
|
17427
17540
|
if (!element.isAttributesEmpty) {
|
|
17428
17541
|
copy.attributes = cloneDeep(element.attributes);
|
|
@@ -17450,8 +17563,8 @@ const cloneShallowElement = element => {
|
|
|
17450
17563
|
|
|
17451
17564
|
/**
|
|
17452
17565
|
* Creates a shallow clone of an ApiDOM Element, KeyValuePair, or ObjectSlice.
|
|
17453
|
-
* The element itself is cloned, but content references are shared
|
|
17454
|
-
*
|
|
17566
|
+
* The element itself is cloned, but content references are shared.
|
|
17567
|
+
* Meta and attributes are deep cloned to preserve semantic information.
|
|
17455
17568
|
* @public
|
|
17456
17569
|
*/
|
|
17457
17570
|
const cloneShallow = value => {
|
|
@@ -18513,7 +18626,7 @@ class CollectionElement extends _Element_mjs__WEBPACK_IMPORTED_MODULE_0__["defau
|
|
|
18513
18626
|
* Search the tree recursively and find the element with the matching ID.
|
|
18514
18627
|
*/
|
|
18515
18628
|
getById(id) {
|
|
18516
|
-
return this.find(item => item.id
|
|
18629
|
+
return this.find(item => item.id === id).first;
|
|
18517
18630
|
}
|
|
18518
18631
|
|
|
18519
18632
|
/**
|
|
@@ -18542,18 +18655,24 @@ class CollectionElement extends _Element_mjs__WEBPACK_IMPORTED_MODULE_0__["defau
|
|
|
18542
18655
|
|
|
18543
18656
|
__webpack_require__.r(__webpack_exports__);
|
|
18544
18657
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
18658
|
+
/* harmony export */ Metadata: () => (/* reexport safe */ _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]),
|
|
18545
18659
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
18546
18660
|
/* harmony export */ });
|
|
18547
18661
|
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3654);
|
|
18548
|
-
/* harmony import */ var
|
|
18549
|
-
/* harmony import */ var
|
|
18662
|
+
/* harmony import */ var _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1844);
|
|
18663
|
+
/* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6663);
|
|
18664
|
+
/* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8504);
|
|
18665
|
+
|
|
18550
18666
|
|
|
18551
18667
|
|
|
18668
|
+
// shared singleton for frozen elements with no meta — avoids allocation on every access
|
|
18669
|
+
const FROZEN_EMPTY_METADATA = Object.freeze(new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]());
|
|
18552
18670
|
|
|
18553
18671
|
/**
|
|
18554
18672
|
* Valid content types for an Element.
|
|
18555
18673
|
* @public
|
|
18556
18674
|
*/
|
|
18675
|
+
|
|
18557
18676
|
/**
|
|
18558
18677
|
* Base Element class that all ApiDOM elements extend.
|
|
18559
18678
|
*
|
|
@@ -18651,7 +18770,7 @@ class Element {
|
|
|
18651
18770
|
_attributes;
|
|
18652
18771
|
|
|
18653
18772
|
// ============================================================
|
|
18654
|
-
// Prototype-assigned properties (set in
|
|
18773
|
+
// Prototype-assigned properties (set in registration.ts)
|
|
18655
18774
|
// Using 'declare' allows TypeScript to know about these
|
|
18656
18775
|
// without generating runtime code.
|
|
18657
18776
|
// ============================================================
|
|
@@ -18712,13 +18831,13 @@ class Element {
|
|
|
18712
18831
|
}
|
|
18713
18832
|
|
|
18714
18833
|
// KeyValuePair
|
|
18715
|
-
if (value instanceof
|
|
18834
|
+
if (value instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
|
|
18716
18835
|
this._content = value;
|
|
18717
18836
|
return;
|
|
18718
18837
|
}
|
|
18719
18838
|
|
|
18720
18839
|
// ObjectSlice - extract elements array
|
|
18721
|
-
if (value instanceof
|
|
18840
|
+
if (value instanceof _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]) {
|
|
18722
18841
|
this._content = value.elements;
|
|
18723
18842
|
return;
|
|
18724
18843
|
}
|
|
@@ -18739,24 +18858,22 @@ class Element {
|
|
|
18739
18858
|
|
|
18740
18859
|
/**
|
|
18741
18860
|
* Metadata about this element (id, classes, title, description, links).
|
|
18742
|
-
* Lazily creates
|
|
18861
|
+
* Lazily creates a Metadata instance if not set.
|
|
18743
18862
|
*/
|
|
18744
18863
|
get meta() {
|
|
18745
18864
|
if (!this._meta) {
|
|
18746
|
-
if (this.isFrozen)
|
|
18747
|
-
|
|
18748
|
-
meta.freeze();
|
|
18749
|
-
return meta;
|
|
18750
|
-
}
|
|
18751
|
-
this._meta = new this.ObjectElement();
|
|
18865
|
+
if (this.isFrozen) return FROZEN_EMPTY_METADATA;
|
|
18866
|
+
this._meta = new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]();
|
|
18752
18867
|
}
|
|
18753
18868
|
return this._meta;
|
|
18754
18869
|
}
|
|
18755
18870
|
set meta(value) {
|
|
18756
|
-
if (value instanceof
|
|
18871
|
+
if (value instanceof _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]) {
|
|
18757
18872
|
this._meta = value;
|
|
18758
|
-
} else {
|
|
18759
|
-
|
|
18873
|
+
} else if (value && typeof value === 'object') {
|
|
18874
|
+
const meta = new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]();
|
|
18875
|
+
Object.assign(meta, value);
|
|
18876
|
+
this._meta = meta;
|
|
18760
18877
|
}
|
|
18761
18878
|
}
|
|
18762
18879
|
|
|
@@ -18789,10 +18906,8 @@ class Element {
|
|
|
18789
18906
|
|
|
18790
18907
|
/** Unique identifier for this element. */
|
|
18791
18908
|
get id() {
|
|
18792
|
-
if (this.isFrozen) {
|
|
18793
|
-
return this.getMetaProperty('id', '');
|
|
18794
|
-
}
|
|
18795
18909
|
if (!this.hasMetaProperty('id')) {
|
|
18910
|
+
if (this.isFrozen) return '';
|
|
18796
18911
|
this.setMetaProperty('id', '');
|
|
18797
18912
|
}
|
|
18798
18913
|
return this.meta.get('id');
|
|
@@ -18803,10 +18918,8 @@ class Element {
|
|
|
18803
18918
|
|
|
18804
18919
|
/** CSS-like class names. */
|
|
18805
18920
|
get classes() {
|
|
18806
|
-
if (this.isFrozen) {
|
|
18807
|
-
return this.getMetaProperty('classes', []);
|
|
18808
|
-
}
|
|
18809
18921
|
if (!this.hasMetaProperty('classes')) {
|
|
18922
|
+
if (this.isFrozen) return [];
|
|
18810
18923
|
this.setMetaProperty('classes', []);
|
|
18811
18924
|
}
|
|
18812
18925
|
return this.meta.get('classes');
|
|
@@ -18817,11 +18930,13 @@ class Element {
|
|
|
18817
18930
|
|
|
18818
18931
|
/** Hyperlinks associated with this element. */
|
|
18819
18932
|
get links() {
|
|
18820
|
-
if (this.isFrozen) {
|
|
18821
|
-
return this.getMetaProperty('links', []);
|
|
18822
|
-
}
|
|
18823
18933
|
if (!this.hasMetaProperty('links')) {
|
|
18824
|
-
this.
|
|
18934
|
+
if (this.isFrozen) {
|
|
18935
|
+
const empty = new this.ArrayElement();
|
|
18936
|
+
empty.freeze();
|
|
18937
|
+
return empty;
|
|
18938
|
+
}
|
|
18939
|
+
this.setMetaProperty('links', new this.ArrayElement());
|
|
18825
18940
|
}
|
|
18826
18941
|
return this.meta.get('links');
|
|
18827
18942
|
}
|
|
@@ -18841,7 +18956,7 @@ class Element {
|
|
|
18841
18956
|
if (Array.isArray(content)) {
|
|
18842
18957
|
return content;
|
|
18843
18958
|
}
|
|
18844
|
-
if (content instanceof
|
|
18959
|
+
if (content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
|
|
18845
18960
|
const children = [];
|
|
18846
18961
|
if (content.key) children.push(content.key);
|
|
18847
18962
|
if (content.value) children.push(content.value);
|
|
@@ -18871,7 +18986,6 @@ class Element {
|
|
|
18871
18986
|
|
|
18872
18987
|
// Freeze meta and attributes
|
|
18873
18988
|
if (this._meta) {
|
|
18874
|
-
this._meta.parent = this;
|
|
18875
18989
|
this._meta.freeze();
|
|
18876
18990
|
}
|
|
18877
18991
|
if (this._attributes) {
|
|
@@ -18906,7 +19020,7 @@ class Element {
|
|
|
18906
19020
|
if (_content instanceof Element) {
|
|
18907
19021
|
return _content.toValue();
|
|
18908
19022
|
}
|
|
18909
|
-
if (_content instanceof
|
|
19023
|
+
if (_content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
|
|
18910
19024
|
return _content.toValue();
|
|
18911
19025
|
}
|
|
18912
19026
|
if (Array.isArray(_content)) {
|
|
@@ -18962,7 +19076,7 @@ class Element {
|
|
|
18962
19076
|
* @throws Error if this element has no ID
|
|
18963
19077
|
*/
|
|
18964
19078
|
toRef(path) {
|
|
18965
|
-
const idValue = this.id
|
|
19079
|
+
const idValue = this.id;
|
|
18966
19080
|
if (idValue === '') {
|
|
18967
19081
|
throw new Error('Cannot create reference to an element without an ID');
|
|
18968
19082
|
}
|
|
@@ -18974,26 +19088,16 @@ class Element {
|
|
|
18974
19088
|
}
|
|
18975
19089
|
|
|
18976
19090
|
/**
|
|
18977
|
-
* Gets a meta property.
|
|
19091
|
+
* Gets a meta property value.
|
|
18978
19092
|
*
|
|
18979
19093
|
* When the property doesn't exist:
|
|
18980
|
-
* - With defaultValue: returns
|
|
19094
|
+
* - With defaultValue: returns the provided default value
|
|
18981
19095
|
* - Without defaultValue: returns undefined
|
|
18982
|
-
*
|
|
18983
|
-
* Note: Each call with a default creates a new instance. Use setMetaProperty
|
|
18984
|
-
* first if you need reference equality across multiple accesses.
|
|
18985
19096
|
*/
|
|
18986
19097
|
|
|
18987
19098
|
getMetaProperty(name, defaultValue) {
|
|
18988
19099
|
if (!this.hasMetaProperty(name)) {
|
|
18989
|
-
|
|
18990
|
-
return undefined;
|
|
18991
|
-
}
|
|
18992
|
-
const element = this.refract(defaultValue);
|
|
18993
|
-
if (element && this.isFrozen) {
|
|
18994
|
-
element.freeze();
|
|
18995
|
-
}
|
|
18996
|
-
return element;
|
|
19100
|
+
return defaultValue;
|
|
18997
19101
|
}
|
|
18998
19102
|
return this.meta.get(name);
|
|
18999
19103
|
}
|
|
@@ -19006,20 +19110,17 @@ class Element {
|
|
|
19006
19110
|
}
|
|
19007
19111
|
|
|
19008
19112
|
/**
|
|
19009
|
-
*
|
|
19113
|
+
* Checks whether a meta property exists.
|
|
19010
19114
|
*/
|
|
19011
19115
|
hasMetaProperty(name) {
|
|
19012
|
-
|
|
19013
|
-
return this.meta.hasKey(name);
|
|
19014
|
-
}
|
|
19015
|
-
return false;
|
|
19116
|
+
return this._meta !== undefined && this._meta.hasKey(name);
|
|
19016
19117
|
}
|
|
19017
19118
|
|
|
19018
19119
|
/**
|
|
19019
19120
|
* Checks if meta is empty.
|
|
19020
19121
|
*/
|
|
19021
19122
|
get isMetaEmpty() {
|
|
19022
|
-
return this._meta === undefined || this.
|
|
19123
|
+
return this._meta === undefined || this._meta.isEmpty;
|
|
19023
19124
|
}
|
|
19024
19125
|
|
|
19025
19126
|
/**
|
|
@@ -19045,7 +19146,7 @@ class Element {
|
|
|
19045
19146
|
}
|
|
19046
19147
|
|
|
19047
19148
|
/**
|
|
19048
|
-
*
|
|
19149
|
+
* Checks whether an attributes property exists.
|
|
19049
19150
|
*/
|
|
19050
19151
|
hasAttributesProperty(name) {
|
|
19051
19152
|
if (!this.isAttributesEmpty) {
|
|
@@ -19064,6 +19165,7 @@ class Element {
|
|
|
19064
19165
|
|
|
19065
19166
|
// Re-export types for convenience
|
|
19066
19167
|
|
|
19168
|
+
|
|
19067
19169
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Element);
|
|
19068
19170
|
|
|
19069
19171
|
/***/ },
|
|
@@ -19496,6 +19598,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
19496
19598
|
/* harmony import */ var _elements_Style_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(9686);
|
|
19497
19599
|
/* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(8504);
|
|
19498
19600
|
/* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(6663);
|
|
19601
|
+
/* harmony import */ var _Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(1844);
|
|
19602
|
+
/* harmony import */ var _clone_index_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(2111);
|
|
19603
|
+
|
|
19604
|
+
|
|
19499
19605
|
|
|
19500
19606
|
|
|
19501
19607
|
|
|
@@ -19555,14 +19661,16 @@ function refract(value) {
|
|
|
19555
19661
|
}
|
|
19556
19662
|
|
|
19557
19663
|
// Set up prototype assignments for circular dependency resolution.
|
|
19558
|
-
// These allow Element instances to
|
|
19559
|
-
//
|
|
19664
|
+
// These allow Element and Metadata instances to reference classes they can't import
|
|
19665
|
+
// directly (which would cause circular imports).
|
|
19560
19666
|
// Using 'declare' in the class definitions enables type-safe access to these properties.
|
|
19561
19667
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.ObjectElement = _primitives_ObjectElement_mjs__WEBPACK_IMPORTED_MODULE_8__["default"];
|
|
19562
19668
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.ArrayElement = _primitives_ArrayElement_mjs__WEBPACK_IMPORTED_MODULE_6__["default"];
|
|
19563
19669
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.RefElement = _elements_RefElement_mjs__WEBPACK_IMPORTED_MODULE_10__["default"];
|
|
19564
19670
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.MemberElement = _primitives_MemberElement_mjs__WEBPACK_IMPORTED_MODULE_7__["default"];
|
|
19565
19671
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.refract = refract;
|
|
19672
|
+
_Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__["default"].prototype.Element = _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"];
|
|
19673
|
+
_Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__["default"].prototype.cloneDeepElement = element => (0,_clone_index_mjs__WEBPACK_IMPORTED_MODULE_19__.cloneDeep)(element);
|
|
19566
19674
|
|
|
19567
19675
|
/**
|
|
19568
19676
|
* Contains all of the element classes, and related structures and methods
|
|
@@ -19626,7 +19734,13 @@ class JSONSerialiser {
|
|
|
19626
19734
|
element: element.element
|
|
19627
19735
|
};
|
|
19628
19736
|
if (!element.isMetaEmpty) {
|
|
19629
|
-
|
|
19737
|
+
const serialisedMeta = this.serialiseMeta(element);
|
|
19738
|
+
if (serialisedMeta) {
|
|
19739
|
+
payload.meta = serialisedMeta.meta;
|
|
19740
|
+
if (serialisedMeta.rawKeys.length > 0) {
|
|
19741
|
+
payload.__meta_raw__ = serialisedMeta.rawKeys;
|
|
19742
|
+
}
|
|
19743
|
+
}
|
|
19630
19744
|
}
|
|
19631
19745
|
if (!element.isAttributesEmpty) {
|
|
19632
19746
|
payload.attributes = this.serialiseObject(element.attributes);
|
|
@@ -19673,7 +19787,7 @@ class JSONSerialiser {
|
|
|
19673
19787
|
element.element = value.element;
|
|
19674
19788
|
}
|
|
19675
19789
|
|
|
19676
|
-
// Extract
|
|
19790
|
+
// Extract special meta keys without mutating input, filter remaining meta
|
|
19677
19791
|
let mappingsDoc;
|
|
19678
19792
|
let stylesDoc;
|
|
19679
19793
|
let metaToDeserialize = value.meta;
|
|
@@ -19687,8 +19801,15 @@ class JSONSerialiser {
|
|
|
19687
19801
|
stylesDoc = __styles__;
|
|
19688
19802
|
metaToDeserialize = Object.keys(rest).length > 0 ? rest : undefined;
|
|
19689
19803
|
}
|
|
19804
|
+
|
|
19805
|
+
// determine which meta keys were raw primitives before serialization
|
|
19806
|
+
const rawKeys = value.__meta_raw__ ? new Set(value.__meta_raw__) : undefined;
|
|
19690
19807
|
if (metaToDeserialize) {
|
|
19691
|
-
|
|
19808
|
+
for (const [key, doc] of Object.entries(metaToDeserialize)) {
|
|
19809
|
+
const deserialized = this.deserialise(doc);
|
|
19810
|
+
// unwrap keys that were raw primitives before serialization
|
|
19811
|
+
element.setMetaProperty(key, rawKeys?.has(key) ? deserialized.toValue() : deserialized);
|
|
19812
|
+
}
|
|
19692
19813
|
}
|
|
19693
19814
|
|
|
19694
19815
|
// Restore source position from __mappings__
|
|
@@ -19751,6 +19872,27 @@ class JSONSerialiser {
|
|
|
19751
19872
|
}
|
|
19752
19873
|
return content;
|
|
19753
19874
|
}
|
|
19875
|
+
serialiseMeta(element) {
|
|
19876
|
+
const meta = {};
|
|
19877
|
+
const rawKeys = [];
|
|
19878
|
+
let hasEntries = false;
|
|
19879
|
+
for (const [key, value] of Object.entries(element.meta)) {
|
|
19880
|
+
if (value instanceof this.namespace.elements.Element) {
|
|
19881
|
+
meta[key] = this.serialise(value);
|
|
19882
|
+
hasEntries = true;
|
|
19883
|
+
} else if (value !== undefined) {
|
|
19884
|
+
// refract primitives to maintain JSON Refract spec compatibility
|
|
19885
|
+
const refracted = element.refract(value);
|
|
19886
|
+
meta[key] = this.serialise(refracted);
|
|
19887
|
+
rawKeys.push(key);
|
|
19888
|
+
hasEntries = true;
|
|
19889
|
+
}
|
|
19890
|
+
}
|
|
19891
|
+
return hasEntries ? {
|
|
19892
|
+
meta,
|
|
19893
|
+
rawKeys
|
|
19894
|
+
} : undefined;
|
|
19895
|
+
}
|
|
19754
19896
|
serialiseObject(obj) {
|
|
19755
19897
|
const result = {};
|
|
19756
19898
|
obj.forEach((value, key) => {
|
|
@@ -20705,7 +20847,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
20705
20847
|
*/
|
|
20706
20848
|
class FallbackVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
|
20707
20849
|
enter(path) {
|
|
20708
|
-
this.element = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
|
|
20850
|
+
this.element = this.consume ? path.node : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
|
|
20709
20851
|
path.stop();
|
|
20710
20852
|
}
|
|
20711
20853
|
}
|
|
@@ -20744,7 +20886,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
20744
20886
|
*/
|
|
20745
20887
|
class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
|
|
20746
20888
|
specObj;
|
|
20747
|
-
passingOptionsNames = ['specObj', 'parent'];
|
|
20889
|
+
passingOptionsNames = ['specObj', 'parent', 'consume'];
|
|
20748
20890
|
constructor({
|
|
20749
20891
|
specObj,
|
|
20750
20892
|
...rest
|
|
@@ -20790,7 +20932,7 @@ class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["de
|
|
|
20790
20932
|
*/
|
|
20791
20933
|
const visitor = this.retrieveVisitorInstance(specPath, options);
|
|
20792
20934
|
if (visitor instanceof _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"] && visitor?.constructor === _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]) {
|
|
20793
|
-
return (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
|
|
20935
|
+
return this.consume ? element : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
|
|
20794
20936
|
}
|
|
20795
20937
|
(0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_5__.traverse)(element, visitor, options);
|
|
20796
20938
|
return visitor.element;
|
|
@@ -20808,7 +20950,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
20808
20950
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
20809
20951
|
/* harmony export */ });
|
|
20810
20952
|
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8400);
|
|
20811
|
-
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
20953
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2111);
|
|
20812
20954
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5810);
|
|
20813
20955
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9686);
|
|
20814
20956
|
|
|
@@ -20823,19 +20965,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
20823
20965
|
*/
|
|
20824
20966
|
class Visitor {
|
|
20825
20967
|
element;
|
|
20968
|
+
consume = false;
|
|
20969
|
+
consumeSafe = false;
|
|
20826
20970
|
constructor(options) {
|
|
20827
20971
|
Object.assign(this, options);
|
|
20828
20972
|
}
|
|
20829
20973
|
copyMetaAndAttributes(from, to) {
|
|
20830
|
-
if (!from.isMetaEmpty
|
|
20831
|
-
|
|
20832
|
-
|
|
20833
|
-
to.meta = (
|
|
20974
|
+
if (!from.isMetaEmpty && !to.isMetaEmpty) {
|
|
20975
|
+
to.meta = to.meta.merge(from.meta);
|
|
20976
|
+
} else if (!from.isMetaEmpty) {
|
|
20977
|
+
to.meta = from.meta.cloneDeep();
|
|
20834
20978
|
}
|
|
20835
|
-
if (!from.isAttributesEmpty
|
|
20836
|
-
|
|
20837
|
-
|
|
20838
|
-
to.attributes = (0,
|
|
20979
|
+
if (!from.isAttributesEmpty && !to.isAttributesEmpty) {
|
|
20980
|
+
to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(to.attributes, from.attributes);
|
|
20981
|
+
} else if (!from.isAttributesEmpty) {
|
|
20982
|
+
to.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(from.attributes);
|
|
20839
20983
|
}
|
|
20840
20984
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"].transfer(from, to);
|
|
20841
20985
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"].transfer(from, to);
|
|
@@ -20943,12 +21087,13 @@ class FixedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED_MOD
|
|
|
20943
21087
|
const keyValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key);
|
|
20944
21088
|
if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isStringElement)(key) && fields.includes(keyValue) && !this.ignoredFields.includes(keyValue)) {
|
|
20945
21089
|
const fixedFieldElement = this.toRefractedElement([...specPath, 'fixedFields', keyValue], value);
|
|
20946
|
-
const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), fixedFieldElement);
|
|
21090
|
+
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);
|
|
20947
21091
|
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
20948
|
-
newMemberElement.classes.push('fixed-field');
|
|
20949
21092
|
this.element.content.push(newMemberElement);
|
|
21093
|
+
// consume: release processed generic subtree
|
|
21094
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
|
|
20950
21095
|
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
20951
|
-
this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
21096
|
+
this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
20952
21097
|
}
|
|
20953
21098
|
});
|
|
20954
21099
|
this.copyMetaAndAttributes(objectElement, this.element);
|
|
@@ -21035,12 +21180,14 @@ class PatternedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED
|
|
|
21035
21180
|
if (!this.ignoredFields.includes(keyValue) && this.fieldPatternPredicate(keyValue)) {
|
|
21036
21181
|
const specPath = this.specPath(value);
|
|
21037
21182
|
const patternedFieldElement = this.toRefractedElement(specPath, value);
|
|
21038
|
-
const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), patternedFieldElement);
|
|
21183
|
+
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);
|
|
21039
21184
|
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
21040
21185
|
newMemberElement.classes.push('patterned-field');
|
|
21041
21186
|
this.element.content.push(newMemberElement);
|
|
21187
|
+
// consume: release processed generic subtree
|
|
21188
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
|
|
21042
21189
|
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
21043
|
-
this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
21190
|
+
this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
21044
21191
|
}
|
|
21045
21192
|
});
|
|
21046
21193
|
this.copyMetaAndAttributes(objectElement, this.element);
|
|
@@ -21582,13 +21729,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
21582
21729
|
/* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3031);
|
|
21583
21730
|
/* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6513);
|
|
21584
21731
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5162);
|
|
21585
|
-
/* harmony import */ var
|
|
21586
|
-
/* harmony import */ var
|
|
21587
|
-
/* harmony import */ var
|
|
21588
|
-
/* harmony import */ var
|
|
21589
|
-
/* harmony import */ var
|
|
21590
|
-
/* harmony import */ var _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(4686);
|
|
21591
|
-
/* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(6059);
|
|
21732
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4673);
|
|
21733
|
+
/* harmony import */ var _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5320);
|
|
21734
|
+
/* harmony import */ var _bases_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(9033);
|
|
21735
|
+
/* harmony import */ var _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(4686);
|
|
21736
|
+
/* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(6059);
|
|
21592
21737
|
|
|
21593
21738
|
|
|
21594
21739
|
|
|
@@ -21603,10 +21748,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
21603
21748
|
/**
|
|
21604
21749
|
* @public
|
|
21605
21750
|
*/
|
|
21606
|
-
class JSONSchemaVisitor extends
|
|
21751
|
+
class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_7__.JSONSchemaVisitorBase {
|
|
21607
21752
|
constructor(options) {
|
|
21608
21753
|
super(options);
|
|
21609
|
-
this.element = new
|
|
21754
|
+
this.element = new _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]();
|
|
21755
|
+
this.consumeSafe = true;
|
|
21610
21756
|
this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'JSONSchema']);
|
|
21611
21757
|
}
|
|
21612
21758
|
get defaultDialectIdentifier() {
|
|
@@ -21619,27 +21765,27 @@ class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_9__.JSONSche
|
|
|
21619
21765
|
|
|
21620
21766
|
// for further processing consider this JSONSchema Element as parent for all sub-schemas
|
|
21621
21767
|
this.parent = this.element;
|
|
21622
|
-
return
|
|
21768
|
+
return _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"].prototype.ObjectElement.call(this, path);
|
|
21623
21769
|
}
|
|
21624
21770
|
handleDialectIdentifier(objectElement) {
|
|
21625
21771
|
// handle $schema keyword in embedded resources
|
|
21626
21772
|
if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__["default"])(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
|
|
21627
21773
|
// no parent available and no $schema is defined, set default $schema
|
|
21628
21774
|
this.element.meta.set('inheritedDialectIdentifier', this.defaultDialectIdentifier);
|
|
21629
|
-
} else if ((0,
|
|
21775
|
+
} else if ((0,_predicates_mjs__WEBPACK_IMPORTED_MODULE_9__.isJSONSchemaElement)(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
|
|
21630
21776
|
// parent is available and no $schema is defined, set parent $schema
|
|
21631
|
-
const inheritedDialectIdentifier = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(
|
|
21777
|
+
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));
|
|
21632
21778
|
this.element.meta.set('inheritedDialectIdentifier', inheritedDialectIdentifier);
|
|
21633
21779
|
}
|
|
21634
21780
|
}
|
|
21635
21781
|
handleSchemaIdentifier(objectElement, identifierKeyword = 'id') {
|
|
21636
21782
|
// handle schema identifier in embedded resources
|
|
21637
|
-
// fetch parent's ancestorsSchemaIdentifiers
|
|
21638
|
-
const ancestorsSchemaIdentifiers = this.parent !== undefined ? (
|
|
21783
|
+
// fetch parent's ancestorsSchemaIdentifiers (stored as plain string[])
|
|
21784
|
+
const ancestorsSchemaIdentifiers = this.parent !== undefined ? [...(this.parent.meta.get('ancestorsSchemaIdentifiers') ?? [])] : [];
|
|
21639
21785
|
// get current schema identifier
|
|
21640
|
-
const schemaIdentifier = (0,
|
|
21786
|
+
const schemaIdentifier = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(objectElement.get(identifierKeyword));
|
|
21641
21787
|
|
|
21642
|
-
// remember schema identifier if it's a non-empty
|
|
21788
|
+
// remember schema identifier if it's a non-empty string
|
|
21643
21789
|
if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(schemaIdentifier)) {
|
|
21644
21790
|
ancestorsSchemaIdentifiers.push(schemaIdentifier);
|
|
21645
21791
|
}
|