assert-json-body 1.0.2

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 (211) hide show
  1. package/README.md +352 -0
  2. package/dist/assertion/diff-recordings-vs-spec.d.ts +3 -0
  3. package/dist/assertion/diff-recordings-vs-spec.d.ts.map +1 -0
  4. package/dist/assertion/diff-recordings-vs-spec.js +176 -0
  5. package/dist/assertion/diff-recordings-vs-spec.js.map +1 -0
  6. package/dist/assertion/index.d.ts +2 -0
  7. package/dist/assertion/index.d.ts.map +1 -0
  8. package/dist/assertion/index.js +2 -0
  9. package/dist/assertion/index.js.map +1 -0
  10. package/dist/assertion/recorder.d.ts +7 -0
  11. package/dist/assertion/recorder.d.ts.map +1 -0
  12. package/dist/assertion/recorder.js +81 -0
  13. package/dist/assertion/recorder.js.map +1 -0
  14. package/dist/assertion/summarize-recordings.d.ts +3 -0
  15. package/dist/assertion/summarize-recordings.d.ts.map +1 -0
  16. package/dist/assertion/summarize-recordings.js +121 -0
  17. package/dist/assertion/summarize-recordings.js.map +1 -0
  18. package/dist/assertion/validator.d.ts +2 -0
  19. package/dist/assertion/validator.d.ts.map +1 -0
  20. package/dist/assertion/validator.js +3 -0
  21. package/dist/assertion/validator.js.map +1 -0
  22. package/dist/base.d.ts +2 -0
  23. package/dist/base.d.ts.map +1 -0
  24. package/dist/base.js +3 -0
  25. package/dist/base.js.map +1 -0
  26. package/dist/cli/index.d.ts +3 -0
  27. package/dist/cli/index.d.ts.map +1 -0
  28. package/dist/cli/index.js +84 -0
  29. package/dist/cli/index.js.map +1 -0
  30. package/dist/extractor/src/lib/child-expansion.d.ts +8 -0
  31. package/dist/extractor/src/lib/child-expansion.d.ts.map +1 -0
  32. package/dist/extractor/src/lib/child-expansion.js +72 -0
  33. package/dist/extractor/src/lib/child-expansion.js.map +1 -0
  34. package/dist/extractor/src/lib/git.d.ts +9 -0
  35. package/dist/extractor/src/lib/git.d.ts.map +1 -0
  36. package/dist/extractor/src/lib/git.js +22 -0
  37. package/dist/extractor/src/lib/git.js.map +1 -0
  38. package/dist/extractor/src/lib/schema-flatten.d.ts +10 -0
  39. package/dist/extractor/src/lib/schema-flatten.d.ts.map +1 -0
  40. package/dist/extractor/src/lib/schema-flatten.js +203 -0
  41. package/dist/extractor/src/lib/schema-flatten.js.map +1 -0
  42. package/dist/extractor/src/lib/type-utils.d.ts +5 -0
  43. package/dist/extractor/src/lib/type-utils.d.ts.map +1 -0
  44. package/dist/extractor/src/lib/type-utils.js +27 -0
  45. package/dist/extractor/src/lib/type-utils.js.map +1 -0
  46. package/dist/index.d.ts +5 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +6 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/lib/assert.d.ts +27 -0
  51. package/dist/lib/assert.d.ts.map +1 -0
  52. package/dist/lib/assert.js +32 -0
  53. package/dist/lib/assert.js.map +1 -0
  54. package/dist/lib/child-expansion.d.ts +2 -0
  55. package/dist/lib/child-expansion.d.ts.map +1 -0
  56. package/dist/lib/child-expansion.js +2 -0
  57. package/dist/lib/child-expansion.js.map +1 -0
  58. package/dist/lib/config.d.ts +27 -0
  59. package/dist/lib/config.d.ts.map +1 -0
  60. package/dist/lib/config.js +139 -0
  61. package/dist/lib/config.js.map +1 -0
  62. package/dist/lib/extractor.d.ts +6 -0
  63. package/dist/lib/extractor.d.ts.map +1 -0
  64. package/dist/lib/extractor.js +164 -0
  65. package/dist/lib/extractor.js.map +1 -0
  66. package/dist/lib/git.d.ts +2 -0
  67. package/dist/lib/git.d.ts.map +1 -0
  68. package/dist/lib/git.js +2 -0
  69. package/dist/lib/git.js.map +1 -0
  70. package/dist/lib/recorder.d.ts +8 -0
  71. package/dist/lib/recorder.d.ts.map +1 -0
  72. package/dist/lib/recorder.js +68 -0
  73. package/dist/lib/recorder.js.map +1 -0
  74. package/dist/lib/responses.d.ts +13 -0
  75. package/dist/lib/responses.d.ts.map +1 -0
  76. package/dist/lib/responses.js +114 -0
  77. package/dist/lib/responses.js.map +1 -0
  78. package/dist/lib/schema-flatten.d.ts +2 -0
  79. package/dist/lib/schema-flatten.d.ts.map +1 -0
  80. package/dist/lib/schema-flatten.js +2 -0
  81. package/dist/lib/schema-flatten.js.map +1 -0
  82. package/dist/lib/tools/diff-recordings-vs-spec.d.ts +2 -0
  83. package/dist/lib/tools/diff-recordings-vs-spec.d.ts.map +1 -0
  84. package/dist/lib/tools/diff-recordings-vs-spec.js +2 -0
  85. package/dist/lib/tools/diff-recordings-vs-spec.js.map +1 -0
  86. package/dist/lib/tools/recorder.d.ts +2 -0
  87. package/dist/lib/tools/recorder.d.ts.map +1 -0
  88. package/dist/lib/tools/recorder.js +3 -0
  89. package/dist/lib/tools/recorder.js.map +1 -0
  90. package/dist/lib/tools/summarize-recordings.d.ts +2 -0
  91. package/dist/lib/tools/summarize-recordings.d.ts.map +1 -0
  92. package/dist/lib/tools/summarize-recordings.js +2 -0
  93. package/dist/lib/tools/summarize-recordings.js.map +1 -0
  94. package/dist/lib/type-utils.d.ts +2 -0
  95. package/dist/lib/type-utils.d.ts.map +1 -0
  96. package/dist/lib/type-utils.js +2 -0
  97. package/dist/lib/type-utils.js.map +1 -0
  98. package/dist/lib/validator.d.ts +33 -0
  99. package/dist/lib/validator.d.ts.map +1 -0
  100. package/dist/lib/validator.js +179 -0
  101. package/dist/lib/validator.js.map +1 -0
  102. package/dist/types/index.d.ts +88 -0
  103. package/dist/types/index.d.ts.map +1 -0
  104. package/dist/types/index.js +3 -0
  105. package/dist/types/index.js.map +1 -0
  106. package/dist-cjs/assertion/diff-recordings-vs-spec.d.ts +3 -0
  107. package/dist-cjs/assertion/diff-recordings-vs-spec.d.ts.map +1 -0
  108. package/dist-cjs/assertion/diff-recordings-vs-spec.js +178 -0
  109. package/dist-cjs/assertion/diff-recordings-vs-spec.js.map +1 -0
  110. package/dist-cjs/assertion/index.d.ts +2 -0
  111. package/dist-cjs/assertion/index.d.ts.map +1 -0
  112. package/dist-cjs/assertion/index.js +3 -0
  113. package/dist-cjs/assertion/index.js.map +1 -0
  114. package/dist-cjs/assertion/recorder.d.ts +7 -0
  115. package/dist-cjs/assertion/recorder.d.ts.map +1 -0
  116. package/dist-cjs/assertion/recorder.js +84 -0
  117. package/dist-cjs/assertion/recorder.js.map +1 -0
  118. package/dist-cjs/assertion/summarize-recordings.d.ts +3 -0
  119. package/dist-cjs/assertion/summarize-recordings.d.ts.map +1 -0
  120. package/dist-cjs/assertion/summarize-recordings.js +123 -0
  121. package/dist-cjs/assertion/summarize-recordings.js.map +1 -0
  122. package/dist-cjs/assertion/validator.d.ts +2 -0
  123. package/dist-cjs/assertion/validator.d.ts.map +1 -0
  124. package/dist-cjs/assertion/validator.js +7 -0
  125. package/dist-cjs/assertion/validator.js.map +1 -0
  126. package/dist-cjs/base.d.ts +2 -0
  127. package/dist-cjs/base.d.ts.map +1 -0
  128. package/dist-cjs/base.js +7 -0
  129. package/dist-cjs/base.js.map +1 -0
  130. package/dist-cjs/cli/index.d.ts +3 -0
  131. package/dist-cjs/cli/index.d.ts.map +1 -0
  132. package/dist-cjs/cli/index.js +86 -0
  133. package/dist-cjs/cli/index.js.map +1 -0
  134. package/dist-cjs/extractor/src/lib/child-expansion.d.ts +8 -0
  135. package/dist-cjs/extractor/src/lib/child-expansion.d.ts.map +1 -0
  136. package/dist-cjs/extractor/src/lib/child-expansion.js +76 -0
  137. package/dist-cjs/extractor/src/lib/child-expansion.js.map +1 -0
  138. package/dist-cjs/extractor/src/lib/git.d.ts +9 -0
  139. package/dist-cjs/extractor/src/lib/git.d.ts.map +1 -0
  140. package/dist-cjs/extractor/src/lib/git.js +26 -0
  141. package/dist-cjs/extractor/src/lib/git.js.map +1 -0
  142. package/dist-cjs/extractor/src/lib/schema-flatten.d.ts +10 -0
  143. package/dist-cjs/extractor/src/lib/schema-flatten.d.ts.map +1 -0
  144. package/dist-cjs/extractor/src/lib/schema-flatten.js +211 -0
  145. package/dist-cjs/extractor/src/lib/schema-flatten.js.map +1 -0
  146. package/dist-cjs/extractor/src/lib/type-utils.d.ts +5 -0
  147. package/dist-cjs/extractor/src/lib/type-utils.d.ts.map +1 -0
  148. package/dist-cjs/extractor/src/lib/type-utils.js +32 -0
  149. package/dist-cjs/extractor/src/lib/type-utils.js.map +1 -0
  150. package/dist-cjs/index.d.ts +5 -0
  151. package/dist-cjs/index.d.ts.map +1 -0
  152. package/dist-cjs/index.js +26 -0
  153. package/dist-cjs/index.js.map +1 -0
  154. package/dist-cjs/lib/assert.d.ts +27 -0
  155. package/dist-cjs/lib/assert.d.ts.map +1 -0
  156. package/dist-cjs/lib/assert.js +35 -0
  157. package/dist-cjs/lib/assert.js.map +1 -0
  158. package/dist-cjs/lib/child-expansion.d.ts +2 -0
  159. package/dist-cjs/lib/child-expansion.d.ts.map +1 -0
  160. package/dist-cjs/lib/child-expansion.js +7 -0
  161. package/dist-cjs/lib/child-expansion.js.map +1 -0
  162. package/dist-cjs/lib/config.d.ts +27 -0
  163. package/dist-cjs/lib/config.d.ts.map +1 -0
  164. package/dist-cjs/lib/config.js +147 -0
  165. package/dist-cjs/lib/config.js.map +1 -0
  166. package/dist-cjs/lib/extractor.d.ts +6 -0
  167. package/dist-cjs/lib/extractor.d.ts.map +1 -0
  168. package/dist-cjs/lib/extractor.js +172 -0
  169. package/dist-cjs/lib/extractor.js.map +1 -0
  170. package/dist-cjs/lib/git.d.ts +2 -0
  171. package/dist-cjs/lib/git.d.ts.map +1 -0
  172. package/dist-cjs/lib/git.js +6 -0
  173. package/dist-cjs/lib/git.js.map +1 -0
  174. package/dist-cjs/lib/recorder.d.ts +8 -0
  175. package/dist-cjs/lib/recorder.d.ts.map +1 -0
  176. package/dist-cjs/lib/recorder.js +71 -0
  177. package/dist-cjs/lib/recorder.js.map +1 -0
  178. package/dist-cjs/lib/responses.d.ts +13 -0
  179. package/dist-cjs/lib/responses.d.ts.map +1 -0
  180. package/dist-cjs/lib/responses.js +117 -0
  181. package/dist-cjs/lib/responses.js.map +1 -0
  182. package/dist-cjs/lib/schema-flatten.d.ts +2 -0
  183. package/dist-cjs/lib/schema-flatten.d.ts.map +1 -0
  184. package/dist-cjs/lib/schema-flatten.js +11 -0
  185. package/dist-cjs/lib/schema-flatten.js.map +1 -0
  186. package/dist-cjs/lib/tools/diff-recordings-vs-spec.d.ts +2 -0
  187. package/dist-cjs/lib/tools/diff-recordings-vs-spec.d.ts.map +1 -0
  188. package/dist-cjs/lib/tools/diff-recordings-vs-spec.js +18 -0
  189. package/dist-cjs/lib/tools/diff-recordings-vs-spec.js.map +1 -0
  190. package/dist-cjs/lib/tools/recorder.d.ts +2 -0
  191. package/dist-cjs/lib/tools/recorder.d.ts.map +1 -0
  192. package/dist-cjs/lib/tools/recorder.js +19 -0
  193. package/dist-cjs/lib/tools/recorder.js.map +1 -0
  194. package/dist-cjs/lib/tools/summarize-recordings.d.ts +2 -0
  195. package/dist-cjs/lib/tools/summarize-recordings.d.ts.map +1 -0
  196. package/dist-cjs/lib/tools/summarize-recordings.js +18 -0
  197. package/dist-cjs/lib/tools/summarize-recordings.js.map +1 -0
  198. package/dist-cjs/lib/type-utils.d.ts +2 -0
  199. package/dist-cjs/lib/type-utils.d.ts.map +1 -0
  200. package/dist-cjs/lib/type-utils.js +8 -0
  201. package/dist-cjs/lib/type-utils.js.map +1 -0
  202. package/dist-cjs/lib/validator.d.ts +33 -0
  203. package/dist-cjs/lib/validator.d.ts.map +1 -0
  204. package/dist-cjs/lib/validator.js +182 -0
  205. package/dist-cjs/lib/validator.js.map +1 -0
  206. package/dist-cjs/package.json +1 -0
  207. package/dist-cjs/types/index.d.ts +88 -0
  208. package/dist-cjs/types/index.d.ts.map +1 -0
  209. package/dist-cjs/types/index.js +4 -0
  210. package/dist-cjs/types/index.js.map +1 -0
  211. package/package.json +125 -0
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildSchemaTree = buildSchemaTree;
4
+ exports.resolveFieldSchema = resolveFieldSchema;
5
+ const type_utils_js_1 = require("./type-utils.js");
6
+ const schema_flatten_js_1 = require("./schema-flatten.js");
7
+ function buildSchemaTree(schema, components, seen = new Set()) {
8
+ const flat = (0, schema_flatten_js_1.flatten)(schema, components, seen);
9
+ for (const group of [flat.required, flat.optional]) {
10
+ for (const field of group) {
11
+ const resolved = resolveFieldSchema(field.name, schema, components);
12
+ if (resolved) {
13
+ const { kind, target } = resolved;
14
+ if ((kind === 'object' || kind === 'array-object') && target) {
15
+ field.children = buildSchemaTree(target, components, new Set(seen));
16
+ }
17
+ else if (kind === 'ref-object' && target) {
18
+ field.children = buildSchemaTree(target, components, new Set(seen.add((0, type_utils_js_1.refNameOf)(field.type))));
19
+ }
20
+ }
21
+ }
22
+ }
23
+ return flat;
24
+ }
25
+ function resolveFieldSchema(fieldName, parentSchema, components) {
26
+ const isRef = (s) => '$ref' in s;
27
+ const isSchemaObject = (s) => !('$ref' in s);
28
+ const visited = new Set();
29
+ const propertyDefs = {};
30
+ const collect = (sch) => {
31
+ if (!sch)
32
+ return;
33
+ if (isRef(sch)) {
34
+ const refName = sch.$ref.split('/').pop();
35
+ if (visited.has(refName))
36
+ return;
37
+ visited.add(refName);
38
+ const target = components[refName];
39
+ if (target)
40
+ collect(target);
41
+ return;
42
+ }
43
+ if (isSchemaObject(sch) && sch.allOf)
44
+ for (const part of sch.allOf)
45
+ collect(part);
46
+ if (isSchemaObject(sch) && sch.properties)
47
+ Object.assign(propertyDefs, sch.properties);
48
+ };
49
+ collect(parentSchema);
50
+ const propSchema = propertyDefs[fieldName];
51
+ if (!propSchema)
52
+ return null;
53
+ if (isRef(propSchema)) {
54
+ const refName = propSchema.$ref.split('/').pop();
55
+ const target = components[refName];
56
+ if (target && isSchemaObject(target) && (target.type === 'object' || target.properties || target.allOf))
57
+ return { kind: 'ref-object', target };
58
+ return { kind: 'ref' };
59
+ }
60
+ if (propSchema.type === 'object' || propSchema.properties || propSchema.allOf)
61
+ return { kind: 'object', target: propSchema };
62
+ if (propSchema.type === 'array' && propSchema.items) {
63
+ const it = propSchema.items;
64
+ if (isRef(it)) {
65
+ const refName = it.$ref.split('/').pop();
66
+ const target = components[refName];
67
+ if (target && isSchemaObject(target) && (target.type === 'object' || target.properties || target.allOf))
68
+ return { kind: 'array-object', target };
69
+ }
70
+ else if (it.type === 'object' || it.properties || it.allOf) {
71
+ return { kind: 'array-object', target: it };
72
+ }
73
+ }
74
+ return null;
75
+ }
76
+ //# sourceMappingURL=child-expansion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-expansion.js","sourceRoot":"","sources":["../../../../src/extractor/src/lib/child-expansion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare function run(cmd: string, args: string[], opts?: {
2
+ inherit?: boolean;
3
+ }): string;
4
+ export declare function sparseCheckout(repo: string, specPath: string, ref?: string): {
5
+ workdir: string;
6
+ commit: string;
7
+ specContent: string;
8
+ };
9
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../../src/extractor/src/lib/git.ts"],"names":[],"mappings":"AAKA,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,UAIhF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAUrI"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.run = run;
4
+ exports.sparseCheckout = sparseCheckout;
5
+ const node_child_process_1 = require("node:child_process");
6
+ const node_fs_1 = require("node:fs");
7
+ const node_os_1 = require("node:os");
8
+ const node_path_1 = require("node:path");
9
+ function run(cmd, args, opts = {}) {
10
+ const res = (0, node_child_process_1.spawnSync)(cmd, args, { stdio: opts.inherit ? 'inherit' : 'pipe', encoding: 'utf8' });
11
+ if (res.status !== 0)
12
+ throw new Error(`${cmd} ${args.join(' ')} failed: ${res.stderr || res.status}`);
13
+ return res.stdout;
14
+ }
15
+ function sparseCheckout(repo, specPath, ref = 'main') {
16
+ const workdir = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `spec-checkout-${Date.now()}`);
17
+ run('git', ['init', workdir]);
18
+ run('git', ['-C', workdir, 'remote', 'add', '-f', 'origin', repo]);
19
+ run('git', ['-C', workdir, 'config', 'core.sparseCheckout', 'true']);
20
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(workdir, '.git', 'info', 'sparse-checkout'), specPath + '\n');
21
+ run('git', ['-C', workdir, 'pull', 'origin', ref]);
22
+ const commit = run('git', ['-C', workdir, 'rev-parse', 'HEAD']).trim();
23
+ const specContent = (0, node_fs_1.readFileSync)((0, node_path_1.join)(workdir, specPath), 'utf8');
24
+ return { workdir, commit, specContent };
25
+ }
26
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../src/extractor/src/lib/git.ts"],"names":[],"mappings":";;AAKA,kBAIC;AAED,wCAUC;AArBD,2DAA+C;AAC/C,qCAAsD;AACtD,qCAAiC;AACjC,yCAAiC;AAEjC,SAAgB,GAAG,CAAC,GAAW,EAAE,IAAc,EAAE,OAA8B,EAAE;IAC/E,MAAM,GAAG,GAAG,IAAA,8BAAS,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACjG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACtG,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY,EAAE,QAAgB,EAAE,GAAG,GAAG,MAAM;IACzE,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,iBAAiB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC9D,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9B,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,IAAA,uBAAa,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;IACjF,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvE,MAAM,WAAW,GAAG,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAClE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { FieldSpec, FlattenResult, SchemaGroup as OutputSchema } from '../../../types/index.js';
2
+ import { OpenAPIV3 } from 'openapi-types';
3
+ export type SchemaOrRef = OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject;
4
+ export declare function flatten(schema: SchemaOrRef, components: Record<string, SchemaOrRef>, seen?: Set<string>): OutputSchema;
5
+ export declare function flattenInternal(schema: SchemaOrRef, components: Record<string, SchemaOrRef>, seen?: Set<string>): FlattenResult;
6
+ export declare function describeType(schema: SchemaOrRef | undefined, components: Record<string, SchemaOrRef>, stack?: string[]): string;
7
+ export declare function deriveFieldMetadata(schema: SchemaOrRef, components: Record<string, SchemaOrRef>): Partial<FieldSpec>;
8
+ export declare function isObjectLike(s: SchemaOrRef | undefined | null): boolean;
9
+ export declare function primitiveFromSchema(schema: SchemaOrRef | undefined, components: Record<string, SchemaOrRef>, stack: string[]): string | null;
10
+ //# sourceMappingURL=schema-flatten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-flatten.d.ts","sourceRoot":"","sources":["../../../../src/extractor/src/lib/schema-flatten.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEhG,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC;AAM7E,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,IAAI,cAAoB,GAAG,YAAY,CAG5H;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,IAAI,cAAoB,GAAG,aAAa,CAkDrI;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,MAAM,CAoCnI;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CA2CpH;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAIvE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CA2B5I"}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flatten = flatten;
4
+ exports.flattenInternal = flattenInternal;
5
+ exports.describeType = describeType;
6
+ exports.deriveFieldMetadata = deriveFieldMetadata;
7
+ exports.isObjectLike = isObjectLike;
8
+ exports.primitiveFromSchema = primitiveFromSchema;
9
+ const type_utils_js_1 = require("./type-utils.js");
10
+ function isRef(s) { return !!s && '$ref' in s; }
11
+ function isSchemaObject(s) { return !!s && !('$ref' in s); }
12
+ // Functions here are extracted from original single-file implementation for clarity and testability.
13
+ function flatten(schema, components, seen = new Set()) {
14
+ const { required, optional } = flattenInternal(schema, components, seen);
15
+ return { required, optional };
16
+ }
17
+ function flattenInternal(schema, components, seen = new Set()) {
18
+ if (isRef(schema)) {
19
+ const ref = schema.$ref.split('/').pop();
20
+ if (seen.has(ref))
21
+ return { required: [], optional: [] };
22
+ seen.add(ref);
23
+ const target = components[ref];
24
+ if (!target)
25
+ return { required: [], optional: [] };
26
+ return flattenInternal(target, components, seen);
27
+ }
28
+ let reqFields = [];
29
+ let optFields = [];
30
+ const expand = (sch, acc, refSeen) => {
31
+ if (!sch)
32
+ return;
33
+ if (isRef(sch)) {
34
+ const name = sch.$ref.split('/').pop();
35
+ if (refSeen.has(name))
36
+ return;
37
+ refSeen.add(name);
38
+ const target = components[name];
39
+ if (target)
40
+ expand(target, acc, refSeen);
41
+ return;
42
+ }
43
+ if (sch.allOf)
44
+ for (const part of sch.allOf)
45
+ expand(part, acc, refSeen);
46
+ if (isSchemaObject(sch))
47
+ acc.push(sch);
48
+ };
49
+ const directSchemas = [];
50
+ expand(schema, directSchemas, new Set());
51
+ const collectedRequired = new Set();
52
+ const collectedProps = {};
53
+ for (const s of directSchemas) {
54
+ for (const r of (s.required || []))
55
+ collectedRequired.add(r);
56
+ if (s.properties)
57
+ Object.assign(collectedProps, s.properties);
58
+ }
59
+ for (const [prop, propSchema] of Object.entries(collectedProps)) {
60
+ const metadata = deriveFieldMetadata(propSchema, components);
61
+ const rawType = describeType(propSchema, components);
62
+ const spec = {
63
+ name: prop,
64
+ type: (0, type_utils_js_1.normalizeType)(rawType),
65
+ ...metadata,
66
+ };
67
+ if (collectedRequired.has(prop))
68
+ reqFields.push(spec);
69
+ else
70
+ optFields.push(spec);
71
+ }
72
+ reqFields = (0, type_utils_js_1.dedupeFields)(reqFields);
73
+ optFields = (0, type_utils_js_1.dedupeFields)(optFields.filter(f => !reqFields.some(r => r.name === f.name)));
74
+ return { required: reqFields, optional: optFields };
75
+ }
76
+ function describeType(schema, components, stack = []) {
77
+ if (!schema)
78
+ return 'unknown';
79
+ if (isRef(schema)) {
80
+ const ref = schema.$ref.split('/').pop();
81
+ const target = components[ref];
82
+ if (!target)
83
+ return ref;
84
+ const prim = primitiveFromSchema(target, components, [...stack, ref]);
85
+ return prim ?? ref;
86
+ }
87
+ if (schema.type === 'array') {
88
+ const items = schema.items;
89
+ return `array<${(0, type_utils_js_1.normalizeType)(describeType(items, components, stack))}>`;
90
+ }
91
+ if (schema.allOf) {
92
+ const primCandidates = schema.allOf
93
+ .map((s) => primitiveFromSchema(s, components, stack))
94
+ .filter((t) => !!t && t !== 'object');
95
+ const unique = [...new Set(primCandidates)];
96
+ if (unique.length === 1)
97
+ return unique[0];
98
+ const hasObject = schema.allOf.some((s) => isObjectLike(s));
99
+ if (hasObject)
100
+ return 'object';
101
+ }
102
+ if (schema.type === 'object' || schema.properties)
103
+ return 'object';
104
+ if (schema.type) {
105
+ if (schema.type === 'string')
106
+ return 'string';
107
+ return schema.format ? `${schema.type}(${schema.format})` : schema.type;
108
+ }
109
+ if (schema.oneOf) {
110
+ const branches = schema.oneOf.map((s) => (0, type_utils_js_1.normalizeType)(describeType(s, components, stack)));
111
+ return branches.join('|');
112
+ }
113
+ if (schema.anyOf) {
114
+ const branches = schema.anyOf.map((s) => (0, type_utils_js_1.normalizeType)(describeType(s, components, stack)));
115
+ return branches.join('|');
116
+ }
117
+ return 'unknown';
118
+ }
119
+ function deriveFieldMetadata(schema, components) {
120
+ const meta = {};
121
+ const collectEnum = (sch) => {
122
+ if (!sch)
123
+ return undefined;
124
+ if (isSchemaObject(sch) && Array.isArray(sch.enum))
125
+ return sch.enum.map((v) => String(v));
126
+ if (isSchemaObject(sch) && sch.allOf) {
127
+ const enums = sch.allOf
128
+ .map((p) => collectEnum(p))
129
+ .filter((e) => Array.isArray(e));
130
+ if (enums.length)
131
+ return [...new Set(enums.flat())];
132
+ }
133
+ return undefined;
134
+ };
135
+ const detectWrapper = (refName, target) => {
136
+ if (!target)
137
+ return {};
138
+ const enumValues = collectEnum(target);
139
+ const underlyingPrim = primitiveFromSchema(target, components, [refName]);
140
+ const isPrimitiveLike = !!underlyingPrim && !(isSchemaObject(target) && (target.properties || target.type === 'object'));
141
+ return {
142
+ underlying: underlyingPrim ? (0, type_utils_js_1.normalizeType)(underlyingPrim) : undefined,
143
+ wrapper: !!underlyingPrim && isPrimitiveLike,
144
+ enumValues,
145
+ };
146
+ };
147
+ if (isRef(schema)) {
148
+ const ref = schema.$ref.split('/').pop();
149
+ const target = components[ref];
150
+ const { underlying, wrapper, enumValues } = detectWrapper(ref, target);
151
+ if (enumValues?.length)
152
+ meta.enumValues = enumValues;
153
+ if (wrapper && underlying)
154
+ meta.underlyingPrimitive = underlying;
155
+ meta.rawRefName = ref;
156
+ if (wrapper)
157
+ meta.wrapper = true;
158
+ return meta;
159
+ }
160
+ if (schema.allOf) {
161
+ const enumValues = collectEnum(schema);
162
+ if (enumValues?.length)
163
+ meta.enumValues = enumValues;
164
+ }
165
+ else if (isSchemaObject(schema) && schema.enum) {
166
+ meta.enumValues = schema.enum.map((v) => String(v));
167
+ }
168
+ return meta;
169
+ }
170
+ function isObjectLike(s) {
171
+ if (!s)
172
+ return false;
173
+ if (isRef(s))
174
+ return false; // handled elsewhere
175
+ return !!(s.type === 'object' || s.properties || s.allOf);
176
+ }
177
+ function primitiveFromSchema(schema, components, stack) {
178
+ if (!schema)
179
+ return null;
180
+ if (isRef(schema)) {
181
+ const ref = schema.$ref.split('/').pop();
182
+ if (stack.includes(ref))
183
+ return ref; // cycle guard returns ref name
184
+ const target = components[ref];
185
+ if (!target)
186
+ return ref;
187
+ const rec = primitiveFromSchema(target, components, [...stack, ref]);
188
+ return rec ?? ref;
189
+ }
190
+ if (schema.allOf) {
191
+ const parts = schema.allOf.map((p) => primitiveFromSchema(p, components, stack)).filter(Boolean);
192
+ const uniq = [...new Set(parts)];
193
+ if (uniq.length === 1)
194
+ return uniq[0];
195
+ const bases = [...new Set(uniq.map(u => u.split('(')[0]))];
196
+ if (bases.length === 1) {
197
+ const withFormat = uniq.filter(u => u.includes('('));
198
+ if (withFormat.length === 1)
199
+ return withFormat[0];
200
+ return uniq.sort((a, b) => b.length - a.length)[0];
201
+ }
202
+ return null;
203
+ }
204
+ if (schema.type && schema.type !== 'object' && !schema.properties && schema.items === undefined) {
205
+ if (schema.type === 'string')
206
+ return 'string';
207
+ return schema.format ? `${schema.type}(${schema.format})` : schema.type;
208
+ }
209
+ return null;
210
+ }
211
+ //# sourceMappingURL=schema-flatten.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-flatten.js","sourceRoot":"","sources":["../../../../src/extractor/src/lib/schema-flatten.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { FieldSpec } from '../../../types/index.js';
2
+ export declare function normalizeType(t: string): string;
3
+ export declare function refNameOf(t: string): string;
4
+ export declare function dedupeFields(arr: FieldSpec[]): FieldSpec[];
5
+ //# sourceMappingURL=type-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-utils.d.ts","sourceRoot":"","sources":["../../../../src/extractor/src/lib/type-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAW/C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAmD;AAE/F,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAK1D"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeType = normalizeType;
4
+ exports.refNameOf = refNameOf;
5
+ exports.dedupeFields = dedupeFields;
6
+ function normalizeType(t) {
7
+ if (!t)
8
+ return t;
9
+ if (t.startsWith('string('))
10
+ return 'string';
11
+ t = t.replace(/array<string\([^>]+\)>/g, 'array<string>');
12
+ if (t === 'integer' || /^integer\(/.test(t))
13
+ t = 'number';
14
+ t = t.replace(/\binteger(?:\([^)]*\))?\b/g, 'number');
15
+ t = t.replace(/array<integer(?:\([^>]*\))?>/g, 'array<number>');
16
+ // Collapse formatted numbers produced after integer replacement inside unions or generics
17
+ t = t.replace(/\bnumber\([^)]*\)\b/g, 'number');
18
+ t = t.replace(/array<number\([^>]*\)>/g, 'array<number>');
19
+ return t;
20
+ }
21
+ function refNameOf(t) { return t.split('<').pop().replace(/>.*/, ''); }
22
+ function dedupeFields(arr) {
23
+ const seen = new Set();
24
+ const out = [];
25
+ for (const f of arr)
26
+ if (!seen.has(f.name)) {
27
+ out.push(f);
28
+ seen.add(f.name);
29
+ }
30
+ return out.sort((a, b) => a.name.localeCompare(b.name));
31
+ }
32
+ //# sourceMappingURL=type-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../../src/extractor/src/lib/type-utils.ts"],"names":[],"mappings":";;AAEA,sCAWC;AAED,8BAA+F;AAE/F,oCAKC;AApBD,SAAgB,aAAa,CAAC,CAAS;IACrC,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,CAAC,GAAG,QAAQ,CAAC;IAC1D,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,+BAA+B,EAAE,eAAe,CAAC,CAAC;IAChE,0FAA0F;IAC1F,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC;IAC1D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,SAAS,CAAC,CAAS,IAAY,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/F,SAAgB,YAAY,CAAC,GAAgB;IAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,GAAG;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;IAC9E,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './types/index.js';
2
+ export { pickRoute } from './lib/responses.js';
3
+ export { validateResponseShape, ValidateResultBase } from './lib/validator.js';
4
+ export { recordBody } from './lib/recorder.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.recordBody = exports.validateResponseShape = exports.pickRoute = void 0;
18
+ // Framework-agnostic public API surface
19
+ __exportStar(require("./types/index.js"), exports);
20
+ var responses_js_1 = require("./lib/responses.js");
21
+ Object.defineProperty(exports, "pickRoute", { enumerable: true, get: function () { return responses_js_1.pickRoute; } });
22
+ var validator_js_1 = require("./lib/validator.js");
23
+ Object.defineProperty(exports, "validateResponseShape", { enumerable: true, get: function () { return validator_js_1.validateResponseShape; } });
24
+ var recorder_js_1 = require("./lib/recorder.js");
25
+ Object.defineProperty(exports, "recordBody", { enumerable: true, get: function () { return recorder_js_1.recordBody; } });
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wCAAwC;AACxC,mDAAiC;AACjC,mDAA+C;AAAtC,yGAAA,SAAS,OAAA;AAClB,mDAA+E;AAAtE,qHAAA,qBAAqB,OAAA;AAC9B,iDAA+C;AAAtC,yGAAA,UAAU,OAAA"}
@@ -0,0 +1,27 @@
1
+ export interface AssertionSpec {
2
+ path: string;
3
+ method?: string;
4
+ status?: string;
5
+ }
6
+ export interface AssertionOptions {
7
+ /** If false, do not throw; instead return { ok:false, errors } */
8
+ throw?: boolean;
9
+ /** Enable body recording (requires env TEST_RESPONSE_BODY_RECORD_DIR); optional test label */
10
+ record?: boolean | {
11
+ label?: string;
12
+ };
13
+ /** Alternate responses file path (overrides environment resolution) */
14
+ responsesFilePath?: string;
15
+ /** Optional explicit config file path (looked up relative to cwd if relative) */
16
+ configPath?: string;
17
+ }
18
+ export interface AssertionResult {
19
+ ok: boolean;
20
+ errors?: string[];
21
+ }
22
+ /**
23
+ * High-level assertion helper: resolves the route spec entry and validates the given body.
24
+ * Throws by default on mismatch; pass { throw:false } to receive a structured result instead.
25
+ */
26
+ export declare function assertResponseShape(spec: AssertionSpec, body: unknown, options?: AssertionOptions): AssertionResult | void;
27
+ //# sourceMappingURL=assert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../src/lib/assert.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AACjF,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,OAAO,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAAG,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;AAEnE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,gBAAqB,GAAG,eAAe,GAAG,IAAI,CAoB9H"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertResponseShape = assertResponseShape;
4
+ const responses_js_1 = require("./responses.js");
5
+ const recorder_js_1 = require("./recorder.js");
6
+ const validator_js_1 = require("./validator.js");
7
+ /**
8
+ * High-level assertion helper: resolves the route spec entry and validates the given body.
9
+ * Throws by default on mismatch; pass { throw:false } to receive a structured result instead.
10
+ */
11
+ function assertResponseShape(spec, body, options = {}) {
12
+ const routeCtx = (0, responses_js_1.pickRoute)(spec.path, { method: spec.method, status: spec.status, responsesFilePath: options.responsesFilePath, configPath: options.configPath });
13
+ const wantRecord = !!options.record;
14
+ if (wantRecord) {
15
+ let label;
16
+ if (typeof options.record === 'object' && options.record)
17
+ label = options.record.label;
18
+ (0, recorder_js_1.recordBody)({ routeCtx, body, label });
19
+ }
20
+ try {
21
+ (0, validator_js_1._validateRouteContext)(routeCtx, body);
22
+ if (options.throw === false)
23
+ return { ok: true };
24
+ }
25
+ catch (err) {
26
+ if (options.throw === false) {
27
+ const msg = err.message || '';
28
+ // first line is summary; retain full message lines after summary for detail
29
+ const lines = msg.split('\n');
30
+ return { ok: false, errors: lines.slice(1).filter(Boolean) };
31
+ }
32
+ throw err;
33
+ }
34
+ }
35
+ //# sourceMappingURL=assert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.js","sourceRoot":"","sources":["../../src/lib/assert.ts"],"names":[],"mappings":";;AAuBA,kDAoBC;AA3CD,iDAA2C;AAC3C,+CAA2C;AAC3C,iDAAuD;AAiBvD;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,IAAmB,EAAE,IAAa,EAAE,UAA4B,EAAE;IACpG,MAAM,QAAQ,GAAiB,IAAA,wBAAS,EAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAChL,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,KAAyB,CAAC;QAC9B,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM;YAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QACvF,IAAA,wBAAU,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC;QACL,IAAA,oCAAqB,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAI,GAAa,CAAC,OAAO,IAAI,EAAE,CAAC;YACzC,4EAA4E;YAC5E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { buildSchemaTree, resolveFieldSchema } from '../extractor/src/lib/child-expansion.js';
2
+ //# sourceMappingURL=child-expansion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-expansion.d.ts","sourceRoot":"","sources":["../../src/lib/child-expansion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveFieldSchema = exports.buildSchemaTree = void 0;
4
+ var child_expansion_js_1 = require("../extractor/src/lib/child-expansion.js");
5
+ Object.defineProperty(exports, "buildSchemaTree", { enumerable: true, get: function () { return child_expansion_js_1.buildSchemaTree; } });
6
+ Object.defineProperty(exports, "resolveFieldSchema", { enumerable: true, get: function () { return child_expansion_js_1.resolveFieldSchema; } });
7
+ //# sourceMappingURL=child-expansion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-expansion.js","sourceRoot":"","sources":["../../src/lib/child-expansion.ts"],"names":[],"mappings":";;;AAAA,8EAA8F;AAArF,qHAAA,eAAe,OAAA;AAAE,wHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,27 @@
1
+ import { ExtractConfig, ValidateConfig, ConfigFile, ConfigResolution, ResolvedConfig } from '../types/index.js';
2
+ export declare function loadConfigFile(cwd?: string, explicitPath?: string): {
3
+ filePath?: string;
4
+ file?: ConfigFile;
5
+ error?: Error;
6
+ };
7
+ export declare function parseCliArgs(argv?: string[]): {
8
+ command?: string;
9
+ args: Record<string, string | boolean>;
10
+ positionals: string[];
11
+ };
12
+ export declare function cliConfigSubset(raw: Record<string, string | boolean>): ExtractConfig;
13
+ export declare function envConfigSubset(env?: NodeJS.ProcessEnv): {
14
+ extract: ExtractConfig;
15
+ validate: ValidateConfig;
16
+ };
17
+ export declare function resolveConfig(parts: {
18
+ file?: ConfigFile;
19
+ cli: ExtractConfig;
20
+ env: {
21
+ extract: ExtractConfig;
22
+ validate: ValidateConfig;
23
+ };
24
+ warnings: string[];
25
+ }): ResolvedConfig;
26
+ export declare function buildConfig(explicitConfigPath?: string): ConfigResolution;
27
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAiD,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAqB/J,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAU1I;AAED,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAC,MAAM,GAAC,OAAO,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAiBrJ;AAQD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAC,MAAM,GAAC,OAAO,CAAC,GAAG,aAAa,CAEjF;AAED,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAA;CAAE,CAoB1H;AAaD,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,aAAa,CAAC;IAAC,GAAG,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,QAAQ,EAAE,cAAc,CAAA;KAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,cAAc,CAoB7K;AAED,wBAAgB,WAAW,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAUzE"}