apcore-toolkit 0.4.1 → 0.5.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.
Files changed (108) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/LICENSE +185 -0
  3. package/README.md +91 -39
  4. package/dist/ai-enhancer.d.ts +18 -1
  5. package/dist/ai-enhancer.d.ts.map +1 -1
  6. package/dist/ai-enhancer.js +100 -23
  7. package/dist/ai-enhancer.js.map +1 -1
  8. package/dist/binding-loader.d.ts +55 -0
  9. package/dist/binding-loader.d.ts.map +1 -0
  10. package/dist/binding-loader.js +175 -0
  11. package/dist/binding-loader.js.map +1 -0
  12. package/dist/binding-parser.d.ts +80 -0
  13. package/dist/binding-parser.d.ts.map +1 -0
  14. package/dist/binding-parser.js +257 -0
  15. package/dist/binding-parser.js.map +1 -0
  16. package/dist/browser/index.d.ts +17 -0
  17. package/dist/browser/index.d.ts.map +1 -0
  18. package/dist/browser/index.js +46 -0
  19. package/dist/browser/index.js.map +1 -0
  20. package/dist/{display-resolver.d.ts → display/resolver.d.ts} +14 -2
  21. package/dist/display/resolver.d.ts.map +1 -0
  22. package/dist/{display-resolver.js → display/resolver.js} +79 -25
  23. package/dist/display/resolver.js.map +1 -0
  24. package/dist/formatting/markdown.d.ts.map +1 -1
  25. package/dist/formatting/markdown.js +25 -22
  26. package/dist/formatting/markdown.js.map +1 -1
  27. package/dist/http-verb-map.d.ts +79 -0
  28. package/dist/http-verb-map.d.ts.map +1 -0
  29. package/dist/http-verb-map.js +179 -0
  30. package/dist/http-verb-map.js.map +1 -0
  31. package/dist/index.d.ts +8 -5
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +12 -4
  34. package/dist/index.js.map +1 -1
  35. package/dist/openapi.d.ts.map +1 -1
  36. package/dist/openapi.js +37 -10
  37. package/dist/openapi.js.map +1 -1
  38. package/dist/output/base-writer.d.ts +17 -0
  39. package/dist/output/base-writer.d.ts.map +1 -0
  40. package/dist/output/base-writer.js +34 -0
  41. package/dist/output/base-writer.js.map +1 -0
  42. package/dist/output/errors.d.ts +7 -2
  43. package/dist/output/errors.d.ts.map +1 -1
  44. package/dist/output/errors.js +8 -3
  45. package/dist/output/errors.js.map +1 -1
  46. package/dist/output/factory.d.ts +13 -1
  47. package/dist/output/factory.d.ts.map +1 -1
  48. package/dist/output/factory.js +21 -2
  49. package/dist/output/factory.js.map +1 -1
  50. package/dist/output/http-proxy-writer.d.ts +82 -0
  51. package/dist/output/http-proxy-writer.d.ts.map +1 -0
  52. package/dist/output/http-proxy-writer.js +222 -0
  53. package/dist/output/http-proxy-writer.js.map +1 -0
  54. package/dist/output/index.d.ts +1 -1
  55. package/dist/output/index.d.ts.map +1 -1
  56. package/dist/output/index.js +1 -1
  57. package/dist/output/index.js.map +1 -1
  58. package/dist/output/registry-writer.d.ts +23 -5
  59. package/dist/output/registry-writer.d.ts.map +1 -1
  60. package/dist/output/registry-writer.js +52 -14
  61. package/dist/output/registry-writer.js.map +1 -1
  62. package/dist/output/types.d.ts +1 -0
  63. package/dist/output/types.d.ts.map +1 -1
  64. package/dist/output/types.js.map +1 -1
  65. package/dist/output/typescript-writer.d.ts +14 -6
  66. package/dist/output/typescript-writer.d.ts.map +1 -1
  67. package/dist/output/typescript-writer.js +100 -32
  68. package/dist/output/typescript-writer.js.map +1 -1
  69. package/dist/output/verifiers.d.ts +1 -9
  70. package/dist/output/verifiers.d.ts.map +1 -1
  71. package/dist/output/verifiers.js +92 -42
  72. package/dist/output/verifiers.js.map +1 -1
  73. package/dist/output/verify-core.d.ts +20 -0
  74. package/dist/output/verify-core.d.ts.map +1 -0
  75. package/dist/output/verify-core.js +59 -0
  76. package/dist/output/verify-core.js.map +1 -0
  77. package/dist/output/yaml-writer.d.ts +18 -6
  78. package/dist/output/yaml-writer.d.ts.map +1 -1
  79. package/dist/output/yaml-writer.js +99 -42
  80. package/dist/output/yaml-writer.js.map +1 -1
  81. package/dist/resolve-target.d.ts.map +1 -1
  82. package/dist/resolve-target.js +34 -5
  83. package/dist/resolve-target.js.map +1 -1
  84. package/dist/safe-keys.d.ts +2 -0
  85. package/dist/safe-keys.d.ts.map +1 -0
  86. package/dist/safe-keys.js +19 -0
  87. package/dist/safe-keys.js.map +1 -0
  88. package/dist/scanner.d.ts +22 -0
  89. package/dist/scanner.d.ts.map +1 -1
  90. package/dist/scanner.js +40 -16
  91. package/dist/scanner.js.map +1 -1
  92. package/dist/schema-utils.d.ts.map +1 -1
  93. package/dist/schema-utils.js +13 -2
  94. package/dist/schema-utils.js.map +1 -1
  95. package/dist/serializers.d.ts.map +1 -1
  96. package/dist/serializers.js +2 -0
  97. package/dist/serializers.js.map +1 -1
  98. package/dist/types.d.ts +16 -0
  99. package/dist/types.d.ts.map +1 -1
  100. package/dist/types.js +3 -0
  101. package/dist/types.js.map +1 -1
  102. package/package.json +10 -2
  103. package/dist/display-resolver.d.ts.map +0 -1
  104. package/dist/display-resolver.js.map +0 -1
  105. package/dist/flatten-params.d.ts +0 -16
  106. package/dist/flatten-params.d.ts.map +0 -1
  107. package/dist/flatten-params.js +0 -18
  108. package/dist/flatten-params.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Verifier, WriteResult } from './types.js';
