@speclynx/apidom-core 2.2.3 → 2.4.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 +10 -0
- package/README.md +41 -0
- package/dist/apidom-core.browser.js +54 -0
- package/dist/apidom-core.browser.min.js +1 -1
- package/package.json +6 -6
- package/src/fields/fixed-fields.cjs +43 -0
- package/src/fields/fixed-fields.mjs +39 -0
- package/src/fields/index.cjs +8 -0
- package/src/fields/index.mjs +1 -0
- package/src/index.cjs +4 -2
- package/src/index.mjs +2 -1
- package/types/apidom-core.d.ts +40 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@speclynx/apidom-core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Tools for manipulating ApiDOM structures.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"lint": "eslint ./",
|
|
26
26
|
"lint:fix": "eslint ./ --fix",
|
|
27
27
|
"clean": "rimraf --glob 'src/**/*.mjs' 'src/**/*.cjs' 'test/**/*.mjs' ./dist ./types",
|
|
28
|
-
"typescript:check-types": "tsc --noEmit
|
|
28
|
+
"typescript:check-types": "tsc --noEmit",
|
|
29
29
|
"typescript:declaration": "tsc -p tsconfig.declaration.json && api-extractor run -l -c ./config/api-extractor/api-extractor.json",
|
|
30
30
|
"test": "npm run build:es && cross-env BABEL_ENV=es babel test --out-dir test --extensions '.ts' --out-file-extension '.mjs' --root-mode 'upward' && cross-env NODE_ENV=test mocha",
|
|
31
31
|
"test:update-snapshots": "cross-env UPDATE_SNAPSHOT=1 NODE_ENV=test mocha",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"license": "Apache-2.0",
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@babel/runtime-corejs3": "^7.28.4",
|
|
43
|
-
"@speclynx/apidom-datamodel": "^2.
|
|
44
|
-
"@speclynx/apidom-error": "^2.
|
|
45
|
-
"@speclynx/apidom-traverse": "^2.
|
|
43
|
+
"@speclynx/apidom-datamodel": "^2.4.0",
|
|
44
|
+
"@speclynx/apidom-error": "^2.4.0",
|
|
45
|
+
"@speclynx/apidom-traverse": "^2.4.0",
|
|
46
46
|
"ramda": "~0.32.0",
|
|
47
47
|
"ramda-adjunct": "^6.0.0",
|
|
48
48
|
"short-unique-id": "^5.3.2",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"README.md",
|
|
60
60
|
"CHANGELOG.md"
|
|
61
61
|
],
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "f127ee0b98cc108b83a690bf317895e17a32b4d4"
|
|
63
63
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
* 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
|
+
function fixedFields(elementOrClass, options) {
|
|
36
|
+
const constructor = elementOrClass instanceof _apidomDatamodel.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
|
+
var _default = exports.default = fixedFields;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Element } from '@speclynx/apidom-datamodel';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents a fixed field definition.
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Returns the fixed fields for an Element class or instance.
|
|
10
|
+
*
|
|
11
|
+
* @param elementOrClass - Element instance or class
|
|
12
|
+
* @param options - Options for return format
|
|
13
|
+
* @returns Array of fixed fields, or object indexed by name if options.indexed is true
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { fixedFields } from '@speclynx/apidom-core';
|
|
18
|
+
*
|
|
19
|
+
* // Get fixed fields as array
|
|
20
|
+
* const fields = fixedFields(ParameterElement);
|
|
21
|
+
*
|
|
22
|
+
* // Get fixed fields as indexed object for O(1) lookups
|
|
23
|
+
* const fieldsIndex = fixedFields(ParameterElement, { indexed: true });
|
|
24
|
+
* if (Object.hasOwn(fieldsIndex, 'description')) {
|
|
25
|
+
* // field exists
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
export function fixedFields(elementOrClass, options) {
|
|
32
|
+
const constructor = elementOrClass instanceof Element ? elementOrClass.constructor : elementOrClass;
|
|
33
|
+
const fields = constructor.fixedFields ?? [];
|
|
34
|
+
if (options?.indexed) {
|
|
35
|
+
return Object.fromEntries(fields.map(f => [f.name, f]));
|
|
36
|
+
}
|
|
37
|
+
return fields;
|
|
38
|
+
}
|
|
39
|
+
export default fixedFields;
|
|
@@ -0,0 +1,8 @@
|
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { fixedFields, default } from "./fixed-fields.mjs";
|
package/src/index.cjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
|
|
4
4
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
5
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.dispatchRefractorPlugins = exports.dehydrate = exports.defaultIdentityManager = exports.deepmerge = exports.createToolbox = exports.Transcluder = exports.MediaTypes = exports.IdentityManager = exports.ElementIdentityError = void 0;
|
|
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
7
|
var _index = require("./refractor/plugins/dispatcher/index.cjs");
|
|
8
8
|
exports.dispatchRefractorPlugins = _index.dispatchPluginsSync;
|
|
9
9
|
var _toolbox = _interopRequireDefault(require("./refractor/toolbox.cjs"));
|
|
@@ -43,4 +43,6 @@ exports.deepmerge = _deepmerge.default;
|
|
|
43
43
|
var _mergeRight = _interopRequireDefault(require("./merge/merge-right.cjs"));
|
|
44
44
|
exports.mergeRight = _mergeRight.default;
|
|
45
45
|
var _mergeLeft = _interopRequireDefault(require("./merge/merge-left.cjs"));
|
|
46
|
-
exports.mergeLeft = _mergeLeft.default;
|
|
46
|
+
exports.mergeLeft = _mergeLeft.default;
|
|
47
|
+
var _index4 = require("./fields/index.cjs");
|
|
48
|
+
exports.fixedFields = _index4.fixedFields;
|
package/src/index.mjs
CHANGED
|
@@ -37,4 +37,5 @@ export { default as toString } from "./transformers/to-string.mjs";
|
|
|
37
37
|
export { default as sexprs } from "./transformers/sexprs.mjs";
|
|
38
38
|
export { default as deepmerge } from "./merge/deepmerge.mjs";
|
|
39
39
|
export { default as mergeRight } from "./merge/merge-right.mjs";
|
|
40
|
-
export { default as mergeLeft } from "./merge/merge-left.mjs";
|
|
40
|
+
export { default as mergeLeft } from "./merge/merge-left.mjs";
|
|
41
|
+
export { fixedFields } from "./fields/index.mjs";
|
package/types/apidom-core.d.ts
CHANGED
|
@@ -146,6 +146,10 @@ export declare interface DispatchPluginsSync {
|
|
|
146
146
|
*/
|
|
147
147
|
export declare const dispatchRefractorPlugins: DispatchPluginsSync;
|
|
148
148
|
|
|
149
|
+
declare type ElementClass = typeof Element_2 & {
|
|
150
|
+
fixedFields?: FixedField[];
|
|
151
|
+
};
|
|
152
|
+
|
|
149
153
|
/**
|
|
150
154
|
* @public
|
|
151
155
|
*/
|
|
@@ -161,6 +165,42 @@ export declare interface ElementIdentityErrorOptions extends ApiDOMErrorOptions
|
|
|
161
165
|
readonly value: unknown;
|
|
162
166
|
}
|
|
163
167
|
|
|
168
|
+
/**
|
|
169
|
+
* Represents a fixed field definition.
|
|
170
|
+
* @public
|
|
171
|
+
*/
|
|
172
|
+
export declare interface FixedField {
|
|
173
|
+
name: string;
|
|
174
|
+
[key: string]: unknown;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Returns the fixed fields for an Element class or instance.
|
|
179
|
+
*
|
|
180
|
+
* @param elementOrClass - Element instance or class
|
|
181
|
+
* @param options - Options for return format
|
|
182
|
+
* @returns Array of fixed fields, or object indexed by name if options.indexed is true
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```ts
|
|
186
|
+
* import { fixedFields } from '@speclynx/apidom-core';
|
|
187
|
+
*
|
|
188
|
+
* // Get fixed fields as array
|
|
189
|
+
* const fields = fixedFields(ParameterElement);
|
|
190
|
+
*
|
|
191
|
+
* // Get fixed fields as indexed object for O(1) lookups
|
|
192
|
+
* const fieldsIndex = fixedFields(ParameterElement, { indexed: true });
|
|
193
|
+
* if (Object.hasOwn(fieldsIndex, 'description')) {
|
|
194
|
+
* // field exists
|
|
195
|
+
* }
|
|
196
|
+
* ```
|
|
197
|
+
*
|
|
198
|
+
* @public
|
|
199
|
+
*/
|
|
200
|
+
export declare function fixedFields<T extends boolean = false>(elementOrClass: Element_2 | ElementClass, options?: {
|
|
201
|
+
indexed?: T;
|
|
202
|
+
}): T extends true ? Record<string, FixedField> : FixedField[];
|
|
203
|
+
|
|
164
204
|
/**
|
|
165
205
|
* Transforms data to an Element from a particular namespace.
|
|
166
206
|
*
|