apcore-toolkit 0.9.1 → 0.10.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 CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.10.0] - 2026-07-07
6
+
7
+ Cross-language parity with the Python toolkit: ship the reusable annotation-preservation conformance verifier. (The dropped-annotations bug that motivated this existed only in two Python adapters; `nestjs-apcore` and this toolkit's writers already preserve annotations — verified. This adds the guard so a future TS adapter can't silently regress.) All 617 tests pass.
8
+
9
+ ### Added
10
+
11
+ - **`assertAnnotationsPreserved(writer, scannedModule, registry, fields?)`** (`src/conformance.ts`, exported from the package root) — a framework-agnostic verifier (throws on failure) that registers a module and asserts its behavioral annotations survive `registry.getDefinition`. Adapters import it into their own test suites so a dropped-annotations regression fails loudly. Defaults to checking `requiresApproval` / `destructive`. Covered by `tests/conformance.test.ts` (passes for the base writer using a **real** `Registry`, throws for a writer that drops annotations). Mirrors `apcore_toolkit.conformance.assert_annotations_preserved` in Python.
12
+
5
13
  ## [0.9.0] - 2026-06-23
6
14
 
7
15
  Minor release. Fixes registry verification and async registration against the real apcore Registry. No public API changes; all 614 tests pass.
package/README.md CHANGED
@@ -17,6 +17,7 @@ npm install apcore-toolkit
17
17
  - Abstract `BaseScanner` for framework-specific endpoint scanning
18
18
  - OpenAPI schema extraction (`extractInputSchema`, `extractOutputSchema`)
19
19
  - Multi-format output writers (YAML, TypeScript, Registry, HTTP-proxy) with pluggable verification
20
+ - `assertAnnotationsPreserved` conformance check — guards that a writer keeps behavioral annotations through registration (so approval/ACL gating cannot be silently disabled)
20
21
  - Markdown formatting with depth control and table heuristics
21
22
  - Module serialization utilities
22
23
  - Runtime-neutral subset via `apcore-toolkit/browser` for browser / edge / worker environments
@@ -82,6 +83,25 @@ await regWriter.write(modules, registry);
82
83
  const writer = getWriter('yaml'); // 'yaml' | 'typescript' | 'registry'
83
84
  ```
84
85
 
86
+ ### Conformance Verification
87
+
88
+ Approval and ACL gating key on a module's `requiresApproval` annotation, which is
89
+ only reachable if annotations survive `scan → register → getDefinition`. A writer
90
+ that drops them disables that gate **silently**. Run the shared check in your
91
+ adapter's test suite so any such regression fails loudly:
92
+
93
+ ```typescript
94
+ import { Registry, createAnnotations } from 'apcore-js';
95
+ import { assertAnnotationsPreserved } from 'apcore-toolkit';
96
+
97
+ // Throws if annotations were dropped or changed during registration.
98
+ await assertAnnotationsPreserved(
99
+ new MyRegistryWriter(),
100
+ myScannedModule({ annotations: createAnnotations({ destructive: true, requiresApproval: true }) }),
101
+ new Registry(),
102
+ );
103
+ ```
104
+
85
105
  ### OpenAPI Schema Extraction
86
106
 
87
107
  ```typescript
@@ -205,6 +225,7 @@ The **Browser** column marks whether a symbol is also re-exported from
205
225
  | `HTTPProxyRegistryWriter` | ✓ | Registers modules as HTTP-proxied entries in an in-memory registry. Each module's `execute()` forwards inputs to a backend URL via global `fetch`. Works in any runtime with `fetch` (Node 20+, browsers, edge, workers). |
206
226
  | `HTTPProxyRegistryWriterError` | ✓ | Error class thrown when HTTP fields cannot be extracted from a `ScannedModule` |
207
227
  | `getWriter()` | | Factory for writer instances |
228
+ | `assertAnnotationsPreserved()` | ✓ | Conformance check for adapter test suites: registers a module and asserts its behavioral annotations (`requiresApproval` / `destructive`) survive `getDefinition`; throws otherwise. Guards against a writer silently disabling approval/ACL gating |
208
229
  | `extractInputSchema()` | ✓ | Extract input schema from OpenAPI operation |
209
230
  | `extractOutputSchema()` | ✓ | Extract output schema from OpenAPI operation |