2
+ export interface BaseWriteOptions {
3
+ dryRun?: boolean;
4
+ verify?: boolean;
5
+ verifiers?: Verifier[];
6
+ }
7
+ export interface FileWriteOptions extends BaseWriteOptions {
8
+ errorMode?: 'throw' | 'collect';
9
+ }
10
+ /**
11
+ * Apply built-in and custom verifiers to a WriteResult.
12
+ *
13
+ * Runs `builtinVerifier` first (if `verify` is true), then `verifiers`
14
+ * chain. Returns a new WriteResult with the first failure recorded.
15
+ */
16
+ export declare function applyVerification(result: WriteResult, builtinVerifier: Verifier, verifiers: Verifier[], path: string, moduleId: string, verify: boolean): WriteResult;
17
+ //# sourceMappingURL=base-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-writer.d.ts","sourceRoot":"","sources":["../../src/output/base-writer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAC;AAItE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,QAAQ,EACzB,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,WAAW,CAcb"}
@@ -0,0 +1,34 @@
1
+ // Tri-language parity note
2
+ // ------------------------
3
+ // This file (`base-writer.ts`) and `factory.ts` expose shared write-option
4
+ // shapes and a verify-chain helper as TypeScript-specific abstractions.
5
+ // Python and Rust deliberately do not have equivalents: Python writers
6
+ // accept **kwargs directly and Rust uses a format-variant enum returned
7
+ // from `get_writer`. The TS pattern exists because structural typing
8
+ // makes a shared options interface cheaper to maintain than per-writer
9
+ // duplicates. Keep the surface internal to this subdirectory — avoid
10
+ // re-exporting from the package entry point.
11
+ import { createWriteResult } from './types.js';
12
+ import { runVerifierChain } from './verifiers.js';
13
+ /**
14
+ * Apply built-in and custom verifiers to a WriteResult.
15
+ *
16
+ * Runs `builtinVerifier` first (if `verify` is true), then `verifiers`
17
+ * chain. Returns a new WriteResult with the first failure recorded.
18
+ */
19
+ export function applyVerification(result, builtinVerifier, verifiers, path, moduleId, verify) {
20
+ if (verify) {
21
+ const builtinResult = builtinVerifier.verify(path, moduleId);
22
+ if (!builtinResult.ok) {
23
+ return createWriteResult(moduleId, path, false, builtinResult.error ?? null);
24
+ }
25
+ }
26
+ if (verify && verifiers.length > 0) {
27
+ const vResult = runVerifierChain(verifiers, path, moduleId);
28
+ if (!vResult.ok) {
29
+ return createWriteResult(moduleId, path, false, vResult.error ?? null);
30
+ }
31
+ }
32
+ return result;
33
+ }
34
+ //# sourceMappingURL=base-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-writer.js","sourceRoot":"","sources":["../../src/output/base-writer.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,2BAA2B;AAC3B,2EAA2E;AAC3E,wEAAwE;AACxE,uEAAuE;AACvE,wEAAwE;AACxE,qEAAqE;AACrE,uEAAuE;AACvE,qEAAqE;AACrE,6CAA6C;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAYlD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,eAAyB,EACzB,SAAqB,EACrB,IAAY,EACZ,QAAgB,EAChB,MAAe;IAEf,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,aAAa,GAAiB,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;YACtB,OAAO,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,IAAI,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,6 +1,11 @@
1
+ export declare class InvalidFormatError extends Error {
2
+ constructor(format: string, options?: {
3
+ cause?: unknown;
4
+ });
5
+ }
1
6
  export declare class WriteError extends Error {
2
7
  readonly path: string;
3
- readonly cause: Error;
4
- constructor(path: string, cause: Error);
8
+ readonly cause: unknown;
9
+ constructor(path: string, cause: unknown);
5
10
  }
