@speclynx/apidom-core 3.2.1 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/apidom-core.browser.js +24 -20
- package/package.json +5 -5
- package/src/fields/fixed-fields.cjs +0 -47
- package/src/fields/fixed-fields.mjs +0 -43
- package/src/fields/index.cjs +0 -8
- package/src/fields/index.mjs +0 -1
- package/src/identity/errors/ElementIdentityError.cjs +0 -22
- package/src/identity/errors/ElementIdentityError.mjs +0 -19
- package/src/identity/index.cjs +0 -64
- package/src/identity/index.mjs +0 -58
- package/src/index.cjs +0 -48
- package/src/index.mjs +0 -41
- package/src/media-types.cjs +0 -21
- package/src/media-types.mjs +0 -18
- package/src/merge/deepmerge.cjs +0 -165
- package/src/merge/deepmerge.mjs +0 -149
- package/src/merge/merge-left.cjs +0 -16
- package/src/merge/merge-left.mjs +0 -11
- package/src/merge/merge-right.cjs +0 -35
- package/src/merge/merge-right.mjs +0 -29
- package/src/namespace.cjs +0 -10
- package/src/namespace.mjs +0 -7
- package/src/refractor/plugins/dispatcher/index.cjs +0 -64
- package/src/refractor/plugins/dispatcher/index.mjs +0 -54
- package/src/refractor/plugins/element-identity.cjs +0 -31
- package/src/refractor/plugins/element-identity.mjs +0 -26
- package/src/refractor/plugins/semantic-element-identity.cjs +0 -33
- package/src/refractor/plugins/semantic-element-identity.mjs +0 -29
- package/src/refractor/toolbox.cjs +0 -47
- package/src/refractor/toolbox.mjs +0 -41
- package/src/specification.cjs +0 -63
- package/src/specification.mjs +0 -59
- package/src/transcluder/Transcluder.cjs +0 -111
- package/src/transcluder/Transcluder.mjs +0 -107
- package/src/transcluder/index.cjs +0 -19
- package/src/transcluder/index.mjs +0 -13
- package/src/transformers/dehydrate.cjs +0 -15
- package/src/transformers/dehydrate.mjs +0 -10
- package/src/transformers/from.cjs +0 -34
- package/src/transformers/from.mjs +0 -29
- package/src/transformers/serializers/json.cjs +0 -75
- package/src/transformers/serializers/json.mjs +0 -70
- package/src/transformers/serializers/value.cjs +0 -50
- package/src/transformers/serializers/value.mjs +0 -47
- package/src/transformers/serializers/yaml-1-2.cjs +0 -142
- package/src/transformers/serializers/yaml-1-2.mjs +0 -137
- package/src/transformers/sexprs.cjs +0 -31
- package/src/transformers/sexprs.mjs +0 -28
- package/src/transformers/to-string.cjs +0 -16
- package/src/transformers/to-string.mjs +0 -11
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [4.0.1](https://github.com/speclynx/apidom/compare/v4.0.0...v4.0.1) (2026-03-11)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @speclynx/apidom-core
|
|
9
|
+
|
|
10
|
+
# [4.0.0](https://github.com/speclynx/apidom/compare/v3.2.1...v4.0.0) (2026-03-11)
|
|
11
|
+
|
|
12
|
+
**Note:** Version bump only for package @speclynx/apidom-core
|
|
13
|
+
|
|
6
14
|
## [3.2.1](https://github.com/speclynx/apidom/compare/v3.2.0...v3.2.1) (2026-03-09)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @speclynx/apidom-core
|
|
@@ -28058,7 +28058,9 @@ class Path {
|
|
|
28058
28058
|
*
|
|
28059
28059
|
* @example
|
|
28060
28060
|
* // For a path to $.paths['/pets'].get in an OpenAPI document:
|
|
28061
|
+
* ```
|
|
28061
28062
|
* path.getPathKeys(); // => ['paths', '/pets', 'get']
|
|
28063
|
+
* ```
|
|
28062
28064
|
*/
|
|
28063
28065
|
getPathKeys() {
|
|
28064
28066
|
const keys = [];
|
|
@@ -28093,18 +28095,22 @@ class Path {
|
|
|
28093
28095
|
* or Normalized JSONPath like "$['paths']['/pets']['get']['responses']['200']"
|
|
28094
28096
|
*
|
|
28095
28097
|
* @example
|
|
28098
|
+
* ```
|
|
28096
28099
|
* // JSON Pointer examples:
|
|
28097
28100
|
* path.formatPath(); // "" (root)
|
|
28098
28101
|
* path.formatPath(); // "/info"
|
|
28099
28102
|
* path.formatPath(); // "/paths/~1pets/get"
|
|
28100
28103
|
* path.formatPath(); // "/paths/~1users~1{id}/parameters/0"
|
|
28104
|
+
* ```
|
|
28101
28105
|
*
|
|
28102
28106
|
* @example
|
|
28107
|
+
* ```
|
|
28103
28108
|
* // JSONPath examples:
|
|
28104
28109
|
* path.formatPath('jsonpath'); // "$" (root)
|
|
28105
28110
|
* path.formatPath('jsonpath'); // "$['info']"
|
|
28106
28111
|
* path.formatPath('jsonpath'); // "$['paths']['/pets']['get']"
|
|
28107
28112
|
* path.formatPath('jsonpath'); // "$['paths']['/users/{id}']['parameters'][0]"
|
|
28113
|
+
* ```
|
|
28108
28114
|
*/
|
|
28109
28115
|
formatPath(pathFormat = 'jsonpointer') {
|
|
28110
28116
|
const parts = this.getPathKeys();
|
|
@@ -28312,15 +28318,15 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
28312
28318
|
/* harmony import */ var _traversal_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2078);
|
|
28313
28319
|
|
|
28314
28320
|
/**
|
|
28315
|
-
* Finds all elements
|
|
28321
|
+
* Finds all paths whose elements match the predicate.
|
|
28316
28322
|
* @public
|
|
28317
28323
|
*/
|
|
28318
28324
|
const filter = (element, predicate) => {
|
|
28319
28325
|
const result = [];
|
|
28320
28326
|
(0,_traversal_mjs__WEBPACK_IMPORTED_MODULE_0__.traverse)(element, {
|
|
28321
28327
|
enter(path) {
|
|
28322
|
-
if (predicate(path
|
|
28323
|
-
result.push(path
|
|
28328
|
+
if (predicate(path)) {
|
|
28329
|
+
result.push(path);
|
|
28324
28330
|
}
|
|
28325
28331
|
}
|
|
28326
28332
|
});
|
|
@@ -28345,7 +28351,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
28345
28351
|
* @public
|
|
28346
28352
|
*/
|
|
28347
28353
|
/**
|
|
28348
|
-
* Finds the most inner node at the given offset.
|
|
28354
|
+
* Finds the path of the most inner node at the given offset.
|
|
28349
28355
|
* If includeRightBound is set, also finds nodes that end at the given offset.
|
|
28350
28356
|
* @public
|
|
28351
28357
|
*/
|
|
@@ -28370,7 +28376,7 @@ const findAtOffset = (element, options) => {
|
|
|
28370
28376
|
const endOffset = node.endOffset;
|
|
28371
28377
|
const isWithinOffsetRange = offset >= startOffset && (offset < endOffset || includeRightBound && offset <= endOffset);
|
|
28372
28378
|
if (isWithinOffsetRange) {
|
|
28373
|
-
result.push(
|
|
28379
|
+
result.push(path);
|
|
28374
28380
|
return; // push to stack and dive in
|
|
28375
28381
|
}
|
|
28376
28382
|
path.skip(); // skip entire sub-tree
|
|
@@ -28392,15 +28398,15 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
28392
28398
|
/* harmony import */ var _traversal_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2078);
|
|
28393
28399
|
|
|
28394
28400
|
/**
|
|
28395
|
-
*
|
|
28401
|
+
* Finds first path whose element satisfies the provided predicate.
|
|
28396
28402
|
* @public
|
|
28397
28403
|
*/
|
|
28398
28404
|
const find = (element, predicate) => {
|
|
28399
28405
|
let result;
|
|
28400
28406
|
(0,_traversal_mjs__WEBPACK_IMPORTED_MODULE_0__.traverse)(element, {
|
|
28401
28407
|
enter(path) {
|
|
28402
|
-
if (predicate(path
|
|
28403
|
-
result = path
|
|
28408
|
+
if (predicate(path)) {
|
|
28409
|
+
result = path;
|
|
28404
28410
|
path.stop();
|
|
28405
28411
|
}
|
|
28406
28412
|
}
|
|
@@ -28418,9 +28424,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
28418
28424
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
28419
28425
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
28420
28426
|
/* harmony export */ });
|
|
28421
|
-
/* harmony import */ var
|
|
28422
|
-
/* harmony import */ var _traversal_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2078);
|
|
28423
|
-
|
|
28427
|
+
/* harmony import */ var _traversal_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2078);
|
|
28424
28428
|
|
|
28425
28429
|
/**
|
|
28426
28430
|
* @public
|
|
@@ -28429,7 +28433,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
28429
28433
|
* @public
|
|
28430
28434
|
*/
|
|
28431
28435
|
/**
|
|
28432
|
-
* Executes the callback on this element and all
|
|
28436
|
+
* Executes the callback on this element's path and all descendant paths.
|
|
28433
28437
|
* @public
|
|
28434
28438
|
*/
|
|
28435
28439
|
const forEach = (element, options) => {
|
|
@@ -28437,15 +28441,15 @@ const forEach = (element, options) => {
|
|
|
28437
28441
|
let predicate;
|
|
28438
28442
|
if (typeof options === 'function') {
|
|
28439
28443
|
callback = options;
|
|
28440
|
-
predicate =
|
|
28444
|
+
predicate = () => true;
|
|
28441
28445
|
} else {
|
|
28442
28446
|
callback = options.callback ?? (() => {});
|
|
28443
|
-
predicate = options.predicate ??
|
|
28447
|
+
predicate = options.predicate ?? (() => true);
|
|
28444
28448
|
}
|
|
28445
|
-
(0,
|
|
28449
|
+
(0,_traversal_mjs__WEBPACK_IMPORTED_MODULE_0__.traverse)(element, {
|
|
28446
28450
|
enter(path) {
|
|
28447
|
-
if (predicate(path
|
|
28448
|
-
callback(path
|
|
28451
|
+
if (predicate(path)) {
|
|
28452
|
+
callback(path);
|
|
28449
28453
|
}
|
|
28450
28454
|
}
|
|
28451
28455
|
});
|
|
@@ -28492,11 +28496,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
28492
28496
|
/* harmony import */ var _filter_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5247);
|
|
28493
28497
|
|
|
28494
28498
|
/**
|
|
28495
|
-
* Complement of filter. Finds all elements NOT
|
|
28499
|
+
* Complement of filter. Finds all paths whose elements do NOT match the predicate.
|
|
28496
28500
|
* @public
|
|
28497
28501
|
*/
|
|
28498
28502
|
const reject = (element, predicate) => {
|
|
28499
|
-
return (0,_filter_mjs__WEBPACK_IMPORTED_MODULE_0__["default"])(element,
|
|
28503
|
+
return (0,_filter_mjs__WEBPACK_IMPORTED_MODULE_0__["default"])(element, path => !predicate(path));
|
|
28500
28504
|
};
|
|
28501
28505
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reject);
|
|
28502
28506
|
|
|
@@ -28512,7 +28516,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
28512
28516
|
/* harmony import */ var _find_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4860);
|
|
28513
28517
|
|
|
28514
28518
|
/**
|
|
28515
|
-
* Tests whether at least one element passes the predicate.
|
|
28519
|
+
* Tests whether at least one path's element passes the predicate.
|
|
28516
28520
|
* @public
|
|
28517
28521
|
*/
|
|
28518
28522
|
const some = (element, predicate) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@speclynx/apidom-core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "Tools for manipulating ApiDOM structures.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"apidom",
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
"license": "Apache-2.0",
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@babel/runtime-corejs3": "^7.28.4",
|
|
60
|
-
"@speclynx/apidom-datamodel": "
|
|
61
|
-
"@speclynx/apidom-error": "
|
|
62
|
-
"@speclynx/apidom-traverse": "
|
|
60
|
+
"@speclynx/apidom-datamodel": "4.0.1",
|
|
61
|
+
"@speclynx/apidom-error": "4.0.1",
|
|
62
|
+
"@speclynx/apidom-traverse": "4.0.1",
|
|
63
63
|
"ramda": "~0.32.0",
|
|
64
64
|
"ramda-adjunct": "^6.0.0",
|
|
65
65
|
"short-unique-id": "^5.3.2",
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
"README.md",
|
|
77
77
|
"CHANGELOG.md"
|
|
78
78
|
],
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "223132a9b00081ca04842efc2736a491f7876f44"
|
|
80
80
|
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
exports.default = void 0;
|
|
5
|
-
exports.fixedFields = fixedFields;
|
|
6
|
-
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
7
|
-
/**
|
|
8
|
-
* Represents a fixed field definition.
|
|
9
|
-
* @public
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* @public
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Returns the fixed fields for an Element class or instance.
|
|
18
|
-
*
|
|
19
|
-
* @param elementOrClass - Element instance or class
|
|
20
|
-
* @param options - Options for return format
|
|
21
|
-
* @returns Array of fixed fields, or object indexed by name if options.indexed is true
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```ts
|
|
25
|
-
* import { fixedFields } from '@speclynx/apidom-core';
|
|
26
|
-
*
|
|
27
|
-
* // Get fixed fields as array
|
|
28
|
-
* const fields = fixedFields(ParameterElement);
|
|
29
|
-
*
|
|
30
|
-
* // Get fixed fields as indexed object for O(1) lookups
|
|
31
|
-
* const fieldsIndex = fixedFields(ParameterElement, { indexed: true });
|
|
32
|
-
* if (Object.hasOwn(fieldsIndex, 'description')) {
|
|
33
|
-
* // field exists
|
|
34
|
-
* }
|
|
35
|
-
* ```
|
|
36
|
-
*
|
|
37
|
-
* @public
|
|
38
|
-
*/
|
|
39
|
-
function fixedFields(elementOrClass, options) {
|
|
40
|
-
const constructor = elementOrClass instanceof _apidomDatamodel.Element ? elementOrClass.constructor : elementOrClass;
|
|
41
|
-
const fields = constructor.fixedFields ?? [];
|
|
42
|
-
if (options?.indexed) {
|
|
43
|
-
return Object.fromEntries(fields.map(f => [f.name, f]));
|
|
44
|
-
}
|
|
45
|
-
return fields;
|
|
46
|
-
}
|
|
47
|
-
var _default = exports.default = fixedFields;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Element } from '@speclynx/apidom-datamodel';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Represents a fixed field definition.
|
|
5
|
-
* @public
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @public
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Returns the fixed fields for an Element class or instance.
|
|
14
|
-
*
|
|
15
|
-
* @param elementOrClass - Element instance or class
|
|
16
|
-
* @param options - Options for return format
|
|
17
|
-
* @returns Array of fixed fields, or object indexed by name if options.indexed is true
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```ts
|
|
21
|
-
* import { fixedFields } from '@speclynx/apidom-core';
|
|
22
|
-
*
|
|
23
|
-
* // Get fixed fields as array
|
|
24
|
-
* const fields = fixedFields(ParameterElement);
|
|
25
|
-
*
|
|
26
|
-
* // Get fixed fields as indexed object for O(1) lookups
|
|
27
|
-
* const fieldsIndex = fixedFields(ParameterElement, { indexed: true });
|
|
28
|
-
* if (Object.hasOwn(fieldsIndex, 'description')) {
|
|
29
|
-
* // field exists
|
|
30
|
-
* }
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* @public
|
|
34
|
-
*/
|
|
35
|
-
export function fixedFields(elementOrClass, options) {
|
|
36
|
-
const constructor = elementOrClass instanceof Element ? elementOrClass.constructor : elementOrClass;
|
|
37
|
-
const fields = constructor.fixedFields ?? [];
|
|
38
|
-
if (options?.indexed) {
|
|
39
|
-
return Object.fromEntries(fields.map(f => [f.name, f]));
|
|
40
|
-
}
|
|
41
|
-
return fields;
|
|
42
|
-
}
|
|
43
|
-
export default fixedFields;
|
package/src/fields/index.cjs
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
|
|
4
|
-
exports.__esModule = true;
|
|
5
|
-
exports.fixedFields = exports.default = void 0;
|
|
6
|
-
var _fixedFields = _interopRequireWildcard(require("./fixed-fields.cjs"));
|
|
7
|
-
exports.fixedFields = _fixedFields.fixedFields;
|
|
8
|
-
exports.default = _fixedFields.default;
|
package/src/fields/index.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { fixedFields, default } from "./fixed-fields.mjs";
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
exports.default = void 0;
|
|
5
|
-
var _apidomError = require("@speclynx/apidom-error");
|
|
6
|
-
/**
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @public
|
|
12
|
-
*/
|
|
13
|
-
class ElementIdentityError extends _apidomError.ApiDOMStructuredError {
|
|
14
|
-
value;
|
|
15
|
-
constructor(message, structuredOptions) {
|
|
16
|
-
super(message, structuredOptions);
|
|
17
|
-
if (typeof structuredOptions !== 'undefined') {
|
|
18
|
-
this.value = structuredOptions.value;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
var _default = exports.default = ElementIdentityError;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ApiDOMStructuredError } from '@speclynx/apidom-error';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @public
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @public
|
|
9
|
-
*/
|
|
10
|
-
class ElementIdentityError extends ApiDOMStructuredError {
|
|
11
|
-
value;
|
|
12
|
-
constructor(message, structuredOptions) {
|
|
13
|
-
super(message, structuredOptions);
|
|
14
|
-
if (typeof structuredOptions !== 'undefined') {
|
|
15
|
-
this.value = structuredOptions.value;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
export default ElementIdentityError;
|
package/src/identity/index.cjs
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
-
exports.__esModule = true;
|
|
5
|
-
exports.defaultIdentityManager = exports.IdentityManager = void 0;
|
|
6
|
-
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
7
|
-
var _shortUniqueId = _interopRequireDefault(require("short-unique-id"));
|
|
8
|
-
var _ElementIdentityError = _interopRequireDefault(require("./errors/ElementIdentityError.cjs"));
|
|
9
|
-
/**
|
|
10
|
-
* @public
|
|
11
|
-
*/
|
|
12
|
-
class IdentityManager {
|
|
13
|
-
uuid;
|
|
14
|
-
identityMap;
|
|
15
|
-
constructor({
|
|
16
|
-
length = 6
|
|
17
|
-
} = {}) {
|
|
18
|
-
this.uuid = new _shortUniqueId.default({
|
|
19
|
-
length
|
|
20
|
-
});
|
|
21
|
-
this.identityMap = new WeakMap();
|
|
22
|
-
}
|
|
23
|
-
identify(element) {
|
|
24
|
-
if (!(0, _apidomDatamodel.isElement)(element)) {
|
|
25
|
-
throw new _ElementIdentityError.default('Cannot not identify the element. `element` is neither structurally compatible nor a subclass of an Element class.', {
|
|
26
|
-
value: element
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// use already assigned identity
|
|
31
|
-
if (element.hasMetaProperty('id')) {
|
|
32
|
-
const existingId = element.id;
|
|
33
|
-
if (typeof existingId === 'string' && existingId !== '') {
|
|
34
|
-
return existingId;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// assign identity in immutable way
|
|
39
|
-
if (this.identityMap.has(element)) {
|
|
40
|
-
return this.identityMap.get(element);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// return element identity
|
|
44
|
-
const id = this.generateId();
|
|
45
|
-
this.identityMap.set(element, id);
|
|
46
|
-
return id;
|
|
47
|
-
}
|
|
48
|
-
forget(element) {
|
|
49
|
-
if (this.identityMap.has(element)) {
|
|
50
|
-
this.identityMap.delete(element);
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
generateId() {
|
|
56
|
-
return this.uuid.randomUUID();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @public
|
|
62
|
-
*/
|
|
63
|
-
exports.IdentityManager = IdentityManager;
|
|
64
|
-
const defaultIdentityManager = exports.defaultIdentityManager = new IdentityManager();
|
package/src/identity/index.mjs
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { isElement } from '@speclynx/apidom-datamodel';
|
|
2
|
-
import ShortUniqueId from 'short-unique-id';
|
|
3
|
-
import ElementIdentityError from "./errors/ElementIdentityError.mjs";
|
|
4
|
-
/**
|
|
5
|
-
* @public
|
|
6
|
-
*/
|
|
7
|
-
export class IdentityManager {
|
|
8
|
-
uuid;
|
|
9
|
-
identityMap;
|
|
10
|
-
constructor({
|
|
11
|
-
length = 6
|
|
12
|
-
} = {}) {
|
|
13
|
-
this.uuid = new ShortUniqueId({
|
|
14
|
-
length
|
|
15
|
-
});
|
|
16
|
-
this.identityMap = new WeakMap();
|
|
17
|
-
}
|
|
18
|
-
identify(element) {
|
|
19
|
-
if (!isElement(element)) {
|
|
20
|
-
throw new ElementIdentityError('Cannot not identify the element. `element` is neither structurally compatible nor a subclass of an Element class.', {
|
|
21
|
-
value: element
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// use already assigned identity
|
|
26
|
-
if (element.hasMetaProperty('id')) {
|
|
27
|
-
const existingId = element.id;
|
|
28
|
-
if (typeof existingId === 'string' && existingId !== '') {
|
|
29
|
-
return existingId;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// assign identity in immutable way
|
|
34
|
-
if (this.identityMap.has(element)) {
|
|
35
|
-
return this.identityMap.get(element);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// return element identity
|
|
39
|
-
const id = this.generateId();
|
|
40
|
-
this.identityMap.set(element, id);
|
|
41
|
-
return id;
|
|
42
|
-
}
|
|
43
|
-
forget(element) {
|
|
44
|
-
if (this.identityMap.has(element)) {
|
|
45
|
-
this.identityMap.delete(element);
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
generateId() {
|
|
51
|
-
return this.uuid.randomUUID();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* @public
|
|
57
|
-
*/
|
|
58
|
-
export const defaultIdentityManager = new IdentityManager();
|
package/src/index.cjs
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
5
|
-
exports.__esModule = true;
|
|
6
|
-
exports.transclude = exports.toYAML = exports.toValue = exports.toString = exports.toJSON = exports.sexprs = exports.resolveSpecification = exports.refractorPluginSemanticElementIdentity = exports.refractorPluginElementIdentity = exports.mergeRight = exports.mergeLeft = exports.from = exports.fixedFields = exports.dispatchRefractorPlugins = exports.dehydrate = exports.defaultIdentityManager = exports.deepmerge = exports.createToolbox = exports.Transcluder = exports.MediaTypes = exports.IdentityManager = exports.ElementIdentityError = void 0;
|
|
7
|
-
var _index = require("./refractor/plugins/dispatcher/index.cjs");
|
|
8
|
-
exports.dispatchRefractorPlugins = _index.dispatchPluginsSync;
|
|
9
|
-
var _toolbox = _interopRequireDefault(require("./refractor/toolbox.cjs"));
|
|
10
|
-
exports.createToolbox = _toolbox.default;
|
|
11
|
-
var _elementIdentity = _interopRequireDefault(require("./refractor/plugins/element-identity.cjs"));
|
|
12
|
-
exports.refractorPluginElementIdentity = _elementIdentity.default;
|
|
13
|
-
var _semanticElementIdentity = _interopRequireDefault(require("./refractor/plugins/semantic-element-identity.cjs"));
|
|
14
|
-
exports.refractorPluginSemanticElementIdentity = _semanticElementIdentity.default;
|
|
15
|
-
var _mediaTypes = _interopRequireDefault(require("./media-types.cjs"));
|
|
16
|
-
exports.MediaTypes = _mediaTypes.default;
|
|
17
|
-
var _index2 = _interopRequireWildcard(require("./transcluder/index.cjs"));
|
|
18
|
-
exports.transclude = _index2.transclude;
|
|
19
|
-
exports.Transcluder = _index2.default;
|
|
20
|
-
var _specification = require("./specification.cjs");
|
|
21
|
-
exports.resolveSpecification = _specification.resolveSpecification;
|
|
22
|
-
var _index3 = require("./identity/index.cjs");
|
|
23
|
-
exports.defaultIdentityManager = _index3.defaultIdentityManager;
|
|
24
|
-
exports.IdentityManager = _index3.IdentityManager;
|
|
25
|
-
var _ElementIdentityError = _interopRequireDefault(require("./identity/errors/ElementIdentityError.cjs"));
|
|
26
|
-
exports.ElementIdentityError = _ElementIdentityError.default;
|
|
27
|
-
var _from = _interopRequireDefault(require("./transformers/from.cjs"));
|
|
28
|
-
exports.from = _from.default;
|
|
29
|
-
var _value = _interopRequireDefault(require("./transformers/serializers/value.cjs"));
|
|
30
|
-
exports.toValue = _value.default;
|
|
31
|
-
var _json = _interopRequireDefault(require("./transformers/serializers/json.cjs"));
|
|
32
|
-
exports.toJSON = _json.default;
|
|
33
|
-
var _yaml = _interopRequireDefault(require("./transformers/serializers/yaml-1-2.cjs"));
|
|
34
|
-
exports.toYAML = _yaml.default;
|
|
35
|
-
var _dehydrate = _interopRequireDefault(require("./transformers/dehydrate.cjs"));
|
|
36
|
-
exports.dehydrate = _dehydrate.default;
|
|
37
|
-
var _toString = _interopRequireDefault(require("./transformers/to-string.cjs"));
|
|
38
|
-
exports.toString = _toString.default;
|
|
39
|
-
var _sexprs = _interopRequireDefault(require("./transformers/sexprs.cjs"));
|
|
40
|
-
exports.sexprs = _sexprs.default;
|
|
41
|
-
var _deepmerge = _interopRequireDefault(require("./merge/deepmerge.cjs"));
|
|
42
|
-
exports.deepmerge = _deepmerge.default;
|
|
43
|
-
var _mergeRight = _interopRequireDefault(require("./merge/merge-right.cjs"));
|
|
44
|
-
exports.mergeRight = _mergeRight.default;
|
|
45
|
-
var _mergeLeft = _interopRequireDefault(require("./merge/merge-left.cjs"));
|
|
46
|
-
exports.mergeLeft = _mergeLeft.default;
|
|
47
|
-
var _index4 = require("./fields/index.cjs");
|
|
48
|
-
exports.fixedFields = _index4.fixedFields;
|
package/src/index.mjs
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export { dispatchPluginsSync as dispatchRefractorPlugins } from "./refractor/plugins/dispatcher/index.mjs";
|
|
2
|
-
export { default as createToolbox } from "./refractor/toolbox.mjs";
|
|
3
|
-
export { default as refractorPluginElementIdentity } from "./refractor/plugins/element-identity.mjs";
|
|
4
|
-
export { default as refractorPluginSemanticElementIdentity } from "./refractor/plugins/semantic-element-identity.mjs";
|
|
5
|
-
export { default as MediaTypes } from "./media-types.mjs";
|
|
6
|
-
export { transclude, default as Transcluder } from "./transcluder/index.mjs";
|
|
7
|
-
export { resolveSpecification } from "./specification.mjs";
|
|
8
|
-
export { defaultIdentityManager, IdentityManager } from "./identity/index.mjs";
|
|
9
|
-
export { default as ElementIdentityError } from "./identity/errors/ElementIdentityError.mjs";
|
|
10
|
-
/**
|
|
11
|
-
* Transforms data to an Element from a particular namespace.
|
|
12
|
-
*/
|
|
13
|
-
export { default as from } from "./transformers/from.mjs";
|
|
14
|
-
/**
|
|
15
|
-
* Transforms the ApiDOM into JavaScript POJO.
|
|
16
|
-
* This POJO would be the result of interpreting the ApiDOM
|
|
17
|
-
* into JavaScript structure.
|
|
18
|
-
*/
|
|
19
|
-
export { default as toValue } from "./transformers/serializers/value.mjs";
|
|
20
|
-
/**
|
|
21
|
-
* Transforms the ApiDOM into JSON string.
|
|
22
|
-
*/
|
|
23
|
-
export { default as toJSON } from "./transformers/serializers/json.mjs";
|
|
24
|
-
/**
|
|
25
|
-
* Transforms the ApiDOM into YAML string.
|
|
26
|
-
*/
|
|
27
|
-
export { default as toYAML } from "./transformers/serializers/yaml-1-2.mjs";
|
|
28
|
-
/**
|
|
29
|
-
* Creates a refract representation of an Element.
|
|
30
|
-
* https://github.com/refractproject/refract-spec
|
|
31
|
-
*/
|
|
32
|
-
export { default as dehydrate } from "./transformers/dehydrate.mjs";
|
|
33
|
-
/**
|
|
34
|
-
* Create a refracted string representation of an Element.
|
|
35
|
-
*/
|
|
36
|
-
export { default as toString } from "./transformers/to-string.mjs";
|
|
37
|
-
export { default as sexprs } from "./transformers/sexprs.mjs";
|
|
38
|
-
export { default as deepmerge } from "./merge/deepmerge.mjs";
|
|
39
|
-
export { default as mergeRight } from "./merge/merge-right.mjs";
|
|
40
|
-
export { default as mergeLeft } from "./merge/merge-left.mjs";
|
|
41
|
-
export { fixedFields } from "./fields/index.mjs";
|
package/src/media-types.cjs
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
exports.default = void 0;
|
|
5
|
-
var _apidomError = require("@speclynx/apidom-error");
|
|
6
|
-
/**
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
class MediaTypes extends Array {
|
|
10
|
-
unknownMediaType = 'application/octet-stream';
|
|
11
|
-
filterByFormat() {
|
|
12
|
-
throw new _apidomError.NotImplementedError('filterByFormat method in MediaTypes class is not yet implemented.');
|
|
13
|
-
}
|
|
14
|
-
findBy() {
|
|
15
|
-
throw new _apidomError.NotImplementedError('findBy method in MediaTypes class is not yet implemented.');
|
|
16
|
-
}
|
|
17
|
-
latest() {
|
|
18
|
-
throw new _apidomError.NotImplementedError('latest method in MediaTypes class is not yet implemented.');
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
var _default = exports.default = MediaTypes;
|
package/src/media-types.mjs
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { NotImplementedError } from '@speclynx/apidom-error';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @public
|
|
5
|
-
*/
|
|
6
|
-
class MediaTypes extends Array {
|
|
7
|
-
unknownMediaType = 'application/octet-stream';
|
|
8
|
-
filterByFormat() {
|
|
9
|
-
throw new NotImplementedError('filterByFormat method in MediaTypes class is not yet implemented.');
|
|
10
|
-
}
|
|
11
|
-
findBy() {
|
|
12
|
-
throw new NotImplementedError('findBy method in MediaTypes class is not yet implemented.');
|
|
13
|
-
}
|
|
14
|
-
latest() {
|
|
15
|
-
throw new NotImplementedError('latest method in MediaTypes class is not yet implemented.');
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export default MediaTypes;
|