apollo-conn-gen 0.3.3 → 0.4.0
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/cli/json.js +0 -16
- package/dist/cli/json.js.map +1 -1
- package/dist/cli/oas-helpers/index.js +0 -13
- package/dist/cli/oas-helpers/index.js.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/json/walker/jsonGen.js +0 -31
- package/dist/json/walker/jsonGen.js.map +1 -1
- package/dist/json/walker/naming.d.ts +2 -4
- package/dist/json/walker/naming.js +14 -9
- package/dist/json/walker/naming.js.map +1 -1
- package/dist/json/walker/types/jsonArray.js +2 -7
- package/dist/json/walker/types/jsonArray.js.map +1 -1
- package/dist/json/walker/types/jsonObj.js +6 -11
- package/dist/json/walker/types/jsonObj.js.map +1 -1
- package/dist/json/walker/types/jsonScalar.js +16 -6
- package/dist/json/walker/types/jsonScalar.js.map +1 -1
- package/dist/json/walker/types/jsonType.d.ts +2 -1
- package/dist/json/walker/types/jsonType.js +5 -1
- package/dist/json/walker/types/jsonType.js.map +1 -1
- package/dist/oas/io/operationWriter.d.ts +14 -0
- package/dist/oas/io/operationWriter.js +106 -0
- package/dist/oas/io/operationWriter.js.map +1 -0
- package/dist/oas/io/pathCollector.d.ts +11 -0
- package/dist/oas/io/pathCollector.js +95 -0
- package/dist/oas/io/pathCollector.js.map +1 -0
- package/dist/oas/io/schemaWriter.d.ts +9 -0
- package/dist/oas/io/schemaWriter.js +36 -0
- package/dist/oas/io/schemaWriter.js.map +1 -0
- package/dist/oas/io/writer.d.ts +5 -17
- package/dist/oas/io/writer.js +24 -243
- package/dist/oas/io/writer.js.map +1 -1
- package/dist/oas/nodes/arr.js +2 -2
- package/dist/oas/nodes/arr.js.map +1 -1
- package/dist/oas/nodes/body.js +2 -2
- package/dist/oas/nodes/body.js.map +1 -1
- package/dist/oas/nodes/circularRef.js +2 -2
- package/dist/oas/nodes/circularRef.js.map +1 -1
- package/dist/oas/nodes/comp.js +4 -16
- package/dist/oas/nodes/comp.js.map +1 -1
- package/dist/oas/nodes/get.js +11 -11
- package/dist/oas/nodes/get.js.map +1 -1
- package/dist/oas/nodes/obj.js +6 -6
- package/dist/oas/nodes/obj.js.map +1 -1
- package/dist/oas/nodes/post.js +10 -14
- package/dist/oas/nodes/post.js.map +1 -1
- package/dist/oas/nodes/prop.js +6 -6
- package/dist/oas/nodes/prop.js.map +1 -1
- package/dist/oas/nodes/propArray.js +6 -6
- package/dist/oas/nodes/propArray.js.map +1 -1
- package/dist/oas/nodes/propCircRef.js +3 -3
- package/dist/oas/nodes/propCircRef.js.map +1 -1
- package/dist/oas/nodes/propComp.js +5 -5
- package/dist/oas/nodes/propComp.js.map +1 -1
- package/dist/oas/nodes/propEn.js +3 -3
- package/dist/oas/nodes/propEn.js.map +1 -1
- package/dist/oas/nodes/propObj.js +5 -5
- package/dist/oas/nodes/propObj.js.map +1 -1
- package/dist/oas/nodes/propRef.js +8 -8
- package/dist/oas/nodes/propRef.js.map +1 -1
- package/dist/oas/nodes/propScalar.js +3 -3
- package/dist/oas/nodes/propScalar.js.map +1 -1
- package/dist/oas/nodes/ref.js +1 -1
- package/dist/oas/nodes/ref.js.map +1 -1
- package/dist/oas/nodes/res.js +1 -1
- package/dist/oas/nodes/res.js.map +1 -1
- package/dist/oas/nodes/scalar.js +4 -4
- package/dist/oas/nodes/scalar.js.map +1 -1
- package/dist/oas/nodes/union.js +16 -16
- package/dist/oas/nodes/union.js.map +1 -1
- package/dist/oas/oasGen.d.ts +0 -1
- package/dist/oas/oasGen.js +0 -8
- package/dist/oas/oasGen.js.map +1 -1
- package/dist/oas/utils/naming.js.map +1 -1
- package/dist/tests/runners.js +2 -2
- package/dist/tests/runners.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/oas/nodes/propEn.js
CHANGED
|
@@ -28,11 +28,11 @@ export class PropEn extends Prop {
|
|
|
28
28
|
select(context, writer, selection) {
|
|
29
29
|
trace(context, ' [prop:select]', this.name);
|
|
30
30
|
const sanitised = Naming.sanitiseFieldForSelect(this.name);
|
|
31
|
-
writer.
|
|
31
|
+
writer.write(' '.repeat(context.indent + context.stack.length)).write(sanitised);
|
|
32
32
|
if (context.generateOptions.showParentInSelections) {
|
|
33
|
-
writer.
|
|
33
|
+
writer.write(' # ').write(Naming.getRefName(this.parent.name));
|
|
34
34
|
}
|
|
35
|
-
writer.
|
|
35
|
+
writer.write('\n');
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
//# sourceMappingURL=propEn.js.map
|
|
@@ -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,
|
|
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,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjF,IAAI,OAAO,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,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.write(' '.repeat(context.indent + context.stack.length)).write(sanitised);\n\n if (context.generateOptions.showParentInSelections) {\n writer.write(' # ').write(Naming.getRefName(this.parent!.name));\n }\n\n writer.write('\\n');\n }\n}\n"]}
|
|
@@ -50,9 +50,9 @@ export class PropObj extends Prop {
|
|
|
50
50
|
trace(context, '-> [prop-obj:select]', 'in ' + this.name + ', obj: ' + this.obj.name);
|
|
51
51
|
const fieldName = this.name;
|
|
52
52
|
const sanitised = Naming.sanitiseFieldForSelect(fieldName);
|
|
53
|
-
writer.
|
|
53
|
+
writer.write(' '.repeat(context.indent + context.stack.length)).write(sanitised);
|
|
54
54
|
if (this.needsBrackets(this.obj)) {
|
|
55
|
-
writer.
|
|
55
|
+
writer.write(' {').write('\n');
|
|
56
56
|
context.enter(this);
|
|
57
57
|
}
|
|
58
58
|
for (const child of this.children) {
|
|
@@ -60,13 +60,13 @@ export class PropObj extends Prop {
|
|
|
60
60
|
}
|
|
61
61
|
if (this.needsBrackets(this.obj)) {
|
|
62
62
|
context.leave(this);
|
|
63
|
-
writer.
|
|
63
|
+
writer.write(' '.repeat(context.indent + context.stack.length)).write('}');
|
|
64
64
|
}
|
|
65
65
|
// writer.append('\n');
|
|
66
66
|
if (context.generateOptions.showParentInSelections) {
|
|
67
|
-
writer.
|
|
67
|
+
writer.write(' # ').write(Naming.getRefName(this.parent.name));
|
|
68
68
|
}
|
|
69
|
-
writer.
|
|
69
|
+
writer.write('\n');
|
|
70
70
|
trace(context, '<- [prop-obj:select]', 'out ' + this.name + ', obj: ' + this.obj?.name);
|
|
71
71
|
}
|
|
72
72
|
needsBrackets(child) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propObj.js","sourceRoot":"","sources":["../../../src/oas/nodes/propObj.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,OAAO,OAAQ,SAAQ,IAAI;IAItB;IACA;IAJT,YACE,MAAa,EACb,IAAY,EACL,MAAoB,EACpB,GAAU;QAEjB,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAHrB,WAAM,GAAN,MAAM,CAAc;QACpB,QAAG,GAAH,GAAG,CAAO;QAGjB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,+CAA+C;QAC/C,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACxB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAEM,SAAS,CAAC,QAAoB;QACnC,OAAO,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;IAClG,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;IACjC,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,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAErF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,QAAQ,CAAC,OAAmB;QACjC,0EAA0E;QAC1E,6EAA6E;QAC7E,mBAAmB;QACnB,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAE9C,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAI,CAAC,IAAK,CAAC,GAAI,IAAI,CAAC,GAAW,CAAC,UAAU,EAAE,CAAC;IAC9E,CAAC;IAEM,MAAM,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACpE,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEtF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAE3D,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"propObj.js","sourceRoot":"","sources":["../../../src/oas/nodes/propObj.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,OAAO,OAAQ,SAAQ,IAAI;IAItB;IACA;IAJT,YACE,MAAa,EACb,IAAY,EACL,MAAoB,EACpB,GAAU;QAEjB,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAHrB,WAAM,GAAN,MAAM,CAAc;QACpB,QAAG,GAAH,GAAG,CAAO;QAGjB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,+CAA+C;QAC/C,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACxB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAEM,SAAS,CAAC,QAAoB;QACnC,OAAO,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;IAClG,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;IACjC,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,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAErF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,QAAQ,CAAC,OAAmB;QACjC,0EAA0E;QAC1E,6EAA6E;QAC7E,mBAAmB;QACnB,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAE9C,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAI,CAAC,IAAK,CAAC,GAAI,IAAI,CAAC,GAAW,CAAC,UAAU,EAAE,CAAC;IAC9E,CAAC;IAEM,MAAM,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACpE,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEtF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAE3D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjF,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAI,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,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,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAI,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC;QACD,uBAAuB;QACvB,IAAI,OAAO,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEnB,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAEO,aAAa,CAAC,KAAY;QAChC,OAAO,CAAC,KAAK,YAAY,GAAG,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,YAAY,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClH,CAAC;CACF","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.write(' '.repeat(context.indent + context.stack.length)).write(sanitised);\n\n if (this.needsBrackets(this.obj!)) {\n writer.write(' {').write('\\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.write(' '.repeat(context.indent + context.stack.length)).write('}');\n }\n // writer.append('\\n');\n if (context.generateOptions.showParentInSelections) {\n writer.write(' # ').write(Naming.getRefName(this.parent!.name));\n }\n\n writer.write('\\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"]}
|
|
@@ -72,9 +72,9 @@ export class PropRef extends Prop {
|
|
|
72
72
|
trace(context, '-> [prop-ref:select]', 'in ' + this.name + ', ref: ' + this.ref);
|
|
73
73
|
const fieldName = this.name;
|
|
74
74
|
const sanitised = Naming.sanitiseFieldForSelect(fieldName);
|
|
75
|
-
writer.
|
|
75
|
+
writer.write(' '.repeat(context.indent + context.stack.length)).write(sanitised);
|
|
76
76
|
if (this.refType && this.needsBrackets(this.refType)) {
|
|
77
|
-
writer.
|
|
77
|
+
writer.write(' {').write('\n');
|
|
78
78
|
context.enter(this);
|
|
79
79
|
}
|
|
80
80
|
for (const child of this.children) {
|
|
@@ -82,21 +82,21 @@ export class PropRef extends Prop {
|
|
|
82
82
|
}
|
|
83
83
|
if (this.refType && this.needsBrackets(this.refType)) {
|
|
84
84
|
context.leave(this);
|
|
85
|
-
writer.
|
|
85
|
+
writer.write(' '.repeat(context.indent + context.stack.length)).write('}');
|
|
86
86
|
}
|
|
87
|
-
writer.
|
|
87
|
+
writer.write('\n');
|
|
88
88
|
trace(context, '<- [prop-ref:select]', 'out ' + this.name + ', ref: ' + this.ref);
|
|
89
89
|
}
|
|
90
90
|
generateValue(context, writer) {
|
|
91
91
|
const type = this.refType;
|
|
92
92
|
if (type && type instanceof Arr) {
|
|
93
|
-
writer.
|
|
93
|
+
writer.write('[');
|
|
94
94
|
const items = type.itemsType;
|
|
95
|
-
writer.
|
|
96
|
-
writer.
|
|
95
|
+
writer.write(_.upperFirst(items.name));
|
|
96
|
+
writer.write(']');
|
|
97
97
|
}
|
|
98
98
|
else {
|
|
99
|
-
writer.
|
|
99
|
+
writer.write(this.getValue(context));
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
needsBrackets(child) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propRef.js","sourceRoot":"","sources":["../../../src/oas/nodes/propRef.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"propRef.js","sourceRoot":"","sources":["../../../src/oas/nodes/propRef.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAS,GAAG,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;GAEG;AACH,MAAM,OAAO,OAAQ,SAAQ,IAAI;IAStB;IACA;IATT,IAAI,EAAE;QACJ,OAAO,aAAa,IAAI,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IACM,OAAO,CAAS;IAEvB,YACE,MAAyB,EACzB,IAAY,EACL,MAAoB,EACpB,GAAW;QAElB,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAHrB,WAAM,GAAN,MAAM,CAAc;QACpB,QAAG,GAAH,GAAG,CAAQ;IAGpB,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IAEI,KAAK,CAAC,OAAmB;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhF,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEpB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAQ,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACjF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,QAAQ,CAAC,QAAoB;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAQ,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAEzC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAK,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IACvD,CAAC;IAEM,SAAS,CAAC,OAAmB;QAClC,OAAO,UAAU,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrE,CAAC;IAEM,MAAM,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACpE,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACjF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjF,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,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,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnB,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACpF,CAAC;IAED,aAAa,CAAC,OAAmB,EAAE,MAAc;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAE1B,IAAI,IAAI,IAAK,IAAc,YAAY,GAAG,EAAE,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,KAAK,GAAI,IAAY,CAAC,SAAS,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,KAAY;QAChC,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAU,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,KAAK,YAAY,GAAG,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,YAAY,QAAQ,CAAC;IACrF,CAAC;CACF","sourcesContent":["import { OasContext } from '../oasContext.js';\nimport { Arr, Prop, Composed, Factory, IType, Obj, Union } from './internal.js';\nimport _ from 'lodash';\nimport { SchemaObject } from 'oas/types';\nimport { trace } from '../log/trace.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\n\n/**\n * @deprecated No longer used\n */\nexport class PropRef extends Prop {\n get id(): string {\n return `prop:ref:#${this.name}`;\n }\n public refType?: IType;\n\n constructor(\n parent: IType | undefined,\n name: string,\n public schema: SchemaObject,\n public ref: string,\n ) {\n super(parent, name, schema);\n }\n\n /* public override add(child: IType): IType {\n child.name = this.ref;\n const paths: IType[] = this.ancestors();\n const contains: boolean = paths.map((p) => p.id).includes(child.id);\n\n trace(null, '-> [prop-ref:add]', 'contains child? ' + contains);\n let added: IType = child;\n if (contains) {\n const ancestor: IType = paths[paths.map((p) => p.id).indexOf(child.id)];\n const wrapper = Factory.fromCircularRef(this, ancestor);\n added = super.add(wrapper);\n this.visited = true;\n this.refType = wrapper;\n } else {\n added = super.add(child);\n }\n\n return added;\n }*/\n\n public visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n context.enter(this);\n trace(context, '-> [prop-ref:visit]', 'in ' + this.name + ', ref: ' + this.ref);\n\n const schema = context.lookupRef(this.ref);\n if (!schema) {\n throw new Error('Schema not found for ref: ' + this.ref);\n }\n\n const type = Factory.fromSchema(context, this, schema);\n if (!this.refType) {\n this.add(type);\n this.refType = type;\n type.name = this.ref;\n type.visit(context);\n\n if (!this.children.includes(this.refType!)) {\n this.add(this.refType!);\n }\n\n this.visited = true;\n }\n trace(context, '<- [prop-ref:visit]', 'out ' + this.name + ', ref: ' + this.ref);\n context.leave(this);\n }\n\n public getValue(_context: OasContext): string {\n const type = this.refType!;\n const name = type ? type.name : this.ref;\n\n return Naming.genTypeName(name!) + this.nameSuffix();\n }\n\n public forPrompt(context: OasContext): string {\n return `[prop] ${this.name}: ${Naming.getRefName(this.ref)} (Ref)`;\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n trace(context, '-> [prop-ref:select]', 'in ' + this.name + ', ref: ' + this.ref);\n const fieldName = this.name;\n const sanitised = Naming.sanitiseFieldForSelect(fieldName);\n writer.write(' '.repeat(context.indent + context.stack.length)).write(sanitised);\n\n if (this.refType && this.needsBrackets(this.refType)) {\n writer.write(' {').write('\\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.refType && this.needsBrackets(this.refType)) {\n context.leave(this);\n writer.write(' '.repeat(context.indent + context.stack.length)).write('}');\n }\n\n writer.write('\\n');\n trace(context, '<- [prop-ref:select]', 'out ' + this.name + ', ref: ' + this.ref);\n }\n\n generateValue(context: OasContext, writer: Writer): void {\n const type = this.refType;\n\n if (type && (type as IType) instanceof Arr) {\n writer.write('[');\n const items = (type as Arr).itemsType;\n writer.write(_.upperFirst(items!.name));\n writer.write(']');\n } else {\n writer.write(this.getValue(context));\n }\n }\n\n private needsBrackets(child: IType): boolean {\n if (child instanceof Arr) {\n return this.needsBrackets(child.itemsType!);\n }\n return child instanceof Obj || child instanceof Union || child instanceof Composed;\n }\n}\n"]}
|
|
@@ -39,14 +39,14 @@ export class PropScalar extends Prop {
|
|
|
39
39
|
select(context, writer, selection) {
|
|
40
40
|
trace(context, ' [prop:select]', this.name);
|
|
41
41
|
const sanitised = Naming.sanitiseFieldForSelect(this.name);
|
|
42
|
-
writer.
|
|
42
|
+
writer.write(' '.repeat(context.indent + context.stack.length)).write(sanitised);
|
|
43
43
|
for (const child of this.children) {
|
|
44
44
|
child.select(context, writer, selection);
|
|
45
45
|
}
|
|
46
46
|
if (context.generateOptions.showParentInSelections) {
|
|
47
|
-
writer.
|
|
47
|
+
writer.write(' # ').write(Naming.getRefName(this.parent.name));
|
|
48
48
|
}
|
|
49
|
-
writer.
|
|
49
|
+
writer.write('\n');
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
//# sourceMappingURL=propScalar.js.map
|
|
@@ -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,
|
|
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,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjF,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,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,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.write(' '.repeat(context.indent + context.stack.length)).write(sanitised);\n\n for (const child of this.children) {\n child.select(context, writer, selection);\n }\n\n if (context.generateOptions.showParentInSelections) {\n writer.write(' # ').write(Naming.getRefName(this.parent!.name));\n }\n\n writer.write('\\n');\n }\n}\n"]}
|
package/dist/oas/nodes/ref.js
CHANGED
|
@@ -48,7 +48,7 @@ export class Ref extends Type {
|
|
|
48
48
|
// If we're in a Response context and the resolved type is an Arr,
|
|
49
49
|
// generate it with array notation.
|
|
50
50
|
if (context.inContextOf('Res', this) && this.refType instanceof Arr) {
|
|
51
|
-
writer.
|
|
51
|
+
writer.write('[').write(this.firstChild().name).write(']');
|
|
52
52
|
}
|
|
53
53
|
else {
|
|
54
54
|
// Rewrite terrible names to something more sensible.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref.js","sourceRoot":"","sources":["../../../src/oas/nodes/ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAe,IAAI,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C;;GAEG;AACH,MAAM,OAAO,GAAI,SAAQ,IAAI;IAMlB;IALF,OAAO,CAAS;IAEvB,YACE,MAAyB,EACzB,IAAY,EACL,MAA8B;QAErC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAFb,WAAM,GAAN,MAAM,CAAwB;IAGvC,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;IACpC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC;IAC1C,CAAC;IAEM,SAAS,CAAC,QAAoB;QACnC,OAAO,SAAS,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,OAAmB;QAC9B,sCAAsC;QACtC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QAEpC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAwB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,GAAG,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,6DAA6D;QAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,QAAQ,CAAC,OAAmB,EAAE,MAAc,EAAE,UAAoB;QACvE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,oBAAoB,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE5D,kEAAkE;QAClE,mCAAmC;QACnC,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,YAAY,GAAG,EAAE,CAAC;YACpE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"ref.js","sourceRoot":"","sources":["../../../src/oas/nodes/ref.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arr, Factory, IType, Prop, 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';\n\nimport { ReferenceObject } from './referenceObject.js';\n\n/**\n * @deprecated This class is deprecated and should not be used in new code.\n */\nexport class Ref extends Type {\n public refType?: IType;\n\n constructor(\n parent: IType | undefined,\n name: string,\n public schema: ReferenceObject | null,\n ) {\n super(parent, name);\n }\n\n get id(): string {\n return 'ref:' + this.schema?.$ref;\n }\n\n get props(): Map<string, Prop> {\n return this.refType?.props ?? new Map();\n }\n\n public forPrompt(_context: OasContext): string {\n return `[ref] ${Naming.getRefName(this.name)}`;\n }\n\n public visit(context: OasContext): void {\n // console.log('schema', this.schema);\n if (this.visited) {\n return;\n }\n const ref = this.schema?.$ref ?? '';\n\n context.enter(this);\n trace(context, '-> [ref:visit]', 'in: ' + ref);\n\n const schema: SchemaObject | null = context.lookupRef(ref);\n if (!schema) {\n throw new Error('Schema not found for ref: ' + ref);\n }\n\n const type = Factory.fromSchema(context, this, schema);\n this.add(type);\n this.refType = type;\n // Set the name of the resolved type to the reference string.\n this.refType.name = ref;\n this.refType.visit(context);\n\n this.visited = true;\n trace(context, '<- [ref:visit]', 'out: ' + ref);\n context.leave(this);\n }\n\n public generate(context: OasContext, writer: Writer, _selection: string[]): void {\n context.enter(this);\n trace(context, '-> [ref::generate]', `-> in: ${this.name}`);\n\n // If we're in a Response context and the resolved type is an Arr,\n // generate it with array notation.\n if (context.inContextOf('Res', this) && this.refType instanceof Arr) {\n writer.write('[').write(this.firstChild().name).write(']');\n } else {\n // Rewrite terrible names to something more sensible.\n const sanitised = Naming.genTypeName(this.name);\n const refName = Naming.getRefName(this.name);\n writer.write(sanitised === refName ? refName : sanitised);\n }\n\n trace(context, '<- [ref::generate]', `-> out: ${this.name}`);\n context.leave(this);\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n trace(context, '-> [ref::select]', `-> in: ${this.name}`);\n if (this.refType) {\n this.refType.select(context, writer, selection);\n }\n trace(context, '<- [ref::select]', `-> out: ${this.name}`);\n }\n\n private firstChild() {\n return this.refType!.children[0];\n }\n}\n"]}
|
package/dist/oas/nodes/res.js
CHANGED
|
@@ -46,7 +46,7 @@ export class Res extends Type {
|
|
|
46
46
|
// best attempt to just copy the value that comes out of the service. most likely the
|
|
47
47
|
// value will have to be replaced by a GQL type. In fact, we could potentially use SYN_ here but
|
|
48
48
|
// it will have to do for now.
|
|
49
|
-
writer.
|
|
49
|
+
writer.write(' '.repeat(context.indent)).write('$\n');
|
|
50
50
|
}
|
|
51
51
|
else
|
|
52
52
|
response.select(context, writer, selection);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"res.js","sourceRoot":"","sources":["../../../src/oas/nodes/res.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,MAAM,OAAO,GAAI,SAAQ,IAAI;IACpB,MAAM,CAAe;IACrB,QAAQ,CAAS;IAExB,YAAY,MAAa,EAAE,IAAY,EAAE,MAAoB,EAAE,QAAgB;QAC7E,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,OAAmB;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,SAAS,CAAC,OAAmB;QAClC,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,QAAQ,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACtE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,UAAU,IAAI,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC;QAED,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,WAAW,IAAI,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,MAAM,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACpE,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,IAAI,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,qFAAqF;gBACrF,gGAAgG;gBAChG,8BAA8B;gBAC9B,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"res.js","sourceRoot":"","sources":["../../../src/oas/nodes/res.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,MAAM,OAAO,GAAI,SAAQ,IAAI;IACpB,MAAM,CAAe;IACrB,QAAQ,CAAS;IAExB,YAAY,MAAa,EAAE,IAAY,EAAE,MAAoB,EAAE,QAAgB;QAC7E,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,OAAmB;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,SAAS,CAAC,OAAmB;QAClC,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,QAAQ,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACtE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,UAAU,IAAI,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC;QAED,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,WAAW,IAAI,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,MAAM,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACpE,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,IAAI,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,qFAAqF;gBACrF,gGAAgG;gBAChG,8BAA8B;gBAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxD,CAAC;;gBAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC;QAED,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,IAAI,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;CACF","sourcesContent":["import { Factory, IType, Type, T } 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';\n\nexport class Res extends Type {\n public schema: SchemaObject;\n public response?: IType;\n\n constructor(parent: IType, name: string, schema: SchemaObject, response?: IType) {\n super(parent, name);\n this.schema = schema;\n this.response = response;\n }\n\n get id(): string {\n return 'res:' + this.name;\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n trace(context, '-> [res:visit]', this.name + ' already visited.');\n return;\n }\n\n context.enter(this);\n trace(context, '-> [res:visit]', 'in ' + this.name);\n\n const type = Factory.fromSchema(context, this, this.schema);\n this.add(type);\n\n this.response = type;\n trace(context, ' [res:visit]', 'response type: ' + this.response.id);\n\n this.visited = true;\n trace(context, '<- [res:visit]', 'out ' + this.name);\n context.leave(this);\n }\n\n public forPrompt(context: OasContext): string {\n return 'Response';\n }\n\n public generate(context: OasContext, writer: Writer, selection: string[]): void {\n context.enter(this);\n trace(context, '-> [res:generate]', `-> in: ${this.parent!.name}`);\n\n if (this.response) {\n this.response.generate(context, writer, selection);\n }\n\n trace(context, '<- [res:generate]', `-> out: ${this.parent!.name}`);\n context.leave(this);\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]): void {\n trace(context, '-> [res:select]', `-> in: ${this.parent!.name}`);\n\n const response = this.response;\n if (response) {\n if (T.isScalar(response)) {\n // best attempt to just copy the value that comes out of the service. most likely the\n // value will have to be replaced by a GQL type. In fact, we could potentially use SYN_ here but\n // it will have to do for now.\n writer.write(' '.repeat(context.indent)).write('$\\n');\n } else response.select(context, writer, selection);\n }\n\n trace(context, '<- [res:select]', `-> out: ${this.parent!.name}`);\n }\n}\n"]}
|
package/dist/oas/nodes/scalar.js
CHANGED
|
@@ -25,10 +25,10 @@ export class Scalar extends Type {
|
|
|
25
25
|
select(_context, writer, _selection) {
|
|
26
26
|
if (this.schema.default) {
|
|
27
27
|
writer
|
|
28
|
-
.
|
|
29
|
-
.
|
|
30
|
-
.
|
|
31
|
-
.
|
|
28
|
+
.write(': ') // We'll write the value as a literal. No type checking for now.
|
|
29
|
+
.write('$(')
|
|
30
|
+
.write(this.schema.default)
|
|
31
|
+
.write(')');
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../src/oas/nodes/scalar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,MAAM,OAAO,MAAO,SAAQ,IAAI;IAIrB;IAHT,YACE,MAAyB,EACzB,IAAY,EACL,MAAoB;QAE3B,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAFb,WAAM,GAAN,MAAM,CAAc;IAG7B,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,QAAoB;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAEM,SAAS,CAAC,QAAoB;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,QAAQ,CAAC,OAAmB,EAAE,MAAc,EAAE,UAAoB;QACvE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,uBAAuB,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,EAAE,uBAAuB,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,MAAM,CAAC,QAAoB,EAAE,MAAc,EAAE,UAAoB;QACtE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM;iBACH,
|
|
1
|
+
{"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../src/oas/nodes/scalar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,MAAM,OAAO,MAAO,SAAQ,IAAI;IAIrB;IAHT,YACE,MAAyB,EACzB,IAAY,EACL,MAAoB;QAE3B,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAFb,WAAM,GAAN,MAAM,CAAc;IAG7B,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,QAAoB;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAEM,SAAS,CAAC,QAAoB;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,QAAQ,CAAC,OAAmB,EAAE,MAAc,EAAE,UAAoB;QACvE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,uBAAuB,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,EAAE,uBAAuB,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,MAAM,CAAC,QAAoB,EAAE,MAAc,EAAE,UAAoB;QACtE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM;iBACH,KAAK,CAAC,IAAI,CAAC,CAAC,gEAAgE;iBAC5E,KAAK,CAAC,IAAI,CAAC;iBACX,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;iBAC1B,KAAK,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;CACF","sourcesContent":["import { IType, 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';\n\nexport class Scalar extends Type {\n constructor(\n parent: IType | undefined,\n name: string,\n public schema: SchemaObject,\n ) {\n super(parent, name);\n }\n\n get id(): string {\n return `scalar:${this.schema.type}`;\n }\n\n public visit(_context: OasContext): void {\n this.visited = true;\n }\n\n public forPrompt(_context: OasContext): string {\n return String(this.schema.type);\n }\n\n public generate(context: OasContext, writer: Writer, _selection: string[]): void {\n context.enter(this);\n trace(context, '-> [scalar::generate]', `-> in: ${this.name}`);\n writer.write(this.name);\n trace(context, '<- [scalar::generate]', `-> out: ${this.name}`);\n context.leave(this);\n }\n\n public select(_context: OasContext, writer: Writer, _selection: string[]) {\n if (this.schema.default) {\n writer\n .write(': ') // We'll write the value as a literal. No type checking for now.\n .write('$(')\n .write(this.schema.default)\n .write(')');\n }\n }\n}\n"]}
|
package/dist/oas/nodes/union.js
CHANGED
|
@@ -58,7 +58,7 @@ export class Union extends Type {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
else if (context.inContextOf('Res', this)) {
|
|
61
|
-
writer.
|
|
61
|
+
writer.write(Naming.genTypeName(this.name));
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
64
|
// generate traditional union
|
|
@@ -71,34 +71,34 @@ export class Union extends Type {
|
|
|
71
71
|
}
|
|
72
72
|
// When generating this union in GQL it might look like:
|
|
73
73
|
// union MyUnion = Type1 | Type2 | Type3
|
|
74
|
-
writer.
|
|
74
|
+
writer.write('#### NOT SUPPORTED YET BY CONNECTORS!!! union ').write(name).write(' = ');
|
|
75
75
|
const childrenTypes = this.children.map((child) => Naming.getRefName(child.name));
|
|
76
76
|
const childrenNames = childrenTypes.join(' | ');
|
|
77
|
-
writer.
|
|
77
|
+
writer.write(childrenNames).write('\n\n');
|
|
78
78
|
trace(context, ' [union::generate]', `[union] -> object: ${this.name}`);
|
|
79
79
|
writer
|
|
80
|
-
.
|
|
81
|
-
.
|
|
82
|
-
.
|
|
83
|
-
.
|
|
84
|
-
.
|
|
85
|
-
.
|
|
80
|
+
.write(this.kind + ' ')
|
|
81
|
+
.write(name)
|
|
82
|
+
.write(this.nameSuffix())
|
|
83
|
+
.write(' { #### replacement for Union ')
|
|
84
|
+
.write(name)
|
|
85
|
+
.write('\n');
|
|
86
86
|
const selected = this.selectedProps(selection);
|
|
87
87
|
for (const prop of selected) {
|
|
88
88
|
trace(context, ' [union::generate]', `-> property: ${prop.name} (parent: ${prop.parent.name})`);
|
|
89
89
|
prop.generate(context, writer, selection);
|
|
90
90
|
}
|
|
91
|
-
writer.
|
|
91
|
+
writer.write('} \n### End replacement for ').write(this.name).write('\n\n');
|
|
92
92
|
}
|
|
93
93
|
else {
|
|
94
94
|
// const selected = this.selectedProps(selection);
|
|
95
95
|
writer
|
|
96
|
-
.
|
|
97
|
-
.
|
|
98
|
-
.
|
|
99
|
-
.
|
|
100
|
-
.
|
|
101
|
-
.
|
|
96
|
+
.write('union ')
|
|
97
|
+
.write(name)
|
|
98
|
+
.write(this.nameSuffix())
|
|
99
|
+
.write(' = ')
|
|
100
|
+
.write(this.children.map((child) => Naming.getRefName(child.name)).join(' | '))
|
|
101
|
+
.write('\n\n');
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
trace(context, '<- [union::generate]', 'out: ' + schemas);
|
|
@@ -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.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"]}
|
|
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.write(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.write('#### NOT SUPPORTED YET BY CONNECTORS!!! union ').write(name).write(' = ');\n\n const childrenTypes = this.children.map((child) => Naming.getRefName(child.name));\n const childrenNames = childrenTypes.join(' | ');\n writer.write(childrenNames).write('\\n\\n');\n\n trace(context, ' [union::generate]', `[union] -> object: ${this.name}`);\n\n writer\n .write(this.kind + ' ')\n .write(name)\n .write(this.nameSuffix())\n .write(' { #### replacement for Union ')\n .write(name)\n .write('\\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.write('} \\n### End replacement for ').write(this.name).write('\\n\\n');\n } else {\n // const selected = this.selectedProps(selection);\n writer\n .write('union ')\n .write(name)\n .write(this.nameSuffix())\n .write(' = ')\n .write(this.children.map((child) => Naming.getRefName(child.name)).join(' | '))\n .write('\\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/oasGen.d.ts
CHANGED
package/dist/oas/oasGen.js
CHANGED
|
@@ -39,8 +39,6 @@ export class OasGen {
|
|
|
39
39
|
if (!fs.existsSync(sourceFile)) {
|
|
40
40
|
throw new Error('Source not found: ' + sourceFile);
|
|
41
41
|
}
|
|
42
|
-
// const options = { resolve: true, resolveCombinators: false };
|
|
43
|
-
// const oas = new OpenAPIV3Parser().read(source, null, options);
|
|
44
42
|
const normalizer = new OASNormalize(sourceFile, {
|
|
45
43
|
enablePaths: true,
|
|
46
44
|
});
|
|
@@ -180,12 +178,6 @@ export class OasGen {
|
|
|
180
178
|
trace(context, '<- [visitDelete]', `out: [${name}] id: ${op.getOperationId()}`);
|
|
181
179
|
return result;
|
|
182
180
|
}
|
|
183
|
-
printRefs(values) {
|
|
184
|
-
console.log('----------- ref count -------------- ');
|
|
185
|
-
values.forEach((value, key) => {
|
|
186
|
-
console.log(key + ' -> ' + value);
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
181
|
visitPath(context, name, pathItem) {
|
|
190
182
|
const paths = [];
|
|
191
183
|
if (pathItem.get !== undefined) {
|
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 { 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 public options: GenerateOptions;\n\n constructor(parser: Oas, options: GenerateOptions) {\n this.parser = parser;\n this.options = options;\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 // make sure we pass the latest options to our context for the generation\n this.context!.generateOptions = this.options;\n\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, this.options);\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 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 public options: GenerateOptions;\n\n constructor(parser: Oas, options: GenerateOptions) {\n this.parser = parser;\n this.options = options;\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 // make sure we pass the latest options to our context for the generation\n this.context!.generateOptions = this.options;\n\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, this.options);\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 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"]}
|