6
11
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/output/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,SAAkB,KAAK,EAAE,KAAK,CAAC;gBAEnB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;CAMvC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/output/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI1D;AAED,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,SAAiB,KAAK,EAAE,OAAO,CAAC;gBAEpB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAMzC"}
@@ -1,11 +1,16 @@
1
+ export class InvalidFormatError extends Error {
2
+ constructor(format, options) {
3
+ super(`Unknown output format: "${format}"`, options);
4
+ this.name = 'InvalidFormatError';
5
+ }
6
+ }
1
7
  export class WriteError extends Error {
2
8
  path;
3
- cause;
4
9
  constructor(path, cause) {
5
- super(`Write failed for ${path}: ${cause.message}`, { cause });
10
+ const message = cause instanceof Error ? cause.message : String(cause);
11
+ super(`Write failed for ${path}: ${message}`, { cause });
6
12
  this.name = 'WriteError';
7
13
  this.path = path;
8
- this.cause = cause;
9
14
  }
10
15
  }
11
16
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/output/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAS;IACJ,KAAK,CAAQ;IAE/B,YAAY,IAAY,EAAE,KAAY;QACpC,KAAK,CAAC,oBAAoB,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/output/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,MAAc,EAAE,OAA6B;QACvD,KAAK,CAAC,2BAA2B,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAS;IAGtB,YAAY,IAAY,EAAE,KAAc;QACtC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,KAAK,CAAC,oBAAoB,IAAI,KAAK,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -1,5 +1,17 @@
1
1
  import { YAMLWriter } from './yaml-writer.js';
2
2
  import { TypeScriptWriter } from './typescript-writer.js';
3
3
  import { RegistryWriter } from './registry-writer.js';
4
- export declare function getWriter(format: string): YAMLWriter | TypeScriptWriter | RegistryWriter;
4
+ import { HTTPProxyRegistryWriter, type HTTPProxyRegistryWriterOptions } from './http-proxy-writer.js';
5
+ /**
6
+ * Return the writer for the given output format.
7
+ *
8
+ * @param format - One of `"yaml"`, `"typescript"`, `"registry"`, or
9
+ * `"http-proxy"` / `"http_proxy"`.
10
+ * @param options - Required for `"http-proxy"`: must be
11
+ * {@link HTTPProxyRegistryWriterOptions}. Ignored for the other formats.
12
+ * @returns The corresponding writer instance.
13
+ * @throws {InvalidFormatError} When `format` is not a recognised format name.
14
+ * @throws {TypeError} When `options` is missing for `"http-proxy"`.
15
+ */
16
+ export declare function getWriter(format: string, options?: HTTPProxyRegistryWriterOptions): YAMLWriter | TypeScriptWriter | RegistryWriter | HTTPProxyRegistryWriter;
5
17
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/output/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,GACb,UAAU,GAAG,gBAAgB,GAAG,cAAc,CAKhD"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/output/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,EACpC,MAAM,wBAAwB,CAAC;AAGhC;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,8BAA8B,GACvC,UAAU,GAAG,gBAAgB,GAAG,cAAc,GAAG,uBAAuB,CAa1E"}
@@ -1,13 +1,32 @@
1
1
  import { YAMLWriter } from './yaml-writer.js';
