apollo-conn-gen 0.3.0 → 0.3.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/dist/oas/nodes/propArray.js +1 -1
- package/dist/oas/nodes/propArray.js.map +1 -1
- package/dist/oas/nodes/propComp.js +1 -1
- package/dist/oas/nodes/propComp.js.map +1 -1
- package/dist/oas/nodes/propEn.js +1 -1
- package/dist/oas/nodes/propEn.js.map +1 -1
- package/dist/oas/nodes/propObj.js +1 -1
- package/dist/oas/nodes/propObj.js.map +1 -1
- package/dist/oas/nodes/propScalar.js +2 -2
- package/dist/oas/nodes/propScalar.js.map +1 -1
- package/dist/oas/nodes/union.js +3 -3
- package/dist/oas/nodes/union.js.map +1 -1
- package/dist/oas/oasContext.d.ts +3 -3
- package/dist/oas/oasContext.js +3 -3
- package/dist/oas/oasContext.js.map +1 -1
- package/dist/oas/oasGen.d.ts +4 -2
- package/dist/oas/oasGen.js +7 -5
- package/dist/oas/oasGen.js.map +1 -1
- package/dist/tests/runners.js +5 -1
- package/dist/tests/runners.js.map +1 -1
- package/package.json +1 -1
|
@@ -59,7 +59,7 @@ export class PropArray extends Prop {
|
|
|
59
59
|
writer.append(' '.repeat(context.indent + context.stack.length)).append('}');
|
|
60
60
|
}
|
|
61
61
|
// writer.append('\n');
|
|
62
|
-
if (context.generateOptions.
|
|
62
|
+
if (context.generateOptions.showParentInSelections) {
|
|
63
63
|
writer.append(' # ').append(Naming.getRefName(this.parent.name));
|
|
64
64
|
}
|
|
65
65
|
writer.append('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propArray.js","sourceRoot":"","sources":["../../../src/oas/nodes/propArray.ts"],"names":[],"mappings":"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","sourcesContent":["import { IType, Prop, T, Type } from './internal.js';\nimport { trace } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\n\nexport class PropArray extends Prop {\n public items?: IType;\n\n get id(): string {\n return `prop:array:#${this.name}`;\n }\n\n public override visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n\n context.enter(this);\n trace(context, '-> [prop-array:visit]', 'in');\n\n trace(context, ' [prop-array:visit]', 'type: ' + this.items);\n this.items?.visit(context);\n this.visited = true;\n\n trace(context, '<- [prop:array:visit]', 'out');\n context.leave(this);\n }\n\n public setItems(items: IType): void {\n this.items = items;\n if (!this.children.includes(items)) {\n this.add(items);\n }\n }\n\n public override getValue(context: OasContext): string {\n if (this.items && T.isContainer(this.items)) {\n const type = Naming.genTypeName(this.items.name) + (this.items as Type).nameSuffix();\n return `[${type}]`;\n }\n\n return `[${this.items!.name}]`;\n }\n\n public forPrompt(context: OasContext): string {\n if (this.items && T.isContainer(this.items)) {\n return `[prop] ${this.name}: [${Naming.genTypeName(this.items?.name)}] (Array)`;\n }\n\n return `[prop] ${this.name}: [${this.items!.name}] (Array)`;\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n trace(context, '-> [prop-array:select]', 'in: ' + this.name);\n\n const fieldName = this.name;\n const sanitised = Naming.sanitiseFieldForSelect(fieldName);\n writer.append(' '.repeat(context.indent + context.stack.length)).append(sanitised);\n\n if (this.needsBrackets(this.items!)) {\n writer.append(' {');\n writer.append('\\n');\n context.enter(this);\n }\n\n // Select each child of the items Prop.\n if (this.needsBrackets(this.items)) {\n const selected = Array.from(this.items!.children.values()).filter((prop) =>\n selection.find((s) => s.startsWith(prop.path())),\n );\n\n for (const child of selected) {\n child.select(context, writer, selection);\n }\n }\n\n if (this.needsBrackets(this.items!)) {\n context.leave(this);\n writer.append(' '.repeat(context.indent + context.stack.length)).append('}');\n }\n // writer.append('\\n');\n if (context.generateOptions.
|
|
1
|
+
{"version":3,"file":"propArray.js","sourceRoot":"","sources":["../../../src/oas/nodes/propArray.ts"],"names":[],"mappings":"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","sourcesContent":["import { IType, Prop, T, Type } from './internal.js';\nimport { trace } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\n\nexport class PropArray extends Prop {\n public items?: IType;\n\n get id(): string {\n return `prop:array:#${this.name}`;\n }\n\n public override visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n\n context.enter(this);\n trace(context, '-> [prop-array:visit]', 'in');\n\n trace(context, ' [prop-array:visit]', 'type: ' + this.items);\n this.items?.visit(context);\n this.visited = true;\n\n trace(context, '<- [prop:array:visit]', 'out');\n context.leave(this);\n }\n\n public setItems(items: IType): void {\n this.items = items;\n if (!this.children.includes(items)) {\n this.add(items);\n }\n }\n\n public override getValue(context: OasContext): string {\n if (this.items && T.isContainer(this.items)) {\n const type = Naming.genTypeName(this.items.name) + (this.items as Type).nameSuffix();\n return `[${type}]`;\n }\n\n return `[${this.items!.name}]`;\n }\n\n public forPrompt(context: OasContext): string {\n if (this.items && T.isContainer(this.items)) {\n return `[prop] ${this.name}: [${Naming.genTypeName(this.items?.name)}] (Array)`;\n }\n\n return `[prop] ${this.name}: [${this.items!.name}] (Array)`;\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n trace(context, '-> [prop-array:select]', 'in: ' + this.name);\n\n const fieldName = this.name;\n const sanitised = Naming.sanitiseFieldForSelect(fieldName);\n writer.append(' '.repeat(context.indent + context.stack.length)).append(sanitised);\n\n if (this.needsBrackets(this.items!)) {\n writer.append(' {');\n writer.append('\\n');\n context.enter(this);\n }\n\n // Select each child of the items Prop.\n if (this.needsBrackets(this.items)) {\n const selected = Array.from(this.items!.children.values()).filter((prop) =>\n selection.find((s) => s.startsWith(prop.path())),\n );\n\n for (const child of selected) {\n child.select(context, writer, selection);\n }\n }\n\n if (this.needsBrackets(this.items!)) {\n context.leave(this);\n writer.append(' '.repeat(context.indent + context.stack.length)).append('}');\n }\n // writer.append('\\n');\n if (context.generateOptions.showParentInSelections) {\n writer.append(' # ').append(Naming.getRefName(this.parent!.name));\n }\n\n writer.append('\\n');\n\n trace(context, '<- [prop:array:select]', 'out');\n }\n\n public needsBrackets(child?: IType): boolean {\n if (!child) return false;\n return T.isContainer(child);\n }\n}\n"]}
|
|
@@ -53,7 +53,7 @@ export class PropComp extends Prop {
|
|
|
53
53
|
writer.append(' '.repeat(context.indent + context.stack.length)).append('}');
|
|
54
54
|
}
|
|
55
55
|
// writer.append('\n');
|
|
56
|
-
if (context.generateOptions.
|
|
56
|
+
if (context.generateOptions.showParentInSelections) {
|
|
57
57
|
writer.append(' # ').append(Naming.getRefName(this.parent.name));
|
|
58
58
|
}
|
|
59
59
|
writer.append('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propComp.js","sourceRoot":"","sources":["../../../src/oas/nodes/propComp.ts"],"names":[],"mappings":"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","sourcesContent":["import { IType, Obj, Union, Prop } from './internal.js';\nimport _ from 'lodash';\nimport { SchemaObject } from 'oas/types';\nimport { trace } from '../log/trace.js';\nimport { Composed } from './comp.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\n\nexport class PropComp extends Prop {\n public comp?: IType;\n\n constructor(\n parent: IType,\n name: string,\n public schema: SchemaObject,\n ) {\n super(parent, name, schema);\n }\n\n public forPrompt(_context: OasContext): string {\n const type: string = this.schema.oneOf ? 'Union' : this.schema.allOf ? 'Composed' : 'Unknown';\n return '[prop] ' + _.lowerFirst(this.name) + ': ' + Naming.getRefName(this.comp!.name) + ` (${type})`;\n }\n\n get id(): string {\n return 'prop:comp:' + this.name;\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n\n context.enter(this);\n const comp = this.comp!;\n trace(context, '-> [prop-comp:visit]', 'in ' + this.name + ', obj: ' + comp.name);\n\n comp.visit(context);\n if (!this.children.includes(comp)) {\n this.add(comp);\n }\n this.visited = true;\n\n trace(context, '<- [prop-comp:visit]', 'out ' + this.name + ', obj: ' + comp.name);\n context.leave(this);\n }\n\n public getValue(_context: OasContext): string {\n return Naming.genTypeName(this.comp!.name!) + (this.comp as Composed).nameSuffix();\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n const comp = this.comp!;\n trace(context, '-> [prop-comp:select]', 'in ' + this.name + ', obj: ' + comp.name);\n\n const fieldName = this.name;\n const sanitised = Naming.sanitiseFieldForSelect(fieldName);\n\n writer.append(' '.repeat(context.indent + context.stack.length)).append(sanitised);\n\n if (this.needsBrackets(comp)) {\n writer.append(' {').append('\\n');\n context.enter(this);\n }\n\n for (const child of this.children) {\n child.select(context, writer, selection);\n }\n\n if (this.needsBrackets(comp)) {\n context.leave(this);\n writer.append(' '.repeat(context.indent + context.stack.length)).append('}');\n }\n // writer.append('\\n');\n if (context.generateOptions.
|
|
1
|
+
{"version":3,"file":"propComp.js","sourceRoot":"","sources":["../../../src/oas/nodes/propComp.ts"],"names":[],"mappings":"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","sourcesContent":["import { IType, Obj, Union, Prop } from './internal.js';\nimport _ from 'lodash';\nimport { SchemaObject } from 'oas/types';\nimport { trace } from '../log/trace.js';\nimport { Composed } from './comp.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\n\nexport class PropComp extends Prop {\n public comp?: IType;\n\n constructor(\n parent: IType,\n name: string,\n public schema: SchemaObject,\n ) {\n super(parent, name, schema);\n }\n\n public forPrompt(_context: OasContext): string {\n const type: string = this.schema.oneOf ? 'Union' : this.schema.allOf ? 'Composed' : 'Unknown';\n return '[prop] ' + _.lowerFirst(this.name) + ': ' + Naming.getRefName(this.comp!.name) + ` (${type})`;\n }\n\n get id(): string {\n return 'prop:comp:' + this.name;\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n\n context.enter(this);\n const comp = this.comp!;\n trace(context, '-> [prop-comp:visit]', 'in ' + this.name + ', obj: ' + comp.name);\n\n comp.visit(context);\n if (!this.children.includes(comp)) {\n this.add(comp);\n }\n this.visited = true;\n\n trace(context, '<- [prop-comp:visit]', 'out ' + this.name + ', obj: ' + comp.name);\n context.leave(this);\n }\n\n public getValue(_context: OasContext): string {\n return Naming.genTypeName(this.comp!.name!) + (this.comp as Composed).nameSuffix();\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n const comp = this.comp!;\n trace(context, '-> [prop-comp:select]', 'in ' + this.name + ', obj: ' + comp.name);\n\n const fieldName = this.name;\n const sanitised = Naming.sanitiseFieldForSelect(fieldName);\n\n writer.append(' '.repeat(context.indent + context.stack.length)).append(sanitised);\n\n if (this.needsBrackets(comp)) {\n writer.append(' {').append('\\n');\n context.enter(this);\n }\n\n for (const child of this.children) {\n child.select(context, writer, selection);\n }\n\n if (this.needsBrackets(comp)) {\n context.leave(this);\n writer.append(' '.repeat(context.indent + context.stack.length)).append('}');\n }\n // writer.append('\\n');\n if (context.generateOptions.showParentInSelections) {\n writer.append(' # ').append(Naming.getRefName(this.parent!.name));\n }\n\n writer.append('\\n');\n\n trace(context, '<- [prop-comp:select]', 'out ' + this.name + ', obj: ' + comp?.name);\n }\n\n private needsBrackets(child: IType): boolean {\n return child instanceof Union || child instanceof Composed || (child instanceof Obj && !_.isEmpty(child.props));\n }\n}\n"]}
|
package/dist/oas/nodes/propEn.js
CHANGED
|
@@ -29,7 +29,7 @@ export class PropEn extends Prop {
|
|
|
29
29
|
trace(context, ' [prop:select]', this.name);
|
|
30
30
|
const sanitised = Naming.sanitiseFieldForSelect(this.name);
|
|
31
31
|
writer.append(' '.repeat(context.indent + context.stack.length)).append(sanitised);
|
|
32
|
-
if (context.generateOptions.
|
|
32
|
+
if (context.generateOptions.showParentInSelections) {
|
|
33
33
|
writer.append(' # ').append(Naming.getRefName(this.parent.name));
|
|
34
34
|
}
|
|
35
35
|
writer.append('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propEn.js","sourceRoot":"","sources":["../../../src/oas/nodes/propEn.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,IAAI,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,MAAM,OAAO,MAAO,SAAQ,IAAI;IACtB,IAAI,CAAS;IAErB,YAAY,MAAa,EAAE,IAAY,EAAE,IAAY,EAAE,MAAoB;QACzE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;IAClC,CAAC;IAED,QAAQ,CAAC,OAAmB,EAAE,MAAc,EAAE,UAAoB;QAChE,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,OAAmB;QAC9B,aAAa;IACf,CAAC;IAEM,SAAS,CAAC,OAAmB;QAClC,OAAO,gBAAgB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACxD,CAAC;IAEM,QAAQ,CAAC,QAAoB;QAClC,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACpE,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEnF,IAAI,OAAO,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF","sourcesContent":["import { SchemaObject } from 'oas/types';\nimport { IType, Prop } from './internal.js';\nimport { Writer } from '../io/writer.js';\nimport { OasContext } from '../oasContext.js';\nimport { Naming } from '../utils/naming.js';\nimport { trace } from '../log/trace.js';\n\nexport class PropEn extends Prop {\n private type: string;\n\n constructor(parent: IType, name: string, type: string, schema: SchemaObject) {\n super(parent, name, schema);\n this.type = type;\n }\n\n get id(): string {\n return 'prop:enum:' + this.name;\n }\n\n generate(context: OasContext, writer: Writer, _selection: string[]) {\n super.generate(context, writer, _selection);\n }\n\n public visit(context: OasContext): void {\n // do nothing\n }\n\n public forPrompt(context: OasContext): string {\n return `[prop] enum: ${Naming.getRefName(this.type)}`;\n }\n\n public getValue(_context: OasContext): string {\n return Naming.getRefName(this.type);\n }\n\n dependencies(): IType[] {\n return Array.from(this.children.values());\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]): void {\n trace(context, ' [prop:select]', this.name);\n const sanitised = Naming.sanitiseFieldForSelect(this.name);\n writer.append(' '.repeat(context.indent + context.stack.length)).append(sanitised);\n\n if (context.generateOptions.
|
|
1
|
+
{"version":3,"file":"propEn.js","sourceRoot":"","sources":["../../../src/oas/nodes/propEn.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,IAAI,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,MAAM,OAAO,MAAO,SAAQ,IAAI;IACtB,IAAI,CAAS;IAErB,YAAY,MAAa,EAAE,IAAY,EAAE,IAAY,EAAE,MAAoB;QACzE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;IAClC,CAAC;IAED,QAAQ,CAAC,OAAmB,EAAE,MAAc,EAAE,UAAoB;QAChE,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,OAAmB;QAC9B,aAAa;IACf,CAAC;IAEM,SAAS,CAAC,OAAmB;QAClC,OAAO,gBAAgB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACxD,CAAC;IAEM,QAAQ,CAAC,QAAoB;QAClC,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACpE,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEnF,IAAI,OAAO,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF","sourcesContent":["import { SchemaObject } from 'oas/types';\nimport { IType, Prop } from './internal.js';\nimport { Writer } from '../io/writer.js';\nimport { OasContext } from '../oasContext.js';\nimport { Naming } from '../utils/naming.js';\nimport { trace } from '../log/trace.js';\n\nexport class PropEn extends Prop {\n private type: string;\n\n constructor(parent: IType, name: string, type: string, schema: SchemaObject) {\n super(parent, name, schema);\n this.type = type;\n }\n\n get id(): string {\n return 'prop:enum:' + this.name;\n }\n\n generate(context: OasContext, writer: Writer, _selection: string[]) {\n super.generate(context, writer, _selection);\n }\n\n public visit(context: OasContext): void {\n // do nothing\n }\n\n public forPrompt(context: OasContext): string {\n return `[prop] enum: ${Naming.getRefName(this.type)}`;\n }\n\n public getValue(_context: OasContext): string {\n return Naming.getRefName(this.type);\n }\n\n dependencies(): IType[] {\n return Array.from(this.children.values());\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]): void {\n trace(context, ' [prop:select]', this.name);\n const sanitised = Naming.sanitiseFieldForSelect(this.name);\n writer.append(' '.repeat(context.indent + context.stack.length)).append(sanitised);\n\n if (context.generateOptions.showParentInSelections) {\n writer.append(' # ').append(Naming.getRefName(this.parent!.name));\n }\n\n writer.append('\\n');\n }\n}\n"]}
|
|
@@ -63,7 +63,7 @@ export class PropObj extends Prop {
|
|
|
63
63
|
writer.append(' '.repeat(context.indent + context.stack.length)).append('}');
|
|
64
64
|
}
|
|
65
65
|
// writer.append('\n');
|
|
66
|
-
if (context.generateOptions.
|
|
66
|
+
if (context.generateOptions.showParentInSelections) {
|
|
67
67
|
writer.append(' # ').append(Naming.getRefName(this.parent.name));
|
|
68
68
|
}
|
|
69
69
|
writer.append('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propObj.js","sourceRoot":"","sources":["../../../src/oas/nodes/propObj.ts"],"names":[],"mappings":"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","sourcesContent":["import { IType, Obj, Union, Prop } from './internal.js';\nimport _ from 'lodash';\nimport { SchemaObject } from 'oas/types';\nimport { trace } from '../log/trace.js';\nimport { Composed } from './comp.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\n\nexport class PropObj extends Prop {\n constructor(\n parent: IType,\n name: string,\n public schema: SchemaObject,\n public obj: IType,\n ) {\n super(parent, name, schema);\n if (!obj) {\n throw new Error('obj parameter is required');\n }\n\n // TODO: check if re-parenting is necessary?!?!\n if (obj.parent !== this) {\n obj.parent = this;\n }\n }\n\n public forPrompt(_context: OasContext): string {\n return '[prop] ' + _.lowerFirst(this.name) + ': ' + Naming.getRefName(this.obj.name) + ' (Obj)';\n }\n\n get id(): string {\n return 'prop:obj:' + this.name;\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n\n context.enter(this);\n trace(context, '-> [prop-obj:visit]', 'in ' + this.name + ', obj: ' + this.obj.name);\n\n this.obj.visit(context);\n if (!this.children.includes(this.obj)) {\n this.add(this.obj);\n }\n this.visited = true;\n\n trace(context, '<- [prop-obj:visit]', 'out ' + this.name + ', obj: ' + this.obj.name);\n context.leave(this);\n }\n\n public getValue(context: OasContext): string {\n // we'll make an assumption here: that if the child obj has no properties,\n // then it's a free-form JSON payload. not sure if the right one, but it will\n // compose for now.\n if (_.isEmpty(this.obj?.props)) return 'JSON';\n\n return Naming.genTypeName(this.obj!.name!) + (this.obj as Obj).nameSuffix();\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n trace(context, '-> [prop-obj:select]', 'in ' + this.name + ', obj: ' + this.obj.name);\n\n const fieldName = this.name;\n const sanitised = Naming.sanitiseFieldForSelect(fieldName);\n\n writer.append(' '.repeat(context.indent + context.stack.length)).append(sanitised);\n\n if (this.needsBrackets(this.obj!)) {\n writer.append(' {').append('\\n');\n context.enter(this);\n }\n\n for (const child of this.children) {\n child.select(context, writer, selection);\n }\n\n if (this.needsBrackets(this.obj!)) {\n context.leave(this);\n writer.append(' '.repeat(context.indent + context.stack.length)).append('}');\n }\n // writer.append('\\n');\n if (context.generateOptions.
|
|
1
|
+
{"version":3,"file":"propObj.js","sourceRoot":"","sources":["../../../src/oas/nodes/propObj.ts"],"names":[],"mappings":"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","sourcesContent":["import { IType, Obj, Union, Prop } from './internal.js';\nimport _ from 'lodash';\nimport { SchemaObject } from 'oas/types';\nimport { trace } from '../log/trace.js';\nimport { Composed } from './comp.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\n\nexport class PropObj extends Prop {\n constructor(\n parent: IType,\n name: string,\n public schema: SchemaObject,\n public obj: IType,\n ) {\n super(parent, name, schema);\n if (!obj) {\n throw new Error('obj parameter is required');\n }\n\n // TODO: check if re-parenting is necessary?!?!\n if (obj.parent !== this) {\n obj.parent = this;\n }\n }\n\n public forPrompt(_context: OasContext): string {\n return '[prop] ' + _.lowerFirst(this.name) + ': ' + Naming.getRefName(this.obj.name) + ' (Obj)';\n }\n\n get id(): string {\n return 'prop:obj:' + this.name;\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n\n context.enter(this);\n trace(context, '-> [prop-obj:visit]', 'in ' + this.name + ', obj: ' + this.obj.name);\n\n this.obj.visit(context);\n if (!this.children.includes(this.obj)) {\n this.add(this.obj);\n }\n this.visited = true;\n\n trace(context, '<- [prop-obj:visit]', 'out ' + this.name + ', obj: ' + this.obj.name);\n context.leave(this);\n }\n\n public getValue(context: OasContext): string {\n // we'll make an assumption here: that if the child obj has no properties,\n // then it's a free-form JSON payload. not sure if the right one, but it will\n // compose for now.\n if (_.isEmpty(this.obj?.props)) return 'JSON';\n\n return Naming.genTypeName(this.obj!.name!) + (this.obj as Obj).nameSuffix();\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n trace(context, '-> [prop-obj:select]', 'in ' + this.name + ', obj: ' + this.obj.name);\n\n const fieldName = this.name;\n const sanitised = Naming.sanitiseFieldForSelect(fieldName);\n\n writer.append(' '.repeat(context.indent + context.stack.length)).append(sanitised);\n\n if (this.needsBrackets(this.obj!)) {\n writer.append(' {').append('\\n');\n context.enter(this);\n }\n\n for (const child of this.children) {\n child.select(context, writer, selection);\n }\n\n if (this.needsBrackets(this.obj!)) {\n context.leave(this);\n writer.append(' '.repeat(context.indent + context.stack.length)).append('}');\n }\n // writer.append('\\n');\n if (context.generateOptions.showParentInSelections) {\n writer.append(' # ').append(Naming.getRefName(this.parent!.name));\n }\n\n writer.append('\\n');\n\n trace(context, '<- [prop-obj:select]', 'out ' + this.name + ', obj: ' + this.obj?.name);\n }\n\n private needsBrackets(child: IType): boolean {\n return (child instanceof Obj || child instanceof Union || child instanceof Composed) && !_.isEmpty(child.props);\n }\n}\n"]}
|
|
@@ -31,7 +31,7 @@ export class PropScalar extends Prop {
|
|
|
31
31
|
}
|
|
32
32
|
forPrompt(context) {
|
|
33
33
|
let result = `[prop] ${this.name}: ${this.type}`;
|
|
34
|
-
if (context.generateOptions.
|
|
34
|
+
if (context.generateOptions.showParentInSelections) {
|
|
35
35
|
result = result + ` (${Naming.getRefName(this.parent.name)})`;
|
|
36
36
|
}
|
|
37
37
|
return result;
|
|
@@ -43,7 +43,7 @@ export class PropScalar extends Prop {
|
|
|
43
43
|
for (const child of this.children) {
|
|
44
44
|
child.select(context, writer, selection);
|
|
45
45
|
}
|
|
46
|
-
if (context.generateOptions.
|
|
46
|
+
if (context.generateOptions.showParentInSelections) {
|
|
47
47
|
writer.append(' # ').append(Naming.getRefName(this.parent.name));
|
|
48
48
|
}
|
|
49
49
|
writer.append('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propScalar.js","sourceRoot":"","sources":["../../../src/oas/nodes/propScalar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,IAAI,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,OAAO,UAAW,SAAQ,IAAI;IAMzB;IACA;IAND,QAAQ,CAAS;IAEzB,YACE,MAAa,EACb,IAAY,EACL,IAAY,EACZ,MAAoB;QAE3B,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAHrB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAc;IAG7B,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,eAAe,IAAI,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,OAAmB;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,QAAQ,CAAC,QAAoB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEM,SAAS,CAAC,OAAmB;QAClC,IAAI,MAAM,GAAG,UAAU,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAEjD,IAAI,OAAO,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,GAAG,MAAM,GAAG,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACjE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACpE,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEnF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF","sourcesContent":["import { Factory, IType, Prop } from './internal.js';\nimport { SchemaObject } from 'oas/types';\nimport { trace } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\n\nexport class PropScalar extends Prop {\n private propType?: IType;\n\n constructor(\n parent: IType,\n name: string,\n public type: string,\n public schema: SchemaObject,\n ) {\n super(parent, name, schema);\n }\n\n get id(): string {\n return `prop:scalar:${this.name}`;\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n\n context.enter(this);\n if (!this.propType) {\n const type = Factory.fromSchema(context, this, this.schema);\n this.add(type);\n this.propType = type;\n this.visited = true;\n }\n context.leave(this);\n }\n\n public getValue(_context: OasContext): string {\n return this.type;\n }\n\n public forPrompt(context: OasContext): string {\n let result = `[prop] ${this.name}: ${this.type}`;\n\n if (context.generateOptions.
|
|
1
|
+
{"version":3,"file":"propScalar.js","sourceRoot":"","sources":["../../../src/oas/nodes/propScalar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,IAAI,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,OAAO,UAAW,SAAQ,IAAI;IAMzB;IACA;IAND,QAAQ,CAAS;IAEzB,YACE,MAAa,EACb,IAAY,EACL,IAAY,EACZ,MAAoB;QAE3B,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAHrB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAc;IAG7B,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,eAAe,IAAI,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,OAAmB;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,QAAQ,CAAC,QAAoB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEM,SAAS,CAAC,OAAmB;QAClC,IAAI,MAAM,GAAG,UAAU,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAEjD,IAAI,OAAO,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,GAAG,MAAM,GAAG,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACjE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACpE,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEnF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF","sourcesContent":["import { Factory, IType, Prop } from './internal.js';\nimport { SchemaObject } from 'oas/types';\nimport { trace } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\n\nexport class PropScalar extends Prop {\n private propType?: IType;\n\n constructor(\n parent: IType,\n name: string,\n public type: string,\n public schema: SchemaObject,\n ) {\n super(parent, name, schema);\n }\n\n get id(): string {\n return `prop:scalar:${this.name}`;\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n\n context.enter(this);\n if (!this.propType) {\n const type = Factory.fromSchema(context, this, this.schema);\n this.add(type);\n this.propType = type;\n this.visited = true;\n }\n context.leave(this);\n }\n\n public getValue(_context: OasContext): string {\n return this.type;\n }\n\n public forPrompt(context: OasContext): string {\n let result = `[prop] ${this.name}: ${this.type}`;\n\n if (context.generateOptions.showParentInSelections) {\n result = result + ` (${Naming.getRefName(this.parent!.name)})`;\n }\n\n return result;\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n trace(context, ' [prop:select]', this.name);\n const sanitised = Naming.sanitiseFieldForSelect(this.name);\n writer.append(' '.repeat(context.indent + context.stack.length)).append(sanitised);\n\n for (const child of this.children) {\n child.select(context, writer, selection);\n }\n\n if (context.generateOptions.showParentInSelections) {\n writer.append(' # ').append(Naming.getRefName(this.parent!.name));\n }\n\n writer.append('\\n');\n }\n}\n"]}
|
package/dist/oas/nodes/union.js
CHANGED
|
@@ -38,7 +38,7 @@ export class Union extends Type {
|
|
|
38
38
|
}
|
|
39
39
|
if (this.name != null) {
|
|
40
40
|
context.store(this.name, this);
|
|
41
|
-
if (context.generateOptions.
|
|
41
|
+
if (context.generateOptions.consolidateUnions) {
|
|
42
42
|
this.children.forEach((child) => context.generatedSet.add(child.id));
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -64,7 +64,7 @@ export class Union extends Type {
|
|
|
64
64
|
// generate traditional union
|
|
65
65
|
else {
|
|
66
66
|
const name = _.upperFirst(Naming.getRefName(this.name));
|
|
67
|
-
if (context.generateOptions.
|
|
67
|
+
if (context.generateOptions.consolidateUnions) {
|
|
68
68
|
if (!this.consolidated) {
|
|
69
69
|
// add to generated set
|
|
70
70
|
this.consolidate(selection).forEach((id) => context.generatedSet.add(id));
|
|
@@ -106,7 +106,7 @@ export class Union extends Type {
|
|
|
106
106
|
}
|
|
107
107
|
select(context, writer, selection) {
|
|
108
108
|
trace(context, '-> [union::select]', `-> in: ${this.name}`);
|
|
109
|
-
if (context.generateOptions.
|
|
109
|
+
if (context.generateOptions.consolidateUnions) {
|
|
110
110
|
if (!this.consolidated) {
|
|
111
111
|
this.consolidate(selection);
|
|
112
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"union.js","sourceRoot":"","sources":["../../../src/oas/nodes/union.ts"],"names":[],"mappings":"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","sourcesContent":["import { Composed, Factory, Get, IType, Prop, Res, T, Type } from './internal.js';\nimport { SchemaObject } from 'oas/types';\nimport { trace } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\nimport _ from 'lodash';\n\nexport class Union extends Type {\n public schemas: SchemaObject[];\n public discriminator?: string;\n\n constructor(\n parent: IType,\n name: string,\n schemas: SchemaObject[],\n public consolidated: boolean = false,\n ) {\n super(parent, name);\n this.schemas = schemas;\n this.updateName();\n }\n\n get id(): string {\n return `union:${this.name}`;\n }\n\n public forPrompt(_context: OasContext): string {\n return `[union] ${Naming.getRefName(this.name)}`;\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n\n const schemas = this.schemas.map((s) => s.type);\n\n context.enter(this);\n trace(context, '-> [union:visit]', 'in: ' + schemas);\n\n if (!context.inContextOf('Composed', this)) {\n trace(context, '[union]', 'In union: ' + this.parent?.name);\n }\n\n for (const refSchema of this.schemas) {\n const type = Factory.fromSchema(context, this, refSchema);\n this.add(type);\n\n trace(context, ' [union:visit]', 'of type: ' + type);\n }\n\n if (!context.inContextOf('Param', this)) {\n this.visitProperties(context);\n }\n\n if (this.name != null) {\n context.store(this.name, this);\n if (context.generateOptions.consolidateUnion) {\n this.children.forEach((child) => context.generatedSet.add(child.id));\n }\n }\n\n this.visited = true;\n trace(context, '<- [union:visit]', 'out: ' + schemas);\n context.leave(this);\n }\n\n public generate(context: OasContext, writer: Writer, selection: string[]): void {\n context.enter(this);\n const schemas = this.schemas.map((s) => s.type);\n trace(context, '-> [union::generate]', 'in: ' + schemas);\n\n /* params with Unions are weird, but here's an example:\n * id: oneOf [string, Enum {me}] */\n if (context.inContextOf('Param', this)) {\n for (const child of this.children) {\n child.generate(context, writer, selection);\n }\n } else if (context.inContextOf('Res', this)) {\n writer.append(Naming.genTypeName(this.name));\n return;\n }\n // generate traditional union\n else {\n const name = _.upperFirst(Naming.getRefName(this.name));\n\n if (context.generateOptions.consolidateUnion) {\n if (!this.consolidated) {\n // add to generated set\n this.consolidate(selection).forEach((id) => context.generatedSet.add(id));\n }\n\n // When generating this union in GQL it might look like:\n // union MyUnion = Type1 | Type2 | Type3\n writer.append('#### NOT SUPPORTED YET BY CONNECTORS!!! union ').append(name).append(' = ');\n\n const childrenTypes = this.children.map((child) => Naming.getRefName(child.name));\n const childrenNames = childrenTypes.join(' | ');\n writer.append(childrenNames).append('\\n\\n');\n\n trace(context, ' [union::generate]', `[union] -> object: ${this.name}`);\n\n writer\n .append(this.kind + ' ')\n .append(name)\n .append(this.nameSuffix())\n .append(' { #### replacement for Union ')\n .append(name)\n .append('\\n');\n\n const selected = this.selectedProps(selection);\n for (const prop of selected) {\n trace(context, ' [union::generate]', `-> property: ${prop.name} (parent: ${prop.parent!.name})`);\n prop.generate(context, writer, selection);\n }\n\n writer.append('} \\n### End replacement for ').append(this.name).append('\\n\\n');\n } else {\n // const selected = this.selectedProps(selection);\n writer\n .append('union ')\n .append(name)\n .append(this.nameSuffix())\n .append(' = ')\n .append(this.children.map((child) => Naming.getRefName(child.name)).join(' | '))\n .append('\\n\\n');\n }\n }\n\n trace(context, '<- [union::generate]', 'out: ' + schemas);\n context.leave(this);\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]): void {\n trace(context, '-> [union::select]', `-> in: ${this.name}`);\n\n if (context.generateOptions.consolidateUnion) {\n if (!this.consolidated) {\n this.consolidate(selection);\n }\n\n const selected = this.selectedProps(selection);\n for (const prop of selected) {\n prop.select(context, writer, selection);\n }\n } else {\n // collect all property names from children and write them here\n this.children.forEach((child) => {\n child.select(context, writer, selection);\n });\n }\n\n /* TODO: better selection for Unions\n dataPoints: dataFormat->match(\n [\"raw\", $.dataPoints],\n [\"normal\", $.dataPoints {\n priceDateTime\n # all other fields\n }],\n [@, $ { # optimized\n priceDateTime\n # all other fields\n }\n ])\n */\n\n trace(context, '<- [union::select]', `-> out: ${this.name}`);\n }\n\n public consolidate(selection: string[]): Set<string> {\n T.composables(this).forEach((child) => {\n (child as Composed).consolidate(selection);\n });\n\n const ids: Set<string> = new Set();\n const props: Prop[] = [];\n const discriminator = this.discriminator;\n\n this.children?.forEach((child) => {\n ids.add(child.id);\n props.push(...child.props.values());\n });\n\n // add the discriminator, if we have one\n if (discriminator) {\n const prop = (this.children || [])\n .map((child) => child.props.get(discriminator))\n .find((prop) => prop !== undefined);\n\n if (prop) props.push(prop);\n }\n\n // and finally sort the props and copy them to our original\n props.sort((a, b) => a.name.localeCompare(b.name)).forEach((prop) => this.props.set(prop.name, prop));\n\n // and return the types.ts we've used\n this.consolidated = true;\n\n // now remove every added ID\n const queue: IType[] = Array.from(this.children.values());\n while (queue.length > 0) {\n const node = queue.shift()!;\n T.containers(node).forEach((c) => ids.add(c.id));\n queue.push(...node.children);\n }\n\n return ids;\n }\n\n private visitProperties(_context: OasContext): void {\n // TODO: pending\n }\n\n private updateName(): void {\n let name = this.name;\n if (!name) {\n if (this.parent instanceof Res) {\n const op = this.parent!.parent as Get;\n name = op.getGqlOpName() + 'Response';\n } else {\n name = this.parent!.name + `Union`;\n }\n }\n\n this.name = name;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"union.js","sourceRoot":"","sources":["../../../src/oas/nodes/union.ts"],"names":[],"mappings":"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","sourcesContent":["import { Composed, Factory, Get, IType, Prop, Res, T, Type } from './internal.js';\nimport { SchemaObject } from 'oas/types';\nimport { trace } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\nimport _ from 'lodash';\n\nexport class Union extends Type {\n public schemas: SchemaObject[];\n public discriminator?: string;\n\n constructor(\n parent: IType,\n name: string,\n schemas: SchemaObject[],\n public consolidated: boolean = false,\n ) {\n super(parent, name);\n this.schemas = schemas;\n this.updateName();\n }\n\n get id(): string {\n return `union:${this.name}`;\n }\n\n public forPrompt(_context: OasContext): string {\n return `[union] ${Naming.getRefName(this.name)}`;\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n\n const schemas = this.schemas.map((s) => s.type);\n\n context.enter(this);\n trace(context, '-> [union:visit]', 'in: ' + schemas);\n\n if (!context.inContextOf('Composed', this)) {\n trace(context, '[union]', 'In union: ' + this.parent?.name);\n }\n\n for (const refSchema of this.schemas) {\n const type = Factory.fromSchema(context, this, refSchema);\n this.add(type);\n\n trace(context, ' [union:visit]', 'of type: ' + type);\n }\n\n if (!context.inContextOf('Param', this)) {\n this.visitProperties(context);\n }\n\n if (this.name != null) {\n context.store(this.name, this);\n if (context.generateOptions.consolidateUnions) {\n this.children.forEach((child) => context.generatedSet.add(child.id));\n }\n }\n\n this.visited = true;\n trace(context, '<- [union:visit]', 'out: ' + schemas);\n context.leave(this);\n }\n\n public generate(context: OasContext, writer: Writer, selection: string[]): void {\n context.enter(this);\n const schemas = this.schemas.map((s) => s.type);\n trace(context, '-> [union::generate]', 'in: ' + schemas);\n\n /* params with Unions are weird, but here's an example:\n * id: oneOf [string, Enum {me}] */\n if (context.inContextOf('Param', this)) {\n for (const child of this.children) {\n child.generate(context, writer, selection);\n }\n } else if (context.inContextOf('Res', this)) {\n writer.append(Naming.genTypeName(this.name));\n return;\n }\n // generate traditional union\n else {\n const name = _.upperFirst(Naming.getRefName(this.name));\n\n if (context.generateOptions.consolidateUnions) {\n if (!this.consolidated) {\n // add to generated set\n this.consolidate(selection).forEach((id) => context.generatedSet.add(id));\n }\n\n // When generating this union in GQL it might look like:\n // union MyUnion = Type1 | Type2 | Type3\n writer.append('#### NOT SUPPORTED YET BY CONNECTORS!!! union ').append(name).append(' = ');\n\n const childrenTypes = this.children.map((child) => Naming.getRefName(child.name));\n const childrenNames = childrenTypes.join(' | ');\n writer.append(childrenNames).append('\\n\\n');\n\n trace(context, ' [union::generate]', `[union] -> object: ${this.name}`);\n\n writer\n .append(this.kind + ' ')\n .append(name)\n .append(this.nameSuffix())\n .append(' { #### replacement for Union ')\n .append(name)\n .append('\\n');\n\n const selected = this.selectedProps(selection);\n for (const prop of selected) {\n trace(context, ' [union::generate]', `-> property: ${prop.name} (parent: ${prop.parent!.name})`);\n prop.generate(context, writer, selection);\n }\n\n writer.append('} \\n### End replacement for ').append(this.name).append('\\n\\n');\n } else {\n // const selected = this.selectedProps(selection);\n writer\n .append('union ')\n .append(name)\n .append(this.nameSuffix())\n .append(' = ')\n .append(this.children.map((child) => Naming.getRefName(child.name)).join(' | '))\n .append('\\n\\n');\n }\n }\n\n trace(context, '<- [union::generate]', 'out: ' + schemas);\n context.leave(this);\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]): void {\n trace(context, '-> [union::select]', `-> in: ${this.name}`);\n\n if (context.generateOptions.consolidateUnions) {\n if (!this.consolidated) {\n this.consolidate(selection);\n }\n\n const selected = this.selectedProps(selection);\n for (const prop of selected) {\n prop.select(context, writer, selection);\n }\n } else {\n // collect all property names from children and write them here\n this.children.forEach((child) => {\n child.select(context, writer, selection);\n });\n }\n\n /* TODO: better selection for Unions\n dataPoints: dataFormat->match(\n [\"raw\", $.dataPoints],\n [\"normal\", $.dataPoints {\n priceDateTime\n # all other fields\n }],\n [@, $ { # optimized\n priceDateTime\n # all other fields\n }\n ])\n */\n\n trace(context, '<- [union::select]', `-> out: ${this.name}`);\n }\n\n public consolidate(selection: string[]): Set<string> {\n T.composables(this).forEach((child) => {\n (child as Composed).consolidate(selection);\n });\n\n const ids: Set<string> = new Set();\n const props: Prop[] = [];\n const discriminator = this.discriminator;\n\n this.children?.forEach((child) => {\n ids.add(child.id);\n props.push(...child.props.values());\n });\n\n // add the discriminator, if we have one\n if (discriminator) {\n const prop = (this.children || [])\n .map((child) => child.props.get(discriminator))\n .find((prop) => prop !== undefined);\n\n if (prop) props.push(prop);\n }\n\n // and finally sort the props and copy them to our original\n props.sort((a, b) => a.name.localeCompare(b.name)).forEach((prop) => this.props.set(prop.name, prop));\n\n // and return the types.ts we've used\n this.consolidated = true;\n\n // now remove every added ID\n const queue: IType[] = Array.from(this.children.values());\n while (queue.length > 0) {\n const node = queue.shift()!;\n T.containers(node).forEach((c) => ids.add(c.id));\n queue.push(...node.children);\n }\n\n return ids;\n }\n\n private visitProperties(_context: OasContext): void {\n // TODO: pending\n }\n\n private updateName(): void {\n let name = this.name;\n if (!name) {\n if (this.parent instanceof Res) {\n const op = this.parent!.parent as Get;\n name = op.getGqlOpName() + 'Response';\n } else {\n name = this.parent!.name + `Union`;\n }\n }\n\n this.name = name;\n }\n}\n"]}
|
package/dist/oas/oasContext.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { ParameterObject, ResponseObject, SchemaObject } from 'oas/types';
|
|
|
3
3
|
import { ReferenceObject } from './nodes/internal.js';
|
|
4
4
|
import { IType } from './nodes/internal.js';
|
|
5
5
|
export type GenerateOptions = {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
consolidateUnions: boolean;
|
|
7
|
+
showParentInSelections: boolean;
|
|
8
8
|
};
|
|
9
9
|
export declare class OasContext {
|
|
10
10
|
static readonly COMPONENTS_SCHEMAS: string;
|
|
@@ -14,8 +14,8 @@ export declare class OasContext {
|
|
|
14
14
|
indent: number;
|
|
15
15
|
stack: IType[];
|
|
16
16
|
types: Map<string, IType | undefined>;
|
|
17
|
-
private parser;
|
|
18
17
|
generateOptions: GenerateOptions;
|
|
18
|
+
private parser;
|
|
19
19
|
constructor(parser: Oas);
|
|
20
20
|
enter(type: IType): void;
|
|
21
21
|
leave(type: IType): void;
|
package/dist/oas/oasContext.js
CHANGED
|
@@ -8,14 +8,14 @@ export class OasContext {
|
|
|
8
8
|
indent;
|
|
9
9
|
stack = new Array();
|
|
10
10
|
types = new Map();
|
|
11
|
-
parser;
|
|
12
11
|
generateOptions;
|
|
12
|
+
parser;
|
|
13
13
|
constructor(parser) {
|
|
14
14
|
this.parser = parser;
|
|
15
15
|
this.indent = 0;
|
|
16
16
|
this.generateOptions = {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
consolidateUnions: true, // by default, we consolidate fields until unions are supported
|
|
18
|
+
showParentInSelections: true, // by default, we don't show where the fields are coming from
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
enter(type) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oasContext.js","sourceRoot":"","sources":["../../src/oas/oasContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAQ,MAAM,gBAAgB,CAAC;AAI7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAQ3C,MAAM,OAAO,UAAU;IACd,MAAM,CAAU,kBAAkB,GAAW,uBAAuB,CAAC;IACrE,MAAM,CAAU,oBAAoB,GAAW,yBAAyB,CAAC;IACzE,MAAM,CAAU,iBAAiB,GAAW,0BAA0B,CAAC;IACvE,YAAY,GAAgB,IAAI,GAAG,EAAE,CAAC;IACtC,MAAM,CAAS;IAEf,KAAK,GAAY,IAAI,KAAK,EAAS,CAAC;IACpC,KAAK,GAAmC,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"oasContext.js","sourceRoot":"","sources":["../../src/oas/oasContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { trace, warn } from './log/trace.js';\nimport Oas from 'oas';\nimport { ParameterObject, ResponseObject, SchemaObject } from 'oas/types';\nimport { ReferenceObject } from './nodes/internal.js';\nimport { Naming } from './utils/naming.js';\nimport { IType } from './nodes/internal.js';\n\nexport type GenerateOptions = {\n consolidateUnions: boolean;\n showParentInSelections: boolean;\n};\n\nexport class OasContext {\n public static readonly COMPONENTS_SCHEMAS: string = '#/components/schemas/';\n public static readonly COMPONENTS_RESPONSES: string = '#/components/responses/';\n public static readonly PARAMETER_SCHEMAS: string = '#/components/parameters/';\n public generatedSet: Set<string> = new Set();\n public indent: number;\n\n public stack: IType[] = new Array<IType>();\n public types: Map<string, IType | undefined> = new Map();\n public generateOptions: GenerateOptions;\n\n private parser: Oas;\n\n constructor(parser: Oas) {\n this.parser = parser;\n this.indent = 0;\n this.generateOptions = {\n consolidateUnions: true, // by default, we consolidate fields until unions are supported\n showParentInSelections: true, // by default, we don't show where the fields are coming from\n };\n }\n\n public enter(type: IType): void {\n this.stack.push(type);\n trace(this, '-> [context::enter]', type.id);\n }\n\n public leave(type: IType): void {\n this.stack.pop();\n trace(this, '<- [context::leave]', type.id);\n }\n\n public size() {\n return this.stack.length;\n }\n\n public store(name: string, type: IType): void {\n trace(this, '[context::store]', 'store ' + type.id);\n this.types.set(name, undefined);\n }\n\n public lookupResponse(ref: string): ResponseObject | ReferenceObject | null {\n if (ref && ref.startsWith(OasContext.COMPONENTS_RESPONSES)) {\n const definition = this.parser.getDefinition();\n const responses = definition.components?.responses ?? {};\n\n // get the response schema\n return responses[Naming.getRefName(ref)!] ?? null;\n }\n\n return null;\n }\n\n public lookupRef(ref: string | null): SchemaObject | null {\n if (ref && ref.startsWith(OasContext.COMPONENTS_SCHEMAS)) {\n const definition = this.parser.getDefinition();\n const schemas = definition.components?.schemas ?? {};\n\n return schemas ? schemas[Naming.getRefName(ref)!] : null;\n }\n return null;\n }\n\n public lookupParam(ref: string): ParameterObject | boolean {\n if (ref && ref.startsWith(OasContext.PARAMETER_SCHEMAS)) {\n const definition = this.parser.getDefinition();\n const parameters = definition.components?.parameters ?? {};\n\n // get the parameter schema\n const name = Naming.getRefName(ref)!;\n return (parameters[name] as ParameterObject) ?? false;\n }\n\n return false;\n }\n\n public inContextOf(type: string, node: IType): boolean {\n // console\n for (let i = this.stack.length - 1; i >= 0; i--) {\n if (this.stack[i] === node) {\n continue;\n }\n\n if (this.stack[i].constructor.name === type) {\n return true;\n }\n }\n\n return false;\n }\n}\n"]}
|
package/dist/oas/oasGen.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import Oas from 'oas';
|
|
2
|
-
import { OasContext } from './oasContext.js';
|
|
2
|
+
import { GenerateOptions, OasContext } from './oasContext.js';
|
|
3
3
|
import { IType } from './nodes/internal.js';
|
|
4
4
|
import { Writer } from './io/writer.js';
|
|
5
5
|
interface IGenOptions {
|
|
6
6
|
skipValidation: boolean;
|
|
7
|
+
consolidateUnions: boolean;
|
|
8
|
+
showParentInSelections: boolean;
|
|
7
9
|
}
|
|
8
10
|
export declare class OasGen {
|
|
9
11
|
selections: string[];
|
|
@@ -12,7 +14,7 @@ export declare class OasGen {
|
|
|
12
14
|
parser: Oas;
|
|
13
15
|
context?: OasContext;
|
|
14
16
|
paths: Map<string, IType>;
|
|
15
|
-
constructor(parser: Oas);
|
|
17
|
+
constructor(parser: Oas, options: GenerateOptions);
|
|
16
18
|
title(): string;
|
|
17
19
|
version(): string;
|
|
18
20
|
generateSchema(paths: string[]): string;
|
package/dist/oas/oasGen.js
CHANGED
|
@@ -9,6 +9,8 @@ export class OasGen {
|
|
|
9
9
|
selections = [];
|
|
10
10
|
static async fromData(data, options = {
|
|
11
11
|
skipValidation: false,
|
|
12
|
+
consolidateUnions: true,
|
|
13
|
+
showParentInSelections: false,
|
|
12
14
|
}) {
|
|
13
15
|
const normalizer = new OASNormalize(data, {
|
|
14
16
|
enablePaths: true,
|
|
@@ -27,11 +29,12 @@ export class OasGen {
|
|
|
27
29
|
const json = await normalizer.convert();
|
|
28
30
|
console.log('converted');
|
|
29
31
|
const parser = new Oas(json);
|
|
30
|
-
|
|
31
|
-
return new OasGen(parser);
|
|
32
|
+
return new OasGen(parser, options);
|
|
32
33
|
}
|
|
33
34
|
static async fromFile(sourceFile, options = {
|
|
34
35
|
skipValidation: false,
|
|
36
|
+
consolidateUnions: true,
|
|
37
|
+
showParentInSelections: false,
|
|
35
38
|
}) {
|
|
36
39
|
if (!fs.existsSync(sourceFile)) {
|
|
37
40
|
throw new Error('Source not found: ' + sourceFile);
|
|
@@ -55,14 +58,13 @@ export class OasGen {
|
|
|
55
58
|
const json = await normalizer.convert();
|
|
56
59
|
console.log('converted');
|
|
57
60
|
const parser = new Oas(json);
|
|
58
|
-
|
|
59
|
-
return new OasGen(parser);
|
|
61
|
+
return new OasGen(parser, options);
|
|
60
62
|
}
|
|
61
63
|
parser;
|
|
62
64
|
// public prompt: Prompt;
|
|
63
65
|
context;
|
|
64
66
|
paths = new Map();
|
|
65
|
-
constructor(parser) {
|
|
67
|
+
constructor(parser, options) {
|
|
66
68
|
this.parser = parser;
|
|
67
69
|
// this.prompt = prompt;
|
|
68
70
|
}
|
package/dist/oas/oasGen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oasGen.js","sourceRoot":"","sources":["../../src/oas/oasGen.ts"],"names":[],"mappings":"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","sourcesContent":["import Oas from 'oas';\nimport OASNormalize from 'oas-normalize';\nimport { Operation, Webhook } from 'oas/operation';\nimport { HttpMethods, OASDocument } from 'oas/types';\nimport { OpenAPI } from 'openapi-types';\n\nimport fs from 'fs';\nimport { OasContext } from './oasContext.js';\nimport { Factory, IType } from './nodes/internal.js';\nimport { Writer } from './io/writer.js';\nimport { trace } from './log/trace.js';\n\ninterface IGenOptions {\n skipValidation: boolean;\n}\n\nexport class OasGen {\n public selections: string[] = [];\n\n public static async fromData(\n data: ArrayBuffer,\n options: IGenOptions = {\n skipValidation: false,\n },\n ): Promise<OasGen> {\n const normalizer: OASNormalize = new OASNormalize(data, {\n enablePaths: true,\n });\n\n const _loaded: Record<string, unknown> = await normalizer.load();\n console.log('loaded file');\n\n const _normalised: OpenAPI.Document = await normalizer.bundle();\n console.log('loaded bundle');\n\n if (!options.skipValidation) {\n const validated: boolean = await normalizer.validate();\n if (!validated) {\n console.log('validated', validated);\n throw new Error('Could not validate source file');\n }\n }\n\n const json = await normalizer.convert();\n console.log('converted');\n\n const parser: Oas = new Oas(json as OASDocument);\n // return new ConnectorGen(oas, prompt);\n return new OasGen(parser);\n }\n\n public static async fromFile(\n sourceFile: string,\n options: IGenOptions = {\n skipValidation: false,\n },\n // prompt: Prompt\n ): Promise<OasGen> {\n if (!fs.existsSync(sourceFile)) {\n throw new Error('Source not found: ' + sourceFile);\n }\n\n // const options = { resolve: true, resolveCombinators: false };\n // const oas = new OpenAPIV3Parser().read(source, null, options);\n const normalizer: OASNormalize = new OASNormalize(sourceFile, {\n enablePaths: true,\n });\n\n const _loaded: Record<string, unknown> = await normalizer.load();\n console.log('loaded file');\n\n const _normalised: OpenAPI.Document = await normalizer.bundle();\n console.log('loaded bundle');\n\n if (!options.skipValidation) {\n const validated: boolean = await normalizer.validate();\n if (!validated) {\n console.log('validated', validated);\n throw new Error('Could not validate source file');\n }\n }\n\n const json = await normalizer.convert();\n console.log('converted');\n\n const parser: Oas = new Oas(json as OASDocument);\n // return new ConnectorGen(oas, prompt);\n return new OasGen(parser);\n }\n\n public parser: Oas;\n // public prompt: Prompt;\n public context?: OasContext;\n public paths: Map<string, IType> = new Map();\n\n constructor(parser: Oas) {\n this.parser = parser;\n // this.prompt = prompt;\n }\n\n public title(): string {\n return this.parser.getDefinition().info.title;\n }\n\n public version(): string {\n return this.parser.getDefinition().info.version;\n }\n\n public generateSchema(paths: string[]): string {\n const writer: Writer = new Writer(this);\n this.selections = writer.generate(paths);\n return writer.flush();\n }\n\n public async visit(): Promise<void> {\n const parser = this.parser;\n const context = this.getContext();\n\n const paths = parser.getPaths();\n const filtered = Object.entries(paths)\n .filter(([_key, pathItem]) => this.isSupported(pathItem))\n .sort((a, b) => a[0].localeCompare(b[0], undefined, { sensitivity: 'base' }));\n\n const collected = new Map<string, IType>();\n for (const [key, pathItem] of filtered) {\n this.visitPath(context, key, pathItem).forEach((type) => collected.set(type.id, type));\n }\n\n this.paths = collected;\n }\n\n private isSupported(pathItem: Record<HttpMethods, Webhook | Operation>) {\n return pathItem.get || pathItem.post || pathItem.put || pathItem.delete || pathItem.patch;\n }\n\n public getContext(): OasContext {\n if (!this.context) {\n this.context = new OasContext(this.parser);\n }\n return this.context;\n }\n\n public expand(type: IType): IType[] {\n const ctx = this.getContext();\n const path = type.path();\n\n trace(ctx, '-> [expand]', `in: path: ${path}`);\n type.visit(ctx);\n trace(ctx, '<- [expand]', `out: path: ${path}`);\n\n return type.children;\n }\n\n public find(path: string): IType | boolean {\n for (const [_name, type] of this.paths) {\n if (type.path() === path) {\n return type;\n }\n\n type.visit(this.getContext());\n\n const result = type.find(path, type.children);\n if (result) {\n return result;\n }\n }\n\n return false;\n }\n\n /** this seems a bit buggy at the moment, needs more testing **/\n public findPath(path: string): IType | boolean {\n let collection = Array.from(this.paths.values());\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 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.expand(current);\n last = current;\n\n collection = Array.from(current!.children.values()) || Array.from(current!.props.values()) || [];\n\n i++;\n } while (i < parts.length);\n\n return current;\n }\n\n public writer(): Writer {\n return new Writer(this);\n }\n\n // private methods\n\n private visitGet(context: OasContext, name: string, op: Operation): IType {\n trace(context, '-> [visitGet]', `in: [${name}] id: ${op.getOperationId()}`);\n const result = Factory.createGet(name, op);\n trace(context, '<- [visitGet]', `out: [${name}] id: ${op.getOperationId()}`);\n return result;\n }\n\n private visitPost(context: OasContext, name: string, op: Operation): IType {\n trace(context, '-> [visitPost]', `in: [${name}] id: ${op.getOperationId()}`);\n const result = Factory.fromPost(name, op);\n trace(context, '<- [visitPost]', `out: [${name}] id: ${op.getOperationId()}`);\n return result;\n }\n\n private visitPut(context: OasContext, name: string, op: Operation): IType {\n trace(context, '-> [visitPut]', `in: [${name}] id: ${op.getOperationId()}`);\n const result = Factory.fromPut(name, op);\n trace(context, '<- [visitPut]', `out: [${name}] id: ${op.getOperationId()}`);\n return result;\n }\n\n private visitPatch(context: OasContext, name: string, op: Operation): IType {\n trace(context, '-> [visitPatch]', `in: [${name}] id: ${op.getOperationId()}`);\n const result = Factory.fromPatch(name, op);\n trace(context, '<- [visitPatch]', `out: [${name}] id: ${op.getOperationId()}`);\n return result;\n }\n\n private visitDelete(context: OasContext, name: string, op: Operation): IType {\n trace(context, '-> [visitDelete]', `in: [${name}] id: ${op.getOperationId()}`);\n const result = Factory.fromDelete(name, op);\n trace(context, '<- [visitDelete]', `out: [${name}] id: ${op.getOperationId()}`);\n return result;\n }\n\n private printRefs(values: Map<string, number>): void {\n console.log('----------- ref count -------------- ');\n values.forEach((value, key) => {\n console.log(key + ' -> ' + value);\n });\n }\n\n private visitPath(context: OasContext, name: string, pathItem: Record<string, Webhook | Operation>): IType[] {\n const paths: IType[] = [];\n if (pathItem.get !== undefined) {\n if ((pathItem.get as Webhook | Operation)?.constructor.name === 'Webhook') {\n throw new Error('Webhook not supported');\n }\n paths.push(this.visitGet(context, name, pathItem.get as Webhook | Operation));\n }\n\n if (pathItem.post !== undefined) {\n paths.push(this.visitPost(context, name, pathItem.post));\n }\n\n if (pathItem.put !== undefined) {\n paths.push(this.visitPut(context, name, pathItem.put));\n }\n\n if (pathItem.patch !== undefined) {\n paths.push(this.visitPatch(context, name, pathItem.patch));\n }\n\n if (pathItem.delete !== undefined) {\n paths.push(this.visitDelete(context, name, pathItem.delete));\n }\n\n return paths;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"oasGen.js","sourceRoot":"","sources":["../../src/oas/oasGen.ts"],"names":[],"mappings":"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","sourcesContent":["import Oas from 'oas';\nimport OASNormalize from 'oas-normalize';\nimport { Operation, Webhook } from 'oas/operation';\nimport { HttpMethods, OASDocument } from 'oas/types';\nimport { OpenAPI } from 'openapi-types';\n\nimport fs from 'fs';\nimport { GenerateOptions, OasContext } from './oasContext.js';\nimport { Factory, IType } from './nodes/internal.js';\nimport { Writer } from './io/writer.js';\nimport { trace } from './log/trace.js';\n\ninterface IGenOptions {\n skipValidation: boolean;\n consolidateUnions: boolean;\n showParentInSelections: boolean;\n}\n\nexport class OasGen {\n public selections: string[] = [];\n\n public static async fromData(\n data: ArrayBuffer,\n options: IGenOptions = {\n skipValidation: false,\n consolidateUnions: true,\n showParentInSelections: false,\n },\n ): Promise<OasGen> {\n const normalizer: OASNormalize = new OASNormalize(data, {\n enablePaths: true,\n });\n\n const _loaded: Record<string, unknown> = await normalizer.load();\n console.log('loaded file');\n\n const _normalised: OpenAPI.Document = await normalizer.bundle();\n console.log('loaded bundle');\n\n if (!options.skipValidation) {\n const validated: boolean = await normalizer.validate();\n if (!validated) {\n console.log('validated', validated);\n throw new Error('Could not validate source file');\n }\n }\n\n const json = await normalizer.convert();\n console.log('converted');\n\n const parser: Oas = new Oas(json as OASDocument);\n return new OasGen(parser, options);\n }\n\n public static async fromFile(\n sourceFile: string,\n options: IGenOptions = {\n skipValidation: false,\n consolidateUnions: true,\n showParentInSelections: false,\n },\n // prompt: Prompt\n ): Promise<OasGen> {\n if (!fs.existsSync(sourceFile)) {\n throw new Error('Source not found: ' + sourceFile);\n }\n\n // const options = { resolve: true, resolveCombinators: false };\n // const oas = new OpenAPIV3Parser().read(source, null, options);\n const normalizer: OASNormalize = new OASNormalize(sourceFile, {\n enablePaths: true,\n });\n\n const _loaded: Record<string, unknown> = await normalizer.load();\n console.log('loaded file');\n\n const _normalised: OpenAPI.Document = await normalizer.bundle();\n console.log('loaded bundle');\n\n if (!options.skipValidation) {\n const validated: boolean = await normalizer.validate();\n if (!validated) {\n console.log('validated', validated);\n throw new Error('Could not validate source file');\n }\n }\n\n const json = await normalizer.convert();\n console.log('converted');\n\n const parser: Oas = new Oas(json as OASDocument);\n return new OasGen(parser, options);\n }\n\n public parser: Oas;\n // public prompt: Prompt;\n public context?: OasContext;\n public paths: Map<string, IType> = new Map();\n\n constructor(parser: Oas, options: GenerateOptions) {\n this.parser = parser;\n // this.prompt = prompt;\n }\n\n public title(): string {\n return this.parser.getDefinition().info.title;\n }\n\n public version(): string {\n return this.parser.getDefinition().info.version;\n }\n\n public generateSchema(paths: string[]): string {\n const writer: Writer = new Writer(this);\n this.selections = writer.generate(paths);\n return writer.flush();\n }\n\n public async visit(): Promise<void> {\n const parser = this.parser;\n const context = this.getContext();\n\n const paths = parser.getPaths();\n const filtered = Object.entries(paths)\n .filter(([_key, pathItem]) => this.isSupported(pathItem))\n .sort((a, b) => a[0].localeCompare(b[0], undefined, { sensitivity: 'base' }));\n\n const collected = new Map<string, IType>();\n for (const [key, pathItem] of filtered) {\n this.visitPath(context, key, pathItem).forEach((type) => collected.set(type.id, type));\n }\n\n this.paths = collected;\n }\n\n private isSupported(pathItem: Record<HttpMethods, Webhook | Operation>) {\n return pathItem.get || pathItem.post || pathItem.put || pathItem.delete || pathItem.patch;\n }\n\n public getContext(): OasContext {\n if (!this.context) {\n this.context = new OasContext(this.parser);\n }\n return this.context;\n }\n\n public expand(type: IType): IType[] {\n const ctx = this.getContext();\n const path = type.path();\n\n trace(ctx, '-> [expand]', `in: path: ${path}`);\n type.visit(ctx);\n trace(ctx, '<- [expand]', `out: path: ${path}`);\n\n return type.children;\n }\n\n public find(path: string): IType | boolean {\n for (const [_name, type] of this.paths) {\n if (type.path() === path) {\n return type;\n }\n\n type.visit(this.getContext());\n\n const result = type.find(path, type.children);\n if (result) {\n return result;\n }\n }\n\n return false;\n }\n\n /** this seems a bit buggy at the moment, needs more testing **/\n public findPath(path: string): IType | boolean {\n let collection = Array.from(this.paths.values());\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 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.expand(current);\n last = current;\n\n collection = Array.from(current!.children.values()) || Array.from(current!.props.values()) || [];\n\n i++;\n } while (i < parts.length);\n\n return current;\n }\n\n public writer(): Writer {\n return new Writer(this);\n }\n\n // private methods\n\n private visitGet(context: OasContext, name: string, op: Operation): IType {\n trace(context, '-> [visitGet]', `in: [${name}] id: ${op.getOperationId()}`);\n const result = Factory.createGet(name, op);\n trace(context, '<- [visitGet]', `out: [${name}] id: ${op.getOperationId()}`);\n return result;\n }\n\n private visitPost(context: OasContext, name: string, op: Operation): IType {\n trace(context, '-> [visitPost]', `in: [${name}] id: ${op.getOperationId()}`);\n const result = Factory.fromPost(name, op);\n trace(context, '<- [visitPost]', `out: [${name}] id: ${op.getOperationId()}`);\n return result;\n }\n\n private visitPut(context: OasContext, name: string, op: Operation): IType {\n trace(context, '-> [visitPut]', `in: [${name}] id: ${op.getOperationId()}`);\n const result = Factory.fromPut(name, op);\n trace(context, '<- [visitPut]', `out: [${name}] id: ${op.getOperationId()}`);\n return result;\n }\n\n private visitPatch(context: OasContext, name: string, op: Operation): IType {\n trace(context, '-> [visitPatch]', `in: [${name}] id: ${op.getOperationId()}`);\n const result = Factory.fromPatch(name, op);\n trace(context, '<- [visitPatch]', `out: [${name}] id: ${op.getOperationId()}`);\n return result;\n }\n\n private visitDelete(context: OasContext, name: string, op: Operation): IType {\n trace(context, '-> [visitDelete]', `in: [${name}] id: ${op.getOperationId()}`);\n const result = Factory.fromDelete(name, op);\n trace(context, '<- [visitDelete]', `out: [${name}] id: ${op.getOperationId()}`);\n return result;\n }\n\n private printRefs(values: Map<string, number>): void {\n console.log('----------- ref count -------------- ');\n values.forEach((value, key) => {\n console.log(key + ' -> ' + value);\n });\n }\n\n private visitPath(context: OasContext, name: string, pathItem: Record<string, Webhook | Operation>): IType[] {\n const paths: IType[] = [];\n if (pathItem.get !== undefined) {\n if ((pathItem.get as Webhook | Operation)?.constructor.name === 'Webhook') {\n throw new Error('Webhook not supported');\n }\n paths.push(this.visitGet(context, name, pathItem.get as Webhook | Operation));\n }\n\n if (pathItem.post !== undefined) {\n paths.push(this.visitPost(context, name, pathItem.post));\n }\n\n if (pathItem.put !== undefined) {\n paths.push(this.visitPut(context, name, pathItem.put));\n }\n\n if (pathItem.patch !== undefined) {\n paths.push(this.visitPatch(context, name, pathItem.patch));\n }\n\n if (pathItem.delete !== undefined) {\n paths.push(this.visitDelete(context, name, pathItem.delete));\n }\n\n return paths;\n }\n}\n"]}
|
package/dist/tests/runners.js
CHANGED
|
@@ -9,7 +9,11 @@ export const oasBasePath = './tests/resources/oas';
|
|
|
9
9
|
const jsonBasePath = './tests/resources/json';
|
|
10
10
|
// runOasTest test
|
|
11
11
|
export async function runOasTest(file, paths, pathsSize, typesSize, shouldFail = false, skipValidation = false) {
|
|
12
|
-
const gen = await OasGen.fromFile(`${oasBasePath}/${file}`, {
|
|
12
|
+
const gen = await OasGen.fromFile(`${oasBasePath}/${file}`, {
|
|
13
|
+
skipValidation,
|
|
14
|
+
consolidateUnions: true,
|
|
15
|
+
showParentInSelections: false,
|
|
16
|
+
});
|
|
13
17
|
await gen.visit();
|
|
14
18
|
assert.ok(gen.paths !== undefined);
|
|
15
19
|
// assert.ok(gen.paths.size === pathsSize, `${gen.paths.size} is not equal to ${pathsSize}`);
|
|
@@ -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}`, { skipValidation });\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 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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apollo-conn-gen",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
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",
|