apollo-conn-gen 0.4.3 → 0.4.4
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/dist/oas/generator/typesCollector.d.ts +9 -0
- package/dist/oas/generator/typesCollector.js +147 -0
- package/dist/oas/generator/typesCollector.js.map +1 -0
- package/dist/oas/io/writer.d.ts +2 -2
- package/dist/oas/io/writer.js +12 -71
- package/dist/oas/io/writer.js.map +1 -1
- package/dist/oas/nodes/circularRef.js +0 -1
- package/dist/oas/nodes/circularRef.js.map +1 -1
- package/dist/oas/nodes/comp.d.ts +0 -1
- package/dist/oas/nodes/comp.js +9 -21
- package/dist/oas/nodes/comp.js.map +1 -1
- package/dist/oas/nodes/propArray.d.ts +2 -1
- package/dist/oas/nodes/propArray.js +16 -8
- package/dist/oas/nodes/propArray.js.map +1 -1
- package/dist/oas/nodes/propScalar.js +6 -2
- package/dist/oas/nodes/propScalar.js.map +1 -1
- package/dist/oas/nodes/typeUtils.d.ts +1 -0
- package/dist/oas/nodes/typeUtils.js +6 -2
- package/dist/oas/nodes/typeUtils.js.map +1 -1
- package/dist/oas/nodes/union.d.ts +3 -2
- package/dist/oas/nodes/union.js +60 -22
- package/dist/oas/nodes/union.js.map +1 -1
- package/dist/oas/oasContext.d.ts +2 -0
- package/dist/oas/oasContext.js +11 -0
- package/dist/oas/oasContext.js.map +1 -1
- package/dist/oas/oasGen.d.ts +3 -0
- package/dist/oas/oasGen.js +15 -1
- package/dist/oas/oasGen.js.map +1 -1
- package/dist/oas/utils/naming.d.ts +1 -0
- package/dist/oas/utils/naming.js +9 -2
- package/dist/oas/utils/naming.js.map +1 -1
- package/dist/oas/visitor/GeneratorVisitor.d.ts +39 -0
- package/dist/oas/visitor/GeneratorVisitor.js +310 -0
- package/dist/oas/visitor/GeneratorVisitor.js.map +1 -0
- package/dist/oas/visitor/NodeVisitor.d.ts +30 -0
- package/dist/oas/visitor/NodeVisitor.js +2 -0
- package/dist/oas/visitor/NodeVisitor.js.map +1 -0
- package/dist/oas/visitor/example.d.ts +17 -0
- package/dist/oas/visitor/example.js +28 -0
- package/dist/oas/visitor/example.js.map +1 -0
- package/dist/oas/visitor/index.d.ts +2 -0
- package/dist/oas/visitor/index.js +2 -0
- package/dist/oas/visitor/index.js.map +1 -0
- package/dist/tests/runners.js +2 -1
- package/dist/tests/runners.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/oas/io/pathCollector.d.ts +0 -11
- package/dist/oas/io/pathCollector.js +0 -95
- package/dist/oas/io/pathCollector.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runners.js","sourceRoot":"","sources":["../../src/tests/runners.ts"],"names":[],"mappings":"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","sourcesContent":["import { JsonGen, OasGen } from '../index.js';\nimport { JsonContext, JsonType } from '../json/index.js';\nimport assert from 'node:assert';\nimport path from 'path';\nimport os from 'os';\nimport fs from 'fs';\nimport { execSync, spawnSync } from 'child_process';\nimport _ from 'lodash';\n\nexport const oasBasePath = './tests/resources/oas';\nconst jsonBasePath = './tests/resources/json';\n\n// runOasTest test\nexport async function runOasTest(\n file: string,\n paths: string[],\n pathsSize: number,\n typesSize: number,\n shouldFail: boolean = false,\n skipValidation: boolean = false,\n): Promise<string | undefined> {\n const gen = await OasGen.fromFile(`${oasBasePath}/${file}`, {\n skipValidation,\n consolidateUnions: true,\n showParentInSelections: false,\n });\n await gen.visit();\n\n assert.ok(gen.paths !== undefined);\n assert.ok(gen.paths.size === pathsSize, `${gen.paths.size} is not equal to ${pathsSize}`);\n\n const schema = gen.generateSchema(paths);\n assert.ok(gen.context?.types.size === typesSize, `${gen.context?.types.size} is not equal to ${typesSize}`);\n\n assert.ok(schema !== undefined);\n\n const schemaFile = path.join(os.tmpdir(), file.replace(/yaml|json|yml/, 'graphql'));\n fs.writeFileSync(schemaFile, schema, { encoding: 'utf-8', flag: 'w' });\n\n // need to write another graphql file but this only with a sample query otherwise composition\n // will fail for mutations\n const sampleFile = path.join(os.tmpdir(), 'simple-query.graphql');\n if (!fs.existsSync(sampleFile)) {\n fs.writeFileSync(sampleFile, 'type Query { hello: String }', { encoding: 'utf-8', flag: 'w' });\n }\n\n const [result, output] = compose(schemaFile, sampleFile);\n if (shouldFail) {\n assert.ok(!result);\n assert.ok(output !== undefined);\n return output as unknown as string | undefined;\n } else {\n assert.ok(output === undefined, 'should have been undefined, but it is: ' + output);\n assert.ok(result);\n console.error(schema);\n }\n}\n\ninterface IJsonTestOptions {\n shouldFail: boolean;\n outputContains?: string;\n}\n\nexport async function runJsonTest(\n fileOrFolder: string,\n options: IJsonTestOptions = { shouldFail: false, outputContains: undefined },\n): Promise<string | undefined> {\n const fileOrFolderPath: string = `${jsonBasePath}/${fileOrFolder}`;\n\n assert.ok(fs.existsSync(fileOrFolderPath));\n\n let walker: JsonGen;\n\n const stats = fs.statSync(fileOrFolderPath);\n if (stats.isDirectory()) {\n walker = JsonGen.new();\n\n const sources = fs.readdirSync(fileOrFolderPath).filter((name) => name.toLowerCase().endsWith('.json'));\n\n for (const source of sources) {\n const fullPath = path.join(fileOrFolderPath, source);\n const json = fs.readFileSync(fullPath, 'utf-8');\n assert.ok(json !== undefined);\n\n walker.walkJson(json);\n }\n } else {\n const json = fs.readFileSync(fileOrFolderPath, 'utf-8');\n assert.ok(json !== undefined);\n\n walker = JsonGen.fromReader(json);\n }\n\n const context: JsonContext = walker.getContext();\n\n const types: JsonType[] = context.getTypes();\n assert.ok(types.length > 0);\n\n const schema = walker.generateSchema();\n assert.ok(schema !== undefined);\n\n const schemaFile = path.join(os.tmpdir() + '/walker', fileOrFolder.replace(/\\.yaml|\\.json|\\.yml/, '') + '.graphql');\n\n // Ensure the directory exists\n // fs.mkdirSync(path.dirname(schemaFile), { recursive: true });\n const parentFolder = path.dirname(schemaFile);\n if (!fs.existsSync(parentFolder)) {\n fs.mkdirSync(parentFolder, { recursive: true });\n }\n\n if (fs.existsSync(schemaFile)) {\n fs.unlinkSync(schemaFile);\n }\n\n fs.writeFileSync(schemaFile, schema, { encoding: 'utf-8', flag: 'w' });\n\n const [result, output] = compose(schemaFile);\n\n if (options.shouldFail) {\n assert.ok(result === false);\n assert.ok(output !== undefined);\n return output as unknown as string | undefined;\n } else {\n assert.ok(output === undefined);\n assert.ok(result === true);\n }\n\n // writer.clear();\n}\n\n/// rover checks\nfunction isRoverAvailable(command: string): [boolean, string?] {\n const cmd = os.platform() === 'win32' ? 'where' : 'which';\n const result = spawnSync(cmd, [command], { encoding: 'utf8' });\n\n return [result.status === 0, result.stdout.toString().trim()];\n}\n\nfunction compose(schemaPath: string, samplePath?: string) {\n console.info('schemaPath', schemaPath);\n\n const rover: [boolean, (string | undefined)?] = isRoverAvailable('rover');\n if (!rover[0]) {\n throw new Error('Rover is not available');\n }\n\n const supergraphFile = path.join(os.tmpdir(), 'supergraph.yaml');\n let content: string = `\nfederation_version: =2.10.0\nsubgraphs:\n test_spec:\n routing_url: http://localhost # this value is ignored\n schema:\n file: ${schemaPath} # path to the schema file`;\n\n if (samplePath) {\n content += `\n sample_spec:\n routing_url: http://localhost # this value is ignored\n schema:\n file: ${samplePath} # path to the sample file\\`;\n `;\n }\n\n fs.writeFileSync(supergraphFile, content, { encoding: 'utf-8', flag: 'w' });\n\n const cmd = `${rover[1]} supergraph compose --config ${supergraphFile} --elv2-license accept`;\n\n let output;\n try {\n output = execSync(cmd, { stdio: 'pipe' });\n return [true, undefined];\n } catch (error) {\n return [false, _.get(error, 'message')];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"runners.js","sourceRoot":"","sources":["../../src/tests/runners.ts"],"names":[],"mappings":"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","sourcesContent":["import { JsonGen, OasGen } from '../index.js';\nimport { JsonContext, JsonType } from '../json/index.js';\nimport assert from 'node:assert';\nimport path from 'path';\nimport os from 'os';\nimport fs from 'fs';\nimport { execSync, spawnSync } from 'child_process';\nimport _ from 'lodash';\n\nexport const oasBasePath = './tests/resources/oas';\nconst jsonBasePath = './tests/resources/json';\n\n// runOasTest test\nexport async function runOasTest(\n file: string,\n paths: string[],\n pathsSize: number,\n typesSize: number,\n shouldFail: boolean = false,\n skipValidation: boolean = false,\n): Promise<string | undefined> {\n const gen = await OasGen.fromFile(`${oasBasePath}/${file}`, {\n skipValidation,\n consolidateUnions: true,\n showParentInSelections: false,\n });\n await gen.visit();\n\n assert.ok(gen.paths !== undefined);\n assert.ok(gen.paths.size === pathsSize, `${gen.paths.size} is not equal to ${pathsSize}`);\n\n const types = gen.getTypes(paths);\n assert.ok(\n types.size === typesSize,\n `${types.size} is not equal to ${typesSize}: ${Array.from(types.keys()).join(',\\n')}`,\n );\n\n const schema = gen.generateSchema(paths);\n assert.ok(schema !== undefined);\n\n const schemaFile = path.join(os.tmpdir(), file.replace(/yaml|json|yml/, 'graphql'));\n fs.writeFileSync(schemaFile, schema, { encoding: 'utf-8', flag: 'w' });\n\n // need to write another graphql file but this only with a sample query otherwise composition\n // will fail for mutations\n const sampleFile = path.join(os.tmpdir(), 'simple-query.graphql');\n if (!fs.existsSync(sampleFile)) {\n fs.writeFileSync(sampleFile, 'type Query { hello: String }', { encoding: 'utf-8', flag: 'w' });\n }\n\n const [result, output] = compose(schemaFile, sampleFile);\n if (shouldFail) {\n assert.ok(!result);\n assert.ok(output !== undefined);\n return output as unknown as string | undefined;\n } else {\n assert.ok(output === undefined, 'should have been undefined, but it is: ' + output);\n assert.ok(result);\n console.error(schema);\n }\n}\n\ninterface IJsonTestOptions {\n shouldFail: boolean;\n outputContains?: string;\n}\n\nexport async function runJsonTest(\n fileOrFolder: string,\n options: IJsonTestOptions = { shouldFail: false, outputContains: undefined },\n): Promise<string | undefined> {\n const fileOrFolderPath: string = `${jsonBasePath}/${fileOrFolder}`;\n\n assert.ok(fs.existsSync(fileOrFolderPath));\n\n let walker: JsonGen;\n\n const stats = fs.statSync(fileOrFolderPath);\n if (stats.isDirectory()) {\n walker = JsonGen.new();\n\n const sources = fs.readdirSync(fileOrFolderPath).filter((name) => name.toLowerCase().endsWith('.json'));\n\n for (const source of sources) {\n const fullPath = path.join(fileOrFolderPath, source);\n const json = fs.readFileSync(fullPath, 'utf-8');\n assert.ok(json !== undefined);\n\n walker.walkJson(json);\n }\n } else {\n const json = fs.readFileSync(fileOrFolderPath, 'utf-8');\n assert.ok(json !== undefined);\n\n walker = JsonGen.fromReader(json);\n }\n\n const context: JsonContext = walker.getContext();\n\n const types: JsonType[] = context.getTypes();\n assert.ok(types.length > 0);\n\n const schema = walker.generateSchema();\n assert.ok(schema !== undefined);\n\n const schemaFile = path.join(os.tmpdir() + '/walker', fileOrFolder.replace(/\\.yaml|\\.json|\\.yml/, '') + '.graphql');\n\n // Ensure the directory exists\n // fs.mkdirSync(path.dirname(schemaFile), { recursive: true });\n const parentFolder = path.dirname(schemaFile);\n if (!fs.existsSync(parentFolder)) {\n fs.mkdirSync(parentFolder, { recursive: true });\n }\n\n if (fs.existsSync(schemaFile)) {\n fs.unlinkSync(schemaFile);\n }\n\n fs.writeFileSync(schemaFile, schema, { encoding: 'utf-8', flag: 'w' });\n\n const [result, output] = compose(schemaFile);\n\n if (options.shouldFail) {\n assert.ok(result === false);\n assert.ok(output !== undefined);\n return output as unknown as string | undefined;\n } else {\n assert.ok(output === undefined);\n assert.ok(result === true);\n }\n\n // writer.clear();\n}\n\n/// rover checks\nfunction isRoverAvailable(command: string): [boolean, string?] {\n const cmd = os.platform() === 'win32' ? 'where' : 'which';\n const result = spawnSync(cmd, [command], { encoding: 'utf8' });\n\n return [result.status === 0, result.stdout.toString().trim()];\n}\n\nfunction compose(schemaPath: string, samplePath?: string) {\n console.info('schemaPath', schemaPath);\n\n const rover: [boolean, (string | undefined)?] = isRoverAvailable('rover');\n if (!rover[0]) {\n throw new Error('Rover is not available');\n }\n\n const supergraphFile = path.join(os.tmpdir(), 'supergraph.yaml');\n let content: string = `\nfederation_version: =2.10.0\nsubgraphs:\n test_spec:\n routing_url: http://localhost # this value is ignored\n schema:\n file: ${schemaPath} # path to the schema file`;\n\n if (samplePath) {\n content += `\n sample_spec:\n routing_url: http://localhost # this value is ignored\n schema:\n file: ${samplePath} # path to the sample file\\`;\n `;\n }\n\n fs.writeFileSync(supergraphFile, content, { encoding: 'utf-8', flag: 'w' });\n\n const cmd = `${rover[1]} supergraph compose --config ${supergraphFile} --elv2-license accept`;\n\n let output;\n try {\n output = execSync(cmd, { stdio: 'pipe' });\n return [true, undefined];\n } catch (error) {\n return [false, _.get(error, 'message')];\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/index.ts","../src/cli/json.ts","../src/cli/oas.ts","../src/cli/oas-helpers/index.ts","../src/json/index.ts","../src/json/io/index.ts","../src/json/io/writer.ts","../src/json/walker/index.ts","../src/json/walker/jsoncontext.ts","../src/json/walker/jsongen.ts","../src/json/walker/naming.ts","../src/json/walker/log/trace.ts","../src/json/walker/types/index.ts","../src/json/walker/types/jsonarray.ts","../src/json/walker/types/jsonobj.ts","../src/json/walker/types/jsonscalar.ts","../src/json/walker/types/jsontype.ts","../src/oas/index.ts","../src/oas/oascontext.ts","../src/oas/oasgen.ts","../src/oas/
|
|
1
|
+
{"root":["../src/index.ts","../src/cli/json.ts","../src/cli/oas.ts","../src/cli/oas-helpers/index.ts","../src/json/index.ts","../src/json/io/index.ts","../src/json/io/writer.ts","../src/json/walker/index.ts","../src/json/walker/jsoncontext.ts","../src/json/walker/jsongen.ts","../src/json/walker/naming.ts","../src/json/walker/log/trace.ts","../src/json/walker/types/index.ts","../src/json/walker/types/jsonarray.ts","../src/json/walker/types/jsonobj.ts","../src/json/walker/types/jsonscalar.ts","../src/json/walker/types/jsontype.ts","../src/oas/index.ts","../src/oas/oascontext.ts","../src/oas/oasgen.ts","../src/oas/generator/typescollector.ts","../src/oas/io/operationwriter.ts","../src/oas/io/schemawriter.ts","../src/oas/io/writer.ts","../src/oas/log/trace.ts","../src/oas/nodes/arr.ts","../src/oas/nodes/body.ts","../src/oas/nodes/circularref.ts","../src/oas/nodes/comp.ts","../src/oas/nodes/delete.ts","../src/oas/nodes/en.ts","../src/oas/nodes/factory.ts","../src/oas/nodes/get.ts","../src/oas/nodes/itype.ts","../src/oas/nodes/internal.ts","../src/oas/nodes/obj.ts","../src/oas/nodes/op.ts","../src/oas/nodes/param.ts","../src/oas/nodes/patch.ts","../src/oas/nodes/post.ts","../src/oas/nodes/prop.ts","../src/oas/nodes/proparray.ts","../src/oas/nodes/propcircref.ts","../src/oas/nodes/propcomp.ts","../src/oas/nodes/propen.ts","../src/oas/nodes/propobj.ts","../src/oas/nodes/propref.ts","../src/oas/nodes/propscalar.ts","../src/oas/nodes/put.ts","../src/oas/nodes/ref.ts","../src/oas/nodes/referenceobject.ts","../src/oas/nodes/res.ts","../src/oas/nodes/scalar.ts","../src/oas/nodes/type.ts","../src/oas/nodes/typeutils.ts","../src/oas/nodes/union.ts","../src/oas/prompts/prompt.ts","../src/oas/prompts/theme.ts","../src/oas/prompts/base/theme.ts","../src/oas/prompts/base/utils.ts","../src/oas/schemas/index.ts","../src/oas/utils/gql.ts","../src/oas/utils/naming.ts","../src/oas/visitor/generatorvisitor.ts","../src/oas/visitor/nodevisitor.ts","../src/oas/visitor/example.ts","../src/oas/visitor/index.ts","../src/tests/runners.ts"],"version":"5.8.2"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apollo-conn-gen",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "Library to generate Apollo connector schemas from OpenAPI specs or JSON payloads. Also includes a CLI to generate connectors from the command line.",
|
|
5
5
|
"author": "Fernando @ Apollo",
|
|
6
6
|
"license": "MIT",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { OasGen } from '../oasGen.js';
|
|
2
|
-
import { IType } from '../nodes/internal.js';
|
|
3
|
-
export declare class PathCollector {
|
|
4
|
-
private gen;
|
|
5
|
-
constructor(gen: OasGen);
|
|
6
|
-
static findNonPropParent(type: IType): IType;
|
|
7
|
-
static progressiveSplits(input: string): string[];
|
|
8
|
-
collectPaths(path: string, collection: IType[]): IType[];
|
|
9
|
-
collectExpandedPaths(selection: string[]): string[];
|
|
10
|
-
traverseTree(current: IType, selection: string[], pending: Map<string, IType>): void;
|
|
11
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import _ from 'lodash';
|
|
2
|
-
import { Composed, Prop, PropArray, Scalar, T } from '../nodes/internal.js';
|
|
3
|
-
export class PathCollector {
|
|
4
|
-
gen;
|
|
5
|
-
constructor(gen) {
|
|
6
|
-
this.gen = gen;
|
|
7
|
-
}
|
|
8
|
-
static findNonPropParent(type) {
|
|
9
|
-
let parent = type;
|
|
10
|
-
while (parent instanceof Prop) {
|
|
11
|
-
parent = parent.parent;
|
|
12
|
-
}
|
|
13
|
-
return parent;
|
|
14
|
-
}
|
|
15
|
-
static progressiveSplits(input) {
|
|
16
|
-
const parts = input.split('>');
|
|
17
|
-
const results = [];
|
|
18
|
-
for (let i = 1; i <= parts.length; i++) {
|
|
19
|
-
results.push(parts.slice(0, i).join('>'));
|
|
20
|
-
}
|
|
21
|
-
return results;
|
|
22
|
-
}
|
|
23
|
-
collectPaths(path, collection) {
|
|
24
|
-
const stack = [];
|
|
25
|
-
let current;
|
|
26
|
-
let last;
|
|
27
|
-
let i = 0;
|
|
28
|
-
const parts = path.split('>');
|
|
29
|
-
do {
|
|
30
|
-
const part = parts[i].replace(/#\/c\/s/g, '#/components/schemas');
|
|
31
|
-
current = collection.find((t) => t.id === part);
|
|
32
|
-
if (!current) {
|
|
33
|
-
throw new Error('Could not find type: ' + part + ' from ' + path + ', last: ' + last?.pathToRoot());
|
|
34
|
-
}
|
|
35
|
-
// make sure we expand it before we move on to the next part
|
|
36
|
-
this.gen.expand(current);
|
|
37
|
-
last = current;
|
|
38
|
-
collection = Array.from(current.children.values()) || Array.from(current.props.values()) || [];
|
|
39
|
-
stack.push(current);
|
|
40
|
-
i++;
|
|
41
|
-
} while (i < parts.length);
|
|
42
|
-
return stack;
|
|
43
|
-
}
|
|
44
|
-
collectExpandedPaths(selection) {
|
|
45
|
-
const newSelection = new Set();
|
|
46
|
-
const expands = selection.filter((p) => p.endsWith('>**'));
|
|
47
|
-
const filtered = expands.map((p) => p.replace('>**', ''));
|
|
48
|
-
const paths = Array.from(this.gen.paths.values());
|
|
49
|
-
const nodes = filtered.map((p) => this.collectPaths(p, paths));
|
|
50
|
-
nodes.forEach((stack) => {
|
|
51
|
-
const root = _.last(stack);
|
|
52
|
-
T.traverse(root, (child) => {
|
|
53
|
-
if (T.isPropScalar(child) || (child instanceof PropArray && child.items instanceof Scalar)) {
|
|
54
|
-
newSelection.add(child.path());
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
this.gen.expand(child);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
// finally remove the expanded paths from the selection
|
|
62
|
-
return [...newSelection, ...selection.filter((p) => !expands.includes(p))];
|
|
63
|
-
}
|
|
64
|
-
traverseTree(current, selection, pending) {
|
|
65
|
-
// we might be in a node far from the root, so we need to traverse upwards
|
|
66
|
-
// as well and add the props that we can find on the way
|
|
67
|
-
const source = current;
|
|
68
|
-
source
|
|
69
|
-
.ancestors()
|
|
70
|
-
.filter((t) => t instanceof Prop)
|
|
71
|
-
.map((p) => PathCollector.findNonPropParent(p))
|
|
72
|
-
.forEach((parent) => pending.set(parent.id, parent));
|
|
73
|
-
T.traverse(source, (child) => {
|
|
74
|
-
if (T.isLeaf(child)) {
|
|
75
|
-
// this is a weird take but if the child is an array of scalars
|
|
76
|
-
// then we want to avoid adding it twice
|
|
77
|
-
if (T.isLeaf(child.parent)) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
selection.push(child.path());
|
|
81
|
-
const parentType = PathCollector.findNonPropParent(child);
|
|
82
|
-
if (!pending.has(parentType.id)) {
|
|
83
|
-
pending.set(parentType.id, parentType);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
this.gen.expand(child);
|
|
88
|
-
if (child instanceof Composed) {
|
|
89
|
-
child.consolidate(selection);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=pathCollector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathCollector.js","sourceRoot":"","sources":["../../../src/oas/io/pathCollector.ts"],"names":[],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport { OasGen } from '../oasGen.js';\nimport { Composed, IType, Prop, PropArray, Scalar, Type, T } from '../nodes/internal.js';\nimport { Writer } from './writer.js';\n\nexport class PathCollector {\n constructor(private gen: OasGen) {}\n\n public static findNonPropParent(type: IType) {\n let parent = type;\n while (parent instanceof Prop) {\n parent = parent.parent!;\n }\n return parent;\n }\n\n public static progressiveSplits(input: string): string[] {\n const parts = input.split('>');\n const results: string[] = [];\n for (let i = 1; i <= parts.length; i++) {\n results.push(parts.slice(0, i).join('>'));\n }\n return results;\n }\n\n public collectPaths(path: string, collection: IType[]): IType[] {\n const stack: IType[] = [];\n let current: IType | undefined;\n let last: IType | undefined;\n\n let i = 0;\n const parts = path.split('>');\n do {\n const part = parts[i].replace(/#\\/c\\/s/g, '#/components/schemas');\n\n current = collection.find((t) => t.id === part);\n if (!current) {\n throw new Error('Could not find type: ' + part + ' from ' + path + ', last: ' + last?.pathToRoot());\n }\n\n // make sure we expand it before we move on to the next part\n this.gen.expand(current);\n last = current;\n\n collection = Array.from(current!.children.values()) || Array.from(current!.props.values()) || [];\n\n stack.push(current);\n i++;\n } while (i < parts.length);\n\n return stack;\n }\n\n public collectExpandedPaths(selection: string[]) {\n const newSelection = new Set<string>();\n const expands = selection.filter((p) => p.endsWith('>**'));\n const filtered = expands.map((p) => p.replace('>**', ''));\n\n const paths = Array.from(this.gen.paths.values());\n const nodes = filtered.map((p) => this.collectPaths(p, paths));\n\n nodes.forEach((stack) => {\n const root = _.last(stack)!;\n T.traverse(root, (child) => {\n if (T.isPropScalar(child) || (child instanceof PropArray && child.items instanceof Scalar)) {\n newSelection.add(child.path());\n } else {\n this.gen.expand(child);\n }\n });\n });\n\n // finally remove the expanded paths from the selection\n return [...newSelection, ...selection.filter((p) => !expands.includes(p))];\n }\n\n public traverseTree(current: IType, selection: string[], pending: Map<string, IType>) {\n // we might be in a node far from the root, so we need to traverse upwards\n // as well and add the props that we can find on the way\n const source = current as Type;\n\n source\n .ancestors()\n .filter((t) => t instanceof Prop)\n .map((p) => PathCollector.findNonPropParent(p))\n .forEach((parent) => pending.set(parent.id, parent));\n\n T.traverse(source, (child) => {\n if (T.isLeaf(child)) {\n // this is a weird take but if the child is an array of scalars\n // then we want to avoid adding it twice\n if (T.isLeaf(child.parent!)) {\n return;\n }\n selection.push(child.path());\n\n const parentType = PathCollector.findNonPropParent(child);\n if (!pending.has(parentType.id)) {\n pending.set(parentType.id, parentType);\n }\n } else {\n this.gen.expand(child);\n\n if (child instanceof Composed) {\n child.consolidate(selection);\n }\n }\n });\n }\n}\n"]}
|