apcore-js 0.21.0 → 0.21.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/dist/acl-file.d.ts +12 -0
- package/dist/acl-file.d.ts.map +1 -0
- package/dist/acl-file.js +46 -0
- package/dist/acl-file.js.map +1 -0
- package/dist/acl.d.ts.map +1 -1
- package/dist/acl.js +20 -37
- package/dist/acl.js.map +1 -1
- package/dist/bindings.d.ts.map +1 -1
- package/dist/bindings.js +2 -21
- package/dist/bindings.js.map +1 -1
- package/dist/browser/index.d.ts +77 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +78 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/builtin-steps.js +2 -2
- package/dist/builtin-steps.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +12 -4
- package/dist/client.js.map +1 -1
- package/dist/config-defaults.d.ts +30 -0
- package/dist/config-defaults.d.ts.map +1 -0
- package/dist/config-defaults.js +83 -0
- package/dist/config-defaults.js.map +1 -0
- package/dist/config.d.ts +12 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +27 -125
- package/dist/config.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/middleware/tracing-otel-default.d.ts +16 -0
- package/dist/middleware/tracing-otel-default.d.ts.map +1 -0
- package/dist/middleware/tracing-otel-default.js +25 -0
- package/dist/middleware/tracing-otel-default.js.map +1 -0
- package/dist/middleware/tracing.d.ts.map +1 -1
- package/dist/middleware/tracing.js +9 -10
- package/dist/middleware/tracing.js.map +1 -1
- package/dist/registry/metadata-pure.d.ts +13 -0
- package/dist/registry/metadata-pure.d.ts.map +1 -0
- package/dist/registry/metadata-pure.js +67 -0
- package/dist/registry/metadata-pure.js.map +1 -0
- package/dist/registry/metadata.d.ts +8 -4
- package/dist/registry/metadata.d.ts.map +1 -1
- package/dist/registry/metadata.js +9 -70
- package/dist/registry/metadata.js.map +1 -1
- package/dist/registry/multi-class.d.ts +0 -31
- package/dist/registry/multi-class.d.ts.map +1 -1
- package/dist/registry/registry.d.ts +0 -8
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +2 -2
- package/dist/registry/registry.js.map +1 -1
- package/dist/registry/scanner.d.ts.map +1 -1
- package/dist/registry/scanner.js +3 -15
- package/dist/registry/scanner.js.map +1 -1
- package/dist/schema/loader-pure.d.ts +24 -0
- package/dist/schema/loader-pure.d.ts.map +1 -0
- package/dist/schema/loader-pure.js +153 -0
- package/dist/schema/loader-pure.js.map +1 -0
- package/dist/schema/loader.d.ts +14 -30
- package/dist/schema/loader.d.ts.map +1 -1
- package/dist/schema/loader.js +20 -201
- package/dist/schema/loader.js.map +1 -1
- package/dist/schema/ref-resolver.d.ts.map +1 -1
- package/dist/schema/ref-resolver.js +5 -19
- package/dist/schema/ref-resolver.js.map +1 -1
- package/dist/sys-modules/control.d.ts +0 -78
- package/dist/sys-modules/control.d.ts.map +1 -1
- package/dist/sys-modules/health.d.ts +0 -138
- package/dist/sys-modules/health.d.ts.map +1 -1
- package/dist/sys-modules/install.d.ts +12 -0
- package/dist/sys-modules/install.d.ts.map +1 -0
- package/dist/sys-modules/install.js +14 -0
- package/dist/sys-modules/install.js.map +1 -0
- package/dist/sys-modules/manifest.d.ts +1 -141
- package/dist/sys-modules/manifest.d.ts.map +1 -1
- package/dist/sys-modules/overrides-file.d.ts +14 -0
- package/dist/sys-modules/overrides-file.d.ts.map +1 -0
- package/dist/sys-modules/overrides-file.js +31 -0
- package/dist/sys-modules/overrides-file.js.map +1 -0
- package/dist/sys-modules/registration.d.ts.map +1 -1
- package/dist/sys-modules/registration.js +22 -12
- package/dist/sys-modules/registration.js.map +1 -1
- package/dist/sys-modules/toggle.d.ts +0 -70
- package/dist/sys-modules/toggle.d.ts.map +1 -1
- package/dist/sys-modules/usage.d.ts +1 -132
- package/dist/sys-modules/usage.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -11
- package/dist/utils/index.js.map +1 -1
- package/package.json +17 -5
package/dist/schema/loader.js
CHANGED
|
@@ -1,41 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SchemaLoader — primary entry point for the schema system.
|
|
2
|
+
* SchemaLoader — primary entry point for the Node-side schema system.
|
|
3
3
|
*
|
|
4
|
-
* Uses TypeBox for schema representation. Since TypeBox schemas ARE JSON
|
|
5
|
-
* the conversion layer is minimal.
|
|
4
|
+
* Uses TypeBox for schema representation. Since TypeBox schemas ARE JSON
|
|
5
|
+
* Schema, the conversion layer is minimal.
|
|
6
|
+
*
|
|
7
|
+
* Browser-safe pieces (`jsonSchemaToTypeBox`, `contentHashAsync`) live in
|
|
8
|
+
* `./loader-pure.ts` and are re-exported here so existing imports keep
|
|
9
|
+
* working from the Node entry. Code that must run in the browser should
|
|
10
|
+
* import them from `./loader-pure.ts` (or from the package `./browser`
|
|
11
|
+
* entry) directly.
|
|
6
12
|
*/
|
|
7
|
-
import {
|
|
13
|
+
import { createHash } from 'node:crypto';
|
|
14
|
+
import { join, resolve } from 'node:path';
|
|
15
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
8
16
|
import yaml from 'js-yaml';
|
|
9
17
|
import { SchemaNotFoundError, SchemaParseError } from '../errors.js';
|
|
10
18
|
import { RefResolver } from './ref-resolver.js';
|
|
11
19
|
import { SchemaStrategy } from './types.js';
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
let _nodeFs = null;
|
|
15
|
-
let _nodePath = null;
|
|
16
|
-
let _nodeCrypto = null;
|
|
17
|
-
try {
|
|
18
|
-
_nodeFs = await import('node:fs');
|
|
19
|
-
}
|
|
20
|
-
catch { /* browser environment */ }
|
|
21
|
-
try {
|
|
22
|
-
_nodePath = await import('node:path');
|
|
23
|
-
}
|
|
24
|
-
catch { /* browser environment */ }
|
|
25
|
-
try {
|
|
26
|
-
_nodeCrypto = await import('node:crypto');
|
|
27
|
-
}
|
|
28
|
-
catch { /* browser environment */ }
|
|
20
|
+
import { jsonSchemaToTypeBox, sortedKeysStringify } from './loader-pure.js';
|
|
21
|
+
export { jsonSchemaToTypeBox, contentHashAsync, sortedKeysStringify, } from './loader-pure.js';
|
|
29
22
|
export class SchemaLoader {
|
|
30
23
|
_config;
|
|
31
24
|
_schemasDir;
|
|
32
25
|
_resolver;
|
|
33
26
|
_schemaCache = new Map();
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
_contentCache = new Map(); // sha256hex → model
|
|
27
|
+
_pathIndex = new Map();
|
|
28
|
+
_contentCache = new Map();
|
|
37
29
|
constructor(config, schemasDir) {
|
|
38
|
-
const { resolve } = _nodePath;
|
|
39
30
|
this._config = config;
|
|
40
31
|
if (schemasDir != null) {
|
|
41
32
|
this._schemasDir = resolve(schemasDir);
|
|
@@ -50,8 +41,6 @@ export class SchemaLoader {
|
|
|
50
41
|
const cached = this._schemaCache.get(moduleId);
|
|
51
42
|
if (cached)
|
|
52
43
|
return cached;
|
|
53
|
-
const { existsSync, readFileSync } = _nodeFs;
|
|
54
|
-
const { join } = _nodePath;
|
|
55
44
|
const filePath = join(this._schemasDir, moduleId.replace(/\./g, '/') + '.schema.yaml');
|
|
56
45
|
if (!existsSync(filePath)) {
|
|
57
46
|
throw new SchemaNotFoundError(moduleId);
|
|
@@ -117,7 +106,6 @@ export class SchemaLoader {
|
|
|
117
106
|
yaml_only: SchemaStrategy.YAML_ONLY,
|
|
118
107
|
};
|
|
119
108
|
const strategy = strategyMap[rawStrategy] ?? SchemaStrategy.YAML_FIRST;
|
|
120
|
-
// Check path index first
|
|
121
109
|
const pathKey = `${moduleId}:${strategy}`;
|
|
122
110
|
const cachedHash = this._pathIndex.get(pathKey);
|
|
123
111
|
if (cachedHash) {
|
|
@@ -151,8 +139,6 @@ export class SchemaLoader {
|
|
|
151
139
|
if (result === null) {
|
|
152
140
|
throw new SchemaNotFoundError(moduleId);
|
|
153
141
|
}
|
|
154
|
-
// Store in two-level cache — hash BOTH schemas to avoid cross-module collision
|
|
155
|
-
// when two distinct modules share an identical input schema but differ in output.
|
|
156
142
|
const digest = contentHash({ input: result[0].jsonSchema, output: result[1].jsonSchema });
|
|
157
143
|
if (!this._contentCache.has(digest)) {
|
|
158
144
|
this._contentCache.set(digest, result);
|
|
@@ -186,180 +172,13 @@ export class SchemaLoader {
|
|
|
186
172
|
this._resolver.clearCache();
|
|
187
173
|
}
|
|
188
174
|
}
|
|
189
|
-
// ---------------------------------------------------------------------------
|
|
190
|
-
// Content-addressable hashing (Issue #44 §5)
|
|
191
|
-
// ---------------------------------------------------------------------------
|
|
192
|
-
function sortedKeysStringify(obj) {
|
|
193
|
-
if (obj === null || typeof obj !== 'object')
|
|
194
|
-
return JSON.stringify(obj);
|
|
195
|
-
if (Array.isArray(obj))
|
|
196
|
-
return `[${obj.map(sortedKeysStringify).join(',')}]`;
|
|
197
|
-
const sorted = Object.keys(obj).sort();
|
|
198
|
-
const pairs = sorted.map((k) => `${JSON.stringify(k)}:${sortedKeysStringify(obj[k])}`);
|
|
199
|
-
return `{${pairs.join(',')}}`;
|
|
200
|
-
}
|
|
201
175
|
/**
|
|
202
|
-
* Compute the SHA-256 hex digest of the canonical JSON serialization of a
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
* Sync API — Node.js only. In environments without `node:crypto` (browsers,
|
|
206
|
-
* some edge runtimes), this throws so callers cannot accidentally consume a
|
|
207
|
-
* different hash than apcore-python / apcore-rust would produce. Spec
|
|
208
|
-
* §schema-system §4.15.5 requires sha256 of canonical JSON; a non-sha256
|
|
209
|
-
* fallback collides with cross-language cache keys (sync finding A-D-033).
|
|
210
|
-
*
|
|
211
|
-
* Use {@link contentHashAsync} in browsers — it uses WebCrypto SubtleCrypto
|
|
212
|
-
* to compute the same SHA-256 digest asynchronously.
|
|
176
|
+
* Compute the SHA-256 hex digest of the canonical JSON serialization of a
|
|
177
|
+
* schema. Sync — Node-only. Use {@link contentHashAsync} from the browser
|
|
178
|
+
* entry (or this file) for the WebCrypto-backed equivalent.
|
|
213
179
|
*/
|
|
214
180
|
export function contentHash(schema) {
|
|
215
181
|
const canonical = sortedKeysStringify(schema);
|
|
216
|
-
|
|
217
|
-
return _nodeCrypto.createHash('sha256').update(canonical).digest('hex');
|
|
218
|
-
}
|
|
219
|
-
throw new Error('contentHash() requires node:crypto for synchronous SHA-256. ' +
|
|
220
|
-
'In browser/edge environments, call contentHashAsync() instead — ' +
|
|
221
|
-
'it uses the WebCrypto SubtleCrypto API to produce the spec-compliant digest.');
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Compute the SHA-256 hex digest of the canonical JSON serialization of a schema
|
|
225
|
-
* — async, runtime-portable variant.
|
|
226
|
-
*
|
|
227
|
-
* Uses Node's `node:crypto` when available, otherwise falls back to the
|
|
228
|
-
* WebCrypto `crypto.subtle.digest('SHA-256', ...)` API present in modern
|
|
229
|
-
* browsers and edge runtimes. Output is identical across all paths and
|
|
230
|
-
* matches the Python/Rust SDKs (sync finding A-D-033).
|
|
231
|
-
*/
|
|
232
|
-
export async function contentHashAsync(schema) {
|
|
233
|
-
const canonical = sortedKeysStringify(schema);
|
|
234
|
-
if (_nodeCrypto) {
|
|
235
|
-
return _nodeCrypto.createHash('sha256').update(canonical).digest('hex');
|
|
236
|
-
}
|
|
237
|
-
const subtle = (typeof globalThis !== 'undefined'
|
|
238
|
-
? globalThis.crypto?.subtle
|
|
239
|
-
: undefined);
|
|
240
|
-
if (!subtle) {
|
|
241
|
-
throw new Error('contentHashAsync(): no SHA-256 implementation available — neither node:crypto nor WebCrypto SubtleCrypto is present in this runtime.');
|
|
242
|
-
}
|
|
243
|
-
const data = new TextEncoder().encode(canonical);
|
|
244
|
-
const digest = await subtle.digest('SHA-256', data);
|
|
245
|
-
const bytes = new Uint8Array(digest);
|
|
246
|
-
let hex = '';
|
|
247
|
-
for (const b of bytes) {
|
|
248
|
-
hex += b.toString(16).padStart(2, '0');
|
|
249
|
-
}
|
|
250
|
-
return hex;
|
|
251
|
-
}
|
|
252
|
-
// ---------------------------------------------------------------------------
|
|
253
|
-
// JSON Schema → TypeBox conversion
|
|
254
|
-
// ---------------------------------------------------------------------------
|
|
255
|
-
/**
|
|
256
|
-
* Convert a JSON Schema dict to a TypeBox TSchema.
|
|
257
|
-
* Supports recursive schemas via $id + $ref: "#", and oneOf/anyOf/allOf/not.
|
|
258
|
-
*/
|
|
259
|
-
export function jsonSchemaToTypeBox(schema) {
|
|
260
|
-
// Recursive schema: $id present → wrap in Type.Recursive to support self-references
|
|
261
|
-
if ('$id' in schema && typeof schema['$id'] === 'string') {
|
|
262
|
-
const $id = schema['$id'];
|
|
263
|
-
return Type.Recursive((self) => _convert(schema, self, $id), { $id });
|
|
264
|
-
}
|
|
265
|
-
return _convert(schema, undefined, undefined);
|
|
266
|
-
}
|
|
267
|
-
function _convert(schema, self, selfId) {
|
|
268
|
-
// Handle $ref — may be a self-reference in a recursive schema
|
|
269
|
-
if ('$ref' in schema) {
|
|
270
|
-
const ref = schema['$ref'];
|
|
271
|
-
if (self !== undefined && (ref === '#' || ref === selfId)) {
|
|
272
|
-
return self;
|
|
273
|
-
}
|
|
274
|
-
// Unresolved external $ref (should have been inlined by RefResolver)
|
|
275
|
-
return Type.Unknown();
|
|
276
|
-
}
|
|
277
|
-
const schemaType = schema['type'];
|
|
278
|
-
let result;
|
|
279
|
-
if (schemaType === 'object')
|
|
280
|
-
result = _convertObject(schema, self, selfId);
|
|
281
|
-
else if (schemaType === 'array')
|
|
282
|
-
result = _convertArray(schema, self, selfId);
|
|
283
|
-
else if (schemaType === 'string')
|
|
284
|
-
result = _convertString(schema);
|
|
285
|
-
else if (schemaType === 'integer')
|
|
286
|
-
result = _convertNumeric(schema, Type.Integer);
|
|
287
|
-
else if (schemaType === 'number')
|
|
288
|
-
result = _convertNumeric(schema, Type.Number);
|
|
289
|
-
else if (schemaType === 'boolean')
|
|
290
|
-
result = Type.Boolean();
|
|
291
|
-
else if (schemaType === 'null')
|
|
292
|
-
result = Type.Null();
|
|
293
|
-
else
|
|
294
|
-
result = _convertCombinator(schema, self, selfId);
|
|
295
|
-
// Preserve JSON Schema metadata
|
|
296
|
-
if (typeof schema['description'] === 'string')
|
|
297
|
-
result['description'] = schema['description'];
|
|
298
|
-
if (typeof schema['title'] === 'string')
|
|
299
|
-
result['title'] = schema['title'];
|
|
300
|
-
return result;
|
|
301
|
-
}
|
|
302
|
-
function _convertObject(schema, self, selfId) {
|
|
303
|
-
const properties = schema['properties'];
|
|
304
|
-
const required = new Set(schema['required'] ?? []);
|
|
305
|
-
if (properties) {
|
|
306
|
-
const typeboxProps = {};
|
|
307
|
-
for (const [name, propSchema] of Object.entries(properties)) {
|
|
308
|
-
const propType = _convert(propSchema, self, selfId);
|
|
309
|
-
typeboxProps[name] = required.has(name) ? propType : Type.Optional(propType);
|
|
310
|
-
}
|
|
311
|
-
return Type.Object(typeboxProps);
|
|
312
|
-
}
|
|
313
|
-
return Type.Record(Type.String(), Type.Unknown());
|
|
314
|
-
}
|
|
315
|
-
function _convertArray(schema, self, selfId) {
|
|
316
|
-
const items = schema['items'];
|
|
317
|
-
return items
|
|
318
|
-
? Type.Array(_convert(items, self, selfId))
|
|
319
|
-
: Type.Array(Type.Unknown());
|
|
320
|
-
}
|
|
321
|
-
function _convertString(schema) {
|
|
322
|
-
const opts = {};
|
|
323
|
-
for (const key of ['minLength', 'maxLength', 'pattern', 'format']) {
|
|
324
|
-
if (key in schema)
|
|
325
|
-
opts[key] = schema[key];
|
|
326
|
-
}
|
|
327
|
-
return Type.String(opts);
|
|
328
|
-
}
|
|
329
|
-
function _convertNumeric(schema, factory) {
|
|
330
|
-
const opts = {};
|
|
331
|
-
for (const key of ['minimum', 'maximum', 'exclusiveMinimum', 'exclusiveMaximum', 'multipleOf']) {
|
|
332
|
-
if (key in schema)
|
|
333
|
-
opts[key] = schema[key];
|
|
334
|
-
}
|
|
335
|
-
return factory(opts);
|
|
336
|
-
}
|
|
337
|
-
function _convertCombinator(schema, self, selfId) {
|
|
338
|
-
if ('enum' in schema) {
|
|
339
|
-
const values = schema['enum'];
|
|
340
|
-
return Type.Union(values.map((v) => v === null ? Type.Null() : Type.Literal(v)));
|
|
341
|
-
}
|
|
342
|
-
if ('const' in schema) {
|
|
343
|
-
const value = schema['const'];
|
|
344
|
-
return value === null ? Type.Null() : Type.Literal(value);
|
|
345
|
-
}
|
|
346
|
-
if ('oneOf' in schema) {
|
|
347
|
-
const branches = schema['oneOf'].map((s) => _convert(s, self, selfId));
|
|
348
|
-
// Mark with ONEOF_MARKER so SchemaValidator can apply exhaustive oneOf semantics
|
|
349
|
-
const result = Type.Union(branches);
|
|
350
|
-
result[ONEOF_MARKER] = 'oneOf';
|
|
351
|
-
return result;
|
|
352
|
-
}
|
|
353
|
-
if ('anyOf' in schema) {
|
|
354
|
-
return Type.Union(schema['anyOf'].map((s) => _convert(s, self, selfId)));
|
|
355
|
-
}
|
|
356
|
-
if ('allOf' in schema) {
|
|
357
|
-
return Type.Intersect(schema['allOf'].map((s) => _convert(s, self, selfId)));
|
|
358
|
-
}
|
|
359
|
-
if ('not' in schema) {
|
|
360
|
-
const inner = _convert(schema['not'], self, selfId);
|
|
361
|
-
return Type.Not(inner);
|
|
362
|
-
}
|
|
363
|
-
return Type.Unknown();
|
|
182
|
+
return createHash('sha256').update(canonical).digest('hex');
|
|
364
183
|
}
|
|
365
184
|
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/schema/loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/schema/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-resolver.d.ts","sourceRoot":"","sources":["../../src/schema/ref-resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"ref-resolver.d.ts","sourceRoot":"","sources":["../../src/schema/ref-resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAmD;gBAEzD,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW;IAKrD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAW9F,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,KAAK,GAAE,MAAU,EACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAC3C,OAAO;IAyCV,OAAO,CAAC,YAAY;IA+CpB,OAAO,CAAC,SAAS;IAyBjB,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,SAAS;IA0CjB,UAAU,IAAI,IAAI;CAGnB"}
|
|
@@ -1,27 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* $ref resolution for JSON Schema documents following Algorithm A05.
|
|
3
3
|
*/
|
|
4
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
5
|
+
import * as nodePath from 'node:path';
|
|
6
|
+
import { dirname, resolve } from 'node:path';
|
|
4
7
|
import yaml from 'js-yaml';
|
|
5
8
|
import { SchemaCircularRefError, SchemaNotFoundError, SchemaParseError } from '../errors.js';
|
|
6
9
|
import { deepCopy } from '../utils/index.js';
|
|
7
|
-
// Lazy-load Node.js built-in modules for browser compatibility
|
|
8
|
-
let _nodeFs = null;
|
|
9
|
-
let _nodePath = null;
|
|
10
|
-
try {
|
|
11
|
-
_nodeFs = await import('node:fs');
|
|
12
|
-
}
|
|
13
|
-
catch { /* browser environment */ }
|
|
14
|
-
try {
|
|
15
|
-
_nodePath = await import('node:path');
|
|
16
|
-
}
|
|
17
|
-
catch { /* browser environment */ }
|
|
18
10
|
const INLINE_SENTINEL = '__inline__';
|
|
19
11
|
export class RefResolver {
|
|
20
12
|
_schemasDir;
|
|
21
13
|
_maxDepth;
|
|
22
14
|
_fileCache = new Map();
|
|
23
15
|
constructor(schemasDir, maxDepth = 32) {
|
|
24
|
-
const { resolve } = _nodePath;
|
|
25
16
|
this._schemasDir = resolve(schemasDir);
|
|
26
17
|
this._maxDepth = maxDepth;
|
|
27
18
|
}
|
|
@@ -106,7 +97,6 @@ export class RefResolver {
|
|
|
106
97
|
return node;
|
|
107
98
|
}
|
|
108
99
|
_parseRef(refString, currentFile) {
|
|
109
|
-
const { resolve, dirname } = _nodePath;
|
|
110
100
|
if (refString.startsWith('#')) {
|
|
111
101
|
const pointer = refString.slice(1);
|
|
112
102
|
if (currentFile)
|
|
@@ -129,21 +119,19 @@ export class RefResolver {
|
|
|
129
119
|
return [resolvedPath, ''];
|
|
130
120
|
}
|
|
131
121
|
_assertWithinSchemasDir(resolvedPath, refString) {
|
|
132
|
-
const pathMod = _nodePath;
|
|
133
122
|
if (resolvedPath === this._schemasDir)
|
|
134
123
|
return;
|
|
135
|
-
const rel =
|
|
124
|
+
const rel = nodePath.relative(this._schemasDir, resolvedPath);
|
|
136
125
|
// A path is inside schemasDir iff its relative form is non-empty, not
|
|
137
126
|
// absolute, and does not start with a parent-directory traversal segment.
|
|
138
127
|
// Using path.relative() makes this check cross-platform — the previous
|
|
139
128
|
// startsWith(schemasDir + '/') check was hard-coded to POSIX separators
|
|
140
129
|
// and silently disabled on Windows where resolve() emits backslash paths.
|
|
141
|
-
if (!rel ||
|
|
130
|
+
if (!rel || nodePath.isAbsolute(rel) || rel === '..' || rel.startsWith('..' + nodePath.sep)) {
|
|
142
131
|
throw new SchemaNotFoundError(`Reference '${refString}' resolves outside schemas directory`);
|
|
143
132
|
}
|
|
144
133
|
}
|
|
145
134
|
_convertCanonicalToPath(uri) {
|
|
146
|
-
const { resolve } = _nodePath;
|
|
147
135
|
const remainder = uri.slice('apcore://'.length);
|
|
148
136
|
const parts = remainder.split('/');
|
|
149
137
|
const canonicalId = parts[0];
|
|
@@ -182,8 +170,6 @@ export class RefResolver {
|
|
|
182
170
|
if (filePath === INLINE_SENTINEL) {
|
|
183
171
|
return this._fileCache.get(INLINE_SENTINEL) ?? {};
|
|
184
172
|
}
|
|
185
|
-
const { resolve } = _nodePath;
|
|
186
|
-
const { existsSync, readFileSync } = _nodeFs;
|
|
187
173
|
const resolved = resolve(filePath);
|
|
188
174
|
const cached = this._fileCache.get(resolved);
|
|
189
175
|
if (cached !== undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-resolver.js","sourceRoot":"","sources":["../../src/schema/ref-resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"ref-resolver.js","sourceRoot":"","sources":["../../src/schema/ref-resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,eAAe,GAAG,YAAY,CAAC;AAErC,MAAM,OAAO,WAAW;IACd,WAAW,CAAS;IACpB,SAAS,CAAS;IAClB,UAAU,GAAyC,IAAI,GAAG,EAAE,CAAC;IAErE,YAAY,UAAkB,EAAE,WAAmB,EAAE;QACnD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,MAA+B,EAAE,WAA2B;QAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,UAAU,CACR,SAAiB,EACjB,WAA0B,EAC1B,WAAyB,EACzB,QAAgB,CAAC,EACjB,WAA4C;QAE5C,MAAM,OAAO,GAAG,WAAW,IAAI,IAAI,GAAG,EAAU,CAAC;QAEjD,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,sBAAsB,CAC9B,2BAA2B,IAAI,CAAC,SAAS,wBAAwB,SAAS,EAAE,CAC7E,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEvB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAE1E,IAAI,MAAM,GAAY,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,WAAW,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3F,MAAM,CAAC,MAAM,CAAC,MAAiC,EAAE,WAAW,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,KAAK,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE5E,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5E,MAAM,SAAS,GAAG,MAAiC,CAAC;YACpD,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;gBACxB,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAW,CAAC;gBAC9C,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;gBACzB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACnF,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,YAAY,CAClB,IAAa,EACb,WAA0B,EAC1B,WAAwB,EACxB,KAAa;QAEb,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtE,MAAM,OAAO,GAAG,IAA+B,CAAC;YAChD,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAW,CAAC;gBAC5C,MAAM,WAAW,GAA4B,EAAE,CAAC;gBAChD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC,KAAK,MAAM;wBAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvC,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAC9B,SAAS,EACT,WAAW,EACX,IAAI,GAAG,CAAC,WAAW,CAAC,EACpB,KAAK,EACL,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACzD,CAAC;gBACF,oBAAoB;gBACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;oBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC5D,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAClF,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,QAAmC,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACvC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;oBAChF,IAAI,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;gBAC3E,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvB,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,SAAS,CAAC,SAAiB,EAAE,WAA0B;QAC7D,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,WAAW;gBAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC/C,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;YACnE,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YACtD,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACnE,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACtD,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC;IAEO,uBAAuB,CAAC,YAAoB,EAAE,SAAiB;QACrE,IAAI,YAAY,KAAK,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC9D,sEAAsE;QACtE,0EAA0E;QAC1E,uEAAuE;QACvE,wEAAwE;QACxE,0EAA0E;QAC1E,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5F,MAAM,IAAI,mBAAmB,CAC3B,cAAc,SAAS,sCAAsC,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,GAAW;QACzC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,cAAc,CAAC;QACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IAEO,mBAAmB,CAAC,QAAiB,EAAE,OAAe,EAAE,SAAiB;QAC/E,IAAI,CAAC,OAAO;YAAE,OAAO,QAAQ,CAAC;QAE9B,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC9C,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,OAAO,GAAG,QAAQ,CAAC;QACvB,KAAK,MAAM,UAAU,IAAI,QAAQ,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACnE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/E,MAAM,GAAG,GAAG,OAAkC,CAAC;gBAC/C,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;oBACnB,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,mBAAmB,CAAC,GAAG,SAAS,cAAc,OAAO,cAAc,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,mBAAmB,CAAC,GAAG,SAAS,cAAc,OAAO,cAAc,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,SAAS,CAAC,QAAgB;QAChC,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAExC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,gBAAgB,CAAC,mBAAmB,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,gBAAgB,CACxB,eAAe,QAAQ,gCAAgC,OAAO,MAAM,EAAE,CACvE,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAiC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* System control modules -- runtime config update and hot-reload.
|
|
3
3
|
*/
|
|
4
|
-
import type { Registry } from '../registry/registry.js';
|
|
5
4
|
import type { EventEmitter } from '../events/emitter.js';
|
|
6
5
|
import type { Config } from '../config.js';
|
|
7
6
|
import type { AuditStore } from './audit.js';
|
|
@@ -75,81 +74,4 @@ export declare class UpdateConfigModule {
|
|
|
75
74
|
private _persistOverride;
|
|
76
75
|
private _validateInputs;
|
|
77
76
|
}
|
|
78
|
-
/** @internal */
|
|
79
|
-
export declare class ReloadModule {
|
|
80
|
-
readonly description = "Hot-reload a module by safe unregister and re-discover";
|
|
81
|
-
readonly annotations: {
|
|
82
|
-
readonly: boolean;
|
|
83
|
-
destructive: boolean;
|
|
84
|
-
idempotent: boolean;
|
|
85
|
-
requiresApproval: boolean;
|
|
86
|
-
openWorld: boolean;
|
|
87
|
-
streaming: boolean;
|
|
88
|
-
cacheable: boolean;
|
|
89
|
-
cacheTtl: number;
|
|
90
|
-
cacheKeyFields: null;
|
|
91
|
-
paginated: boolean;
|
|
92
|
-
paginationStyle: "cursor";
|
|
93
|
-
};
|
|
94
|
-
readonly inputSchema: {
|
|
95
|
-
type: "object";
|
|
96
|
-
properties: {
|
|
97
|
-
module_id: {
|
|
98
|
-
type: "string";
|
|
99
|
-
description: string;
|
|
100
|
-
};
|
|
101
|
-
path_filter: {
|
|
102
|
-
type: "string";
|
|
103
|
-
description: string;
|
|
104
|
-
};
|
|
105
|
-
reload_dependents: {
|
|
106
|
-
type: "boolean";
|
|
107
|
-
description: string;
|
|
108
|
-
};
|
|
109
|
-
reason: {
|
|
110
|
-
type: "string";
|
|
111
|
-
description: string;
|
|
112
|
-
};
|
|
113
|
-
};
|
|
114
|
-
required: string[];
|
|
115
|
-
};
|
|
116
|
-
readonly outputSchema: {
|
|
117
|
-
type: "object";
|
|
118
|
-
properties: {
|
|
119
|
-
success: {
|
|
120
|
-
type: "boolean";
|
|
121
|
-
description: string;
|
|
122
|
-
};
|
|
123
|
-
module_id: {
|
|
124
|
-
type: "string";
|
|
125
|
-
description: string;
|
|
126
|
-
};
|
|
127
|
-
reloaded_modules: {
|
|
128
|
-
type: "array";
|
|
129
|
-
description: string;
|
|
130
|
-
};
|
|
131
|
-
previous_version: {
|
|
132
|
-
type: "string";
|
|
133
|
-
description: string;
|
|
134
|
-
};
|
|
135
|
-
new_version: {
|
|
136
|
-
type: "string";
|
|
137
|
-
description: string;
|
|
138
|
-
};
|
|
139
|
-
reload_duration_ms: {
|
|
140
|
-
type: "number";
|
|
141
|
-
description: string;
|
|
142
|
-
};
|
|
143
|
-
};
|
|
144
|
-
required: string[];
|
|
145
|
-
};
|
|
146
|
-
private readonly _registry;
|
|
147
|
-
private readonly _emitter;
|
|
148
|
-
private readonly _auditStore;
|
|
149
|
-
constructor(registry: Registry, eventEmitter: EventEmitter, auditStore?: AuditStore);
|
|
150
|
-
execute(inputs: Record<string, unknown>, context: unknown): Promise<Record<string, unknown>>;
|
|
151
|
-
private _reloadSingleModule;
|
|
152
|
-
private _reloadWithPathFilter;
|
|
153
|
-
private _validateInputs;
|
|
154
|
-
}
|
|
155
77
|
//# sourceMappingURL=control.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../src/sys-modules/control.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../src/sys-modules/control.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAarD,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,WAAW,0DAA0D;IAC9E,QAAQ,CAAC,WAAW;;;;;;;;;;;;MAAoO;IACxP,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;MAQlB;IACF,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;MASnB;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;gBAE5C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB;IAQrF,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA8CnF,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,eAAe;CAYxB"}
|