apcore-js 0.17.1 → 0.19.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/LICENSE +190 -0
- package/README.md +14 -10
- package/dist/acl-handlers.d.ts +14 -0
- package/dist/acl-handlers.d.ts.map +1 -1
- package/dist/acl-handlers.js +37 -4
- package/dist/acl-handlers.js.map +1 -1
- package/dist/acl.d.ts +4 -3
- package/dist/acl.d.ts.map +1 -1
- package/dist/acl.js +44 -40
- package/dist/acl.js.map +1 -1
- package/dist/async-task.d.ts +6 -5
- package/dist/async-task.d.ts.map +1 -1
- package/dist/async-task.js +10 -6
- package/dist/async-task.js.map +1 -1
- package/dist/bindings.d.ts.map +1 -1
- package/dist/bindings.js +113 -11
- package/dist/bindings.js.map +1 -1
- package/dist/builtin-steps.d.ts +19 -5
- package/dist/builtin-steps.d.ts.map +1 -1
- package/dist/builtin-steps.js +83 -27
- package/dist/builtin-steps.js.map +1 -1
- package/dist/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -6
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +8 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +44 -6
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +34 -7
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +97 -40
- package/dist/context.js.map +1 -1
- package/dist/decorator.d.ts +3 -0
- package/dist/decorator.d.ts.map +1 -1
- package/dist/decorator.js +17 -1
- package/dist/decorator.js.map +1 -1
- package/dist/errors.d.ts +65 -16
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +191 -82
- package/dist/errors.js.map +1 -1
- package/dist/events/emitter.d.ts +4 -1
- package/dist/events/emitter.d.ts.map +1 -1
- package/dist/events/emitter.js +26 -16
- package/dist/events/emitter.js.map +1 -1
- package/dist/executor.d.ts +9 -9
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +62 -38
- package/dist/executor.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/index.d.ts +21 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -7
- package/dist/index.js.map +1 -1
- package/dist/middleware/index.d.ts +1 -1
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +1 -1
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/logging.d.ts +6 -0
- package/dist/middleware/logging.d.ts.map +1 -1
- package/dist/middleware/logging.js +13 -3
- package/dist/middleware/logging.js.map +1 -1
- package/dist/middleware/manager.d.ts.map +1 -1
- package/dist/middleware/manager.js +1 -0
- package/dist/middleware/manager.js.map +1 -1
- package/dist/middleware/platform-notify.d.ts +1 -1
- package/dist/middleware/platform-notify.d.ts.map +1 -1
- package/dist/middleware/platform-notify.js +5 -3
- package/dist/middleware/platform-notify.js.map +1 -1
- package/dist/middleware/retry.d.ts +16 -7
- package/dist/middleware/retry.d.ts.map +1 -1
- package/dist/middleware/retry.js +21 -15
- package/dist/middleware/retry.js.map +1 -1
- package/dist/module.d.ts +8 -2
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +10 -3
- package/dist/module.js.map +1 -1
- package/dist/observability/context-logger.d.ts.map +1 -1
- package/dist/observability/context-logger.js +18 -5
- package/dist/observability/context-logger.js.map +1 -1
- package/dist/observability/metrics-utils.d.ts.map +1 -1
- package/dist/observability/metrics-utils.js +3 -5
- package/dist/observability/metrics-utils.js.map +1 -1
- package/dist/observability/metrics.d.ts +1 -0
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/metrics.js +14 -1
- package/dist/observability/metrics.js.map +1 -1
- package/dist/observability/tracing.d.ts +2 -0
- package/dist/observability/tracing.d.ts.map +1 -1
- package/dist/observability/tracing.js +12 -2
- package/dist/observability/tracing.js.map +1 -1
- package/dist/observability/usage.d.ts.map +1 -1
- package/dist/observability/usage.js +10 -1
- package/dist/observability/usage.js.map +1 -1
- package/dist/pipeline-config.d.ts +13 -9
- package/dist/pipeline-config.d.ts.map +1 -1
- package/dist/pipeline-config.js +77 -13
- package/dist/pipeline-config.js.map +1 -1
- package/dist/registry/conflicts.d.ts +29 -0
- package/dist/registry/conflicts.d.ts.map +1 -0
- package/dist/registry/conflicts.js +61 -0
- package/dist/registry/conflicts.js.map +1 -0
- package/dist/registry/dependencies.d.ts +1 -1
- package/dist/registry/dependencies.d.ts.map +1 -1
- package/dist/registry/dependencies.js +69 -20
- package/dist/registry/dependencies.js.map +1 -1
- package/dist/registry/entry-point.d.ts.map +1 -1
- package/dist/registry/entry-point.js.map +1 -1
- package/dist/registry/index.d.ts +5 -2
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +4 -2
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/metadata.d.ts.map +1 -1
- package/dist/registry/metadata.js +24 -3
- package/dist/registry/metadata.js.map +1 -1
- package/dist/registry/registry.d.ts +40 -4
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +222 -53
- package/dist/registry/registry.js.map +1 -1
- package/dist/registry/scanner.d.ts.map +1 -1
- package/dist/registry/scanner.js +6 -0
- package/dist/registry/scanner.js.map +1 -1
- package/dist/registry/version.d.ts +50 -0
- package/dist/registry/version.d.ts.map +1 -0
- package/dist/registry/version.js +198 -0
- package/dist/registry/version.js.map +1 -0
- package/dist/schema/exporter.js +2 -2
- package/dist/schema/extractor.d.ts +69 -0
- package/dist/schema/extractor.d.ts.map +1 -0
- package/dist/schema/extractor.js +142 -0
- package/dist/schema/extractor.js.map +1 -0
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/loader.js +7 -7
- package/dist/schema/loader.js.map +1 -1
- package/dist/schema/ref-resolver.d.ts.map +1 -1
- package/dist/schema/ref-resolver.js +10 -1
- package/dist/schema/ref-resolver.js.map +1 -1
- package/dist/schema/types.d.ts +6 -6
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +6 -6
- package/dist/schema/types.js.map +1 -1
- package/dist/sys-modules/control.d.ts +79 -1
- package/dist/sys-modules/control.d.ts.map +1 -1
- package/dist/sys-modules/control.js +44 -11
- package/dist/sys-modules/control.js.map +1 -1
- package/dist/sys-modules/health.d.ts +89 -1
- package/dist/sys-modules/health.d.ts.map +1 -1
- package/dist/sys-modules/health.js +41 -1
- package/dist/sys-modules/health.js.map +1 -1
- package/dist/sys-modules/index.d.ts +5 -5
- package/dist/sys-modules/index.d.ts.map +1 -1
- package/dist/sys-modules/index.js +5 -5
- package/dist/sys-modules/index.js.map +1 -1
- package/dist/sys-modules/manifest.d.ts +98 -1
- package/dist/sys-modules/manifest.d.ts.map +1 -1
- package/dist/sys-modules/manifest.js +43 -1
- package/dist/sys-modules/manifest.js.map +1 -1
- package/dist/sys-modules/registration.d.ts +12 -0
- package/dist/sys-modules/registration.d.ts.map +1 -1
- package/dist/sys-modules/registration.js +20 -8
- package/dist/sys-modules/registration.js.map +1 -1
- package/dist/sys-modules/toggle.d.ts +39 -2
- package/dist/sys-modules/toggle.d.ts.map +1 -1
- package/dist/sys-modules/toggle.js +23 -6
- package/dist/sys-modules/toggle.js.map +1 -1
- package/dist/sys-modules/usage.d.ts +92 -1
- package/dist/sys-modules/usage.d.ts.map +1 -1
- package/dist/sys-modules/usage.js +42 -1
- package/dist/sys-modules/usage.js.map +1 -1
- package/dist/trace-context.d.ts +3 -4
- package/dist/trace-context.d.ts.map +1 -1
- package/dist/trace-context.js +4 -5
- package/dist/trace-context.js.map +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +9 -5
package/dist/pipeline-config.js
CHANGED
|
@@ -34,10 +34,6 @@ export function unregisterStepType(name) {
|
|
|
34
34
|
export function registeredStepTypes() {
|
|
35
35
|
return [..._stepTypeRegistry.keys()];
|
|
36
36
|
}
|
|
37
|
-
/** Clear registry (for testing only). */
|
|
38
|
-
export function _resetRegistry() {
|
|
39
|
-
_stepTypeRegistry.clear();
|
|
40
|
-
}
|
|
41
37
|
/** Wraps a resolved step with optional metadata overrides from YAML config. */
|
|
42
38
|
class ConfiguredStep {
|
|
43
39
|
description;
|
|
@@ -67,12 +63,18 @@ class ConfiguredStep {
|
|
|
67
63
|
/**
|
|
68
64
|
* Resolve a step definition dict into a Step instance.
|
|
69
65
|
*
|
|
70
|
-
* Resolution order:
|
|
71
|
-
* 1. `type` field -> look up in registry
|
|
72
|
-
* 2. `handler` field -> dynamic import (
|
|
66
|
+
* Resolution order (DECLARATIVE_CONFIG_SPEC.md §4):
|
|
67
|
+
* 1. `type` field -> look up in registry (sync, fast path)
|
|
68
|
+
* 2. `handler` field -> dynamic ESM import via `await import()`
|
|
69
|
+
* Format: `"module:exportName"`. The resolved export is invoked as
|
|
70
|
+
* `factory(config)` — wrap classes in a factory if needed.
|
|
73
71
|
* 3. Neither -> throw Error
|
|
72
|
+
*
|
|
73
|
+
* NOTE: this function is async because handler resolution requires
|
|
74
|
+
* `await import()`. Type-registry lookups still resolve synchronously
|
|
75
|
+
* inside this async wrapper.
|
|
74
76
|
*/
|
|
75
|
-
export function _resolveStep(stepDef) {
|
|
77
|
+
export async function _resolveStep(stepDef) {
|
|
76
78
|
const typeName = stepDef.type;
|
|
77
79
|
const handlerPath = stepDef.handler;
|
|
78
80
|
const config = stepDef.config ?? {};
|
|
@@ -82,10 +84,10 @@ export function _resolveStep(stepDef) {
|
|
|
82
84
|
const step = factory(config);
|
|
83
85
|
return new ConfiguredStep(step, stepDef);
|
|
84
86
|
}
|
|
85
|
-
// (2) Handler path
|
|
87
|
+
// (2) Handler path -- dynamic ESM import
|
|
86
88
|
if (handlerPath) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
const step = await _importStep(handlerPath, config);
|
|
90
|
+
return new ConfiguredStep(step, stepDef);
|
|
89
91
|
}
|
|
90
92
|
// (3) Neither
|
|
91
93
|
if (typeName) {
|
|
@@ -94,6 +96,68 @@ export function _resolveStep(stepDef) {
|
|
|
94
96
|
}
|
|
95
97
|
throw new Error(`Step '${stepDef.name ?? ''}' has neither 'type' nor 'handler'`);
|
|
96
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Dynamically import a Step factory from a `"module:exportName"` handler path.
|
|
101
|
+
*
|
|
102
|
+
* Mirrors `bindings.ts#resolveTarget` security model: rejects path-traversal
|
|
103
|
+
* (`..`) segments and `file:` URLs at parse time. The resolved export must be
|
|
104
|
+
* a callable `(config) => Step`. Classes should be wrapped in a thin factory.
|
|
105
|
+
*/
|
|
106
|
+
async function _importStep(handlerPath, config) {
|
|
107
|
+
// Security checks run on the whole path BEFORE the module:export split,
|
|
108
|
+
// because 'file:' URLs contain a colon that would otherwise be misparsed.
|
|
109
|
+
const FORBIDDEN_SCHEMES = ['file:', 'http:', 'https:', 'ftp:', 'data:', 'blob:'];
|
|
110
|
+
for (const scheme of FORBIDDEN_SCHEMES) {
|
|
111
|
+
if (handlerPath.startsWith(scheme)) {
|
|
112
|
+
throw new Error(`Handler path '${handlerPath}' must not use '${scheme}' URLs.`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (handlerPath.includes('..')) {
|
|
116
|
+
throw new Error(`Handler path '${handlerPath}' must not contain '..' segments.`);
|
|
117
|
+
}
|
|
118
|
+
if (!handlerPath.includes(':')) {
|
|
119
|
+
throw new Error(`Invalid handler path '${handlerPath}'. Expected format: 'module:exportName'.`);
|
|
120
|
+
}
|
|
121
|
+
// Split from the right so module specifiers containing ':' (e.g., URL-like)
|
|
122
|
+
// don't get misparsed. Standard forms ('./mod:fn', '@scope/pkg:fn') split fine
|
|
123
|
+
// either way; rsplit defends against future scheme-like specifiers.
|
|
124
|
+
const lastColon = handlerPath.lastIndexOf(':');
|
|
125
|
+
const modulePath = handlerPath.slice(0, lastColon);
|
|
126
|
+
const exportName = handlerPath.slice(lastColon + 1);
|
|
127
|
+
let mod;
|
|
128
|
+
try {
|
|
129
|
+
mod = await import(modulePath);
|
|
130
|
+
}
|
|
131
|
+
catch (e) {
|
|
132
|
+
throw new Error(`Cannot import handler module '${modulePath}': ${e.message}`);
|
|
133
|
+
}
|
|
134
|
+
const resolved = mod[exportName];
|
|
135
|
+
if (resolved == null) {
|
|
136
|
+
throw new Error(`Export '${exportName}' not found in module '${modulePath}'.`);
|
|
137
|
+
}
|
|
138
|
+
if (typeof resolved !== 'function') {
|
|
139
|
+
throw new Error(`Handler '${handlerPath}' resolved to a non-callable. ` +
|
|
140
|
+
`Expected a (config) => Step factory; wrap classes in a factory if needed.`);
|
|
141
|
+
}
|
|
142
|
+
// Distinguish class export (has a prototype with a `constructor` pointing
|
|
143
|
+
// back to itself) from factory function. The previous implementation used
|
|
144
|
+
// try/new-then-fallback-to-call, which silently swallowed legitimate
|
|
145
|
+
// constructor errors (bad config, missing required field) and produced
|
|
146
|
+
// misleading secondary failures when the fallback call was invoked on a
|
|
147
|
+
// class that required `new`.
|
|
148
|
+
const isLikelyClass = typeof resolved === 'function' &&
|
|
149
|
+
resolved.prototype != null &&
|
|
150
|
+
typeof resolved.prototype === 'object' &&
|
|
151
|
+
resolved.prototype.constructor === resolved &&
|
|
152
|
+
// Arrow functions have no prototype; factories with .prototype typically
|
|
153
|
+
// have the default Object constructor, so also require the function's
|
|
154
|
+
// name to start uppercase (class convention).
|
|
155
|
+
/^[A-Z]/.test(resolved.name ?? '');
|
|
156
|
+
const step = isLikelyClass
|
|
157
|
+
? new resolved(config)
|
|
158
|
+
: resolved(config);
|
|
159
|
+
return step;
|
|
160
|
+
}
|
|
97
161
|
/**
|
|
98
162
|
* Build an ExecutionStrategy from YAML pipeline configuration.
|
|
99
163
|
*
|
|
@@ -106,7 +170,7 @@ export function _resolveStep(stepDef) {
|
|
|
106
170
|
* @param deps - Forwarded to `buildStandardStrategy()`.
|
|
107
171
|
* @returns Configured ExecutionStrategy.
|
|
108
172
|
*/
|
|
109
|
-
export function buildStrategyFromConfig(pipelineConfig, deps) {
|
|
173
|
+
export async function buildStrategyFromConfig(pipelineConfig, deps) {
|
|
110
174
|
const strategy = buildStandardStrategy(deps);
|
|
111
175
|
// (1) Remove steps
|
|
112
176
|
for (const stepName of pipelineConfig.remove ?? []) {
|
|
@@ -135,7 +199,7 @@ export function buildStrategyFromConfig(pipelineConfig, deps) {
|
|
|
135
199
|
}
|
|
136
200
|
// (3) Resolve and insert custom steps
|
|
137
201
|
for (const stepDef of pipelineConfig.steps ?? []) {
|
|
138
|
-
const step = _resolveStep(stepDef);
|
|
202
|
+
const step = await _resolveStep(stepDef);
|
|
139
203
|
const after = stepDef.after;
|
|
140
204
|
const before = stepDef.before;
|
|
141
205
|
if (after) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-config.js","sourceRoot":"","sources":["../src/pipeline-config.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"pipeline-config.js","sourceRoot":"","sources":["../src/pipeline-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID conflict detection (Algorithm A03).
|
|
3
|
+
*/
|
|
4
|
+
/** The type of conflict detected. */
|
|
5
|
+
export type ConflictType = 'duplicate_id' | 'reserved_word' | 'case_collision';
|
|
6
|
+
/** The severity of a conflict. */
|
|
7
|
+
export type ConflictSeverity = 'error' | 'warning';
|
|
8
|
+
/** Result of an ID conflict check. */
|
|
9
|
+
export interface ConflictResult {
|
|
10
|
+
readonly type: ConflictType;
|
|
11
|
+
readonly severity: ConflictSeverity;
|
|
12
|
+
readonly message: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Check if a new module ID conflicts with existing IDs or reserved words (Algorithm A03).
|
|
16
|
+
*
|
|
17
|
+
* Steps:
|
|
18
|
+
* 1. Exact duplicate detection.
|
|
19
|
+
* 2. Reserved word detection (first segment).
|
|
20
|
+
* 3. Case collision detection.
|
|
21
|
+
*
|
|
22
|
+
* @param newId - Canonical ID to be registered.
|
|
23
|
+
* @param existingIds - Set of already registered IDs.
|
|
24
|
+
* @param reservedWords - Reserved words that cannot be used as the first ID segment.
|
|
25
|
+
* @param lowercaseMap - Optional pre-built lowercase-to-original_id mapping for O(1) case collision.
|
|
26
|
+
* @returns ConflictResult if a conflict is found, null if the ID is safe.
|
|
27
|
+
*/
|
|
28
|
+
export declare function detectIdConflicts(newId: string, existingIds: ReadonlySet<string>, reservedWords: ReadonlySet<string>, lowercaseMap?: ReadonlyMap<string, string>): ConflictResult | null;
|
|
29
|
+
//# sourceMappingURL=conflicts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflicts.d.ts","sourceRoot":"","sources":["../../src/registry/conflicts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qCAAqC;AACrC,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAE/E,kCAAkC;AAClC,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnD,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,EAClC,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,cAAc,GAAG,IAAI,CA4CvB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID conflict detection (Algorithm A03).
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if a new module ID conflicts with existing IDs or reserved words (Algorithm A03).
|
|
6
|
+
*
|
|
7
|
+
* Steps:
|
|
8
|
+
* 1. Exact duplicate detection.
|
|
9
|
+
* 2. Reserved word detection (first segment).
|
|
10
|
+
* 3. Case collision detection.
|
|
11
|
+
*
|
|
12
|
+
* @param newId - Canonical ID to be registered.
|
|
13
|
+
* @param existingIds - Set of already registered IDs.
|
|
14
|
+
* @param reservedWords - Reserved words that cannot be used as the first ID segment.
|
|
15
|
+
* @param lowercaseMap - Optional pre-built lowercase-to-original_id mapping for O(1) case collision.
|
|
16
|
+
* @returns ConflictResult if a conflict is found, null if the ID is safe.
|
|
17
|
+
*/
|
|
18
|
+
export function detectIdConflicts(newId, existingIds, reservedWords, lowercaseMap) {
|
|
19
|
+
// Step 1: Exact duplicate
|
|
20
|
+
if (existingIds.has(newId)) {
|
|
21
|
+
return {
|
|
22
|
+
type: 'duplicate_id',
|
|
23
|
+
severity: 'error',
|
|
24
|
+
message: `Module ID '${newId}' is already registered`,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// Step 2: Reserved word check (first segment only)
|
|
28
|
+
const firstSegment = newId.split('.')[0];
|
|
29
|
+
if (reservedWords.has(firstSegment)) {
|
|
30
|
+
return {
|
|
31
|
+
type: 'reserved_word',
|
|
32
|
+
severity: 'error',
|
|
33
|
+
message: `Module ID '${newId}' contains reserved word '${firstSegment}'`,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// Step 3: Case collision
|
|
37
|
+
const normalizedNew = newId.toLowerCase();
|
|
38
|
+
if (lowercaseMap != null) {
|
|
39
|
+
const existing = lowercaseMap.get(normalizedNew);
|
|
40
|
+
if (existing != null && existing !== newId) {
|
|
41
|
+
return {
|
|
42
|
+
type: 'case_collision',
|
|
43
|
+
severity: 'warning',
|
|
44
|
+
message: `Module ID '${newId}' has a case collision with existing '${existing}'`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
for (const existingId of existingIds) {
|
|
50
|
+
if (existingId.toLowerCase() === normalizedNew && existingId !== newId) {
|
|
51
|
+
return {
|
|
52
|
+
type: 'case_collision',
|
|
53
|
+
severity: 'warning',
|
|
54
|
+
message: `Module ID '${newId}' has a case collision with existing '${existingId}'`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=conflicts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflicts.js","sourceRoot":"","sources":["../../src/registry/conflicts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,WAAgC,EAChC,aAAkC,EAClC,YAA0C;IAE1C,0BAA0B;IAC1B,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,cAAc,KAAK,yBAAyB;SACtD,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,cAAc,KAAK,6BAA6B,YAAY,GAAG;SACzE,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC3C,OAAO;gBACL,IAAI,EAAE,gBAAgB;gBACtB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,cAAc,KAAK,yCAAyC,QAAQ,GAAG;aACjF,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,UAAU,CAAC,WAAW,EAAE,KAAK,aAAa,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;gBACvE,OAAO;oBACL,IAAI,EAAE,gBAAgB;oBACtB,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,cAAc,KAAK,yCAAyC,UAAU,GAAG;iBACnF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Dependency resolution via Kahn's topological sort.
|
|
3
3
|
*/
|
|
4
4
|
import type { DependencyInfo } from './types.js';
|
|
5
|
-
export declare function resolveDependencies(modules: Array<[string, DependencyInfo[]]>, knownIds?: Set<string> | null): string[];
|
|
5
|
+
export declare function resolveDependencies(modules: Array<[string, DependencyInfo[]]>, knownIds?: Set<string> | null, moduleVersions?: Map<string, string> | Record<string, string> | null): string[];
|
|
6
6
|
//# sourceMappingURL=dependencies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/registry/dependencies.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/registry/dependencies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,EAC1C,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAC7B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GACnE,MAAM,EAAE,CAkFV"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Dependency resolution via Kahn's topological sort.
|
|
3
3
|
*/
|
|
4
|
-
import { CircularDependencyError,
|
|
5
|
-
|
|
4
|
+
import { CircularDependencyError, DependencyNotFoundError, DependencyVersionMismatchError, } from '../errors.js';
|
|
5
|
+
import { matchesVersionHint } from './version.js';
|
|
6
|
+
export function resolveDependencies(modules, knownIds, moduleVersions) {
|
|
6
7
|
if (modules.length === 0)
|
|
7
8
|
return [];
|
|
8
9
|
const ids = knownIds ?? new Set(modules.map(([id]) => id));
|
|
10
|
+
const versionLookup = (() => {
|
|
11
|
+
if (moduleVersions == null)
|
|
12
|
+
return null;
|
|
13
|
+
if (moduleVersions instanceof Map)
|
|
14
|
+
return moduleVersions;
|
|
15
|
+
return new Map(Object.entries(moduleVersions));
|
|
16
|
+
})();
|
|
9
17
|
// Build graph and in-degree
|
|
10
18
|
const graph = new Map();
|
|
11
19
|
const inDegree = new Map();
|
|
@@ -17,7 +25,24 @@ export function resolveDependencies(modules, knownIds) {
|
|
|
17
25
|
if (!ids.has(dep.moduleId)) {
|
|
18
26
|
if (dep.optional)
|
|
19
27
|
continue;
|
|
20
|
-
throw new
|
|
28
|
+
throw new DependencyNotFoundError(moduleId, dep.moduleId);
|
|
29
|
+
}
|
|
30
|
+
if (dep.version && versionLookup !== null) {
|
|
31
|
+
const actual = versionLookup.get(dep.moduleId);
|
|
32
|
+
if (actual === undefined) {
|
|
33
|
+
// Version constraint cannot be evaluated — surface this so a silent
|
|
34
|
+
// bypass does not masquerade as a satisfied constraint. Typical
|
|
35
|
+
// cause: the target module is registered but has no `version`
|
|
36
|
+
// string on its class and no YAML metadata declared one.
|
|
37
|
+
console.warn(`[apcore:registry] Cannot enforce version constraint '${dep.version}' on '${dep.moduleId}' for '${moduleId}': no version information available for the target module`);
|
|
38
|
+
}
|
|
39
|
+
else if (!matchesVersionHint(actual, dep.version)) {
|
|
40
|
+
if (dep.optional) {
|
|
41
|
+
console.warn(`[apcore:registry] Optional dependency '${dep.moduleId}' for module '${moduleId}' has version '${actual}' which does not satisfy constraint '${dep.version}', skipping`);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
throw new DependencyVersionMismatchError(moduleId, dep.moduleId, dep.version, actual);
|
|
45
|
+
}
|
|
21
46
|
}
|
|
22
47
|
if (!graph.has(dep.moduleId))
|
|
23
48
|
graph.set(dep.moduleId, new Set());
|
|
@@ -58,26 +83,50 @@ function extractCycle(modules, remaining) {
|
|
|
58
83
|
const depMap = new Map();
|
|
59
84
|
for (const [modId, deps] of modules) {
|
|
60
85
|
if (remaining.has(modId)) {
|
|
61
|
-
|
|
86
|
+
const uniq = new Set(deps.filter((d) => remaining.has(d.moduleId)).map((d) => d.moduleId));
|
|
87
|
+
depMap.set(modId, [...uniq].sort());
|
|
62
88
|
}
|
|
63
89
|
}
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
90
|
+
const sortedRemaining = [...remaining].sort();
|
|
91
|
+
for (const start of sortedRemaining) {
|
|
92
|
+
const cycle = dfsFindCycle(depMap, start);
|
|
93
|
+
if (cycle !== null)
|
|
94
|
+
return cycle;
|
|
95
|
+
}
|
|
96
|
+
return sortedRemaining;
|
|
97
|
+
}
|
|
98
|
+
function dfsFindCycle(depMap, start) {
|
|
99
|
+
const path = [];
|
|
100
|
+
const onPath = new Set();
|
|
101
|
+
const visited = new Set();
|
|
102
|
+
const stack = [[start, 0]];
|
|
103
|
+
while (stack.length > 0) {
|
|
104
|
+
const frame = stack[stack.length - 1];
|
|
105
|
+
const [node, idx] = frame;
|
|
106
|
+
if (idx === 0) {
|
|
107
|
+
if (onPath.has(node)) {
|
|
108
|
+
const startIdx = path.indexOf(node);
|
|
109
|
+
return [...path.slice(startIdx), node];
|
|
110
|
+
}
|
|
111
|
+
if (visited.has(node)) {
|
|
112
|
+
stack.pop();
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
visited.add(node);
|
|
116
|
+
onPath.add(node);
|
|
117
|
+
path.push(node);
|
|
118
|
+
}
|
|
119
|
+
const neighbors = depMap.get(node) ?? [];
|
|
120
|
+
if (idx < neighbors.length) {
|
|
121
|
+
frame[1] = idx + 1;
|
|
122
|
+
stack.push([neighbors[idx], 0]);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
onPath.delete(node);
|
|
126
|
+
path.pop();
|
|
127
|
+
stack.pop();
|
|
76
128
|
}
|
|
77
|
-
visited.push(nxt);
|
|
78
|
-
visitedSet.add(nxt);
|
|
79
|
-
current = nxt;
|
|
80
129
|
}
|
|
81
|
-
return
|
|
130
|
+
return null;
|
|
82
131
|
}
|
|
83
132
|
//# sourceMappingURL=dependencies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/registry/dependencies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/registry/dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-point.d.ts","sourceRoot":"","sources":["../../src/registry/entry-point.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"entry-point.d.ts","sourceRoot":"","sources":["../../src/registry/entry-point.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGlD;AAeD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACpC,OAAO,CAAC,OAAO,CAAC,CAmClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-point.js","sourceRoot":"","sources":["../../src/registry/entry-point.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"entry-point.js","sourceRoot":"","sources":["../../src/registry/entry-point.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,OAAO,CACL,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI;QAC7B,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,QAAQ;QACzC,MAAM,CAAC,cAAc,CAAC,IAAI,IAAI;QAC9B,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,QAAQ;QAC1C,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,QAAQ;QACzC,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,UAAU,CACxC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,IAAqC;IAErC,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;QAClC,MAAM,SAAS,GAAI,IAAI,CAAC,aAAa,CAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,sBAAsB,SAAS,aAAa,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gEAAgE;IAChE,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,UAAU,GAAc,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,kCAAkC,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,yDAAyD,CAAC,CAAC;AACjG,CAAC"}
|
package/dist/registry/index.d.ts
CHANGED
|
@@ -4,7 +4,10 @@ export type { ModuleDescriptor, DiscoveredModule, DependencyInfo } from './types
|
|
|
4
4
|
export { validateModule } from './validation.js';
|
|
5
5
|
export { resolveDependencies } from './dependencies.js';
|
|
6
6
|
export { scanExtensions, scanMultiRoot } from './scanner.js';
|
|
7
|
-
export { resolveEntryPoint
|
|
7
|
+
export { resolveEntryPoint } from './entry-point.js';
|
|
8
8
|
export { loadMetadata, parseDependencies, mergeModuleMetadata, loadIdMap } from './metadata.js';
|
|
9
|
-
export { getSchema
|
|
9
|
+
export { getSchema } from './schema-export.js';
|
|
10
|
+
export { VersionedStore, parseSemver, compareSemver, selectBestVersion } from './version.js';
|
|
11
|
+
export { detectIdConflicts } from './conflicts.js';
|
|
12
|
+
export type { ConflictResult, ConflictType, ConflictSeverity } from './conflicts.js';
|
|
10
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/registry/index.js
CHANGED
|
@@ -2,7 +2,9 @@ export { Registry } from './registry.js';
|
|
|
2
2
|
export { validateModule } from './validation.js';
|
|
3
3
|
export { resolveDependencies } from './dependencies.js';
|
|
4
4
|
export { scanExtensions, scanMultiRoot } from './scanner.js';
|
|
5
|
-
export { resolveEntryPoint
|
|
5
|
+
export { resolveEntryPoint } from './entry-point.js';
|
|
6
6
|
export { loadMetadata, parseDependencies, mergeModuleMetadata, loadIdMap } from './metadata.js';
|
|
7
|
-
export { getSchema
|
|
7
|
+
export { getSchema } from './schema-export.js';
|
|
8
|
+
export { VersionedStore, parseSemver, compareSemver, selectBestVersion } from './version.js';
|
|
9
|
+
export { detectIdConflicts } from './conflicts.js';
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/registry/metadata.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/registry/metadata.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBtE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,cAAc,EAAE,CAiB3F;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4CzB;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAoCpF"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import yaml from 'js-yaml';
|
|
5
5
|
import { ConfigError, ConfigNotFoundError } from '../errors.js';
|
|
6
|
+
import { mergeAnnotations, mergeExamples } from '../schema/annotations.js';
|
|
6
7
|
// Lazy-load Node.js built-in modules for browser compatibility
|
|
7
8
|
let _nodeFs = null;
|
|
8
9
|
try {
|
|
@@ -52,18 +53,38 @@ export function mergeModuleMetadata(moduleObj, meta) {
|
|
|
52
53
|
const codeTags = moduleObj['tags'] ?? [];
|
|
53
54
|
const codeVersion = moduleObj['version'] ?? '1.0.0';
|
|
54
55
|
const codeAnnotations = moduleObj['annotations'] ?? null;
|
|
55
|
-
const codeExamples = moduleObj['examples'] ??
|
|
56
|
+
const codeExamples = moduleObj['examples'] ?? null;
|
|
56
57
|
const codeMetadata = moduleObj['metadata'] ?? {};
|
|
57
58
|
const codeDocs = moduleObj['documentation'] ?? null;
|
|
58
59
|
const yamlMetadata = meta['metadata'] ?? {};
|
|
59
60
|
const mergedMetadata = { ...codeMetadata, ...yamlMetadata };
|
|
61
|
+
// Spec PROTOCOL_SPEC.md §4.13: annotations must be FIELD-LEVEL merged
|
|
62
|
+
// (YAML > code > defaults), not whole-replaced. The previous
|
|
63
|
+
// implementation passed `meta['annotations']` through verbatim, which
|
|
64
|
+
// silently dropped any code-set flag the YAML did not also set.
|
|
65
|
+
// Delegates to mergeAnnotations / mergeExamples in schema/annotations.ts.
|
|
66
|
+
const yamlAnnotations = meta['annotations'];
|
|
67
|
+
let mergedAnnotations;
|
|
68
|
+
if (yamlAnnotations == null && codeAnnotations == null) {
|
|
69
|
+
mergedAnnotations = null;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
mergedAnnotations = mergeAnnotations(yamlAnnotations, codeAnnotations);
|
|
73
|
+
}
|
|
74
|
+
const yamlExamples = meta['examples'];
|
|
75
|
+
const mergedExamples = mergeExamples(yamlExamples, codeExamples);
|
|
60
76
|
return {
|
|
61
77
|
description: meta['description'] || codeDesc,
|
|
62
78
|
name: meta['name'] || codeName,
|
|
79
|
+
// Tags use an explicit `!= null` check (not `||`) so a deliberately
|
|
80
|
+
// empty YAML list (`tags: []`) overrides code-set tags. The other
|
|
81
|
+
// scalar fields above use `||` because empty-string YAML is treated
|
|
82
|
+
// as "absent". Pinned by the "YAML empty array for tags overrides
|
|
83
|
+
// code tags" test in tests/registry/test-metadata.test.ts.
|
|
63
84
|
tags: meta['tags'] != null ? meta['tags'] : codeTags || [],
|
|
64
85
|
version: meta['version'] || codeVersion,
|
|
65
|
-
annotations:
|
|
66
|
-
examples:
|
|
86
|
+
annotations: mergedAnnotations,
|
|
87
|
+
examples: mergedExamples,
|
|
67
88
|
metadata: mergedMetadata,
|
|
68
89
|
documentation: meta['documentation'] || codeDocs,
|
|
69
90
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/registry/metadata.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/registry/metadata.ts"],"names":[],"mappings":"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"}
|