2
2
  import { TypeScriptWriter } from './typescript-writer.js';
3
3
  import { RegistryWriter } from './registry-writer.js';
4
- export function getWriter(format) {
4
+ import { HTTPProxyRegistryWriter, } from './http-proxy-writer.js';
5
+ import { InvalidFormatError } from './errors.js';
6
+ /**
7
+ * Return the writer for the given output format.
8
+ *
9
+ * @param format - One of `"yaml"`, `"typescript"`, `"registry"`, or
10
+ * `"http-proxy"` / `"http_proxy"`.
11
+ * @param options - Required for `"http-proxy"`: must be
12
+ * {@link HTTPProxyRegistryWriterOptions}. Ignored for the other formats.
13
+ * @returns The corresponding writer instance.
14
+ * @throws {InvalidFormatError} When `format` is not a recognised format name.
15
+ * @throws {TypeError} When `options` is missing for `"http-proxy"`.
16
+ */
17
+ export function getWriter(format, options) {
5
18
  if (format === 'yaml')
6
19
  return new YAMLWriter();
7
20
  if (format === 'typescript')
8
21
  return new TypeScriptWriter();
9
22
  if (format === 'registry')
10
23
  return new RegistryWriter();
11
- throw new Error(`Unknown output format: "${format}"`);
24
+ if (format === 'http-proxy' || format === 'http_proxy') {
25
+ if (!options || typeof options.baseUrl !== 'string') {
26
+ throw new TypeError("getWriter('http-proxy', options) requires options.baseUrl");
27
+ }
28
+ return new HTTPProxyRegistryWriter(options);
29
+ }
30
+ throw new InvalidFormatError(format);
12
31
  }
13
32
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/output/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,UAAU,SAAS,CACvB,MAAc;IAEd,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,UAAU,EAAE,CAAC;IAC/C,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,IAAI,gBAAgB,EAAE,CAAC;IAC3D,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,IAAI,cAAc,EAAE,CAAC;IACvD,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,GAAG,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/output/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,uBAAuB,GAExB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACvB,MAAc,EACd,OAAwC;IAExC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,UAAU,EAAE,CAAC;IAC/C,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,IAAI,gBAAgB,EAAE,CAAC;IAC3D,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,IAAI,cAAc,EAAE,CAAC;IACvD,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QACvD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACpD,MAAM,IAAI,SAAS,CACjB,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * HTTP proxy registry writer.
3
+ *
4
+ * Registers scanned modules as HTTP proxy classes that forward requests
5
+ * to a running web API. This enables CLI execution without invoking
6
+ * route handlers directly (which depend on framework DI systems).
7
+ *
8
+ * Uses the global `fetch` available in Node 20+ — no additional
9
+ * dependency required. Mirrors Python's `HTTPProxyRegistryWriter` in
10
+ * `apcore_toolkit/output/http_proxy_writer.py` and Rust's
11
+ * `HTTPProxyRegistryWriter` under the `http-proxy` feature flag.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { HTTPProxyRegistryWriter } from 'apcore-toolkit';
16
+ *
17
+ * const writer = new HTTPProxyRegistryWriter({
18
+ * baseUrl: 'http://localhost:8000',
19
+ * authHeaderFactory: () => ({ Authorization: 'Bearer xxx' }),
20
+ * });
21
+ * const results = await writer.write(modules, registry);
22
+ * ```
23
+ */
24
+ import type { ScannedModule } from '../types.js';
25
+ import type { WriteResult } from './types.js';
26
+ /**
27
+ * Shape of a registry that `HTTPProxyRegistryWriter` writes to.
28
+ *
29
+ * Mirrors the minimal surface used by `RegistryWriter.write()`.
30
+ */
31
+ export interface ProxyRegistry {
32
+ register(moduleId: string, module: unknown): void;
33
+ }
34
+ /**
35
+ * Constructor options for {@link HTTPProxyRegistryWriter}.
36
+ */
37
+ export interface HTTPProxyRegistryWriterOptions {
38
+ /** Base URL of the target API (e.g. `http://localhost:8000`). */
39
+ baseUrl: string;
40
+ /**
41
+ * Optional callable returning HTTP headers for authentication
42
+ * (e.g. `{ Authorization: 'Bearer xxx' }`). Called once per request.
43
+ */
44
+ authHeaderFactory?: () => Record<string, string>;
45
+ /** HTTP request timeout in milliseconds. Defaults to 60_000 (60s). */
46
+ timeoutMs?: number;
47
+ /**
48
+ * Optional fetch implementation (primarily for tests). Defaults to the
49
+ * global `fetch` available in Node 20+.
50
+ */
51
+ fetchImpl?: typeof fetch;
52
+ }
53
+ /**
54
+ * Error thrown when HTTP fields (method / path) cannot be extracted from
55
+ * a ScannedModule.
56
+ */
57
+ export declare class HTTPProxyWriterError extends Error {
58
+ constructor(moduleId: string, message: string);
59
+ }
60
+ /**
61
+ * Register each {@link ScannedModule} as an HTTP proxy module in the
62
+ * provided registry. Each registered module's `execute()` forwards its
63
+ * inputs to the configured `baseUrl` and maps the response back to the
64
+ * module's output schema.
65
+ */
66
+ export declare class HTTPProxyRegistryWriter {
67
+ private readonly baseUrl;
68
+ private readonly authHeaderFactory?;
69
+ private readonly timeoutMs;
70
+ private readonly fetchImpl;
71
+ constructor(options: HTTPProxyRegistryWriterOptions);
72
+ /**
73
+ * Register each module's HTTP proxy into the registry.
74
+ *
75
+ * Returns one {@link WriteResult} per module. A module that fails to
76
+ * build is reported with `verified: false` rather than throwing, so
77
+ * one bad module does not abort the batch.
78
+ */
79
+ write(modules: ScannedModule[], registry: ProxyRegistry): Promise<WriteResult[]>;
80
+ private buildFunctionModule;
81
+ }
82
+ //# sourceMappingURL=http-proxy-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-proxy-writer.d.ts","sourceRoot":"","sources":["../../src/output/http-proxy-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAWH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI9C;AAiDD;;;;;GAKG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAA+B;IAClE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAE7B,OAAO,EAAE,8BAA8B;IAanD;;;;;;OAMG;IACG,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAetF,OAAO,CAAC,mBAAmB;CA0H5B"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * HTTP proxy registry writer.
3
+ *
4
+ * Registers scanned modules as HTTP proxy classes that forward requests
5
+ * to a running web API. This enables CLI execution without invoking
6
+ * route handlers directly (which depend on framework DI systems).
7
+ *
8
+ * Uses the global `fetch` available in Node 20+ — no additional
9
+ * dependency required. Mirrors Python's `HTTPProxyRegistryWriter` in
10
+ * `apcore_toolkit/output/http_proxy_writer.py` and Rust's
11
+ * `HTTPProxyRegistryWriter` under the `http-proxy` feature flag.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { HTTPProxyRegistryWriter } from 'apcore-toolkit';
16
+ *
17
+ * const writer = new HTTPProxyRegistryWriter({
18
+ * baseUrl: 'http://localhost:8000',
19
+ * authHeaderFactory: () => ({ Authorization: 'Bearer xxx' }),
20
+ * });
21
+ * const results = await writer.write(modules, registry);
22
+ * ```
23
+ */
24
+ import { ErrorCodes, FunctionModule, jsonSchemaToTypeBox, ModuleError, } from 'apcore-js';
25
+ import { extractPathParamNames, substitutePathParams } from '../http-verb-map.js';
26
+ import { createWriteResult } from './types.js';
27
+ /** HTTP methods that conventionally carry a JSON request body. */
28
+ const BODY_METHODS = new Set(['POST', 'PUT', 'PATCH']);
29
+ /**
30
+ * Error thrown when HTTP fields (method / path) cannot be extracted from
31
+ * a ScannedModule.
32
+ */
33
+ export class HTTPProxyWriterError extends Error {
34
+ constructor(moduleId, message) {
35
+ super(`[${moduleId}] ${message}`);
36
+ this.name = 'HTTPProxyWriterError';
37
+ }
38
+ }
39
+ function getHttpFields(mod) {
40
+ const metadata = (mod.metadata ?? {});
41
+ const m = mod.httpMethod;
42
+ const httpMethod = (typeof m === 'string' && m) || (typeof metadata.httpMethod === 'string' && metadata.httpMethod) || 'GET';
43
+ const p = mod.urlPath;
44
+ let urlPath = (typeof p === 'string' && p) || (typeof metadata.urlPath === 'string' && metadata.urlPath) || '/';
45
+ urlPath = String(urlPath);
46
+ if (/^(https?|file|ftp):\/\//i.test(urlPath)) {
47
+ throw new HTTPProxyWriterError(mod.moduleId, `url_path must be a relative path, not an absolute URL: ${JSON.stringify(urlPath)}`);
48
+ }
49
+ return { httpMethod: String(httpMethod), urlPath };
50
+ }
51
+ function joinUrl(baseUrl, path) {
52
+ if (!baseUrl)
53
+ return path;
54
+ const base = baseUrl.replace(/\/+$/, '');
55
+ const rel = path.startsWith('/') ? path : `/${path}`;
56
+ return `${base}${rel}`;
57
+ }
58
+ function extractErrorMessage(resp, text) {
59
+ const contentType = resp.headers.get('content-type') ?? '';
60
+ if (contentType.startsWith('application/json')) {
61
+ try {
62
+ const body = JSON.parse(text);
63
+ return (body.error_message
64
+ ?? body.detail
65
+ ?? body.error
66
+ ?? body.message
67
+ ?? text.slice(0, 200));
68
+ }
69
+ catch {
70
+ // fall through to text slice
71
+ }
72
+ }
73
+ return text.slice(0, 200);
74
+ }
75
+ /**
76
+ * Register each {@link ScannedModule} as an HTTP proxy module in the
77
+ * provided registry. Each registered module's `execute()` forwards its
78
+ * inputs to the configured `baseUrl` and maps the response back to the
79
+ * module's output schema.
80
+ */
81
+ export class HTTPProxyRegistryWriter {
82
+ baseUrl;
83
+ authHeaderFactory;
84
+ timeoutMs;
85
+ fetchImpl;
86
+ constructor(options) {
87
+ this.baseUrl = options.baseUrl;
88
+ this.authHeaderFactory = options.authHeaderFactory;
89
+ this.timeoutMs = options.timeoutMs ?? 60_000;
90
+ const f = options.fetchImpl ?? globalThis.fetch;
91
+ if (!f) {
92
+ throw new Error('HTTPProxyRegistryWriter: global fetch is unavailable — pass `fetchImpl` explicitly or run on Node 20+.');
93
+ }
94
+ this.fetchImpl = f;
95
+ }
96
+ /**
97
+ * Register each module's HTTP proxy into the registry.
98
+ *
99
+ * Returns one {@link WriteResult} per module. A module that fails to
100
+ * build is reported with `verified: false` rather than throwing, so
101
+ * one bad module does not abort the batch.
102
+ */
103
+ async write(modules, registry) {
104
+ const results = [];
105
+ for (const mod of modules) {
106
+ try {
107
+ const fm = this.buildFunctionModule(mod);
108
+ registry.register(mod.moduleId, fm);
109
+ results.push(createWriteResult(mod.moduleId, null, true));
110
+ }
111
+ catch (err) {
112
+ const msg = err instanceof Error ? `${err.name}: ${err.message}` : String(err);
113
+ results.push(createWriteResult(mod.moduleId, null, false, msg));
114
+ }
115
+ }
116
+ return results;
117
+ }
118
+ buildFunctionModule(mod) {
119
+ const { httpMethod, urlPath } = getHttpFields(mod);
120
+ const pathParams = extractPathParamNames(urlPath);
121
+ const baseUrl = this.baseUrl;
122
+ const authFactory = this.authHeaderFactory;
123
+ const timeoutMs = this.timeoutMs;
124
+ const fetchImpl = this.fetchImpl;
125
+ const execute = async (inputs, _ctx) => {
126
+ const headers = { 'content-type': 'application/json' };
127
+ if (authFactory) {
128
+ const authHeaders = authFactory();
129
+ if (authHeaders && typeof authHeaders === 'object') {
130
+ Object.assign(headers, authHeaders);
131
+ }
132
+ else {
133
+ throw new TypeError(`authHeaderFactory must return an object of headers, got ${typeof authHeaders}`);
134
+ }
135
+ }
136
+ // Split inputs into path-params and remaining; substitute path placeholders.
137
+ const pathValues = {};
138
+ const nonPath = {};
139
+ for (const [k, v] of Object.entries(inputs)) {
140
+ if (pathParams.has(k))
141
+ pathValues[k] = v;
142
+ else
143
+ nonPath[k] = v;
144
+ }
145
+ const actualPath = substitutePathParams(urlPath, pathValues);
146
+ let fullUrl = joinUrl(baseUrl, actualPath);
147
+ let body;
148
+ const methodUpper = httpMethod.toUpperCase();
149
+ if (Object.keys(nonPath).length > 0) {
150
+ if (BODY_METHODS.has(methodUpper)) {
151
+ body = JSON.stringify(nonPath);
152
+ }
153
+ else {
154
+ const params = new URLSearchParams();
155
+ for (const [k, v] of Object.entries(nonPath)) {
156
+ if (v === undefined || v === null)
157
+ continue;
158
+ if (typeof v === 'object') {
159
+ // Non-body HTTP methods cannot carry nested JSON — log and str-serialize
160
+ // to match Python's behaviour rather than silently drop.
161
+ params.append(k, JSON.stringify(v));
162
+ }
163
+ else {
164
+ params.append(k, String(v));
165
+ }
166
+ }
167
+ const sep = fullUrl.includes('?') ? '&' : '?';
168
+ fullUrl = `${fullUrl}${sep}${params.toString()}`;
169
+ }
170
+ }
171
+ const controller = new AbortController();
172
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
173
+ let resp;
174
+ try {
175
+ resp = await fetchImpl(fullUrl, {
176
+ method: methodUpper,
177
+ headers,
178
+ body,
179
+ signal: controller.signal,
180
+ });
181
+ }
182
+ catch (exc) {
183
+ clearTimeout(timer);
184
+ const msg = exc instanceof Error ? exc.message : String(exc);
185
+ throw new ModuleError(ErrorCodes.MODULE_EXECUTE_ERROR, `HTTP transport error: ${msg}`, {});
186
+ }
187
+ clearTimeout(timer);
188
+ const text = await resp.text();
189
+ if (resp.status >= 200 && resp.status < 300) {
190
+ if (resp.status === 204 || text === '')
191
+ return {};
192
+ let parsed;
193
+ try {
194
+ parsed = JSON.parse(text);
195
+ }
196
+ catch (exc) {
197
+ throw new ModuleError(ErrorCodes.MODULE_EXECUTE_ERROR, `HTTP ${resp.status}: invalid JSON in response body`, { http_status: resp.status });
198
+ }
199
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
200
+ throw new ModuleError(ErrorCodes.MODULE_EXECUTE_ERROR, `HTTP ${resp.status}: expected JSON object, got ${Array.isArray(parsed) ? 'array' : typeof parsed}`, { http_status: resp.status });
201
+ }
202
+ return parsed;
203
+ }
204
+ const errorMsg = extractErrorMessage(resp, text);
205
+ throw new ModuleError(ErrorCodes.MODULE_EXECUTE_ERROR, `HTTP ${resp.status}: ${errorMsg}`, { http_status: resp.status });
206
+ };
207
+ return new FunctionModule({
208
+ execute,
209
+ moduleId: mod.moduleId,
210
+ inputSchema: jsonSchemaToTypeBox(mod.inputSchema),
211
+ outputSchema: jsonSchemaToTypeBox(mod.outputSchema),
212
+ description: mod.description,
213
+ documentation: mod.documentation,
214
+ tags: mod.tags.length > 0 ? [...mod.tags] : null,
215
+ version: mod.version,
216
+ annotations: mod.annotations,
217
+ metadata: Object.keys(mod.metadata).length > 0 ? { ...mod.metadata } : null,
218
+ examples: mod.examples.length > 0 ? [...mod.examples] : null,
219
+ });
220
+ }
221
+ }
222
+ //# sourceMappingURL=http-proxy-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-proxy-writer.js","sourceRoot":"","sources":["../../src/output/http-proxy-writer.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,6 @@ export { RegistryWriter } from './registry-writer.js';
4
4
  export { getWriter } from './factory.js';
5
5
  export type { WriteResult, VerifyResult, Verifier } from './types.js';
6
6
  export { createWriteResult } from './types.js';
7
- export { WriteError } from './errors.js';
7
+ export { WriteError, InvalidFormatError } from './errors.js';
8
8
  export { YAMLVerifier, SyntaxVerifier, RegistryVerifier, MagicBytesVerifier, JSONVerifier, runVerifierChain, } from './verifiers.js';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/output/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/output/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
@@ -3,6 +3,6 @@ export { TypeScriptWriter } from './typescript-writer.js';
3
3
  export { RegistryWriter } from './registry-writer.js';
4
4
  export { getWriter } from './factory.js';
5
5
  export { createWriteResult } from './types.js';
6
- export { WriteError } from './errors.js';
6
+ export { WriteError, InvalidFormatError } from './errors.js';
7
7
  export { YAMLVerifier, SyntaxVerifier, RegistryVerifier, MagicBytesVerifier, JSONVerifier, runVerifierChain, } from './verifiers.js';
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/output/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/output/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
@@ -1,13 +1,31 @@
1
1
  import type { ScannedModule } from '../types.js';
2
- import type { WriteResult, Verifier } from './types.js';
2
+ import type { WriteResult } from './types.js';
3
+ import type { FileWriteOptions } from './base-writer.js';
4
+ /**
5
+ * Write scanned modules to an apcore-js registry.
6
+ *
7
+ * Resolves each module's target function via `resolveTarget`, wraps it in a
8
+ * `FunctionModule`, and calls `registry.register()`. Supports dry-run and
9
+ * built-in / custom verification.
10
+ */
3
11
  export declare class RegistryWriter {
12
+ /**
13
+ * Register modules into the provided registry.
14
+ *
15
+ * @async This method is async in TypeScript due to dynamic module loading via
16
+ * `resolveTarget`. In Python and Rust the equivalent is synchronous.
17
+ * Always `await` this call: `await writer.write(modules, registry)`.
18
+ *
19
+ * @param modules - Scanned modules to register.
20
+ * @param registry - Target registry that implements `register()`.
21
+ * @param options - Optional write options: `dryRun`, `verify`, `verifiers`.
22
+ * @returns Array of WriteResult, one per module.
23
+ */
4
24
  write(modules: ScannedModule[], registry: {
5
25
  register(moduleId: string, module: unknown): void;
6
26
  getModule?(id: string): unknown;
7
- }, options?: {
8
- dryRun?: boolean;
9
- verify?: boolean;
10
- verifiers?: Verifier[];
27
+ }, options?: FileWriteOptions & {
28
+ allowedPrefixes?: string[];
11
29
  }): Promise<WriteResult[]>;
12
30
  private _toFunctionModule;
13
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry-writer.d.ts","sourceRoot":"","sources":["../../src/output/registry-writer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIxD,qBAAa,cAAc;IACnB,KAAK,CACT,OAAO,EAAE,aAAa,EAAE,EACxB,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EAChG,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;KAAE,GACvE,OAAO,CAAC,WAAW,EAAE,CAAC;YA+BX,iBAAiB;CA2BhC"}
1
+ {"version":3,"file":"registry-writer.d.ts","sourceRoot":"","sources":["../../src/output/registry-writer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB;;;;;;;;;;;OAWG;IACG,KAAK,CACT,OAAO,EAAE,aAAa,EAAE,EACxB,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EAChG,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC1D,OAAO,CAAC,WAAW,EAAE,CAAC;YA6CX,iBAAiB;CAmChC"}