210
231
  | `resolveRef()` | ✓ | Resolve `$ref` in OpenAPI documents |
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Cross-adapter conformance checks for registry writers.
3
+ *
4
+ * Import into an adapter's test suite to assert that registering a scanned
5
+ * module **preserves its behavioral annotations**. Approval and ACL gating key
6
+ * on `requiresApproval` (and read `destructive`); if a writer drops annotations
7
+ * during registration the gate silently never fires — no error, no warning.
8
+ * This helper turns that otherwise-invisible regression into a failing test.
9
+ */
10
+ import type { ScannedModule } from './types.js';
11
+ /** Governance-relevant flags whose loss silently disables approval/ACL gating. */
12
+ export declare const DEFAULT_CONFORMANCE_FIELDS: readonly ["requiresApproval", "destructive"];
13
+ /** Minimal registry surface the check needs. */
14
+ export interface AnnotationCarryingRegistry {
15
+ register(moduleId: string, module: unknown): void | Promise<void>;
16
+ getDefinition(moduleId: string): {
17
+ annotations?: unknown;
18
+ } | null;
19
+ }
20
+ /** Minimal writer surface the check needs. */
21
+ export interface AnnotationWriter {
22
+ write(modules: ScannedModule[], registry: unknown, options?: unknown): Promise<unknown>;
23
+ }
24
+ /**
25
+ * Register `scannedModule` via `writer` and assert its behavioral annotations
26
+ * survive `registry.getDefinition`. Throws on a dropped/changed field, so it
27
+ * works from any test runner. Use a **real** `Registry` (not a mock) and a
28
+ * module whose `target` resolves to a real callable and whose `annotations`
29
+ * are set to the values under test.
30
+ *
31
+ * @throws if the module was not registered, lost its annotations, or any
32
+ * checked field changed value during registration.
33
+ */
34
+ export declare function assertAnnotationsPreserved(writer: AnnotationWriter, scannedModule: ScannedModule, registry: AnnotationCarryingRegistry, fields?: readonly string[]): Promise<void>;
35
+ //# sourceMappingURL=conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,8CAA+C,CAAC;AAEvF,gDAAgD;AAChD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CACnE;AAED,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzF;AAED;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,0BAA0B,EACpC,MAAM,GAAE,SAAS,MAAM,EAA+B,GACrD,OAAO,CAAC,IAAI,CAAC,CAgCf"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Cross-adapter conformance checks for registry writers.
3
+ *
4
+ * Import into an adapter's test suite to assert that registering a scanned
5
+ * module **preserves its behavioral annotations**. Approval and ACL gating key
6
+ * on `requiresApproval` (and read `destructive`); if a writer drops annotations
7
+ * during registration the gate silently never fires — no error, no warning.
8
+ * This helper turns that otherwise-invisible regression into a failing test.
9
+ */
10
+ /** Governance-relevant flags whose loss silently disables approval/ACL gating. */
11
+ export const DEFAULT_CONFORMANCE_FIELDS = ['requiresApproval', 'destructive'];
12
+ /**
13
+ * Register `scannedModule` via `writer` and assert its behavioral annotations
14
+ * survive `registry.getDefinition`. Throws on a dropped/changed field, so it
15
+ * works from any test runner. Use a **real** `Registry` (not a mock) and a
16
+ * module whose `target` resolves to a real callable and whose `annotations`
17
+ * are set to the values under test.
18
+ *
19
+ * @throws if the module was not registered, lost its annotations, or any
20
+ * checked field changed value during registration.
21
+ */
22
+ export async function assertAnnotationsPreserved(writer, scannedModule, registry, fields = DEFAULT_CONFORMANCE_FIELDS) {
23
+ const source = scannedModule.annotations;
24
+ if (source == null) {
25
+ throw new Error('assertAnnotationsPreserved expects scannedModule.annotations to be set ' +
26
+ '(that is what the round-trip is verifying)');
27
+ }
28
+ const moduleId = scannedModule.moduleId;
29
+ await writer.write([scannedModule], registry);
30
+ const definition = registry.getDefinition(moduleId);
31
+ if (definition == null) {
32
+ throw new Error(`conformance: module '${moduleId}' was not registered`);
33
+ }
34
+ if (definition.annotations == null) {
35
+ throw new Error(`conformance: module '${moduleId}' lost its annotations during registration — ` +
36
+ 'approval/ACL gating that keys on requiresApproval will silently never fire');
37
+ }
38
+ const registered = definition.annotations;
39
+ for (const field of fields) {
40
+ if (registered[field] !== source[field]) {
41
+ throw new Error(`conformance: module '${moduleId}' annotation '${field}' changed during ` +
42
+ `registration — expected ${String(source[field])}, got ${String(registered[field])}`);
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=conformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,kFAAkF;AAClF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,kBAAkB,EAAE,aAAa,CAAU,CAAC;AAavF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAwB,EACxB,aAA4B,EAC5B,QAAoC,EACpC,SAA4B,0BAA0B;IAEtD,MAAM,MAAM,GAAG,aAAa,CAAC,WAA6C,CAAC;IAC3E,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,yEAAyE;YACvE,4CAA4C,CAC/C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IACxC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEpD,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,sBAAsB,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,UAAU,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,wBAAwB,QAAQ,+CAA+C;YAC7E,4EAA4E,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,WAAsC,CAAC;IACrE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,wBAAwB,QAAQ,iBAAiB,KAAK,mBAAmB;gBACvE,2BAA2B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -20,6 +20,8 @@ export { RegistryWriter } from './output/registry-writer.js';
20
20
  export { HTTPProxyRegistryWriter, HTTPProxyRegistryWriterError, } from './output/http-proxy-writer.js';
21
21
  export type { HTTPProxyRegistryWriterOptions, ProxyRegistry, } from './output/http-proxy-writer.js';
22
22
  export { getWriter } from './output/factory.js';
23
+ export { assertAnnotationsPreserved, DEFAULT_CONFORMANCE_FIELDS } from './conformance.js';
24
+ export type { AnnotationCarryingRegistry, AnnotationWriter } from './conformance.js';
23
25
  export type { WriteResult, VerifyResult, Verifier } from './output/types.js';
24
26
  export { createWriteResult } from './output/types.js';
25
27
  export { WriteError, InvalidFormatError } from './output/errors.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAU9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,WAAW,EACX,WAAW,EACX,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,8BAA8B,EAC9B,aAAa,GACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAK/B,eAAO,MAAM,OAAO,EAAE,MAAqB,CAAC;AAQ5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAE5E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAU9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,WAAW,EACX,WAAW,EACX,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,8BAA8B,EAC9B,aAAa,GACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC1F,YAAY,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAK/B,eAAO,MAAM,OAAO,EAAE,MAAqB,CAAC;AAQ5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAE5E"}
package/dist/index.js CHANGED
@@ -21,6 +21,7 @@ export { TypeScriptWriter } from './output/typescript-writer.js';
21
21
  export { RegistryWriter } from './output/registry-writer.js';
22
22
  export { HTTPProxyRegistryWriter, HTTPProxyRegistryWriterError, } from './output/http-proxy-writer.js';
23
23
  export { getWriter } from './output/factory.js';
24
+ export { assertAnnotationsPreserved, DEFAULT_CONFORMANCE_FIELDS } from './conformance.js';
24
25
  // TS-only ergonomic factory: Python/Rust callers construct WriteResult directly
25
26
  // via dataclass/struct literals. No counterpart in apcore-toolkit-python/-rust.
26
27
  export { createWriteResult } from './output/types.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,2BAA2B;AAC3B,2BAA2B;AAC3B,+EAA+E;AAC/E,0EAA0E;AAC1E,4EAA4E;AAC5E,+CAA+C;AAC/C,yDAAyD;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAU/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAMxD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,gFAAgF;AAChF,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAwB,CAAC;AAChE,MAAM,CAAC,MAAM,OAAO,GAAW,IAAI,CAAC,OAAO,CAAC;AAE5C,iEAAiE;AACjE,2EAA2E;AAC3E,oEAAoE;AACpE,mEAAmE;AACnE,sEAAsE;AACtE,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AAG3D;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAc;IACvD,OAAO,YAAY,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,2BAA2B;AAC3B,2BAA2B;AAC3B,+EAA+E;AAC/E,0EAA0E;AAC1E,4EAA4E;AAC5E,+CAA+C;AAC/C,yDAAyD;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAU/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAMxD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAG1F,gFAAgF;AAChF,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAwB,CAAC;AAChE,MAAM,CAAC,MAAM,OAAO,GAAW,IAAI,CAAC,OAAO,CAAC;AAE5C,iEAAiE;AACjE,2EAA2E;AAC3E,oEAAoE;AACpE,mEAAmE;AACnE,sEAAsE;AACtE,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AAG3D;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAc;IACvD,OAAO,YAAY,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apcore-toolkit",
3
- "version": "0.9.1",
3
+ "version": "0.10.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",