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.
- package/README.md +352 -0
- package/dist/assertion/diff-recordings-vs-spec.d.ts +3 -0
- package/dist/assertion/diff-recordings-vs-spec.d.ts.map +1 -0
- package/dist/assertion/diff-recordings-vs-spec.js +176 -0
- package/dist/assertion/diff-recordings-vs-spec.js.map +1 -0
- package/dist/assertion/index.d.ts +2 -0
- package/dist/assertion/index.d.ts.map +1 -0
- package/dist/assertion/index.js +2 -0
- package/dist/assertion/index.js.map +1 -0
- package/dist/assertion/recorder.d.ts +7 -0
- package/dist/assertion/recorder.d.ts.map +1 -0
- package/dist/assertion/recorder.js +81 -0
- package/dist/assertion/recorder.js.map +1 -0
- package/dist/assertion/summarize-recordings.d.ts +3 -0
- package/dist/assertion/summarize-recordings.d.ts.map +1 -0
- package/dist/assertion/summarize-recordings.js +121 -0
- package/dist/assertion/summarize-recordings.js.map +1 -0
- package/dist/assertion/validator.d.ts +2 -0
- package/dist/assertion/validator.d.ts.map +1 -0
- package/dist/assertion/validator.js +3 -0
- package/dist/assertion/validator.js.map +1 -0
- package/dist/base.d.ts +2 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +3 -0
- package/dist/base.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +84 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/extractor/src/lib/child-expansion.d.ts +8 -0
- package/dist/extractor/src/lib/child-expansion.d.ts.map +1 -0
- package/dist/extractor/src/lib/child-expansion.js +72 -0
- package/dist/extractor/src/lib/child-expansion.js.map +1 -0
- package/dist/extractor/src/lib/git.d.ts +9 -0
- package/dist/extractor/src/lib/git.d.ts.map +1 -0
- package/dist/extractor/src/lib/git.js +22 -0
- package/dist/extractor/src/lib/git.js.map +1 -0
- package/dist/extractor/src/lib/schema-flatten.d.ts +10 -0
- package/dist/extractor/src/lib/schema-flatten.d.ts.map +1 -0
- package/dist/extractor/src/lib/schema-flatten.js +203 -0
- package/dist/extractor/src/lib/schema-flatten.js.map +1 -0
- package/dist/extractor/src/lib/type-utils.d.ts +5 -0
- package/dist/extractor/src/lib/type-utils.d.ts.map +1 -0
- package/dist/extractor/src/lib/type-utils.js +27 -0
- package/dist/extractor/src/lib/type-utils.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/assert.d.ts +27 -0
- package/dist/lib/assert.d.ts.map +1 -0
- package/dist/lib/assert.js +32 -0
- package/dist/lib/assert.js.map +1 -0
- package/dist/lib/child-expansion.d.ts +2 -0
- package/dist/lib/child-expansion.d.ts.map +1 -0
- package/dist/lib/child-expansion.js +2 -0
- package/dist/lib/child-expansion.js.map +1 -0
- package/dist/lib/config.d.ts +27 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +139 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/extractor.d.ts +6 -0
- package/dist/lib/extractor.d.ts.map +1 -0
- package/dist/lib/extractor.js +164 -0
- package/dist/lib/extractor.js.map +1 -0
- package/dist/lib/git.d.ts +2 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +2 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/recorder.d.ts +8 -0
- package/dist/lib/recorder.d.ts.map +1 -0
- package/dist/lib/recorder.js +68 -0
- package/dist/lib/recorder.js.map +1 -0
- package/dist/lib/responses.d.ts +13 -0
- package/dist/lib/responses.d.ts.map +1 -0
- package/dist/lib/responses.js +114 -0
- package/dist/lib/responses.js.map +1 -0
- package/dist/lib/schema-flatten.d.ts +2 -0
- package/dist/lib/schema-flatten.d.ts.map +1 -0
- package/dist/lib/schema-flatten.js +2 -0
- package/dist/lib/schema-flatten.js.map +1 -0
- package/dist/lib/tools/diff-recordings-vs-spec.d.ts +2 -0
- package/dist/lib/tools/diff-recordings-vs-spec.d.ts.map +1 -0
- package/dist/lib/tools/diff-recordings-vs-spec.js +2 -0
- package/dist/lib/tools/diff-recordings-vs-spec.js.map +1 -0
- package/dist/lib/tools/recorder.d.ts +2 -0
- package/dist/lib/tools/recorder.d.ts.map +1 -0
- package/dist/lib/tools/recorder.js +3 -0
- package/dist/lib/tools/recorder.js.map +1 -0
- package/dist/lib/tools/summarize-recordings.d.ts +2 -0
- package/dist/lib/tools/summarize-recordings.d.ts.map +1 -0
- package/dist/lib/tools/summarize-recordings.js +2 -0
- package/dist/lib/tools/summarize-recordings.js.map +1 -0
- package/dist/lib/type-utils.d.ts +2 -0
- package/dist/lib/type-utils.d.ts.map +1 -0
- package/dist/lib/type-utils.js +2 -0
- package/dist/lib/type-utils.js.map +1 -0
- package/dist/lib/validator.d.ts +33 -0
- package/dist/lib/validator.d.ts.map +1 -0
- package/dist/lib/validator.js +179 -0
- package/dist/lib/validator.js.map +1 -0
- package/dist/types/index.d.ts +88 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist-cjs/assertion/diff-recordings-vs-spec.d.ts +3 -0
- package/dist-cjs/assertion/diff-recordings-vs-spec.d.ts.map +1 -0
- package/dist-cjs/assertion/diff-recordings-vs-spec.js +178 -0
- package/dist-cjs/assertion/diff-recordings-vs-spec.js.map +1 -0
- package/dist-cjs/assertion/index.d.ts +2 -0
- package/dist-cjs/assertion/index.d.ts.map +1 -0
- package/dist-cjs/assertion/index.js +3 -0
- package/dist-cjs/assertion/index.js.map +1 -0
- package/dist-cjs/assertion/recorder.d.ts +7 -0
- package/dist-cjs/assertion/recorder.d.ts.map +1 -0
- package/dist-cjs/assertion/recorder.js +84 -0
- package/dist-cjs/assertion/recorder.js.map +1 -0
- package/dist-cjs/assertion/summarize-recordings.d.ts +3 -0
- package/dist-cjs/assertion/summarize-recordings.d.ts.map +1 -0
- package/dist-cjs/assertion/summarize-recordings.js +123 -0
- package/dist-cjs/assertion/summarize-recordings.js.map +1 -0
- package/dist-cjs/assertion/validator.d.ts +2 -0
- package/dist-cjs/assertion/validator.d.ts.map +1 -0
- package/dist-cjs/assertion/validator.js +7 -0
- package/dist-cjs/assertion/validator.js.map +1 -0
- package/dist-cjs/base.d.ts +2 -0
- package/dist-cjs/base.d.ts.map +1 -0
- package/dist-cjs/base.js +7 -0
- package/dist-cjs/base.js.map +1 -0
- package/dist-cjs/cli/index.d.ts +3 -0
- package/dist-cjs/cli/index.d.ts.map +1 -0
- package/dist-cjs/cli/index.js +86 -0
- package/dist-cjs/cli/index.js.map +1 -0
- package/dist-cjs/extractor/src/lib/child-expansion.d.ts +8 -0
- package/dist-cjs/extractor/src/lib/child-expansion.d.ts.map +1 -0
- package/dist-cjs/extractor/src/lib/child-expansion.js +76 -0
- package/dist-cjs/extractor/src/lib/child-expansion.js.map +1 -0
- package/dist-cjs/extractor/src/lib/git.d.ts +9 -0
- package/dist-cjs/extractor/src/lib/git.d.ts.map +1 -0
- package/dist-cjs/extractor/src/lib/git.js +26 -0
- package/dist-cjs/extractor/src/lib/git.js.map +1 -0
- package/dist-cjs/extractor/src/lib/schema-flatten.d.ts +10 -0
- package/dist-cjs/extractor/src/lib/schema-flatten.d.ts.map +1 -0
- package/dist-cjs/extractor/src/lib/schema-flatten.js +211 -0
- package/dist-cjs/extractor/src/lib/schema-flatten.js.map +1 -0
- package/dist-cjs/extractor/src/lib/type-utils.d.ts +5 -0
- package/dist-cjs/extractor/src/lib/type-utils.d.ts.map +1 -0
- package/dist-cjs/extractor/src/lib/type-utils.js +32 -0
- package/dist-cjs/extractor/src/lib/type-utils.js.map +1 -0
- package/dist-cjs/index.d.ts +5 -0
- package/dist-cjs/index.d.ts.map +1 -0
- package/dist-cjs/index.js +26 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/lib/assert.d.ts +27 -0
- package/dist-cjs/lib/assert.d.ts.map +1 -0
- package/dist-cjs/lib/assert.js +35 -0
- package/dist-cjs/lib/assert.js.map +1 -0
- package/dist-cjs/lib/child-expansion.d.ts +2 -0
- package/dist-cjs/lib/child-expansion.d.ts.map +1 -0
- package/dist-cjs/lib/child-expansion.js +7 -0
- package/dist-cjs/lib/child-expansion.js.map +1 -0
- package/dist-cjs/lib/config.d.ts +27 -0
- package/dist-cjs/lib/config.d.ts.map +1 -0
- package/dist-cjs/lib/config.js +147 -0
- package/dist-cjs/lib/config.js.map +1 -0
- package/dist-cjs/lib/extractor.d.ts +6 -0
- package/dist-cjs/lib/extractor.d.ts.map +1 -0
- package/dist-cjs/lib/extractor.js +172 -0
- package/dist-cjs/lib/extractor.js.map +1 -0
- package/dist-cjs/lib/git.d.ts +2 -0
- package/dist-cjs/lib/git.d.ts.map +1 -0
- package/dist-cjs/lib/git.js +6 -0
- package/dist-cjs/lib/git.js.map +1 -0
- package/dist-cjs/lib/recorder.d.ts +8 -0
- package/dist-cjs/lib/recorder.d.ts.map +1 -0
- package/dist-cjs/lib/recorder.js +71 -0
- package/dist-cjs/lib/recorder.js.map +1 -0
- package/dist-cjs/lib/responses.d.ts +13 -0
- package/dist-cjs/lib/responses.d.ts.map +1 -0
- package/dist-cjs/lib/responses.js +117 -0
- package/dist-cjs/lib/responses.js.map +1 -0
- package/dist-cjs/lib/schema-flatten.d.ts +2 -0
- package/dist-cjs/lib/schema-flatten.d.ts.map +1 -0
- package/dist-cjs/lib/schema-flatten.js +11 -0
- package/dist-cjs/lib/schema-flatten.js.map +1 -0
- package/dist-cjs/lib/tools/diff-recordings-vs-spec.d.ts +2 -0
- package/dist-cjs/lib/tools/diff-recordings-vs-spec.d.ts.map +1 -0
- package/dist-cjs/lib/tools/diff-recordings-vs-spec.js +18 -0
- package/dist-cjs/lib/tools/diff-recordings-vs-spec.js.map +1 -0
- package/dist-cjs/lib/tools/recorder.d.ts +2 -0
- package/dist-cjs/lib/tools/recorder.d.ts.map +1 -0
- package/dist-cjs/lib/tools/recorder.js +19 -0
- package/dist-cjs/lib/tools/recorder.js.map +1 -0
- package/dist-cjs/lib/tools/summarize-recordings.d.ts +2 -0
- package/dist-cjs/lib/tools/summarize-recordings.d.ts.map +1 -0
- package/dist-cjs/lib/tools/summarize-recordings.js +18 -0
- package/dist-cjs/lib/tools/summarize-recordings.js.map +1 -0
- package/dist-cjs/lib/type-utils.d.ts +2 -0
- package/dist-cjs/lib/type-utils.d.ts.map +1 -0
- package/dist-cjs/lib/type-utils.js +8 -0
- package/dist-cjs/lib/type-utils.js.map +1 -0
- package/dist-cjs/lib/validator.d.ts +33 -0
- package/dist-cjs/lib/validator.d.ts.map +1 -0
- package/dist-cjs/lib/validator.js +182 -0
- package/dist-cjs/lib/validator.js.map +1 -0
- package/dist-cjs/package.json +1 -0
- package/dist-cjs/types/index.d.ts +88 -0
- package/dist-cjs/types/index.d.ts.map +1 -0
- package/dist-cjs/types/index.js +4 -0
- package/dist-cjs/types/index.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|