@speclynx/apidom-ns-openapi-2 2.13.0 → 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 +19 -0
- package/dist/apidom-ns-openapi-2.browser.js +273 -117
- package/dist/apidom-ns-openapi-2.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/src/refractor/visitors/FallbackVisitor.cjs +1 -1
- package/src/refractor/visitors/FallbackVisitor.mjs +1 -1
- package/src/refractor/visitors/SpecificationVisitor.cjs +2 -2
- package/src/refractor/visitors/SpecificationVisitor.mjs +2 -2
- package/src/refractor/visitors/Visitor.cjs +10 -8
- package/src/refractor/visitors/Visitor.mjs +11 -9
- package/src/refractor/visitors/generics/FixedFieldsVisitor.cjs +6 -3
- package/src/refractor/visitors/generics/FixedFieldsVisitor.mjs +6 -3
- package/src/refractor/visitors/generics/PatternedFieldsVisitor.cjs +4 -2
- package/src/refractor/visitors/generics/PatternedFieldsVisitor.mjs +4 -2
- package/src/refractor/visitors/open-api-2/index.cjs +1 -0
- package/src/refractor/visitors/open-api-2/index.mjs +1 -0
- package/src/refractor/visitors/open-api-2/path-item/index.cjs +1 -0
- package/src/refractor/visitors/open-api-2/path-item/index.mjs +1 -0
- package/src/refractor/visitors/open-api-2/paths/index.cjs +1 -0
- package/src/refractor/visitors/open-api-2/paths/index.mjs +1 -0
- package/types/apidom-ns-openapi-2.d.ts +6 -2
|
@@ -2473,7 +2473,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2473
2473
|
const refract = (value, {
|
|
2474
2474
|
element = 'swagger',
|
|
2475
2475
|
plugins = [],
|
|
2476
|
-
specificationObj = _specification_ts__WEBPACK_IMPORTED_MODULE_5__["default"]
|
|
2476
|
+
specificationObj = _specification_ts__WEBPACK_IMPORTED_MODULE_5__["default"],
|
|
2477
|
+
consume = false
|
|
2477
2478
|
} = {}) => {
|
|
2478
2479
|
const genericElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.refract)(value);
|
|
2479
2480
|
const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_1__.resolveSpecification)(specificationObj);
|
|
@@ -2490,7 +2491,8 @@ const refract = (value, {
|
|
|
2490
2491
|
*/
|
|
2491
2492
|
const RootVisitorClass = (0,ramda__WEBPACK_IMPORTED_MODULE_4__["default"])(specPath, resolvedSpec);
|
|
2492
2493
|
const rootVisitor = new RootVisitorClass({
|
|
2493
|
-
specObj: resolvedSpec
|
|
2494
|
+
specObj: resolvedSpec,
|
|
2495
|
+
consume
|
|
2494
2496
|
});
|
|
2495
2497
|
(0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_3__.traverse)(genericElement, rootVisitor);
|
|
2496
2498
|
|
|
@@ -3112,8 +3114,9 @@ const schema = {
|
|
|
3112
3114
|
}
|
|
3113
3115
|
};
|
|
3114
3116
|
const findElementFactory = (ancestor, keyName) => {
|
|
3115
|
-
const elementType = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.getNodeType)(ancestor);
|
|
3116
|
-
const
|
|
3117
|
+
const elementType = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.getNodeType)(ancestor);
|
|
3118
|
+
const classType = ancestor.isMetaEmpty ? undefined : ancestor.classes.at(0); // @ts-ignore
|
|
3119
|
+
const keyMapping = schema[elementType] || schema[classType];
|
|
3117
3120
|
return typeof keyMapping === 'undefined' ? undefined : Object.hasOwn(keyMapping, '[key: *]') ? keyMapping['[key: *]'] : keyMapping[keyName];
|
|
3118
3121
|
};
|
|
3119
3122
|
|
|
@@ -3143,7 +3146,7 @@ const plugin = () => () => ({
|
|
|
3143
3146
|
if (typeof elementFactory !== 'function') return;
|
|
3144
3147
|
const replacement = elementFactory.call({
|
|
3145
3148
|
context
|
|
3146
|
-
}, undefined,
|
|
3149
|
+
}, undefined, element.isMetaEmpty ? undefined : element.meta.cloneDeep(), element.isAttributesEmpty ? undefined : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.attributes));
|
|
3147
3150
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__["default"].transfer(element, replacement);
|
|
3148
3151
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_6__["default"].transfer(element, replacement);
|
|
3149
3152
|
path.replaceWith(replacement);
|
|
@@ -3828,7 +3831,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3828
3831
|
*/
|
|
3829
3832
|
class FallbackVisitor extends _Visitor_ts__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
|
3830
3833
|
enter(path) {
|
|
3831
|
-
this.element = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
|
|
3834
|
+
this.element = this.consume ? path.node : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
|
|
3832
3835
|
path.stop();
|
|
3833
3836
|
}
|
|
3834
3837
|
}
|
|
@@ -3894,7 +3897,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3894
3897
|
*/
|
|
3895
3898
|
class SpecificationVisitor extends _Visitor_ts__WEBPACK_IMPORTED_MODULE_6__["default"] {
|
|
3896
3899
|
specObj;
|
|
3897
|
-
passingOptionsNames = ['specObj'];
|
|
3900
|
+
passingOptionsNames = ['specObj', 'consume'];
|
|
3898
3901
|
constructor({
|
|
3899
3902
|
specObj,
|
|
3900
3903
|
...rest
|
|
@@ -3940,7 +3943,7 @@ class SpecificationVisitor extends _Visitor_ts__WEBPACK_IMPORTED_MODULE_6__["def
|
|
|
3940
3943
|
*/
|
|
3941
3944
|
const visitor = this.retrieveVisitorInstance(specPath, options);
|
|
3942
3945
|
if (visitor instanceof _FallbackVisitor_ts__WEBPACK_IMPORTED_MODULE_7__["default"] && visitor?.constructor === _FallbackVisitor_ts__WEBPACK_IMPORTED_MODULE_7__["default"]) {
|
|
3943
|
-
return (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
|
|
3946
|
+
return this.consume ? element : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
|
|
3944
3947
|
}
|
|
3945
3948
|
(0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_5__.traverse)(element, visitor);
|
|
3946
3949
|
return visitor.element;
|
|
@@ -3958,7 +3961,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3958
3961
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
3959
3962
|
/* harmony export */ });
|
|
3960
3963
|
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8400);
|
|
3961
|
-
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
3964
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2111);
|
|
3962
3965
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5810);
|
|
3963
3966
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9686);
|
|
3964
3967
|
|
|
@@ -3973,19 +3976,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3973
3976
|
*/
|
|
3974
3977
|
class Visitor {
|
|
3975
3978
|
element;
|
|
3979
|
+
consume = false;
|
|
3980
|
+
consumeSafe = false;
|
|
3976
3981
|
constructor(options = {}) {
|
|
3977
3982
|
Object.assign(this, options);
|
|
3978
3983
|
}
|
|
3979
3984
|
copyMetaAndAttributes(from, to) {
|
|
3980
|
-
if (!from.isMetaEmpty
|
|
3981
|
-
|
|
3982
|
-
|
|
3983
|
-
to.meta = (
|
|
3985
|
+
if (!from.isMetaEmpty && !to.isMetaEmpty) {
|
|
3986
|
+
to.meta = to.meta.merge(from.meta);
|
|
3987
|
+
} else if (!from.isMetaEmpty) {
|
|
3988
|
+
to.meta = from.meta.cloneDeep();
|
|
3984
3989
|
}
|
|
3985
|
-
if (!from.isAttributesEmpty
|
|
3986
|
-
|
|
3987
|
-
|
|
3988
|
-
to.attributes = (0,
|
|
3990
|
+
if (!from.isAttributesEmpty && !to.isAttributesEmpty) {
|
|
3991
|
+
to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(to.attributes, from.attributes);
|
|
3992
|
+
} else if (!from.isAttributesEmpty) {
|
|
3993
|
+
to.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(from.attributes);
|
|
3989
3994
|
}
|
|
3990
3995
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"].transfer(from, to);
|
|
3991
3996
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"].transfer(from, to);
|
|
@@ -4111,15 +4116,18 @@ class FixedFieldsVisitor extends _SpecificationVisitor_ts__WEBPACK_IMPORTED_MODU
|
|
|
4111
4116
|
const keyValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key);
|
|
4112
4117
|
if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isStringElement)(key) && fields.includes(keyValue) && !this.ignoredFields.includes(keyValue)) {
|
|
4113
4118
|
const fixedFieldElement = this.toRefractedElement([...specPath, 'fixedFields', keyValue], value);
|
|
4114
|
-
const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), fixedFieldElement);
|
|
4119
|
+
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);
|
|
4115
4120
|
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
4116
|
-
newMemberElement.classes.push('fixed-field');
|
|
4117
4121
|
this.element.content.push(newMemberElement);
|
|
4122
|
+
// consume: release processed generic subtree
|
|
4123
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
|
|
4118
4124
|
} else if (this.canSupportSpecificationExtensions && this.specificationExtensionPredicate(memberElement)) {
|
|
4119
4125
|
const extensionElement = this.toRefractedElement(['document', 'extension'], memberElement);
|
|
4120
4126
|
this.element.content.push(extensionElement);
|
|
4127
|
+
// consume: release processed generic subtree
|
|
4128
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
|
|
4121
4129
|
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
4122
|
-
this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
4130
|
+
this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
4123
4131
|
}
|
|
4124
4132
|
});
|
|
4125
4133
|
this.copyMetaAndAttributes(objectElement, this.element);
|
|
@@ -4304,12 +4312,14 @@ class PatternedFieldsVisitor extends _SpecificationVisitor_ts__WEBPACK_IMPORTED_
|
|
|
4304
4312
|
} else if (!this.ignoredFields.includes(keyValue) && this.fieldPatternPredicate(keyValue)) {
|
|
4305
4313
|
const specPath = this.specPath(value);
|
|
4306
4314
|
const patternedFieldElement = this.toRefractedElement(specPath, value);
|
|
4307
|
-
const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), patternedFieldElement);
|
|
4315
|
+
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);
|
|
4308
4316
|
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
4309
4317
|
newMemberElement.classes.push('patterned-field');
|
|
4310
4318
|
this.element.content.push(newMemberElement);
|
|
4319
|
+
// consume: release processed generic subtree
|
|
4320
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
|
|
4311
4321
|
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
4312
|
-
this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
4322
|
+
this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
4313
4323
|
}
|
|
4314
4324
|
});
|
|
4315
4325
|
this.copyMetaAndAttributes(objectElement, this.element);
|
|
@@ -4845,6 +4855,7 @@ class SwaggerVisitor extends _bases_ts__WEBPACK_IMPORTED_MODULE_2__.BaseFixedFie
|
|
|
4845
4855
|
constructor(options) {
|
|
4846
4856
|
super(options);
|
|
4847
4857
|
this.element = new _elements_Swagger_ts__WEBPACK_IMPORTED_MODULE_1__["default"]();
|
|
4858
|
+
this.consumeSafe = true;
|
|
4848
4859
|
this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'Swagger']);
|
|
4849
4860
|
this.canSupportSpecificationExtensions = true;
|
|
4850
4861
|
}
|
|
@@ -5333,6 +5344,7 @@ class PathItemVisitor extends _bases_ts__WEBPACK_IMPORTED_MODULE_6__.BaseFixedFi
|
|
|
5333
5344
|
constructor(options) {
|
|
5334
5345
|
super(options);
|
|
5335
5346
|
this.element = new _elements_PathItem_ts__WEBPACK_IMPORTED_MODULE_4__["default"]();
|
|
5347
|
+
this.consumeSafe = true;
|
|
5336
5348
|
this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'PathItem']);
|
|
5337
5349
|
}
|
|
5338
5350
|
ObjectElement(path) {
|
|
@@ -5383,6 +5395,7 @@ class PathsVisitor extends _bases_ts__WEBPACK_IMPORTED_MODULE_5__.BasePatternedF
|
|
|
5383
5395
|
constructor(options) {
|
|
5384
5396
|
super(options);
|
|
5385
5397
|
this.element = new _elements_Paths_ts__WEBPACK_IMPORTED_MODULE_3__["default"]();
|
|
5398
|
+
this.consumeSafe = true;
|
|
5386
5399
|
this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(['document', 'objects', 'PathItem']);
|
|
5387
5400
|
this.canSupportSpecificationExtensions = true;
|
|
5388
5401
|
this.fieldPatternPredicate = ramda__WEBPACK_IMPORTED_MODULE_0__["default"];
|
|
@@ -21652,7 +21665,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
21652
21665
|
* @public
|
|
21653
21666
|
*/
|
|
21654
21667
|
const emptyElement = element => {
|
|
21655
|
-
const meta = !element.isMetaEmpty ?
|
|
21668
|
+
const meta = !element.isMetaEmpty ? element.meta.cloneDeep() : undefined;
|
|
21656
21669
|
const attributes = !element.isAttributesEmpty ? (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.attributes) : undefined;
|
|
21657
21670
|
|
|
21658
21671
|
// @ts-ignore
|
|
@@ -21668,7 +21681,7 @@ const getMergeFunction = (keyElement, options) => {
|
|
|
21668
21681
|
};
|
|
21669
21682
|
const getMetaMergeFunction = options => {
|
|
21670
21683
|
if (typeof options.customMetaMerge !== 'function') {
|
|
21671
|
-
return targetMeta =>
|
|
21684
|
+
return targetMeta => targetMeta.cloneDeep();
|
|
21672
21685
|
}
|
|
21673
21686
|
return options.customMetaMerge;
|
|
21674
21687
|
};
|
|
@@ -21740,8 +21753,20 @@ const deepmerge = (targetElement, sourceElement, options) => {
|
|
|
21740
21753
|
const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
|
|
21741
21754
|
|
|
21742
21755
|
// merging meta & attributes
|
|
21743
|
-
|
|
21744
|
-
|
|
21756
|
+
if (!targetElement.isMetaEmpty && !sourceElement.isMetaEmpty) {
|
|
21757
|
+
mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
|
|
21758
|
+
} else if (!targetElement.isMetaEmpty) {
|
|
21759
|
+
mergedElement.meta = targetElement.meta.cloneDeep();
|
|
21760
|
+
} else if (!sourceElement.isMetaEmpty) {
|
|
21761
|
+
mergedElement.meta = sourceElement.meta.cloneDeep();
|
|
21762
|
+
}
|
|
21763
|
+
if (!targetElement.isAttributesEmpty && !sourceElement.isAttributesEmpty) {
|
|
21764
|
+
mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
|
|
21765
|
+
} else if (!targetElement.isAttributesEmpty) {
|
|
21766
|
+
mergedElement.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(targetElement.attributes);
|
|
21767
|
+
} else if (!sourceElement.isAttributesEmpty) {
|
|
21768
|
+
mergedElement.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(sourceElement.attributes);
|
|
21769
|
+
}
|
|
21745
21770
|
return mergedElement;
|
|
21746
21771
|
};
|
|
21747
21772
|
deepmerge.all = (list, options) => {
|
|
@@ -22074,6 +22099,104 @@ class KeyValuePair {
|
|
|
22074
22099
|
|
|
22075
22100
|
/***/ },
|
|
22076
22101
|
|
|
22102
|
+
/***/ 1844
|
|
22103
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
22104
|
+
|
|
22105
|
+
__webpack_require__.r(__webpack_exports__);
|
|
22106
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
22107
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
22108
|
+
/* harmony export */ });
|
|
22109
|
+
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8138);
|
|
22110
|
+
|
|
22111
|
+
/**
|
|
22112
|
+
* Lightweight meta container for Element metadata.
|
|
22113
|
+
*
|
|
22114
|
+
* Data is stored as own properties on the instance; methods live on the prototype.
|
|
22115
|
+
* `Object.keys()`, `Object.entries()`, etc. only see data properties.
|
|
22116
|
+
*
|
|
22117
|
+
* @public
|
|
22118
|
+
*/
|
|
22119
|
+
class Metadata {
|
|
22120
|
+
// Set via prototype assignment in registration.ts to avoid circular dependency
|
|
22121
|
+
|
|
22122
|
+
get(name) {
|
|
22123
|
+
return this[name];
|
|
22124
|
+
}
|
|
22125
|
+
set(name, value) {
|
|
22126
|
+
this[name] = value;
|
|
22127
|
+
}
|
|
22128
|
+
hasKey(name) {
|
|
22129
|
+
return Object.hasOwn(this, name);
|
|
22130
|
+
}
|
|
22131
|
+
keys() {
|
|
22132
|
+
return Object.keys(this);
|
|
22133
|
+
}
|
|
22134
|
+
remove(name) {
|
|
22135
|
+
delete this[name];
|
|
22136
|
+
}
|
|
22137
|
+
get isEmpty() {
|
|
22138
|
+
return Object.keys(this).length === 0;
|
|
22139
|
+
}
|
|
22140
|
+
get isFrozen() {
|
|
22141
|
+
return Object.isFrozen(this);
|
|
22142
|
+
}
|
|
22143
|
+
freeze() {
|
|
22144
|
+
for (const value of Object.values(this)) {
|
|
22145
|
+
if (value instanceof this.Element) {
|
|
22146
|
+
value.freeze();
|
|
22147
|
+
} else if (Array.isArray(value) || value !== null && typeof value === 'object') {
|
|
22148
|
+
Object.freeze(value);
|
|
22149
|
+
}
|
|
22150
|
+
}
|
|
22151
|
+
Object.freeze(this);
|
|
22152
|
+
}
|
|
22153
|
+
|
|
22154
|
+
/**
|
|
22155
|
+
* Creates a shallow clone. Same references, new container.
|
|
22156
|
+
*/
|
|
22157
|
+
cloneShallow() {
|
|
22158
|
+
const clone = new Metadata();
|
|
22159
|
+
Object.assign(clone, this);
|
|
22160
|
+
return clone;
|
|
22161
|
+
}
|
|
22162
|
+
|
|
22163
|
+
/**
|
|
22164
|
+
* Merges another Metadata into a new instance.
|
|
22165
|
+
* Arrays are concatenated, all other values are overwritten by source.
|
|
22166
|
+
*/
|
|
22167
|
+
merge(source) {
|
|
22168
|
+
const result = this.cloneShallow();
|
|
22169
|
+
for (const [key, value] of Object.entries(source)) {
|
|
22170
|
+
const existing = result.get(key);
|
|
22171
|
+
if (Array.isArray(existing) && Array.isArray(value)) {
|
|
22172
|
+
result.set(key, [...existing, ...value]);
|
|
22173
|
+
} else {
|
|
22174
|
+
result.set(key, value);
|
|
22175
|
+
}
|
|
22176
|
+
}
|
|
22177
|
+
return result;
|
|
22178
|
+
}
|
|
22179
|
+
|
|
22180
|
+
/**
|
|
22181
|
+
* Creates a deep clone. Elements are deep cloned,
|
|
22182
|
+
* all other values are deep cloned via ramda clone.
|
|
22183
|
+
*/
|
|
22184
|
+
cloneDeep() {
|
|
22185
|
+
const copy = new Metadata();
|
|
22186
|
+
for (const [key, value] of Object.entries(this)) {
|
|
22187
|
+
if (value instanceof this.Element) {
|
|
22188
|
+
copy.set(key, this.cloneDeepElement(value));
|
|
22189
|
+
} else {
|
|
22190
|
+
copy.set(key, (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(value));
|
|
22191
|
+
}
|
|
22192
|
+
}
|
|
22193
|
+
return copy;
|
|
22194
|
+
}
|
|
22195
|
+
}
|
|
22196
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Metadata);
|
|
22197
|
+
|
|
22198
|
+
/***/ },
|
|
22199
|
+
|
|
22077
22200
|
/***/ 5156
|
|
22078
22201
|
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
22079
22202
|
|
|
@@ -22714,7 +22837,7 @@ const cloneShallowElement = element => {
|
|
|
22714
22837
|
const copy = new Ctor();
|
|
22715
22838
|
copy.element = element.element;
|
|
22716
22839
|
if (!element.isMetaEmpty) {
|
|
22717
|
-
copy.meta =
|
|
22840
|
+
copy.meta = element.meta.cloneDeep();
|
|
22718
22841
|
}
|
|
22719
22842
|
if (!element.isAttributesEmpty) {
|
|
22720
22843
|
copy.attributes = cloneDeep(element.attributes);
|
|
@@ -22742,8 +22865,8 @@ const cloneShallowElement = element => {
|
|
|
22742
22865
|
|
|
22743
22866
|
/**
|
|
22744
22867
|
* Creates a shallow clone of an ApiDOM Element, KeyValuePair, or ObjectSlice.
|
|
22745
|
-
* The element itself is cloned, but content references are shared
|
|
22746
|
-
*
|
|
22868
|
+
* The element itself is cloned, but content references are shared.
|
|
22869
|
+
* Meta and attributes are deep cloned to preserve semantic information.
|
|
22747
22870
|
* @public
|
|
22748
22871
|
*/
|
|
22749
22872
|
const cloneShallow = value => {
|
|
@@ -23805,7 +23928,7 @@ class CollectionElement extends _Element_mjs__WEBPACK_IMPORTED_MODULE_0__["defau
|
|
|
23805
23928
|
* Search the tree recursively and find the element with the matching ID.
|
|
23806
23929
|
*/
|
|
23807
23930
|
getById(id) {
|
|
23808
|
-
return this.find(item => item.id
|
|
23931
|
+
return this.find(item => item.id === id).first;
|
|
23809
23932
|
}
|
|
23810
23933
|
|
|
23811
23934
|
/**
|
|
@@ -23834,18 +23957,24 @@ class CollectionElement extends _Element_mjs__WEBPACK_IMPORTED_MODULE_0__["defau
|
|
|
23834
23957
|
|
|
23835
23958
|
__webpack_require__.r(__webpack_exports__);
|
|
23836
23959
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
23960
|
+
/* harmony export */ Metadata: () => (/* reexport safe */ _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]),
|
|
23837
23961
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
23838
23962
|
/* harmony export */ });
|
|
23839
23963
|
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3654);
|
|
23840
|
-
/* harmony import */ var
|
|
23841
|
-
/* harmony import */ var
|
|
23964
|
+
/* harmony import */ var _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1844);
|
|
23965
|
+
/* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6663);
|
|
23966
|
+
/* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8504);
|
|
23967
|
+
|
|
23842
23968
|
|
|
23843
23969
|
|
|
23970
|
+
// shared singleton for frozen elements with no meta — avoids allocation on every access
|
|
23971
|
+
const FROZEN_EMPTY_METADATA = Object.freeze(new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]());
|
|
23844
23972
|
|
|
23845
23973
|
/**
|
|
23846
23974
|
* Valid content types for an Element.
|
|
23847
23975
|
* @public
|
|
23848
23976
|
*/
|
|
23977
|
+
|
|
23849
23978
|
/**
|
|
23850
23979
|
* Base Element class that all ApiDOM elements extend.
|
|
23851
23980
|
*
|
|
@@ -23943,7 +24072,7 @@ class Element {
|
|
|
23943
24072
|
_attributes;
|
|
23944
24073
|
|
|
23945
24074
|
// ============================================================
|
|
23946
|
-
// Prototype-assigned properties (set in
|
|
24075
|
+
// Prototype-assigned properties (set in registration.ts)
|
|
23947
24076
|
// Using 'declare' allows TypeScript to know about these
|
|
23948
24077
|
// without generating runtime code.
|
|
23949
24078
|
// ============================================================
|
|
@@ -24004,13 +24133,13 @@ class Element {
|
|
|
24004
24133
|
}
|
|
24005
24134
|
|
|
24006
24135
|
// KeyValuePair
|
|
24007
|
-
if (value instanceof
|
|
24136
|
+
if (value instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
|
|
24008
24137
|
this._content = value;
|
|
24009
24138
|
return;
|
|
24010
24139
|
}
|
|
24011
24140
|
|
|
24012
24141
|
// ObjectSlice - extract elements array
|
|
24013
|
-
if (value instanceof
|
|
24142
|
+
if (value instanceof _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]) {
|
|
24014
24143
|
this._content = value.elements;
|
|
24015
24144
|
return;
|
|
24016
24145
|
}
|
|
@@ -24031,24 +24160,22 @@ class Element {
|
|
|
24031
24160
|
|
|
24032
24161
|
/**
|
|
24033
24162
|
* Metadata about this element (id, classes, title, description, links).
|
|
24034
|
-
* Lazily creates
|
|
24163
|
+
* Lazily creates a Metadata instance if not set.
|
|
24035
24164
|
*/
|
|
24036
24165
|
get meta() {
|
|
24037
24166
|
if (!this._meta) {
|
|
24038
|
-
if (this.isFrozen)
|
|
24039
|
-
|
|
24040
|
-
meta.freeze();
|
|
24041
|
-
return meta;
|
|
24042
|
-
}
|
|
24043
|
-
this._meta = new this.ObjectElement();
|
|
24167
|
+
if (this.isFrozen) return FROZEN_EMPTY_METADATA;
|
|
24168
|
+
this._meta = new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]();
|
|
24044
24169
|
}
|
|
24045
24170
|
return this._meta;
|
|
24046
24171
|
}
|
|
24047
24172
|
set meta(value) {
|
|
24048
|
-
if (value instanceof
|
|
24173
|
+
if (value instanceof _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]) {
|
|
24049
24174
|
this._meta = value;
|
|
24050
|
-
} else {
|
|
24051
|
-
|
|
24175
|
+
} else if (value && typeof value === 'object') {
|
|
24176
|
+
const meta = new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]();
|
|
24177
|
+
Object.assign(meta, value);
|
|
24178
|
+
this._meta = meta;
|
|
24052
24179
|
}
|
|
24053
24180
|
}
|
|
24054
24181
|
|
|
@@ -24081,10 +24208,8 @@ class Element {
|
|
|
24081
24208
|
|
|
24082
24209
|
/** Unique identifier for this element. */
|
|
24083
24210
|
get id() {
|
|
24084
|
-
if (this.isFrozen) {
|
|
24085
|
-
return this.getMetaProperty('id', '');
|
|
24086
|
-
}
|
|
24087
24211
|
if (!this.hasMetaProperty('id')) {
|
|
24212
|
+
if (this.isFrozen) return '';
|
|
24088
24213
|
this.setMetaProperty('id', '');
|
|
24089
24214
|
}
|
|
24090
24215
|
return this.meta.get('id');
|
|
@@ -24095,10 +24220,8 @@ class Element {
|
|
|
24095
24220
|
|
|
24096
24221
|
/** CSS-like class names. */
|
|
24097
24222
|
get classes() {
|
|
24098
|
-
if (this.isFrozen) {
|
|
24099
|
-
return this.getMetaProperty('classes', []);
|
|
24100
|
-
}
|
|
24101
24223
|
if (!this.hasMetaProperty('classes')) {
|
|
24224
|
+
if (this.isFrozen) return [];
|
|
24102
24225
|
this.setMetaProperty('classes', []);
|
|
24103
24226
|
}
|
|
24104
24227
|
return this.meta.get('classes');
|
|
@@ -24109,11 +24232,13 @@ class Element {
|
|
|
24109
24232
|
|
|
24110
24233
|
/** Hyperlinks associated with this element. */
|
|
24111
24234
|
get links() {
|
|
24112
|
-
if (this.isFrozen) {
|
|
24113
|
-
return this.getMetaProperty('links', []);
|
|
24114
|
-
}
|
|
24115
24235
|
if (!this.hasMetaProperty('links')) {
|
|
24116
|
-
this.
|
|
24236
|
+
if (this.isFrozen) {
|
|
24237
|
+
const empty = new this.ArrayElement();
|
|
24238
|
+
empty.freeze();
|
|
24239
|
+
return empty;
|
|
24240
|
+
}
|
|
24241
|
+
this.setMetaProperty('links', new this.ArrayElement());
|
|
24117
24242
|
}
|
|
24118
24243
|
return this.meta.get('links');
|
|
24119
24244
|
}
|
|
@@ -24133,7 +24258,7 @@ class Element {
|
|
|
24133
24258
|
if (Array.isArray(content)) {
|
|
24134
24259
|
return content;
|
|
24135
24260
|
}
|
|
24136
|
-
if (content instanceof
|
|
24261
|
+
if (content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
|
|
24137
24262
|
const children = [];
|
|
24138
24263
|
if (content.key) children.push(content.key);
|
|
24139
24264
|
if (content.value) children.push(content.value);
|
|
@@ -24163,7 +24288,6 @@ class Element {
|
|
|
24163
24288
|
|
|
24164
24289
|
// Freeze meta and attributes
|
|
24165
24290
|
if (this._meta) {
|
|
24166
|
-
this._meta.parent = this;
|
|
24167
24291
|
this._meta.freeze();
|
|
24168
24292
|
}
|
|
24169
24293
|
if (this._attributes) {
|
|
@@ -24198,7 +24322,7 @@ class Element {
|
|
|
24198
24322
|
if (_content instanceof Element) {
|
|
24199
24323
|
return _content.toValue();
|
|
24200
24324
|
}
|
|
24201
|
-
if (_content instanceof
|
|
24325
|
+
if (_content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
|
|
24202
24326
|
return _content.toValue();
|
|
24203
24327
|
}
|
|
24204
24328
|
if (Array.isArray(_content)) {
|
|
@@ -24254,7 +24378,7 @@ class Element {
|
|
|
24254
24378
|
* @throws Error if this element has no ID
|
|
24255
24379
|
*/
|
|
24256
24380
|
toRef(path) {
|
|
24257
|
-
const idValue = this.id
|
|
24381
|
+
const idValue = this.id;
|
|
24258
24382
|
if (idValue === '') {
|
|
24259
24383
|
throw new Error('Cannot create reference to an element without an ID');
|
|
24260
24384
|
}
|
|
@@ -24266,26 +24390,16 @@ class Element {
|
|
|
24266
24390
|
}
|
|
24267
24391
|
|
|
24268
24392
|
/**
|
|
24269
|
-
* Gets a meta property.
|
|
24393
|
+
* Gets a meta property value.
|
|
24270
24394
|
*
|
|
24271
24395
|
* When the property doesn't exist:
|
|
24272
|
-
* - With defaultValue: returns
|
|
24396
|
+
* - With defaultValue: returns the provided default value
|
|
24273
24397
|
* - Without defaultValue: returns undefined
|
|
24274
|
-
*
|
|
24275
|
-
* Note: Each call with a default creates a new instance. Use setMetaProperty
|
|
24276
|
-
* first if you need reference equality across multiple accesses.
|
|
24277
24398
|
*/
|
|
24278
24399
|
|
|
24279
24400
|
getMetaProperty(name, defaultValue) {
|
|
24280
24401
|
if (!this.hasMetaProperty(name)) {
|
|
24281
|
-
|
|
24282
|
-
return undefined;
|
|
24283
|
-
}
|
|
24284
|
-
const element = this.refract(defaultValue);
|
|
24285
|
-
if (element && this.isFrozen) {
|
|
24286
|
-
element.freeze();
|
|
24287
|
-
}
|
|
24288
|
-
return element;
|
|
24402
|
+
return defaultValue;
|
|
24289
24403
|
}
|
|
24290
24404
|
return this.meta.get(name);
|
|
24291
24405
|
}
|
|
@@ -24298,20 +24412,17 @@ class Element {
|
|
|
24298
24412
|
}
|
|
24299
24413
|
|
|
24300
24414
|
/**
|
|
24301
|
-
*
|
|
24415
|
+
* Checks whether a meta property exists.
|
|
24302
24416
|
*/
|
|
24303
24417
|
hasMetaProperty(name) {
|
|
24304
|
-
|
|
24305
|
-
return this.meta.hasKey(name);
|
|
24306
|
-
}
|
|
24307
|
-
return false;
|
|
24418
|
+
return this._meta !== undefined && this._meta.hasKey(name);
|
|
24308
24419
|
}
|
|
24309
24420
|
|
|
24310
24421
|
/**
|
|
24311
24422
|
* Checks if meta is empty.
|
|
24312
24423
|
*/
|
|
24313
24424
|
get isMetaEmpty() {
|
|
24314
|
-
return this._meta === undefined || this.
|
|
24425
|
+
return this._meta === undefined || this._meta.isEmpty;
|
|
24315
24426
|
}
|
|
24316
24427
|
|
|
24317
24428
|
/**
|
|
@@ -24337,7 +24448,7 @@ class Element {
|
|
|
24337
24448
|
}
|
|
24338
24449
|
|
|
24339
24450
|
/**
|
|
24340
|
-
*
|
|
24451
|
+
* Checks whether an attributes property exists.
|
|
24341
24452
|
*/
|
|
24342
24453
|
hasAttributesProperty(name) {
|
|
24343
24454
|
if (!this.isAttributesEmpty) {
|
|
@@ -24356,6 +24467,7 @@ class Element {
|
|
|
24356
24467
|
|
|
24357
24468
|
// Re-export types for convenience
|
|
24358
24469
|
|
|
24470
|
+
|
|
24359
24471
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Element);
|
|
24360
24472
|
|
|
24361
24473
|
/***/ },
|
|
@@ -24788,6 +24900,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
24788
24900
|
/* harmony import */ var _elements_Style_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(9686);
|
|
24789
24901
|
/* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(8504);
|
|
24790
24902
|
/* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(6663);
|
|
24903
|
+
/* harmony import */ var _Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(1844);
|
|
24904
|
+
/* harmony import */ var _clone_index_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(2111);
|
|
24905
|
+
|
|
24906
|
+
|
|
24791
24907
|
|
|
24792
24908
|
|
|
24793
24909
|
|
|
@@ -24847,14 +24963,16 @@ function refract(value) {
|
|
|
24847
24963
|
}
|
|
24848
24964
|
|
|
24849
24965
|
// Set up prototype assignments for circular dependency resolution.
|
|
24850
|
-
// These allow Element instances to
|
|
24851
|
-
//
|
|
24966
|
+
// These allow Element and Metadata instances to reference classes they can't import
|
|
24967
|
+
// directly (which would cause circular imports).
|
|
24852
24968
|
// Using 'declare' in the class definitions enables type-safe access to these properties.
|
|
24853
24969
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.ObjectElement = _primitives_ObjectElement_mjs__WEBPACK_IMPORTED_MODULE_8__["default"];
|
|
24854
24970
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.ArrayElement = _primitives_ArrayElement_mjs__WEBPACK_IMPORTED_MODULE_6__["default"];
|
|
24855
24971
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.RefElement = _elements_RefElement_mjs__WEBPACK_IMPORTED_MODULE_10__["default"];
|
|
24856
24972
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.MemberElement = _primitives_MemberElement_mjs__WEBPACK_IMPORTED_MODULE_7__["default"];
|
|
24857
24973
|
_primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.refract = refract;
|
|
24974
|
+
_Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__["default"].prototype.Element = _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"];
|
|
24975
|
+
_Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__["default"].prototype.cloneDeepElement = element => (0,_clone_index_mjs__WEBPACK_IMPORTED_MODULE_19__.cloneDeep)(element);
|
|
24858
24976
|
|
|
24859
24977
|
/**
|
|
24860
24978
|
* Contains all of the element classes, and related structures and methods
|
|
@@ -24918,7 +25036,13 @@ class JSONSerialiser {
|
|
|
24918
25036
|
element: element.element
|
|
24919
25037
|
};
|
|
24920
25038
|
if (!element.isMetaEmpty) {
|
|
24921
|
-
|
|
25039
|
+
const serialisedMeta = this.serialiseMeta(element);
|
|
25040
|
+
if (serialisedMeta) {
|
|
25041
|
+
payload.meta = serialisedMeta.meta;
|
|
25042
|
+
if (serialisedMeta.rawKeys.length > 0) {
|
|
25043
|
+
payload.__meta_raw__ = serialisedMeta.rawKeys;
|
|
25044
|
+
}
|
|
25045
|
+
}
|
|
24922
25046
|
}
|
|
24923
25047
|
if (!element.isAttributesEmpty) {
|
|
24924
25048
|
payload.attributes = this.serialiseObject(element.attributes);
|
|
@@ -24965,7 +25089,7 @@ class JSONSerialiser {
|
|
|
24965
25089
|
element.element = value.element;
|
|
24966
25090
|
}
|
|
24967
25091
|
|
|
24968
|
-
// Extract
|
|
25092
|
+
// Extract special meta keys without mutating input, filter remaining meta
|
|
24969
25093
|
let mappingsDoc;
|
|
24970
25094
|
let stylesDoc;
|
|
24971
25095
|
let metaToDeserialize = value.meta;
|
|
@@ -24979,8 +25103,15 @@ class JSONSerialiser {
|
|
|
24979
25103
|
stylesDoc = __styles__;
|
|
24980
25104
|
metaToDeserialize = Object.keys(rest).length > 0 ? rest : undefined;
|
|
24981
25105
|
}
|
|
25106
|
+
|
|
25107
|
+
// determine which meta keys were raw primitives before serialization
|
|
25108
|
+
const rawKeys = value.__meta_raw__ ? new Set(value.__meta_raw__) : undefined;
|
|
24982
25109
|
if (metaToDeserialize) {
|
|
24983
|
-
|
|
25110
|
+
for (const [key, doc] of Object.entries(metaToDeserialize)) {
|
|
25111
|
+
const deserialized = this.deserialise(doc);
|
|
25112
|
+
// unwrap keys that were raw primitives before serialization
|
|
25113
|
+
element.setMetaProperty(key, rawKeys?.has(key) ? deserialized.toValue() : deserialized);
|
|
25114
|
+
}
|
|
24984
25115
|
}
|
|
24985
25116
|
|
|
24986
25117
|
// Restore source position from __mappings__
|
|
@@ -25043,6 +25174,27 @@ class JSONSerialiser {
|
|
|
25043
25174
|
}
|
|
25044
25175
|
return content;
|
|
25045
25176
|
}
|
|
25177
|
+
serialiseMeta(element) {
|
|
25178
|
+
const meta = {};
|
|
25179
|
+
const rawKeys = [];
|
|
25180
|
+
let hasEntries = false;
|
|
25181
|
+
for (const [key, value] of Object.entries(element.meta)) {
|
|
25182
|
+
if (value instanceof this.namespace.elements.Element) {
|
|
25183
|
+
meta[key] = this.serialise(value);
|
|
25184
|
+
hasEntries = true;
|
|
25185
|
+
} else if (value !== undefined) {
|
|
25186
|
+
// refract primitives to maintain JSON Refract spec compatibility
|
|
25187
|
+
const refracted = element.refract(value);
|
|
25188
|
+
meta[key] = this.serialise(refracted);
|
|
25189
|
+
rawKeys.push(key);
|
|
25190
|
+
hasEntries = true;
|
|
25191
|
+
}
|
|
25192
|
+
}
|
|
25193
|
+
return hasEntries ? {
|
|
25194
|
+
meta,
|
|
25195
|
+
rawKeys
|
|
25196
|
+
} : undefined;
|
|
25197
|
+
}
|
|
25046
25198
|
serialiseObject(obj) {
|
|
25047
25199
|
const result = {};
|
|
25048
25200
|
obj.forEach((value, key) => {
|
|
@@ -25997,7 +26149,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
25997
26149
|
*/
|
|
25998
26150
|
class FallbackVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
|
25999
26151
|
enter(path) {
|
|
26000
|
-
this.element = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
|
|
26152
|
+
this.element = this.consume ? path.node : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
|
|
26001
26153
|
path.stop();
|
|
26002
26154
|
}
|
|
26003
26155
|
}
|
|
@@ -26036,7 +26188,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26036
26188
|
*/
|
|
26037
26189
|
class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
|
|
26038
26190
|
specObj;
|
|
26039
|
-
passingOptionsNames = ['specObj', 'parent'];
|
|
26191
|
+
passingOptionsNames = ['specObj', 'parent', 'consume'];
|
|
26040
26192
|
constructor({
|
|
26041
26193
|
specObj,
|
|
26042
26194
|
...rest
|
|
@@ -26082,7 +26234,7 @@ class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["de
|
|
|
26082
26234
|
*/
|
|
26083
26235
|
const visitor = this.retrieveVisitorInstance(specPath, options);
|
|
26084
26236
|
if (visitor instanceof _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"] && visitor?.constructor === _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]) {
|
|
26085
|
-
return (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
|
|
26237
|
+
return this.consume ? element : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
|
|
26086
26238
|
}
|
|
26087
26239
|
(0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_5__.traverse)(element, visitor, options);
|
|
26088
26240
|
return visitor.element;
|
|
@@ -26100,7 +26252,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26100
26252
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
26101
26253
|
/* harmony export */ });
|
|
26102
26254
|
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8400);
|
|
26103
|
-
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
26255
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2111);
|
|
26104
26256
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5810);
|
|
26105
26257
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9686);
|
|
26106
26258
|
|
|
@@ -26115,19 +26267,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26115
26267
|
*/
|
|
26116
26268
|
class Visitor {
|
|
26117
26269
|
element;
|
|
26270
|
+
consume = false;
|
|
26271
|
+
consumeSafe = false;
|
|
26118
26272
|
constructor(options) {
|
|
26119
26273
|
Object.assign(this, options);
|
|
26120
26274
|
}
|
|
26121
26275
|
copyMetaAndAttributes(from, to) {
|
|
26122
|
-
if (!from.isMetaEmpty
|
|
26123
|
-
|
|
26124
|
-
|
|
26125
|
-
to.meta = (
|
|
26276
|
+
if (!from.isMetaEmpty && !to.isMetaEmpty) {
|
|
26277
|
+
to.meta = to.meta.merge(from.meta);
|
|
26278
|
+
} else if (!from.isMetaEmpty) {
|
|
26279
|
+
to.meta = from.meta.cloneDeep();
|
|
26126
26280
|
}
|
|
26127
|
-
if (!from.isAttributesEmpty
|
|
26128
|
-
|
|
26129
|
-
|
|
26130
|
-
to.attributes = (0,
|
|
26281
|
+
if (!from.isAttributesEmpty && !to.isAttributesEmpty) {
|
|
26282
|
+
to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(to.attributes, from.attributes);
|
|
26283
|
+
} else if (!from.isAttributesEmpty) {
|
|
26284
|
+
to.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(from.attributes);
|
|
26131
26285
|
}
|
|
26132
26286
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"].transfer(from, to);
|
|
26133
26287
|
_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"].transfer(from, to);
|
|
@@ -26235,12 +26389,13 @@ class FixedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED_MOD
|
|
|
26235
26389
|
const keyValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key);
|
|
26236
26390
|
if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isStringElement)(key) && fields.includes(keyValue) && !this.ignoredFields.includes(keyValue)) {
|
|
26237
26391
|
const fixedFieldElement = this.toRefractedElement([...specPath, 'fixedFields', keyValue], value);
|
|
26238
|
-
const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), fixedFieldElement);
|
|
26392
|
+
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);
|
|
26239
26393
|
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
26240
|
-
newMemberElement.classes.push('fixed-field');
|
|
26241
26394
|
this.element.content.push(newMemberElement);
|
|
26395
|
+
// consume: release processed generic subtree
|
|
26396
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
|
|
26242
26397
|
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
26243
|
-
this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
26398
|
+
this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
26244
26399
|
}
|
|
26245
26400
|
});
|
|
26246
26401
|
this.copyMetaAndAttributes(objectElement, this.element);
|
|
@@ -26327,12 +26482,14 @@ class PatternedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED
|
|
|
26327
26482
|
if (!this.ignoredFields.includes(keyValue) && this.fieldPatternPredicate(keyValue)) {
|
|
26328
26483
|
const specPath = this.specPath(value);
|
|
26329
26484
|
const patternedFieldElement = this.toRefractedElement(specPath, value);
|
|
26330
|
-
const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), patternedFieldElement);
|
|
26485
|
+
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);
|
|
26331
26486
|
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
26332
26487
|
newMemberElement.classes.push('patterned-field');
|
|
26333
26488
|
this.element.content.push(newMemberElement);
|
|
26489
|
+
// consume: release processed generic subtree
|
|
26490
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
|
|
26334
26491
|
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
26335
|
-
this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
26492
|
+
this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
|
|
26336
26493
|
}
|
|
26337
26494
|
});
|
|
26338
26495
|
this.copyMetaAndAttributes(objectElement, this.element);
|
|
@@ -26874,13 +27031,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26874
27031
|
/* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3031);
|
|
26875
27032
|
/* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6513);
|
|
26876
27033
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5162);
|
|
26877
|
-
/* harmony import */ var
|
|
26878
|
-
/* harmony import */ var
|
|
26879
|
-
/* harmony import */ var
|
|
26880
|
-
/* harmony import */ var
|
|
26881
|
-
/* harmony import */ var
|
|
26882
|
-
/* harmony import */ var _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(4686);
|
|
26883
|
-
/* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(6059);
|
|
27034
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4673);
|
|
27035
|
+
/* harmony import */ var _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5320);
|
|
27036
|
+
/* harmony import */ var _bases_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(9033);
|
|
27037
|
+
/* harmony import */ var _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(4686);
|
|
27038
|
+
/* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(6059);
|
|
26884
27039
|
|
|
26885
27040
|
|
|
26886
27041
|
|
|
@@ -26895,10 +27050,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26895
27050
|
/**
|
|
26896
27051
|
* @public
|
|
26897
27052
|
*/
|
|
26898
|
-
class JSONSchemaVisitor extends
|
|
27053
|
+
class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_7__.JSONSchemaVisitorBase {
|
|
26899
27054
|
constructor(options) {
|
|
26900
27055
|
super(options);
|
|
26901
|
-
this.element = new
|
|
27056
|
+
this.element = new _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]();
|
|
27057
|
+
this.consumeSafe = true;
|
|
26902
27058
|
this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'JSONSchema']);
|
|
26903
27059
|
}
|
|
26904
27060
|
get defaultDialectIdentifier() {
|
|
@@ -26911,27 +27067,27 @@ class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_9__.JSONSche
|
|
|
26911
27067
|
|
|
26912
27068
|
// for further processing consider this JSONSchema Element as parent for all sub-schemas
|
|
26913
27069
|
this.parent = this.element;
|
|
26914
|
-
return
|
|
27070
|
+
return _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"].prototype.ObjectElement.call(this, path);
|
|
26915
27071
|
}
|
|
26916
27072
|
handleDialectIdentifier(objectElement) {
|
|
26917
27073
|
// handle $schema keyword in embedded resources
|
|
26918
27074
|
if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__["default"])(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
|
|
26919
27075
|
// no parent available and no $schema is defined, set default $schema
|
|
26920
27076
|
this.element.meta.set('inheritedDialectIdentifier', this.defaultDialectIdentifier);
|
|
26921
|
-
} else if ((0,
|
|
27077
|
+
} else if ((0,_predicates_mjs__WEBPACK_IMPORTED_MODULE_9__.isJSONSchemaElement)(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
|
|
26922
27078
|
// parent is available and no $schema is defined, set parent $schema
|
|
26923
|
-
const inheritedDialectIdentifier = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(
|
|
27079
|
+
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));
|
|
26924
27080
|
this.element.meta.set('inheritedDialectIdentifier', inheritedDialectIdentifier);
|
|
26925
27081
|
}
|
|
26926
27082
|
}
|
|
26927
27083
|
handleSchemaIdentifier(objectElement, identifierKeyword = 'id') {
|
|
26928
27084
|
// handle schema identifier in embedded resources
|
|
26929
|
-
// fetch parent's ancestorsSchemaIdentifiers
|
|
26930
|
-
const ancestorsSchemaIdentifiers = this.parent !== undefined ? (
|
|
27085
|
+
// fetch parent's ancestorsSchemaIdentifiers (stored as plain string[])
|
|
27086
|
+
const ancestorsSchemaIdentifiers = this.parent !== undefined ? [...(this.parent.meta.get('ancestorsSchemaIdentifiers') ?? [])] : [];
|
|
26931
27087
|
// get current schema identifier
|
|
26932
|
-
const schemaIdentifier = (0,
|
|
27088
|
+
const schemaIdentifier = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(objectElement.get(identifierKeyword));
|
|
26933
27089
|
|
|
26934
|
-
// remember schema identifier if it's a non-empty
|
|
27090
|
+
// remember schema identifier if it's a non-empty string
|
|
26935
27091
|
if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(schemaIdentifier)) {
|
|
26936
27092
|
ancestorsSchemaIdentifiers.push(schemaIdentifier);
|
|
26937
27093
|
}
|