assert-json-body 1.3.1 → 1.5.1
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 +3 -0
- package/dist/extractor/src/lib/child-expansion.d.ts +3 -2
- package/dist/extractor/src/lib/child-expansion.d.ts.map +1 -1
- package/dist/extractor/src/lib/child-expansion.js +31 -21
- package/dist/extractor/src/lib/child-expansion.js.map +1 -1
- package/dist/extractor/src/lib/git.d.ts.map +1 -1
- package/dist/extractor/src/lib/git.js +8 -4
- package/dist/extractor/src/lib/git.js.map +1 -1
- package/dist/extractor/src/lib/ref-resolver.d.ts +4 -0
- package/dist/extractor/src/lib/ref-resolver.d.ts.map +1 -0
- package/dist/extractor/src/lib/ref-resolver.js +22 -0
- package/dist/extractor/src/lib/ref-resolver.js.map +1 -0
- package/dist/extractor/src/lib/schema-flatten.d.ts +10 -5
- package/dist/extractor/src/lib/schema-flatten.d.ts.map +1 -1
- package/dist/extractor/src/lib/schema-flatten.js +52 -48
- package/dist/extractor/src/lib/schema-flatten.js.map +1 -1
- package/dist/lib/config.js +2 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/extractor.d.ts.map +1 -1
- package/dist/lib/extractor.js +9 -7
- package/dist/lib/extractor.js.map +1 -1
- package/dist-cjs/extractor/src/lib/child-expansion.d.ts +3 -2
- package/dist-cjs/extractor/src/lib/child-expansion.d.ts.map +1 -1
- package/dist-cjs/extractor/src/lib/child-expansion.js +31 -21
- package/dist-cjs/extractor/src/lib/child-expansion.js.map +1 -1
- package/dist-cjs/extractor/src/lib/git.d.ts.map +1 -1
- package/dist-cjs/extractor/src/lib/git.js +7 -3
- package/dist-cjs/extractor/src/lib/git.js.map +1 -1
- package/dist-cjs/extractor/src/lib/ref-resolver.d.ts +4 -0
- package/dist-cjs/extractor/src/lib/ref-resolver.d.ts.map +1 -0
- package/dist-cjs/extractor/src/lib/ref-resolver.js +25 -0
- package/dist-cjs/extractor/src/lib/ref-resolver.js.map +1 -0
- package/dist-cjs/extractor/src/lib/schema-flatten.d.ts +10 -5
- package/dist-cjs/extractor/src/lib/schema-flatten.d.ts.map +1 -1
- package/dist-cjs/extractor/src/lib/schema-flatten.js +52 -48
- package/dist-cjs/extractor/src/lib/schema-flatten.js.map +1 -1
- package/dist-cjs/lib/config.js +2 -2
- package/dist-cjs/lib/config.js.map +1 -1
- package/dist-cjs/lib/extractor.d.ts.map +1 -1
- package/dist-cjs/lib/extractor.js +9 -7
- package/dist-cjs/lib/extractor.js.map +1 -1
- package/package.json +19 -6
package/README.md
CHANGED
|
@@ -266,6 +266,9 @@ Re-run `npx assert-json-body extract`. The `index.ts` file is regenerated determ
|
|
|
266
266
|
**Do I still need to import from the package root?**
|
|
267
267
|
Use the package root for generic validation utilities (`validateResponseShape`), and the generated `./json-body-assertions/index` for strongly typed validation.
|
|
268
268
|
|
|
269
|
+
**Does it support multi-file OpenAPI specs?**
|
|
270
|
+
Yes. The extractor automatically bundles referenced files (via `$ref`) as long as they are within the same directory structure as the entry file.
|
|
271
|
+
|
|
269
272
|
## Releasing & Versioning
|
|
270
273
|
|
|
271
274
|
This project uses [semantic-release](https://semantic-release.gitbook.io/) with Conventional Commits to automate:
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { SchemaGroup as OutputSchema } from '../../../types/index.js';
|
|
2
2
|
import { SchemaOrRef } from './schema-flatten.js';
|
|
3
|
-
|
|
4
|
-
export declare function
|
|
3
|
+
import { OpenAPIV3 } from 'openapi-types';
|
|
4
|
+
export declare function buildSchemaTree(schema: SchemaOrRef, components: Record<string, SchemaOrRef>, seen?: Set<string>, doc?: OpenAPIV3.Document): OutputSchema;
|
|
5
|
+
export declare function resolveFieldSchema(fieldName: string, parentSchema: SchemaOrRef, components: Record<string, SchemaOrRef>, doc?: OpenAPIV3.Document): {
|
|
5
6
|
kind: string;
|
|
6
7
|
target?: SchemaOrRef;
|
|
7
8
|
} | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-expansion.d.ts","sourceRoot":"","sources":["../../../../src/extractor/src/lib/child-expansion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAW,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"child-expansion.d.ts","sourceRoot":"","sources":["../../../../src/extractor/src/lib/child-expansion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAW,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,IAAI,cAAoB,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,GAAG,YAAY,CAgB9J;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,IAAI,CAsDjM"}
|
|
@@ -1,37 +1,53 @@
|
|
|
1
1
|
import { refNameOf } from './type-utils.js';
|
|
2
2
|
import { flatten } from './schema-flatten.js';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { resolveRef } from './ref-resolver.js';
|
|
4
|
+
export function buildSchemaTree(schema, components, seen = new Set(), doc) {
|
|
5
|
+
const flat = flatten(schema, components, seen, doc);
|
|
5
6
|
for (const group of [flat.required, flat.optional]) {
|
|
6
7
|
for (const field of group) {
|
|
7
|
-
const resolved = resolveFieldSchema(field.name, schema, components);
|
|
8
|
+
const resolved = resolveFieldSchema(field.name, schema, components, doc);
|
|
8
9
|
if (resolved) {
|
|
9
10
|
const { kind, target } = resolved;
|
|
10
11
|
if ((kind === 'object' || kind === 'array-object') && target) {
|
|
11
|
-
field.children = buildSchemaTree(target, components, new Set(seen));
|
|
12
|
+
field.children = buildSchemaTree(target, components, new Set(seen), doc);
|
|
12
13
|
}
|
|
13
14
|
else if (kind === 'ref-object' && target) {
|
|
14
|
-
field.children = buildSchemaTree(target, components, new Set(seen.add(refNameOf(field.type))));
|
|
15
|
+
field.children = buildSchemaTree(target, components, new Set(seen.add(refNameOf(field.type))), doc);
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
return flat;
|
|
20
21
|
}
|
|
21
|
-
export function resolveFieldSchema(fieldName, parentSchema, components) {
|
|
22
|
+
export function resolveFieldSchema(fieldName, parentSchema, components, doc) {
|
|
22
23
|
const isRef = (s) => '$ref' in s;
|
|
23
24
|
const isSchemaObject = (s) => !('$ref' in s);
|
|
25
|
+
const resolveTarget = (s) => {
|
|
26
|
+
let curr = s;
|
|
27
|
+
const seen = new Set();
|
|
28
|
+
while (isRef(curr)) {
|
|
29
|
+
const refKey = curr.$ref;
|
|
30
|
+
if (seen.has(refKey))
|
|
31
|
+
return null;
|
|
32
|
+
seen.add(refKey);
|
|
33
|
+
const next = resolveRef(refKey, components, doc);
|
|
34
|
+
if (!next)
|
|
35
|
+
return null;
|
|
36
|
+
curr = next;
|
|
37
|
+
}
|
|
38
|
+
return curr;
|
|
39
|
+
};
|
|
24
40
|
const visited = new Set();
|
|
25
41
|
const propertyDefs = {};
|
|
26
42
|
const collect = (sch) => {
|
|
27
43
|
if (!sch)
|
|
28
44
|
return;
|
|
29
45
|
if (isRef(sch)) {
|
|
30
|
-
const
|
|
31
|
-
if (visited.has(
|
|
46
|
+
const refKey = sch.$ref;
|
|
47
|
+
if (visited.has(refKey))
|
|
32
48
|
return;
|
|
33
|
-
visited.add(
|
|
34
|
-
const target = components
|
|
49
|
+
visited.add(refKey);
|
|
50
|
+
const target = resolveRef(refKey, components, doc);
|
|
35
51
|
if (target)
|
|
36
52
|
collect(target);
|
|
37
53
|
return;
|
|
@@ -47,9 +63,8 @@ export function resolveFieldSchema(fieldName, parentSchema, components) {
|
|
|
47
63
|
if (!propSchema)
|
|
48
64
|
return null;
|
|
49
65
|
if (isRef(propSchema)) {
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
if (target && isSchemaObject(target) && (target.type === 'object' || target.properties || target.allOf))
|
|
66
|
+
const target = resolveTarget(propSchema);
|
|
67
|
+
if (target && (target.type === 'object' || target.properties || target.allOf))
|
|
53
68
|
return { kind: 'ref-object', target };
|
|
54
69
|
return { kind: 'ref' };
|
|
55
70
|
}
|
|
@@ -57,14 +72,9 @@ export function resolveFieldSchema(fieldName, parentSchema, components) {
|
|
|
57
72
|
return { kind: 'object', target: propSchema };
|
|
58
73
|
if (propSchema.type === 'array' && propSchema.items) {
|
|
59
74
|
const it = propSchema.items;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (target && isSchemaObject(target) && (target.type === 'object' || target.properties || target.allOf))
|
|
64
|
-
return { kind: 'array-object', target };
|
|
65
|
-
}
|
|
66
|
-
else if (it.type === 'object' || it.properties || it.allOf) {
|
|
67
|
-
return { kind: 'array-object', target: it };
|
|
75
|
+
const target = resolveTarget(it);
|
|
76
|
+
if (target && (target.type === 'object' || target.properties || target.allOf)) {
|
|
77
|
+
return { kind: 'array-object', target };
|
|
68
78
|
}
|
|
69
79
|
}
|
|
70
80
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-expansion.js","sourceRoot":"","sources":["../../../../src/extractor/src/lib/child-expansion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"child-expansion.js","sourceRoot":"","sources":["../../../../src/extractor/src/lib/child-expansion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,UAMhF;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,CAYrI"}
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
2
|
import { readFileSync, writeFileSync } from 'node:fs';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
|
-
import { join } from 'node:path';
|
|
4
|
+
import { join, dirname } from 'node:path';
|
|
5
5
|
export function run(cmd, args, opts = {}) {
|
|
6
|
+
console.info(`> ${cmd} ${args.join(' ')}`);
|
|
6
7
|
const res = spawnSync(cmd, args, { stdio: opts.inherit ? 'inherit' : 'pipe', encoding: 'utf8' });
|
|
7
8
|
if (res.status !== 0)
|
|
8
9
|
throw new Error(`${cmd} ${args.join(' ')} failed: ${res.stderr || res.status}`);
|
|
10
|
+
console.info(res.stdout);
|
|
9
11
|
return res.stdout;
|
|
10
12
|
}
|
|
11
13
|
export function sparseCheckout(repo, specPath, ref = 'main') {
|
|
12
14
|
const workdir = join(tmpdir(), `spec-checkout-${Date.now()}`);
|
|
13
15
|
run('git', ['init', workdir]);
|
|
14
|
-
run('git', ['-C', workdir, 'remote', 'add', '
|
|
16
|
+
run('git', ['-C', workdir, 'remote', 'add', 'origin', repo]);
|
|
15
17
|
run('git', ['-C', workdir, 'config', 'core.sparseCheckout', 'true']);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
const specDir = dirname(specPath);
|
|
19
|
+
const pattern = specDir === '.' ? '*' : `${specDir}/`;
|
|
20
|
+
writeFileSync(join(workdir, '.git', 'info', 'sparse-checkout'), pattern + '\n');
|
|
21
|
+
run('git', ['-C', workdir, 'pull', 'origin', ref, '--depth', '1'], { inherit: true });
|
|
18
22
|
const commit = run('git', ['-C', workdir, 'rev-parse', 'HEAD']).trim();
|
|
19
23
|
const specContent = readFileSync(join(workdir, specPath), 'utf8');
|
|
20
24
|
return { workdir, commit, specContent };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../src/extractor/src/lib/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../src/extractor/src/lib/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAc,EAAE,OAA8B,EAAE;IAC/E,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,SAAS,CAAC,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,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAAgB,EAAE,GAAG,GAAG,MAAM;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,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,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7D,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;IACtD,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;IAChF,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACtF,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,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAClE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { OpenAPIV3 } from 'openapi-types';
|
|
2
|
+
import { SchemaOrRef } from './schema-flatten.js';
|
|
3
|
+
export declare function resolveRef(ref: string, components: Record<string, SchemaOrRef>, doc?: OpenAPIV3.Document): SchemaOrRef | undefined;
|
|
4
|
+
//# sourceMappingURL=ref-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ref-resolver.d.ts","sourceRoot":"","sources":["../../../../src/extractor/src/lib/ref-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,GAAG,WAAW,GAAG,SAAS,CAmBlI"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function resolveRef(ref, components, doc) {
|
|
2
|
+
if (doc && ref.startsWith('#/')) {
|
|
3
|
+
const path = ref.substring(2).split('/');
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5
|
+
let current = doc;
|
|
6
|
+
for (let i = 0; i < path.length; i++) {
|
|
7
|
+
const seg = path[i];
|
|
8
|
+
if (current === undefined || current === null) {
|
|
9
|
+
break;
|
|
10
|
+
}
|
|
11
|
+
const decoded = decodeURIComponent(seg.replace(/~1/g, '/').replace(/~0/g, '~'));
|
|
12
|
+
const next = current[decoded];
|
|
13
|
+
current = next;
|
|
14
|
+
}
|
|
15
|
+
if (current)
|
|
16
|
+
return current;
|
|
17
|
+
}
|
|
18
|
+
// Fallback to naive lookup (legacy/test support)
|
|
19
|
+
const name = ref.split('/').pop();
|
|
20
|
+
return components[name];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=ref-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ref-resolver.js","sourceRoot":"","sources":["../../../../src/extractor/src/lib/ref-resolver.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,UAAuC,EAAE,GAAwB;IACvG,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,8DAA8D;QAC9D,IAAI,OAAO,GAAQ,GAAG,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC5C,MAAM;YACV,CAAC;YACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YAChF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,OAAO,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,OAAO;YAAE,OAAO,OAAsB,CAAC;IAC9C,CAAC;IACD,iDAAiD;IACjD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;IACnC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { FieldSpec, FlattenResult, SchemaGroup as OutputSchema } from '../../../types/index.js';
|
|
2
2
|
import { OpenAPIV3 } from 'openapi-types';
|
|
3
3
|
export type SchemaOrRef = OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
interface Context {
|
|
5
|
+
components: Record<string, SchemaOrRef>;
|
|
6
|
+
doc?: OpenAPIV3.Document;
|
|
7
|
+
}
|
|
8
|
+
export declare function flatten(schema: SchemaOrRef, components: Record<string, SchemaOrRef>, seen?: Set<string>, doc?: OpenAPIV3.Document): OutputSchema;
|
|
9
|
+
export declare function flattenInternal(schema: SchemaOrRef, ctx: Context, seen?: Set<string>): FlattenResult;
|
|
10
|
+
export declare function describeType(schema: SchemaOrRef | undefined, ctx: Context, stack?: string[]): string;
|
|
11
|
+
export declare function deriveFieldMetadata(schema: SchemaOrRef, ctx: Context): Partial<FieldSpec>;
|
|
8
12
|
export declare function isObjectLike(s: SchemaOrRef | undefined | null): boolean;
|
|
9
|
-
export declare function primitiveFromSchema(schema: SchemaOrRef | undefined,
|
|
13
|
+
export declare function primitiveFromSchema(schema: SchemaOrRef | undefined, ctx: Context, stack: string[]): string | null;
|
|
14
|
+
export {};
|
|
10
15
|
//# sourceMappingURL=schema-flatten.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAO7E,UAAU,OAAO;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxC,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC;CAC1B;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,IAAI,cAAoB,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,GAAG,YAAY,CAGtJ;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,cAAoB,GAAG,aAAa,CAwD1G;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,MAAM,CA4CxG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CA2CzF;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAIvE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CA2BjH"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { normalizeType, dedupeFields } from './type-utils.js';
|
|
2
2
|
function isRef(s) { return !!s && '$ref' in s; }
|
|
3
3
|
function isSchemaObject(s) { return !!s && !('$ref' in s); }
|
|
4
|
-
|
|
5
|
-
export function flatten(schema, components, seen = new Set()) {
|
|
6
|
-
const { required, optional } = flattenInternal(schema, components, seen);
|
|
4
|
+
import { resolveRef } from './ref-resolver.js';
|
|
5
|
+
export function flatten(schema, components, seen = new Set(), doc) {
|
|
6
|
+
const { required, optional } = flattenInternal(schema, { components, doc }, seen);
|
|
7
7
|
return { required, optional };
|
|
8
8
|
}
|
|
9
|
-
export function flattenInternal(schema,
|
|
9
|
+
export function flattenInternal(schema, ctx, seen = new Set()) {
|
|
10
10
|
if (isRef(schema)) {
|
|
11
|
-
const
|
|
12
|
-
if (seen.has(
|
|
11
|
+
const refKey = schema.$ref;
|
|
12
|
+
if (seen.has(refKey))
|
|
13
13
|
return { required: [], optional: [] };
|
|
14
|
-
seen.add(
|
|
15
|
-
const target = components
|
|
14
|
+
seen.add(refKey);
|
|
15
|
+
const target = resolveRef(refKey, ctx.components, ctx.doc);
|
|
16
16
|
if (!target)
|
|
17
17
|
return { required: [], optional: [] };
|
|
18
|
-
return flattenInternal(target,
|
|
18
|
+
return flattenInternal(target, ctx, seen);
|
|
19
19
|
}
|
|
20
20
|
let reqFields = [];
|
|
21
21
|
let optFields = [];
|
|
@@ -23,18 +23,21 @@ export function flattenInternal(schema, components, seen = new Set()) {
|
|
|
23
23
|
if (!sch)
|
|
24
24
|
return;
|
|
25
25
|
if (isRef(sch)) {
|
|
26
|
-
const
|
|
27
|
-
if (refSeen.has(
|
|
26
|
+
const refKey = sch.$ref;
|
|
27
|
+
if (refSeen.has(refKey))
|
|
28
28
|
return;
|
|
29
|
-
refSeen.add(
|
|
30
|
-
const target = components
|
|
31
|
-
if (target)
|
|
29
|
+
refSeen.add(refKey);
|
|
30
|
+
const target = resolveRef(refKey, ctx.components, ctx.doc);
|
|
31
|
+
if (target) {
|
|
32
32
|
expand(target, acc, refSeen);
|
|
33
|
+
}
|
|
33
34
|
return;
|
|
34
35
|
}
|
|
35
|
-
if (sch.allOf)
|
|
36
|
-
for (const part of sch.allOf)
|
|
36
|
+
if (sch.allOf) {
|
|
37
|
+
for (const part of sch.allOf) {
|
|
37
38
|
expand(part, acc, refSeen);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
38
41
|
if (isSchemaObject(sch))
|
|
39
42
|
acc.push(sch);
|
|
40
43
|
};
|
|
@@ -49,8 +52,8 @@ export function flattenInternal(schema, components, seen = new Set()) {
|
|
|
49
52
|
Object.assign(collectedProps, s.properties);
|
|
50
53
|
}
|
|
51
54
|
for (const [prop, propSchema] of Object.entries(collectedProps)) {
|
|
52
|
-
const metadata = deriveFieldMetadata(propSchema,
|
|
53
|
-
const rawType = describeType(propSchema,
|
|
55
|
+
const metadata = deriveFieldMetadata(propSchema, ctx);
|
|
56
|
+
const rawType = describeType(propSchema, ctx);
|
|
54
57
|
const spec = {
|
|
55
58
|
name: prop,
|
|
56
59
|
type: normalizeType(rawType),
|
|
@@ -65,34 +68,35 @@ export function flattenInternal(schema, components, seen = new Set()) {
|
|
|
65
68
|
optFields = dedupeFields(optFields.filter(f => !reqFields.some(r => r.name === f.name)));
|
|
66
69
|
return { required: reqFields, optional: optFields };
|
|
67
70
|
}
|
|
68
|
-
export function describeType(schema,
|
|
71
|
+
export function describeType(schema, ctx, stack = []) {
|
|
69
72
|
if (!schema)
|
|
70
73
|
return 'unknown';
|
|
71
74
|
if (isRef(schema)) {
|
|
72
|
-
const
|
|
73
|
-
const target = components
|
|
75
|
+
const refKey = schema.$ref;
|
|
76
|
+
const target = resolveRef(refKey, ctx.components, ctx.doc);
|
|
77
|
+
const simpleName = refKey.split('/').pop();
|
|
74
78
|
if (!target)
|
|
75
|
-
return
|
|
76
|
-
if (stack.includes(
|
|
77
|
-
return
|
|
78
|
-
const nextStack = [...stack,
|
|
79
|
-
const prim = primitiveFromSchema(target,
|
|
79
|
+
return simpleName;
|
|
80
|
+
if (stack.includes(refKey))
|
|
81
|
+
return simpleName;
|
|
82
|
+
const nextStack = [...stack, refKey];
|
|
83
|
+
const prim = primitiveFromSchema(target, ctx, nextStack);
|
|
80
84
|
if (prim)
|
|
81
85
|
return prim;
|
|
82
86
|
if (isSchemaObject(target)) {
|
|
83
|
-
const derived = describeType(target,
|
|
87
|
+
const derived = describeType(target, ctx, nextStack);
|
|
84
88
|
if (derived !== 'object')
|
|
85
89
|
return derived;
|
|
86
90
|
}
|
|
87
|
-
return
|
|
91
|
+
return simpleName;
|
|
88
92
|
}
|
|
89
93
|
if (schema.type === 'array') {
|
|
90
94
|
const items = schema.items;
|
|
91
|
-
return `array<${normalizeType(describeType(items,
|
|
95
|
+
return `array<${normalizeType(describeType(items, ctx, stack))}>`;
|
|
92
96
|
}
|
|
93
97
|
if (schema.allOf) {
|
|
94
98
|
const primCandidates = schema.allOf
|
|
95
|
-
.map((s) => primitiveFromSchema(s,
|
|
99
|
+
.map((s) => primitiveFromSchema(s, ctx, stack))
|
|
96
100
|
.filter((t) => !!t && t !== 'object');
|
|
97
101
|
const unique = [...new Set(primCandidates)];
|
|
98
102
|
if (unique.length === 1)
|
|
@@ -109,16 +113,16 @@ export function describeType(schema, components, stack = []) {
|
|
|
109
113
|
return schema.format ? `${schema.type}(${schema.format})` : schema.type;
|
|
110
114
|
}
|
|
111
115
|
if (schema.oneOf) {
|
|
112
|
-
const branches = schema.oneOf.map((s) => normalizeType(describeType(s,
|
|
116
|
+
const branches = schema.oneOf.map((s) => normalizeType(describeType(s, ctx, stack)));
|
|
113
117
|
return branches.join('|');
|
|
114
118
|
}
|
|
115
119
|
if (schema.anyOf) {
|
|
116
|
-
const branches = schema.anyOf.map((s) => normalizeType(describeType(s,
|
|
120
|
+
const branches = schema.anyOf.map((s) => normalizeType(describeType(s, ctx, stack)));
|
|
117
121
|
return branches.join('|');
|
|
118
122
|
}
|
|
119
123
|
return 'unknown';
|
|
120
124
|
}
|
|
121
|
-
export function deriveFieldMetadata(schema,
|
|
125
|
+
export function deriveFieldMetadata(schema, ctx) {
|
|
122
126
|
const meta = {};
|
|
123
127
|
const collectEnum = (sch) => {
|
|
124
128
|
if (!sch)
|
|
@@ -134,11 +138,11 @@ export function deriveFieldMetadata(schema, components) {
|
|
|
134
138
|
}
|
|
135
139
|
return undefined;
|
|
136
140
|
};
|
|
137
|
-
const detectWrapper = (
|
|
141
|
+
const detectWrapper = (refKey, target) => {
|
|
138
142
|
if (!target)
|
|
139
143
|
return {};
|
|
140
144
|
const enumValues = collectEnum(target);
|
|
141
|
-
const underlyingPrim = primitiveFromSchema(target,
|
|
145
|
+
const underlyingPrim = primitiveFromSchema(target, ctx, [refKey]);
|
|
142
146
|
const isPrimitiveLike = !!underlyingPrim && !(isSchemaObject(target) && (target.properties || target.type === 'object'));
|
|
143
147
|
return {
|
|
144
148
|
underlying: underlyingPrim ? normalizeType(underlyingPrim) : undefined,
|
|
@@ -147,14 +151,14 @@ export function deriveFieldMetadata(schema, components) {
|
|
|
147
151
|
};
|
|
148
152
|
};
|
|
149
153
|
if (isRef(schema)) {
|
|
150
|
-
const
|
|
151
|
-
const target = components
|
|
152
|
-
const { underlying, wrapper, enumValues } = detectWrapper(
|
|
154
|
+
const refKey = schema.$ref;
|
|
155
|
+
const target = resolveRef(refKey, ctx.components, ctx.doc);
|
|
156
|
+
const { underlying, wrapper, enumValues } = detectWrapper(refKey, target);
|
|
153
157
|
if (enumValues?.length)
|
|
154
158
|
meta.enumValues = enumValues;
|
|
155
159
|
if (wrapper && underlying)
|
|
156
160
|
meta.underlyingPrimitive = underlying;
|
|
157
|
-
meta.rawRefName =
|
|
161
|
+
meta.rawRefName = refKey.split('/').pop();
|
|
158
162
|
if (wrapper)
|
|
159
163
|
meta.wrapper = true;
|
|
160
164
|
return meta;
|
|
@@ -176,21 +180,21 @@ export function isObjectLike(s) {
|
|
|
176
180
|
return false; // handled elsewhere
|
|
177
181
|
return !!(s.type === 'object' || s.properties || s.allOf);
|
|
178
182
|
}
|
|
179
|
-
export function primitiveFromSchema(schema,
|
|
183
|
+
export function primitiveFromSchema(schema, ctx, stack) {
|
|
180
184
|
if (!schema)
|
|
181
185
|
return null;
|
|
182
186
|
if (isRef(schema)) {
|
|
183
|
-
const
|
|
184
|
-
if (stack.includes(
|
|
185
|
-
return
|
|
186
|
-
const target = components
|
|
187
|
+
const refKey = schema.$ref;
|
|
188
|
+
if (stack.includes(refKey))
|
|
189
|
+
return refKey.split('/').pop();
|
|
190
|
+
const target = resolveRef(refKey, ctx.components, ctx.doc);
|
|
187
191
|
if (!target)
|
|
188
|
-
return
|
|
189
|
-
const rec = primitiveFromSchema(target,
|
|
190
|
-
return rec ??
|
|
192
|
+
return refKey.split('/').pop();
|
|
193
|
+
const rec = primitiveFromSchema(target, ctx, [...stack, refKey]);
|
|
194
|
+
return rec ?? refKey.split('/').pop();
|
|
191
195
|
}
|
|
192
196
|
if (schema.allOf) {
|
|
193
|
-
const parts = schema.allOf.map((p) => primitiveFromSchema(p,
|
|
197
|
+
const parts = schema.allOf.map((p) => primitiveFromSchema(p, ctx, stack)).filter(Boolean);
|
|
194
198
|
const uniq = [...new Set(parts)];
|
|
195
199
|
if (uniq.length === 1)
|
|
196
200
|
return uniq[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-flatten.js","sourceRoot":"","sources":["../../../../src/extractor/src/lib/schema-flatten.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK9D,SAAS,KAAK,CAAC,CAAiC,IAAoC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;AAChH,SAAS,cAAc,CAAC,CAAiC,IAAiC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzH,
|
|
1
|
+
{"version":3,"file":"schema-flatten.js","sourceRoot":"","sources":["../../../../src/extractor/src/lib/schema-flatten.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.js
CHANGED
|
@@ -3,8 +3,8 @@ import { readFileSync, existsSync } from 'node:fs';
|
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
4
|
const CONFIG_FILENAME = 'assert-json-body.config.json';
|
|
5
5
|
const DEFAULT_EXTRACT = {
|
|
6
|
-
repo: 'https://github.com/camunda/camunda
|
|
7
|
-
specPath: '
|
|
6
|
+
repo: 'https://github.com/camunda/camunda',
|
|
7
|
+
specPath: 'zeebe/gateway-protocol/src/main/proto/v2/rest-api.yaml',
|
|
8
8
|
ref: 'main',
|
|
9
9
|
outputDir: 'json-body-assertions',
|
|
10
10
|
preserveCheckout: false,
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,eAAe,GAAG,8BAA8B,CAAC;AAEvD,MAAM,eAAe,GAA0B;IAC7C,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../src/lib/extractor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAiB,aAAa,EAAE,WAAW,EAAE,aAAa,EAAyB,MAAM,mBAAmB,CAAC;AAyBpH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,GAAG,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../src/lib/extractor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAiB,aAAa,EAAE,WAAW,EAAE,aAAa,EAAyB,MAAM,mBAAmB,CAAC;AAyBpH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,GAAG,aAAa,EAAE,CAyBzE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,QAc9C;AAED,wBAAsB,QAAQ,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,iBAkFpF"}
|
package/dist/lib/extractor.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { writeFileSync, mkdirSync, rmSync, existsSync } from 'node:fs';
|
|
2
2
|
import { join, resolve } from 'node:path';
|
|
3
3
|
import crypto from 'node:crypto';
|
|
4
|
-
import
|
|
4
|
+
import SwaggerParser from '@apidevtools/swagger-parser';
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
6
|
import { sparseCheckout } from './git.js';
|
|
7
7
|
import { buildSchemaTree } from './child-expansion.js';
|
|
@@ -37,7 +37,7 @@ export function extractResponses(doc) {
|
|
|
37
37
|
const schema = appJson?.schema;
|
|
38
38
|
if (!schema)
|
|
39
39
|
continue;
|
|
40
|
-
const flattened = buildSchemaTree(schema, (doc.components?.schemas || {}));
|
|
40
|
+
const flattened = buildSchemaTree(schema, (doc.components?.schemas || {}), undefined, doc);
|
|
41
41
|
entries.push({ path, method: method.toUpperCase(), status, schema: { required: flattened.required, optional: flattened.optional } });
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -76,15 +76,17 @@ export async function generate(cfg, options) {
|
|
|
76
76
|
};
|
|
77
77
|
const REPO = effective.repo;
|
|
78
78
|
const SPEC_PATH = effective.specPath;
|
|
79
|
-
|
|
79
|
+
if (effective.logLevel == 'info') {
|
|
80
|
+
console.info(effective);
|
|
81
|
+
}
|
|
82
|
+
const { workdir, commit } = sparseCheckout(REPO, SPEC_PATH, effective.ref);
|
|
80
83
|
try {
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
const doc = raw;
|
|
84
|
+
const fullPath = join(workdir, SPEC_PATH);
|
|
85
|
+
const doc = await SwaggerParser.bundle(fullPath);
|
|
84
86
|
const responses = extractResponses(doc);
|
|
85
87
|
for (const entry of responses)
|
|
86
88
|
pruneSchema(entry.schema);
|
|
87
|
-
const sha256 = crypto.createHash('sha256').update(
|
|
89
|
+
const sha256 = crypto.createHash('sha256').update(JSON.stringify(doc)).digest('hex');
|
|
88
90
|
const out = { metadata: { sourceRepo: REPO, commit, generatedAt: new Date().toISOString(), specPath: SPEC_PATH, specSha256: sha256 }, responses };
|
|
89
91
|
const outDir = effective.outputDir;
|
|
90
92
|
const targetFile = effective.responsesFile ? resolve(effective.responsesFile) : join(outDir, 'responses.json');
|