apcore-toolkit 0.5.0 → 0.6.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 +23 -0
- package/LICENSE +1 -1
- package/dist/binding-loader.d.ts +5 -3
- package/dist/binding-loader.d.ts.map +1 -1
- package/dist/binding-loader.js +37 -6
- package/dist/binding-loader.js.map +1 -1
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/formatting/index.d.ts +2 -0
- package/dist/formatting/index.d.ts.map +1 -1
- package/dist/formatting/index.js +1 -0
- package/dist/formatting/index.js.map +1 -1
- package/dist/formatting/surface.d.ts +44 -0
- package/dist/formatting/surface.d.ts.map +1 -0
- package/dist/formatting/surface.js +338 -0
- package/dist/formatting/surface.js.map +1 -0
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +42 -3
- package/dist/openapi.js.map +1 -1
- package/dist/output/base-writer.d.ts.map +1 -1
- package/dist/output/base-writer.js +4 -1
- package/dist/output/base-writer.js.map +1 -1
- package/dist/output/factory.d.ts +1 -1
- package/dist/output/factory.js +2 -2
- package/dist/output/factory.js.map +1 -1
- package/dist/output/http-proxy-writer.d.ts +9 -2
- package/dist/output/http-proxy-writer.d.ts.map +1 -1
- package/dist/output/http-proxy-writer.js +43 -8
- package/dist/output/http-proxy-writer.js.map +1 -1
- package/dist/output/registry-writer.d.ts.map +1 -1
- package/dist/output/registry-writer.js +8 -11
- package/dist/output/registry-writer.js.map +1 -1
- package/dist/output/typescript-writer.js +1 -1
- package/dist/output/typescript-writer.js.map +1 -1
- package/dist/output/verifiers.d.ts +2 -0
- package/dist/output/verifiers.d.ts.map +1 -1
- package/dist/output/verifiers.js +18 -6
- package/dist/output/verifiers.js.map +1 -1
- package/dist/output/verify-core.d.ts +3 -1
- package/dist/output/verify-core.d.ts.map +1 -1
- package/dist/output/verify-core.js +12 -2
- package/dist/output/verify-core.js.map +1 -1
- package/dist/output/yaml-writer.js +1 -1
- package/dist/output/yaml-writer.js.map +1 -1
- package/dist/scanner.d.ts +45 -5
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +92 -42
- package/dist/scanner.js.map +1 -1
- package/package.json +5 -4
|
@@ -12,6 +12,8 @@ export declare class MagicBytesVerifier implements Verifier {
|
|
|
12
12
|
verify(path: string, _moduleId: string): VerifyResult;
|
|
13
13
|
}
|
|
14
14
|
export declare class JSONVerifier implements Verifier {
|
|
15
|
+
private readonly _ajv;
|
|
16
|
+
private readonly _schema;
|
|
15
17
|
constructor(schema?: Record<string, unknown>);
|
|
16
18
|
verify(path: string, _moduleId: string): VerifyResult;
|
|
17
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifiers.d.ts","sourceRoot":"","sources":["../../src/output/verifiers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verifiers.d.ts","sourceRoot":"","sources":["../../src/output/verifiers.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAMzD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAYtE,qBAAa,YAAa,YAAW,QAAQ;IAC3C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY;CA2BtD;AAkBD,qBAAa,cAAe,YAAW,QAAQ;IAC7C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY;CA+BtD;AAED,qBAAa,kBAAmB,YAAW,QAAQ;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,QAAQ,EAAE,MAAM;IAI5B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY;CAgBtD;AAED,qBAAa,YAAa,YAAW,QAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;gBAEpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAU5C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY;CAqBtD"}
|
package/dist/output/verifiers.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFileSync, openSync, readSync, closeSync } from 'node:fs';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import yaml from 'js-yaml';
|
|
4
|
+
import Ajv from 'ajv';
|
|
4
5
|
// Re-export runtime-neutral verifier primitives so downstream imports from
|
|
5
6
|
// this file (internal and the default package entry) continue to work while
|
|
6
7
|
// the browser subpath imports them directly from `verify-core.js` without
|
|
@@ -33,7 +34,7 @@ export class YAMLVerifier {
|
|
|
33
34
|
for (let i = 0; i < bindings.length; i++) {
|
|
34
35
|
const entry = bindings[i];
|
|
35
36
|
for (const field of ['module_id', 'target']) {
|
|
36
|
-
if (typeof entry[field] !== 'string' || entry[field] === '') {
|
|
37
|
+
if (typeof entry[field] !== 'string' || entry[field].trim() === '') {
|
|
37
38
|
return { ok: false, error: `Missing or empty required field '${field}' in binding[${i}]` };
|
|
38
39
|
}
|
|
39
40
|
}
|
|
@@ -126,11 +127,15 @@ export class MagicBytesVerifier {
|
|
|
126
127
|
}
|
|
127
128
|
}
|
|
128
129
|
export class JSONVerifier {
|
|
130
|
+
_ajv = null;
|
|
131
|
+
_schema = null;
|
|
129
132
|
constructor(schema) {
|
|
130
133
|
if (schema != null) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
+
// `strict: false` keeps v6-compatible permissive behaviour for
|
|
135
|
+
// schemas that may include vendor extensions or unknown keywords;
|
|
136
|
+
// tightening the schema is the schema author's responsibility.
|
|
137
|
+
this._ajv = new Ajv({ strict: false });
|
|
138
|
+
this._schema = schema;
|
|
134
139
|
}
|
|
135
140
|
}
|
|
136
141
|
verify(path, _moduleId) {
|
|
@@ -141,13 +146,20 @@ export class JSONVerifier {
|
|
|
141
146
|
catch (err) {
|
|
142
147
|
return { ok: false, error: `Read error: ${err.message}`, cause: err };
|
|
143
148
|
}
|
|
149
|
+
let data;
|
|
144
150
|
try {
|
|
145
|
-
JSON.parse(content);
|
|
146
|
-
return { ok: true };
|
|
151
|
+
data = JSON.parse(content);
|
|
147
152
|
}
|
|
148
153
|
catch (err) {
|
|
149
154
|
return { ok: false, error: `JSON parse error: ${err.message}`, cause: err };
|
|
150
155
|
}
|
|
156
|
+
if (this._ajv && this._schema) {
|
|
157
|
+
const valid = this._ajv.validate(this._schema, data);
|
|
158
|
+
if (!valid) {
|
|
159
|
+
return { ok: false, error: this._ajv.errorsText() };
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return { ok: true };
|
|
151
163
|
}
|
|
152
164
|
}
|
|
153
165
|
//# sourceMappingURL=verifiers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifiers.js","sourceRoot":"","sources":["../../src/output/verifiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"verifiers.js","sourceRoot":"","sources":["../../src/output/verifiers.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,9 @@ export declare class RegistryVerifier implements Verifier {
|
|
|
9
9
|
/**
|
|
10
10
|
* Run a chain of verifiers in order, returning the first failure.
|
|
11
11
|
* If a verifier throws an exception, it is caught and returned as a failure
|
|
12
|
-
* with the prefix "Verifier crashed:"
|
|
12
|
+
* with the spec-mandated prefix "Verifier crashed:" — matches the literal
|
|
13
|
+
* emitted by the Python and Rust SDKs so callers writing
|
|
14
|
+
* `error.startsWith("Verifier crashed")` succeed cross-language.
|
|
13
15
|
*
|
|
14
16
|
* @param verifiers - Ordered list of verifiers to run.
|
|
15
17
|
* @param path - File path to verify.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-core.d.ts","sourceRoot":"","sources":["../../src/output/verify-core.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEzD,qBAAa,gBAAiB,YAAW,QAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;gBAEnD,QAAQ,EAAE;QAAE,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IAIzD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY;CActD;AAED
|
|
1
|
+
{"version":3,"file":"verify-core.d.ts","sourceRoot":"","sources":["../../src/output/verify-core.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEzD,qBAAa,gBAAiB,YAAW,QAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;gBAEnD,QAAQ,EAAE;QAAE,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IAIzD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY;CActD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,YAAY,CAoBd"}
|
|
@@ -34,7 +34,9 @@ export class RegistryVerifier {
|
|
|
34
34
|
/**
|
|
35
35
|
* Run a chain of verifiers in order, returning the first failure.
|
|
36
36
|
* If a verifier throws an exception, it is caught and returned as a failure
|
|
37
|
-
* with the prefix "Verifier crashed:"
|
|
37
|
+
* with the spec-mandated prefix "Verifier crashed:" — matches the literal
|
|
38
|
+
* emitted by the Python and Rust SDKs so callers writing
|
|
39
|
+
* `error.startsWith("Verifier crashed")` succeed cross-language.
|
|
38
40
|
*
|
|
39
41
|
* @param verifiers - Ordered list of verifiers to run.
|
|
40
42
|
* @param path - File path to verify.
|
|
@@ -51,7 +53,15 @@ export function runVerifierChain(verifiers, path, moduleId) {
|
|
|
51
53
|
catch (e) {
|
|
52
54
|
const name = verifier.constructor?.name ?? 'UnknownVerifier';
|
|
53
55
|
const msg = e instanceof Error ? e.message : String(e);
|
|
54
|
-
|
|
56
|
+
// Spec mandates the literal prefix "Verifier crashed:" so callers
|
|
57
|
+
// can use error.startsWith("Verifier crashed") cross-language. The
|
|
58
|
+
// verifier's class name is appended in parentheses so the W23
|
|
59
|
+
// regression (verifier identity) keeps its diagnostic value.
|
|
60
|
+
return {
|
|
61
|
+
ok: false,
|
|
62
|
+
error: `Verifier crashed: ${msg} (verifier: ${name})`,
|
|
63
|
+
cause: e,
|
|
64
|
+
};
|
|
55
65
|
}
|
|
56
66
|
}
|
|
57
67
|
return { ok: true };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-core.js","sourceRoot":"","sources":["../../src/output/verify-core.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,uEAAuE;AACvE,sEAAsE;AACtE,gFAAgF;AAChF,+DAA+D;AAC/D,EAAE;AACF,+DAA+D;AAC/D,4EAA4E;AAC5E,oBAAoB;AAIpB,MAAM,OAAO,gBAAgB;IACV,QAAQ,CAAsC;IAE/D,YAAY,QAA6C;QACvD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,QAAgB;QACpC,IAAI,CAAC;YACH,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBAClD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;YAC3E,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,QAAQ,yBAAyB,EAAE,CAAC;YAC5E,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA2B,GAAa,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC;CACF;AAED
|
|
1
|
+
{"version":3,"file":"verify-core.js","sourceRoot":"","sources":["../../src/output/verify-core.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,uEAAuE;AACvE,sEAAsE;AACtE,gFAAgF;AAChF,+DAA+D;AAC/D,EAAE;AACF,+DAA+D;AAC/D,4EAA4E;AAC5E,oBAAoB;AAIpB,MAAM,OAAO,gBAAgB;IACV,QAAQ,CAAsC;IAE/D,YAAY,QAA6C;QACvD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,QAAgB;QACpC,IAAI,CAAC;YACH,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBAClD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;YAC3E,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,QAAQ,yBAAyB,EAAE,CAAC;YAC5E,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA2B,GAAa,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAqB,EACrB,IAAY,EACZ,QAAgB;IAEhB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAC;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,IAAI,iBAAiB,CAAC;YAC7D,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,kEAAkE;YAClE,mEAAmE;YACnE,8DAA8D;YAC9D,6DAA6D;YAC7D,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,qBAAqB,GAAG,eAAe,IAAI,GAAG;gBACrD,KAAK,EAAE,CAAC;aACT,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import yaml from 'js-yaml';
|
|
2
2
|
import { writeFileSync, mkdirSync, realpathSync, lstatSync, renameSync, unlinkSync } from 'node:fs';
|
|
3
|
-
import { resolve, join
|
|
3
|
+
import { resolve, join } from 'node:path';
|
|
4
4
|
import { annotationsToDict } from '../serializers.js';
|
|
5
5
|
import { createWriteResult } from './types.js';
|
|
6
6
|
import { WriteError } from './errors.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-writer.js","sourceRoot":"","sources":["../../src/output/yaml-writer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"yaml-writer.js","sourceRoot":"","sources":["../../src/output/yaml-writer.ts"],"names":[],"mappings":"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"}
|
package/dist/scanner.d.ts
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
import type { ModuleAnnotations } from 'apcore-js';
|
|
2
2
|
import type { ScannedModule } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Apply include/exclude regex filters to a list of scanned modules.
|
|
5
|
+
*
|
|
6
|
+
* Module-level free function — the canonical implementation. The
|
|
7
|
+
* {@link BaseScanner.filterModules} instance method delegates here so
|
|
8
|
+
* the package can re-export this directly from `apcore-toolkit/index`
|
|
9
|
+
* for cross-language symbol parity (Python: `apcore_toolkit.filter_modules`,
|
|
10
|
+
* Rust: `apcore_toolkit::filter_modules`).
|
|
11
|
+
*
|
|
12
|
+
* @param modules - Modules to filter.
|
|
13
|
+
* @param include - Optional regex pattern string; only matching module IDs are kept.
|
|
14
|
+
* @param exclude - Optional regex pattern string; matching module IDs are removed.
|
|
15
|
+
* @returns Filtered array of modules.
|
|
16
|
+
* @throws {SyntaxError} When `include` or `exclude` contain an invalid regex pattern.
|
|
17
|
+
*/
|
|
18
|
+
export declare function filterModules(modules: ScannedModule[], include?: string, exclude?: string): ScannedModule[];
|
|
19
|
+
/**
|
|
20
|
+
* Deduplicate module IDs by appending a numeric suffix to colliding entries.
|
|
21
|
+
*
|
|
22
|
+
* Module-level free function — the canonical implementation. The
|
|
23
|
+
* {@link BaseScanner.deduplicateIds} instance method delegates here.
|
|
24
|
+
* Cross-language siblings: Python's ``apcore_toolkit.deduplicate_ids``
|
|
25
|
+
* and Rust's ``apcore_toolkit::deduplicate_ids``.
|
|
26
|
+
*/
|
|
27
|
+
export declare function deduplicateIds(modules: ScannedModule[]): ScannedModule[];
|
|
3
28
|
/**
|
|
4
29
|
* Abstract base class for all apcore-toolkit scanners.
|
|
5
30
|
*
|
|
@@ -26,14 +51,29 @@ export declare abstract class BaseScanner {
|
|
|
26
51
|
* Apply include/exclude regex filters to a list of scanned modules.
|
|
27
52
|
*
|
|
28
53
|
* @param modules - Modules to filter.
|
|
29
|
-
* @param
|
|
54
|
+
* @param include - Optional regex pattern string; only matching module IDs are kept.
|
|
55
|
+
* @param exclude - Optional regex pattern string; matching module IDs are removed.
|
|
30
56
|
* @returns Filtered array of modules.
|
|
31
57
|
* @throws {SyntaxError} When `include` or `exclude` contain an invalid regex pattern.
|
|
32
58
|
*/
|
|
33
|
-
filterModules(modules: ScannedModule[],
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
59
|
+
filterModules(modules: ScannedModule[], include?: string, exclude?: string): ScannedModule[];
|
|
60
|
+
/**
|
|
61
|
+
* Infer behavioural annotations from an HTTP method.
|
|
62
|
+
*
|
|
63
|
+
* Canonical mapping per
|
|
64
|
+
* `apcore-toolkit/docs/features/scanning.md` (RFC 9110 §9.2 safe-method
|
|
65
|
+
* semantics):
|
|
66
|
+
* GET → readonly=true, cacheable=true
|
|
67
|
+
* HEAD → readonly=true
|
|
68
|
+
* OPTIONS → readonly=true
|
|
69
|
+
* PUT → idempotent=true
|
|
70
|
+
* DELETE → destructive=true
|
|
71
|
+
* Others → defaults (all false)
|
|
72
|
+
*
|
|
73
|
+
* HEAD and OPTIONS return readonly=true without cacheable=true: those
|
|
74
|
+
* methods are safe by spec but their responses are not generally cacheable
|
|
75
|
+
* for application-level use.
|
|
76
|
+
*/
|
|
37
77
|
static inferAnnotationsFromMethod(method: string): ModuleAnnotations;
|
|
38
78
|
deduplicateIds(modules: ScannedModule[]): ScannedModule[];
|
|
39
79
|
}
|
package/dist/scanner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,aAAa,EAAE,CAcjB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAmCxE;AAGD;;;;;;;;;;;;;GAaG;AACH,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAC7E,QAAQ,CAAC,aAAa,IAAI,MAAM;IAEhC,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG;QAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC;IAwCD;;;;;;;;OAQG;IACH,aAAa,CACX,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,aAAa,EAAE;IAIlB;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAoBpE,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE;CAG1D"}
|
package/dist/scanner.js
CHANGED
|
@@ -1,5 +1,72 @@
|
|
|
1
1
|
import { DEFAULT_ANNOTATIONS } from 'apcore-js';
|
|
2
2
|
import { cloneModule } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Apply include/exclude regex filters to a list of scanned modules.
|
|
5
|
+
*
|
|
6
|
+
* Module-level free function — the canonical implementation. The
|
|
7
|
+
* {@link BaseScanner.filterModules} instance method delegates here so
|
|
8
|
+
* the package can re-export this directly from `apcore-toolkit/index`
|
|
9
|
+
* for cross-language symbol parity (Python: `apcore_toolkit.filter_modules`,
|
|
10
|
+
* Rust: `apcore_toolkit::filter_modules`).
|
|
11
|
+
*
|
|
12
|
+
* @param modules - Modules to filter.
|
|
13
|
+
* @param include - Optional regex pattern string; only matching module IDs are kept.
|
|
14
|
+
* @param exclude - Optional regex pattern string; matching module IDs are removed.
|
|
15
|
+
* @returns Filtered array of modules.
|
|
16
|
+
* @throws {SyntaxError} When `include` or `exclude` contain an invalid regex pattern.
|
|
17
|
+
*/
|
|
18
|
+
export function filterModules(modules, include, exclude) {
|
|
19
|
+
let result = modules;
|
|
20
|
+
if (include != null) {
|
|
21
|
+
const re = new RegExp(include);
|
|
22
|
+
result = result.filter((m) => re.test(m.moduleId));
|
|
23
|
+
}
|
|
24
|
+
if (exclude != null) {
|
|
25
|
+
const re = new RegExp(exclude);
|
|
26
|
+
result = result.filter((m) => !re.test(m.moduleId));
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Deduplicate module IDs by appending a numeric suffix to colliding entries.
|
|
32
|
+
*
|
|
33
|
+
* Module-level free function — the canonical implementation. The
|
|
34
|
+
* {@link BaseScanner.deduplicateIds} instance method delegates here.
|
|
35
|
+
* Cross-language siblings: Python's ``apcore_toolkit.deduplicate_ids``
|
|
36
|
+
* and Rust's ``apcore_toolkit::deduplicate_ids``.
|
|
37
|
+
*/
|
|
38
|
+
export function deduplicateIds(modules) {
|
|
39
|
+
const seenCount = new Map();
|
|
40
|
+
// Pre-populate with all original IDs so generated suffixes never collide
|
|
41
|
+
// with an ID that already exists in the input list.
|
|
42
|
+
const usedIds = new Set(modules.map((m) => m.moduleId));
|
|
43
|
+
const result = [];
|
|
44
|
+
for (const module of modules) {
|
|
45
|
+
const mid = module.moduleId;
|
|
46
|
+
const count = seenCount.get(mid) ?? 0;
|
|
47
|
+
seenCount.set(mid, count + 1);
|
|
48
|
+
if (count > 0) {
|
|
49
|
+
let counter = count + 1;
|
|
50
|
+
let newId = `${mid}_${counter}`;
|
|
51
|
+
while (usedIds.has(newId)) {
|
|
52
|
+
counter++;
|
|
53
|
+
newId = `${mid}_${counter}`;
|
|
54
|
+
}
|
|
55
|
+
usedIds.add(newId);
|
|
56
|
+
result.push(cloneModule(module, {
|
|
57
|
+
moduleId: newId,
|
|
58
|
+
warnings: [
|
|
59
|
+
...module.warnings,
|
|
60
|
+
`Module ID renamed from '${mid}' to '${newId}' to avoid collision`,
|
|
61
|
+
],
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
result.push(module);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
3
70
|
/**
|
|
4
71
|
* Abstract base class for all apcore-toolkit scanners.
|
|
5
72
|
*
|
|
@@ -55,22 +122,31 @@ export class BaseScanner {
|
|
|
55
122
|
* Apply include/exclude regex filters to a list of scanned modules.
|
|
56
123
|
*
|
|
57
124
|
* @param modules - Modules to filter.
|
|
58
|
-
* @param
|
|
125
|
+
* @param include - Optional regex pattern string; only matching module IDs are kept.
|
|
126
|
+
* @param exclude - Optional regex pattern string; matching module IDs are removed.
|
|
59
127
|
* @returns Filtered array of modules.
|
|
60
128
|
* @throws {SyntaxError} When `include` or `exclude` contain an invalid regex pattern.
|
|
61
129
|
*/
|
|
62
|
-
filterModules(modules,
|
|
63
|
-
|
|
64
|
-
if (options?.include != null) {
|
|
65
|
-
const re = new RegExp(options.include);
|
|
66
|
-
result = result.filter((m) => re.test(m.moduleId));
|
|
67
|
-
}
|
|
68
|
-
if (options?.exclude != null) {
|
|
69
|
-
const re = new RegExp(options.exclude);
|
|
70
|
-
result = result.filter((m) => !re.test(m.moduleId));
|
|
71
|
-
}
|
|
72
|
-
return result;
|
|
130
|
+
filterModules(modules, include, exclude) {
|
|
131
|
+
return filterModules(modules, include, exclude);
|
|
73
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Infer behavioural annotations from an HTTP method.
|
|
135
|
+
*
|
|
136
|
+
* Canonical mapping per
|
|
137
|
+
* `apcore-toolkit/docs/features/scanning.md` (RFC 9110 §9.2 safe-method
|
|
138
|
+
* semantics):
|
|
139
|
+
* GET → readonly=true, cacheable=true
|
|
140
|
+
* HEAD → readonly=true
|
|
141
|
+
* OPTIONS → readonly=true
|
|
142
|
+
* PUT → idempotent=true
|
|
143
|
+
* DELETE → destructive=true
|
|
144
|
+
* Others → defaults (all false)
|
|
145
|
+
*
|
|
146
|
+
* HEAD and OPTIONS return readonly=true without cacheable=true: those
|
|
147
|
+
* methods are safe by spec but their responses are not generally cacheable
|
|
148
|
+
* for application-level use.
|
|
149
|
+
*/
|
|
74
150
|
static inferAnnotationsFromMethod(method) {
|
|
75
151
|
if (typeof method !== 'string')
|
|
76
152
|
return { ...DEFAULT_ANNOTATIONS };
|
|
@@ -78,6 +154,9 @@ export class BaseScanner {
|
|
|
78
154
|
if (upper === 'GET') {
|
|
79
155
|
return { ...DEFAULT_ANNOTATIONS, readonly: true, cacheable: true };
|
|
80
156
|
}
|
|
157
|
+
if (upper === 'HEAD' || upper === 'OPTIONS') {
|
|
158
|
+
return { ...DEFAULT_ANNOTATIONS, readonly: true };
|
|
159
|
+
}
|
|
81
160
|
if (upper === 'DELETE') {
|
|
82
161
|
return { ...DEFAULT_ANNOTATIONS, destructive: true };
|
|
83
162
|
}
|
|
@@ -87,36 +166,7 @@ export class BaseScanner {
|
|
|
87
166
|
return { ...DEFAULT_ANNOTATIONS };
|
|
88
167
|
}
|
|
89
168
|
deduplicateIds(modules) {
|
|
90
|
-
|
|
91
|
-
// Pre-populate with all original IDs so generated suffixes never collide
|
|
92
|
-
// with an ID that already exists in the input list.
|
|
93
|
-
const usedIds = new Set(modules.map((m) => m.moduleId));
|
|
94
|
-
const result = [];
|
|
95
|
-
for (const module of modules) {
|
|
96
|
-
const mid = module.moduleId;
|
|
97
|
-
const count = seenCount.get(mid) ?? 0;
|
|
98
|
-
seenCount.set(mid, count + 1);
|
|
99
|
-
if (count > 0) {
|
|
100
|
-
let counter = count + 1;
|
|
101
|
-
let newId = `${mid}_${counter}`;
|
|
102
|
-
while (usedIds.has(newId)) {
|
|
103
|
-
counter++;
|
|
104
|
-
newId = `${mid}_${counter}`;
|
|
105
|
-
}
|
|
106
|
-
usedIds.add(newId);
|
|
107
|
-
result.push(cloneModule(module, {
|
|
108
|
-
moduleId: newId,
|
|
109
|
-
warnings: [
|
|
110
|
-
...module.warnings,
|
|
111
|
-
`Module ID renamed from '${mid}' to '${newId}' to avoid collision`,
|
|
112
|
-
],
|
|
113
|
-
}));
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
result.push(module);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return result;
|
|
169
|
+
return deduplicateIds(modules);
|
|
120
170
|
}
|
|
121
171
|
}
|
|
122
172
|
//# sourceMappingURL=scanner.js.map
|
package/dist/scanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apcore-toolkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Shared scanner, schema extraction, and output toolkit for apcore framework adapters",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -45,7 +45,6 @@
|
|
|
45
45
|
"LICENSE"
|
|
46
46
|
],
|
|
47
47
|
"scripts": {
|
|
48
|
-
"preinstall": "npx only-allow pnpm",
|
|
49
48
|
"build": "tsc",
|
|
50
49
|
"test": "vitest run",
|
|
51
50
|
"test:watch": "vitest",
|
|
@@ -55,7 +54,8 @@
|
|
|
55
54
|
"clean": "rm -rf dist"
|
|
56
55
|
},
|
|
57
56
|
"dependencies": {
|
|
58
|
-
"
|
|
57
|
+
"ajv": "^8.17.0",
|
|
58
|
+
"apcore-js": ">=0.21.0",
|
|
59
59
|
"js-yaml": "^4.1.0"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
@@ -65,8 +65,9 @@
|
|
|
65
65
|
"@types/js-yaml": "^4.0.9",
|
|
66
66
|
"@types/node": "^22.0.0",
|
|
67
67
|
"@vitest/coverage-v8": "^3.0.0",
|
|
68
|
-
"apdev-js": "^0.2.
|
|
68
|
+
"apdev-js": "^0.2.1",
|
|
69
69
|
"eslint": "^9.0.0",
|
|
70
|
+
"typescript-eslint": "^8.0.0",
|
|
70
71
|
"typescript": "^5.5.0",
|
|
71
72
|
"vitest": "^3.0.0"
|
|
72
73
|
},
|