apollo-conn-gen 0.0.9 → 0.0.10

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.
Files changed (69) hide show
  1. package/dist/cli/oas-helpers/index.d.ts +1 -1
  2. package/dist/cli/oas-helpers/index.js +3 -3
  3. package/dist/cli/oas-helpers/index.js.map +1 -1
  4. package/dist/oas/index.d.ts +2 -21
  5. package/dist/oas/index.js +2 -19
  6. package/dist/oas/index.js.map +1 -1
  7. package/dist/oas/io/writer.d.ts +1 -1
  8. package/dist/oas/io/writer.js +7 -7
  9. package/dist/oas/io/writer.js.map +1 -1
  10. package/dist/oas/nodes/factory.d.ts +1 -2
  11. package/dist/oas/nodes/factory.js +1 -2
  12. package/dist/oas/nodes/factory.js.map +1 -1
  13. package/dist/oas/nodes/iType.d.ts +1 -1
  14. package/dist/oas/nodes/iType.js.map +1 -1
  15. package/dist/oas/nodes/internal.d.ts +19 -19
  16. package/dist/oas/nodes/internal.js +18 -20
  17. package/dist/oas/nodes/internal.js.map +1 -1
  18. package/dist/oas/nodes/obj.js +1 -1
  19. package/dist/oas/nodes/obj.js.map +1 -1
  20. package/dist/oas/nodes/{param/param.d.ts → param.d.ts} +3 -3
  21. package/dist/oas/nodes/{param/param.js → param.js} +3 -3
  22. package/dist/oas/nodes/param.js.map +1 -0
  23. package/dist/oas/nodes/{props/prop.d.ts → prop.d.ts} +3 -3
  24. package/dist/oas/nodes/{props/prop.js → prop.js} +2 -4
  25. package/dist/oas/nodes/prop.js.map +1 -0
  26. package/dist/oas/nodes/{props/propArray.d.ts → propArray.d.ts} +3 -4
  27. package/dist/oas/nodes/{props/propArray.js → propArray.js} +3 -4
  28. package/dist/oas/nodes/propArray.js.map +1 -0
  29. package/dist/oas/nodes/{props/propObj.d.ts → propObj.d.ts} +3 -3
  30. package/dist/oas/nodes/{props/propObj.js → propObj.js} +4 -4
  31. package/dist/oas/nodes/propObj.js.map +1 -0
  32. package/dist/oas/nodes/{props/propRef.d.ts → propRef.d.ts} +3 -3
  33. package/dist/oas/nodes/{props/propRef.js → propRef.js} +3 -3
  34. package/dist/oas/nodes/propRef.js.map +1 -0
  35. package/dist/oas/nodes/{props/propScalar.d.ts → propScalar.d.ts} +3 -3
  36. package/dist/oas/nodes/{props/propScalar.js → propScalar.js} +3 -3
  37. package/dist/oas/nodes/propScalar.js.map +1 -0
  38. package/dist/oas/nodes/ref.d.ts +1 -1
  39. package/dist/oas/nodes/ref.js.map +1 -1
  40. package/dist/oas/nodes/referenceObject.js.map +1 -0
  41. package/dist/oas/nodes/type.d.ts +2 -2
  42. package/dist/oas/nodes/type.js.map +1 -1
  43. package/dist/oas/oasContext.d.ts +2 -2
  44. package/dist/oas/oasContext.js.map +1 -1
  45. package/dist/oas/oasGen.d.ts +1 -1
  46. package/dist/oas/oasGen.js +1 -1
  47. package/dist/oas/oasGen.js.map +1 -1
  48. package/dist/oas/prompts/prompt.d.ts +1 -1
  49. package/dist/oas/prompts/prompt.js +5 -5
  50. package/dist/oas/prompts/prompt.js.map +1 -1
  51. package/dist/oas/prompts/theme.d.ts +1 -1
  52. package/dist/oas/prompts/theme.js.map +1 -1
  53. package/dist/oas/utils/typeUtils.d.ts +1 -1
  54. package/dist/oas/utils/typeUtils.js +4 -4
  55. package/dist/oas/utils/typeUtils.js.map +1 -1
  56. package/dist/tsconfig.tsbuildinfo +1 -1
  57. package/package.json +1 -1
  58. package/dist/oas/nodes/param/param.js.map +0 -1
  59. package/dist/oas/nodes/props/internal.d.ts +0 -6
  60. package/dist/oas/nodes/props/internal.js +0 -7
  61. package/dist/oas/nodes/props/internal.js.map +0 -1
  62. package/dist/oas/nodes/props/prop.js.map +0 -1
  63. package/dist/oas/nodes/props/propArray.js.map +0 -1
  64. package/dist/oas/nodes/props/propObj.js.map +0 -1
  65. package/dist/oas/nodes/props/propRef.js.map +0 -1
  66. package/dist/oas/nodes/props/propScalar.js.map +0 -1
  67. package/dist/oas/nodes/props/referenceObject.js.map +0 -1
  68. /package/dist/oas/nodes/{props/referenceObject.d.ts → referenceObject.d.ts} +0 -0
  69. /package/dist/oas/nodes/{props/referenceObject.js → referenceObject.js} +0 -0
@@ -1,4 +1,4 @@
1
1
  import { OasGen } from '../../oas/oasGen.js';
2
- import { IType } from '../../oas/nodes/iType.js';
2
+ import { IType } from '../../oas/nodes/internal.js';
3
3
  export declare function generateFromSelection(opts: any, gen: OasGen): void;
4
4
  export declare function promptForSelection(gen: OasGen, opts: any, types: IType[]): Promise<string[] | []>;
@@ -1,8 +1,8 @@
1
1
  /// internal functions
2
2
  import fs from 'fs';
3
- import { Composed } from '../../oas/nodes/comp.js';
4
- import { Ref } from '../../oas/nodes/ref.js';
5
- import { Union } from '../../oas/nodes/union.js';
3
+ import { Composed } from '../../oas/nodes/internal.js';
4
+ import { Ref } from '../../oas/nodes/internal.js';
5
+ import { Union } from '../../oas/nodes/internal.js';
6
6
  import { typesPrompt } from '../../oas/prompts/prompt.js';
7
7
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
8
  export function generateFromSelection(opts, gen) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/oas-helpers/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D,8DAA8D;AAC9D,MAAM,UAAU,qBAAqB,CAAC,IAAS,EAAE,GAAW;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAC1E,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7C,OAAO;AACT,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,IAAS,EAAE,KAAc;IAC7E,SAAS,UAAU,CAAC,IAAY;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,MAAe,CAAC;QAEpB,IAAI,IAAI,YAAY,QAAQ,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;YACtD,oCAAoC;YACnC,IAAyB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAE3C,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAE1B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,wEAAwE;gBACxE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAExB,IAAI,CAAE,KAAc,CAAC,OAAO,EAAE,CAAC;oBAC7B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAQ,CAAC,CAAC;gBAC5B,CAAC;gBAED,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;oBACzB,MAAM,GAAG,CAAC,KAAK,CAAC,OAAQ,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,WAAW,CAAC;QACjB,OAAO,EAAE,GAAG,CAAC,OAAQ;QACrB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,6DAA6D;QACtE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QACrC,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;AACL,CAAC","sourcesContent":["/// internal functions\nimport fs from 'fs';\nimport { Composed } from '../../oas/nodes/comp.js';\nimport { Ref } from '../../oas/nodes/ref.js';\nimport { Type } from '../../oas/nodes/type.js';\nimport { Union } from '../../oas/nodes/union.js';\nimport { OasGen } from '../../oas/oasGen.js';\nimport { typesPrompt } from '../../oas/prompts/prompt.js';\nimport { IType } from '../../oas/nodes/iType.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function generateFromSelection(opts: any, gen: OasGen) {\n const selections = JSON.parse(fs.readFileSync(opts.loadSelections, { encoding: 'utf-8' }));\n if (!Array.isArray(selections)) {\n console.error('Invalid selections file');\n return;\n }\n\n console.info('--------------- Apollo Connector schema -----------------');\n console.info(gen.generateSchema(selections));\n return;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function promptForSelection(gen: OasGen, opts: any, types: IType[]) {\n function expandType(type?: IType) {\n if (!type) {\n return types;\n }\n\n let result: IType[];\n\n if (type instanceof Composed || type instanceof Union) {\n // make sure we gather all the props\n (type as Composed | Union).consolidate([]);\n\n result = Array.from(type.props.values());\n } else {\n // top level paths\n result = gen.expand(type);\n\n if (result.length === 1) {\n // we are checking for a ref so we can go straight to where its pointing\n const child = result[0];\n\n if (!(child as Type).visited) {\n child.visit(gen.context!);\n }\n\n if (child instanceof Ref) {\n result = [child.refType!];\n }\n }\n }\n\n return result;\n }\n\n return typesPrompt({\n context: gen.context!,\n expandFn: expandType,\n message: 'Navigate spec and select the fields to use in the connector',\n pageSize: parseInt(opts.pageSize, 10),\n types: types,\n });\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/oas-helpers/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAElD,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D,8DAA8D;AAC9D,MAAM,UAAU,qBAAqB,CAAC,IAAS,EAAE,GAAW;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAC1E,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7C,OAAO;AACT,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,IAAS,EAAE,KAAc;IAC7E,SAAS,UAAU,CAAC,IAAY;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,MAAe,CAAC;QAEpB,IAAI,IAAI,YAAY,QAAQ,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;YACtD,oCAAoC;YACnC,IAAyB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAE3C,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAE1B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,wEAAwE;gBACxE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAExB,IAAI,CAAE,KAAc,CAAC,OAAO,EAAE,CAAC;oBAC7B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAQ,CAAC,CAAC;gBAC5B,CAAC;gBAED,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;oBACzB,MAAM,GAAG,CAAC,KAAK,CAAC,OAAQ,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,WAAW,CAAC;QACjB,OAAO,EAAE,GAAG,CAAC,OAAQ;QACrB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,6DAA6D;QACtE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QACrC,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;AACL,CAAC","sourcesContent":["/// internal functions\nimport fs from 'fs';\nimport { Composed } from '../../oas/nodes/internal.js';\nimport { Ref } from '../../oas/nodes/internal.js';\nimport { Type } from '../../oas/nodes/internal.js';\nimport { Union } from '../../oas/nodes/internal.js';\nimport { OasGen } from '../../oas/oasGen.js';\nimport { typesPrompt } from '../../oas/prompts/prompt.js';\nimport { IType } from '../../oas/nodes/internal.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function generateFromSelection(opts: any, gen: OasGen) {\n const selections = JSON.parse(fs.readFileSync(opts.loadSelections, { encoding: 'utf-8' }));\n if (!Array.isArray(selections)) {\n console.error('Invalid selections file');\n return;\n }\n\n console.info('--------------- Apollo Connector schema -----------------');\n console.info(gen.generateSchema(selections));\n return;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function promptForSelection(gen: OasGen, opts: any, types: IType[]) {\n function expandType(type?: IType) {\n if (!type) {\n return types;\n }\n\n let result: IType[];\n\n if (type instanceof Composed || type instanceof Union) {\n // make sure we gather all the props\n (type as Composed | Union).consolidate([]);\n\n result = Array.from(type.props.values());\n } else {\n // top level paths\n result = gen.expand(type);\n\n if (result.length === 1) {\n // we are checking for a ref so we can go straight to where its pointing\n const child = result[0];\n\n if (!(child as Type).visited) {\n child.visit(gen.context!);\n }\n\n if (child instanceof Ref) {\n result = [child.refType!];\n }\n }\n }\n\n return result;\n }\n\n return typesPrompt({\n context: gen.context!,\n expandFn: expandType,\n message: 'Navigate spec and select the fields to use in the connector',\n pageSize: parseInt(opts.pageSize, 10),\n types: types,\n });\n}\n"]}
@@ -1,22 +1,3 @@
1
- import { type IType } from './nodes/internal.js';
2
- import { Type } from './nodes/internal.js';
3
- import { Param } from './nodes/internal.js';
4
- import { Prop } from './nodes/internal.js';
5
- import { PropArray } from './nodes/internal.js';
6
- import { PropObj } from './nodes/internal.js';
7
- import { PropRef } from './nodes/internal.js';
8
- import { PropScalar } from './nodes/internal.js';
9
- import { ReferenceObject } from './nodes/internal.js';
10
- import { Arr } from './nodes/internal.js';
11
- import { CircularRef } from './nodes/internal.js';
12
- import { Composed } from './nodes/internal.js';
13
- import { En } from './nodes/internal.js';
14
- import { Factory } from './nodes/internal.js';
15
- import { Get } from './nodes/internal.js';
16
- import { Obj } from './nodes/internal.js';
17
- import { Ref } from './nodes/internal.js';
18
- import { Response } from './nodes/internal.js';
19
- import { Scalar } from './nodes/internal.js';
20
- import { Union } from './nodes/internal.js';
1
+ import { Arr, CircularRef, Composed, En, Factory, Get, IType, Obj, Param, Prop, PropArray, PropObj, PropRef, PropScalar, Ref, ReferenceObject, Response, Scalar, Type, Union } from './nodes/internal.js';
21
2
  export { OasGen } from './oasGen.js';
22
- export { type IType, Param, Prop, PropArray, PropObj, PropRef, PropScalar, ReferenceObject, Arr, CircularRef, Composed, En, Factory, Get, Obj, Ref, Response, Scalar, Type, Union, };
3
+ export { IType, Type, Prop, ReferenceObject, Param, PropArray, PropObj, PropRef, PropScalar, Arr, CircularRef, Composed, En, Factory, Get, Obj, Ref, Response, Scalar, Union, };
package/dist/oas/index.js CHANGED
@@ -1,21 +1,4 @@
1
- import { Type } from './nodes/internal.js';
2
- import { Param } from './nodes/internal.js';
3
- import { Prop } from './nodes/internal.js';
4
- import { PropArray } from './nodes/internal.js';
5
- import { PropObj } from './nodes/internal.js';
6
- import { PropRef } from './nodes/internal.js';
7
- import { PropScalar } from './nodes/internal.js';
8
- import { Arr } from './nodes/internal.js';
9
- import { CircularRef } from './nodes/internal.js';
10
- import { Composed } from './nodes/internal.js';
11
- import { En } from './nodes/internal.js';
12
- import { Factory } from './nodes/internal.js';
13
- import { Get } from './nodes/internal.js';
14
- import { Obj } from './nodes/internal.js';
15
- import { Ref } from './nodes/internal.js';
16
- import { Response } from './nodes/internal.js';
17
- import { Scalar } from './nodes/internal.js';
18
- import { Union } from './nodes/internal.js';
1
+ import { Arr, CircularRef, Composed, En, Factory, Get, Obj, Param, Prop, PropArray, PropObj, PropRef, PropScalar, Ref, Response, Scalar, Type, Union, } from './nodes/internal.js';
19
2
  export { OasGen } from './oasGen.js';
20
- export { Param, Prop, PropArray, PropObj, PropRef, PropScalar, Arr, CircularRef, Composed, En, Factory, Get, Obj, Ref, Response, Scalar, Type, Union, };
3
+ export { Type, Prop, Param, PropArray, PropObj, PropRef, PropScalar, Arr, CircularRef, Composed, En, Factory, Get, Obj, Ref, Response, Scalar, Union, };
21
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oas/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAEL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EAEV,GAAG,EACH,WAAW,EACX,QAAQ,EACR,EAAE,EACF,OAAO,EACP,GAAG,EACH,GAAG,EACH,GAAG,EACH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,KAAK,GACN,CAAC","sourcesContent":["import { type IType } from './nodes/internal.js';\nimport { Type } from './nodes/internal.js';\nimport { Param } from './nodes/internal.js';\nimport { Prop } from './nodes/internal.js';\nimport { PropArray } from './nodes/internal.js';\nimport { PropObj } from './nodes/internal.js';\nimport { PropRef } from './nodes/internal.js';\nimport { PropScalar } from './nodes/internal.js';\nimport { ReferenceObject } from './nodes/internal.js';\nimport { Arr } from './nodes/internal.js';\nimport { CircularRef } from './nodes/internal.js';\nimport { Composed } from './nodes/internal.js';\nimport { En } from './nodes/internal.js';\nimport { Factory } from './nodes/internal.js';\nimport { Get } from './nodes/internal.js';\nimport { Obj } from './nodes/internal.js';\nimport { Ref } from './nodes/internal.js';\nimport { Response } from './nodes/internal.js';\nimport { Scalar } from './nodes/internal.js';\nimport { Union } from './nodes/internal.js';\n\nexport { OasGen } from './oasGen.js';\nexport {\n type IType,\n Param,\n Prop,\n PropArray,\n PropObj,\n PropRef,\n PropScalar,\n ReferenceObject,\n Arr,\n CircularRef,\n Composed,\n En,\n Factory,\n Get,\n Obj,\n Ref,\n Response,\n Scalar,\n Type,\n Union,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,WAAW,EACX,QAAQ,EACR,EAAE,EACF,OAAO,EACP,GAAG,EAEH,GAAG,EACH,KAAK,EACL,IAAI,EACJ,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,GAAG,EAEH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,KAAK,GACN,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAEL,IAAI,EACJ,IAAI,EAEJ,KAAK,EACL,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,GAAG,EACH,WAAW,EACX,QAAQ,EACR,EAAE,EACF,OAAO,EACP,GAAG,EACH,GAAG,EACH,GAAG,EACH,QAAQ,EACR,MAAM,EACN,KAAK,GACN,CAAC","sourcesContent":["import {\n Arr,\n CircularRef,\n Composed,\n En,\n Factory,\n Get,\n IType,\n Obj,\n Param,\n Prop,\n PropArray,\n PropObj,\n PropRef,\n PropScalar,\n Ref,\n ReferenceObject,\n Response,\n Scalar,\n Type,\n Union,\n} from './nodes/internal.js';\n\nexport { OasGen } from './oasGen.js';\nexport {\n IType,\n Type,\n Prop,\n ReferenceObject,\n Param,\n PropArray,\n PropObj,\n PropRef,\n PropScalar,\n Arr,\n CircularRef,\n Composed,\n En,\n Factory,\n Get,\n Obj,\n Ref,\n Response,\n Scalar,\n Union,\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { OasGen } from '../oasGen.js';
2
- import { IType } from '../nodes/iType.js';
2
+ import { IType } from '../nodes/internal.js';
3
3
  export declare class Writer {
4
4
  generator: OasGen;
5
5
  static findNonPropParent(type: IType): IType;
@@ -1,11 +1,11 @@
1
1
  import _ from 'lodash';
2
- import { CircularRef } from '../nodes/circularRef.js';
3
- import { Composed } from '../nodes/comp.js';
4
- import { Obj } from '../nodes/obj.js';
5
- import { Prop } from '../nodes/props/prop.js';
6
- import { PropArray } from '../nodes/props/propArray.js';
7
- import { PropScalar } from '../nodes/props/propScalar.js';
8
- import { Union } from '../nodes/union.js';
2
+ import { CircularRef } from '../nodes/internal.js';
3
+ import { Composed } from '../nodes/internal.js';
4
+ import { Obj } from '../nodes/internal.js';
5
+ import { Prop } from '../nodes/internal.js';
6
+ import { PropArray } from '../nodes/internal.js';
7
+ import { PropScalar } from '../nodes/internal.js';
8
+ import { Union } from '../nodes/internal.js';
9
9
  import { Naming } from '../utils/naming.js';
10
10
  import { T } from '../utils/typeUtils.js';
11
11
  export class Writer {
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/oas/io/writer.ts"],"names":[],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport Oas from 'oas';\nimport { ServerObject } from 'oas/types';\nimport { OasContext } from '../oasContext.js';\nimport { OasGen } from '../oasGen.js';\nimport { CircularRef } from '../nodes/circularRef.js';\nimport { Composed } from '../nodes/comp.js';\nimport { Get } from '../nodes/get.js';\nimport { Obj } from '../nodes/obj.js';\nimport { Param } from '../nodes/param/param.js';\nimport { Prop } from '../nodes/props/prop.js';\nimport { PropArray } from '../nodes/props/propArray.js';\nimport { PropScalar } from '../nodes/props/propScalar.js';\nimport { Type } from '../nodes/type.js';\nimport { Union } from '../nodes/union.js';\nimport { Naming } from '../utils/naming.js';\nimport { T } from '../utils/typeUtils.js';\nimport { IType } from '../nodes/iType.js';\n\nexport class Writer {\n public static findNonPropParent(type: IType) {\n let parent = type;\n while (parent instanceof Prop) {\n parent = parent.parent!;\n }\n return parent;\n }\n\n public static progressiveSplits(input: string): string[] {\n const parts = input.split('>');\n const results: string[] = [];\n for (let i = 1; i <= parts.length; i++) {\n results.push(parts.slice(0, i).join('>'));\n }\n return results;\n }\n public buffer: string[];\n\n constructor(public generator: OasGen) {\n this.buffer = [];\n }\n\n public write(input: string): Writer {\n this.buffer.push(input);\n return this;\n }\n\n public append(input: string): Writer {\n this.buffer.push(input);\n return this;\n }\n\n public flush(): string {\n return this.buffer.join('');\n }\n\n public writeSchema(writer: Writer, pending: Map<string, IType>, selection: string[]): void {\n const context = this.generator.context!;\n const generatedSet = context.generatedSet;\n // generatedSet.clear();\n\n this.writeDirectives(writer);\n this.writeJSONScalar(writer);\n\n pending.forEach((type: IType) => {\n if (!generatedSet.has(type.id)) {\n type.generate(context, this, selection);\n generatedSet.add(type.id);\n }\n });\n\n // TODO: Pending\n // const counter = new RefCounter(this.context);\n // counter.addAll(this.collected);\n\n // const refs = counter.getCount();\n // this.printRefs(refs);\n\n // for (const type of this.context.types.ts.values()) {\n // if (counter.getCount().has(type.name)) {\n // await type.generate(this.context, writer);\n // generatedSet.add(type.name);\n // }\n // }\n\n this.writeQuery(context, writer, this.generator.paths, selection);\n writer.flush();\n }\n\n public generate(selection: string[]) {\n const pending: Map<string, IType> = new Map();\n\n selection = this.collectExpandedPaths(selection);\n\n for (const path of selection) {\n let collection = Array.from(this.generator.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 if (part === '*') {\n // remove the current path from the selection array\n selection = selection.filter((s) => s !== path);\n\n if (current instanceof Composed) {\n current.consolidate(selection);\n }\n\n // add all the props from the current node and exit loop\n current?.props.forEach((child) => {\n if (T.isLeaf(child)) {\n selection.push(child.path());\n }\n });\n break;\n }\n\n current = collection.find((t) => t.id === part);\n if (!current) {\n throw new Error('Could not find type: ' + part + ' from ' + path + ', last: ' + last?.pathToRoot());\n }\n\n // make sure we expand it before we move on to the next part\n this.generator.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 if (current) {\n // TODO: this seems redundant, we've already walked the parent AND can be also\n // contained in the context stack\n const parentType = Writer.findNonPropParent(current as IType);\n\n if (!pending.has(parentType.id)) {\n pending.set(parentType.id, parentType);\n }\n\n parentType\n .ancestors()\n .filter((t) => !pending.has(t.id) && this.isContainer(t))\n .forEach((dep) => {\n // TODO: potential merge needed?\n pending.set(dep.id, dep);\n });\n }\n }\n\n if (!_.isEmpty(pending)) {\n // first pass is to consolidate all Composed & Union nodes\n const composed: Array<Composed | Union> = Array.from(pending.values())\n .filter((t) => t instanceof Composed || t instanceof Union)\n .map((t) => t as Composed);\n\n for (const comp of composed) {\n comp.consolidate(selection).forEach((id) => pending.delete(id));\n }\n\n this.writeSchema(this, pending, selection);\n }\n }\n\n public collectPaths(path: string, collection: IType[]): IType[] {\n const stack: IType[] = [];\n let current: IType | undefined;\n let last: IType | undefined;\n\n let i = 0;\n const parts = path.split('>');\n do {\n const part = parts[i].replace(/#\\/c\\/s/g, '#/components/schemas');\n\n current = collection.find((t) => t.id === part);\n if (!current) {\n throw new Error('Could not find type: ' + part + ' from ' + path + ', last: ' + last?.pathToRoot());\n }\n\n // make sure we expand it before we move on to the next part\n this.generator.expand(current);\n last = current;\n\n collection = Array.from(current!.children.values()) || Array.from(current!.props.values()) || [];\n\n stack.push(current);\n i++;\n } while (i < parts.length);\n\n return stack;\n }\n\n private writeJSONScalar(writer: Writer): void {\n writer.write('\\nscalar JSON\\n\\n');\n }\n\n private writeQuery(context: OasContext, writer: Writer, collected: Map<string, IType>, selection: string[]): void {\n writer.write('type Query {\\n');\n\n const selectionSet = new Set<string>(selection.map((s) => s.split('>')[0]));\n\n const paths = Array.from(collected.values()).filter((path) => selectionSet.has(path.id));\n\n for (const path of paths) {\n path.generate(context, writer, []);\n this.writeConnector(context, writer, path, selection);\n context.generatedSet.add(path.id);\n }\n\n writer.write('}\\n\\n');\n }\n\n private writeConnector(context: OasContext, writer: Writer, type: IType, selection: string[]): void {\n const indent = 0;\n const get = type as unknown as Get; // assume type is GetOp\n let spacing = ' '.repeat(indent + 4);\n writer.append(spacing).append('@connect(\\n');\n\n const request = this.buildRequestMethodAndArgs(get);\n spacing = ' '.repeat(indent + 6);\n writer\n .append(spacing)\n .append('source: \"api\"\\n')\n .append(spacing)\n .append('http: ' + request + '\\n')\n .append(spacing)\n .append('selection: \"\"\"\\n');\n\n if (get.resultType) {\n this.writeSelection(context, writer, get.resultType, selection);\n }\n\n writer.append(spacing).append('\"\"\"\\n');\n spacing = ' '.repeat(indent + 4);\n writer.append(spacing).append(')\\n');\n }\n\n private buildRequestMethodAndArgs(get: Get): string {\n let builder = '';\n\n builder += '\"' + get.operation.path.replace(/\\{([a-zA-Z0-9]+)\\}/g, '{$args.$1}');\n\n if (get.params.length > 0) {\n const params = get.params.filter((p: Param) => {\n return p.required && p.parameter.in && p.parameter.in.toLowerCase() === 'query';\n });\n\n if (params.length > 0) {\n builder += '?' + params.map((p: Param) => `${p.name}={$args.${Naming.genParamName(p.name)}}`).join('&');\n }\n const headers = get.operation.getParameters().filter((p) => p.in && p.in.toLowerCase() === 'header');\n\n builder += '\"\\n';\n\n if (headers.length > 0) {\n let spacing = ' '.repeat(6);\n builder += spacing + 'headers: [\\n';\n spacing = ' '.repeat(8);\n\n for (const p of headers) {\n let value: string | null = null;\n\n if (p.example != null) {\n value = p.example.toString();\n }\n\n if (p.examples && Object.keys(p.examples).length > 0) {\n value = Object.keys(p.examples).join(',');\n }\n\n if (value == null) {\n value = '<placeholder>';\n }\n\n builder += spacing + `{ name: \"${p.name}\", value: \"${value}\" }\\n`;\n }\n\n spacing = ' '.repeat(6);\n builder += spacing + ']';\n }\n } else {\n builder += '\"';\n }\n\n return `{ GET: ${builder} }`;\n }\n\n private writeSelection(context: OasContext, writer: Writer, type: IType, selection: string[]): void {\n context.indent = 6;\n type.select(context, writer, selection);\n }\n\n private writeDirectives(writer: Writer): void {\n const api: Oas = this.generator.parser;\n const host = this.getServerUrl(api.getDefinition().servers?.[0]);\n writer\n .append('extend schema\\n')\n .append(' @link(url: \"https://specs.apollo.dev/federation/v2.10\", import: [\"@key\"])\\n')\n .append(' @link(\\n')\n .append(' url: \"https://specs.apollo.dev/connect/v0.1\"\\n')\n .append(' import: [\"@connect\", \"@source\"]\\n')\n .append(' )\\n')\n .append(' @source(name: \"api\", http: { baseURL: \"')\n .append(host)\n .append('\" })\\n\\n');\n }\n\n private getServerUrl(server: ServerObject | undefined): string {\n if (!server) {\n return 'http://localhost:4010';\n }\n let url: string = server.url;\n if (server.variables) {\n for (const key in server.variables) {\n url = url.replace('{' + key + '}', server.variables[key].default);\n }\n }\n return url;\n }\n\n private traverseTree(current: IType, selection: string[], pending: Map<string, IType>) {\n // we might be in a node far from the root, so we need to traverse upwards\n // as well and add the props that we can find on the way\n const source = current as Type;\n\n source\n .ancestors()\n .filter((t) => t instanceof Prop)\n .map((p) => Writer.findNonPropParent(p))\n .forEach((parent) => pending.set(parent.id, parent));\n\n T.traverse(source, (child) => {\n if (T.isLeaf(child)) {\n // this is a weird take but if the child is an array of scalars\n // then we want to avoid adding it twice\n if (T.isLeaf(child.parent!)) {\n return;\n }\n selection.push(child.path());\n\n const parentType = Writer.findNonPropParent(child);\n if (!pending.has(parentType.id)) {\n pending.set(parentType.id, parentType);\n }\n } else {\n this.generator.expand(child);\n\n if (child instanceof Composed) {\n child.consolidate(selection);\n }\n }\n });\n }\n\n private isContainer(type: IType) {\n return type instanceof Obj || type instanceof Union || type instanceof Composed || type instanceof CircularRef;\n }\n\n private collectExpandedPaths(selection: string[]) {\n const newSelection = new Set<string>();\n const expands = selection.filter((p) => p.endsWith('>**'));\n const filtered = expands.map((p) => p.replace('>**', ''));\n\n const paths = Array.from(this.generator.paths.values());\n const nodes = filtered.map((p) => this.collectPaths(p, paths));\n /*.map(stack => _.last(stack)!.id)\n .filter(id => selection.includes(id))\n .forEach(id => newSelection.add(id));*/\n\n nodes.forEach((stack) => {\n const root = _.last(stack)!;\n T.traverse(root, (child) => {\n if (T.isPropScalar(child) || (child instanceof PropArray && child.items instanceof PropScalar)) {\n newSelection.add(child.path());\n } else {\n this.generator.expand(child);\n }\n });\n });\n\n // finally remove the expanded paths from the selection\n return [...newSelection, ...selection.filter((p) => !expands.includes(p))];\n }\n}\n"]}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/oas/io/writer.ts"],"names":[],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport Oas from 'oas';\nimport { ServerObject } from 'oas/types';\nimport { OasContext } from '../oasContext.js';\nimport { OasGen } from '../oasGen.js';\nimport { CircularRef } from '../nodes/internal.js';\nimport { Composed } from '../nodes/internal.js';\nimport { Get } from '../nodes/internal.js';\nimport { Obj } from '../nodes/internal.js';\nimport { Param } from '../nodes/internal.js';\nimport { Prop } from '../nodes/internal.js';\nimport { PropArray } from '../nodes/internal.js';\nimport { PropScalar } from '../nodes/internal.js';\nimport { Type } from '../nodes/internal.js';\nimport { Union } from '../nodes/internal.js';\nimport { Naming } from '../utils/naming.js';\nimport { T } from '../utils/typeUtils.js';\nimport { IType } from '../nodes/internal.js';\n\nexport class Writer {\n public static findNonPropParent(type: IType) {\n let parent = type;\n while (parent instanceof Prop) {\n parent = parent.parent!;\n }\n return parent;\n }\n\n public static progressiveSplits(input: string): string[] {\n const parts = input.split('>');\n const results: string[] = [];\n for (let i = 1; i <= parts.length; i++) {\n results.push(parts.slice(0, i).join('>'));\n }\n return results;\n }\n public buffer: string[];\n\n constructor(public generator: OasGen) {\n this.buffer = [];\n }\n\n public write(input: string): Writer {\n this.buffer.push(input);\n return this;\n }\n\n public append(input: string): Writer {\n this.buffer.push(input);\n return this;\n }\n\n public flush(): string {\n return this.buffer.join('');\n }\n\n public writeSchema(writer: Writer, pending: Map<string, IType>, selection: string[]): void {\n const context = this.generator.context!;\n const generatedSet = context.generatedSet;\n // generatedSet.clear();\n\n this.writeDirectives(writer);\n this.writeJSONScalar(writer);\n\n pending.forEach((type: IType) => {\n if (!generatedSet.has(type.id)) {\n type.generate(context, this, selection);\n generatedSet.add(type.id);\n }\n });\n\n // TODO: Pending\n // const counter = new RefCounter(this.context);\n // counter.addAll(this.collected);\n\n // const refs = counter.getCount();\n // this.printRefs(refs);\n\n // for (const type of this.context.types.ts.values()) {\n // if (counter.getCount().has(type.name)) {\n // await type.generate(this.context, writer);\n // generatedSet.add(type.name);\n // }\n // }\n\n this.writeQuery(context, writer, this.generator.paths, selection);\n writer.flush();\n }\n\n public generate(selection: string[]) {\n const pending: Map<string, IType> = new Map();\n\n selection = this.collectExpandedPaths(selection);\n\n for (const path of selection) {\n let collection = Array.from(this.generator.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 if (part === '*') {\n // remove the current path from the selection array\n selection = selection.filter((s) => s !== path);\n\n if (current instanceof Composed) {\n current.consolidate(selection);\n }\n\n // add all the props from the current node and exit loop\n current?.props.forEach((child) => {\n if (T.isLeaf(child)) {\n selection.push(child.path());\n }\n });\n break;\n }\n\n current = collection.find((t) => t.id === part);\n if (!current) {\n throw new Error('Could not find type: ' + part + ' from ' + path + ', last: ' + last?.pathToRoot());\n }\n\n // make sure we expand it before we move on to the next part\n this.generator.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 if (current) {\n // TODO: this seems redundant, we've already walked the parent AND can be also\n // contained in the context stack\n const parentType = Writer.findNonPropParent(current as IType);\n\n if (!pending.has(parentType.id)) {\n pending.set(parentType.id, parentType);\n }\n\n parentType\n .ancestors()\n .filter((t) => !pending.has(t.id) && this.isContainer(t))\n .forEach((dep) => {\n // TODO: potential merge needed?\n pending.set(dep.id, dep);\n });\n }\n }\n\n if (!_.isEmpty(pending)) {\n // first pass is to consolidate all Composed & Union nodes\n const composed: Array<Composed | Union> = Array.from(pending.values())\n .filter((t) => t instanceof Composed || t instanceof Union)\n .map((t) => t as Composed);\n\n for (const comp of composed) {\n comp.consolidate(selection).forEach((id) => pending.delete(id));\n }\n\n this.writeSchema(this, pending, selection);\n }\n }\n\n public collectPaths(path: string, collection: IType[]): IType[] {\n const stack: IType[] = [];\n let current: IType | undefined;\n let last: IType | undefined;\n\n let i = 0;\n const parts = path.split('>');\n do {\n const part = parts[i].replace(/#\\/c\\/s/g, '#/components/schemas');\n\n current = collection.find((t) => t.id === part);\n if (!current) {\n throw new Error('Could not find type: ' + part + ' from ' + path + ', last: ' + last?.pathToRoot());\n }\n\n // make sure we expand it before we move on to the next part\n this.generator.expand(current);\n last = current;\n\n collection = Array.from(current!.children.values()) || Array.from(current!.props.values()) || [];\n\n stack.push(current);\n i++;\n } while (i < parts.length);\n\n return stack;\n }\n\n private writeJSONScalar(writer: Writer): void {\n writer.write('\\nscalar JSON\\n\\n');\n }\n\n private writeQuery(context: OasContext, writer: Writer, collected: Map<string, IType>, selection: string[]): void {\n writer.write('type Query {\\n');\n\n const selectionSet = new Set<string>(selection.map((s) => s.split('>')[0]));\n\n const paths = Array.from(collected.values()).filter((path) => selectionSet.has(path.id));\n\n for (const path of paths) {\n path.generate(context, writer, []);\n this.writeConnector(context, writer, path, selection);\n context.generatedSet.add(path.id);\n }\n\n writer.write('}\\n\\n');\n }\n\n private writeConnector(context: OasContext, writer: Writer, type: IType, selection: string[]): void {\n const indent = 0;\n const get = type as unknown as Get; // assume type is GetOp\n let spacing = ' '.repeat(indent + 4);\n writer.append(spacing).append('@connect(\\n');\n\n const request = this.buildRequestMethodAndArgs(get);\n spacing = ' '.repeat(indent + 6);\n writer\n .append(spacing)\n .append('source: \"api\"\\n')\n .append(spacing)\n .append('http: ' + request + '\\n')\n .append(spacing)\n .append('selection: \"\"\"\\n');\n\n if (get.resultType) {\n this.writeSelection(context, writer, get.resultType, selection);\n }\n\n writer.append(spacing).append('\"\"\"\\n');\n spacing = ' '.repeat(indent + 4);\n writer.append(spacing).append(')\\n');\n }\n\n private buildRequestMethodAndArgs(get: Get): string {\n let builder = '';\n\n builder += '\"' + get.operation.path.replace(/\\{([a-zA-Z0-9]+)\\}/g, '{$args.$1}');\n\n if (get.params.length > 0) {\n const params = get.params.filter((p: Param) => {\n return p.required && p.parameter.in && p.parameter.in.toLowerCase() === 'query';\n });\n\n if (params.length > 0) {\n builder += '?' + params.map((p: Param) => `${p.name}={$args.${Naming.genParamName(p.name)}}`).join('&');\n }\n const headers = get.operation.getParameters().filter((p) => p.in && p.in.toLowerCase() === 'header');\n\n builder += '\"\\n';\n\n if (headers.length > 0) {\n let spacing = ' '.repeat(6);\n builder += spacing + 'headers: [\\n';\n spacing = ' '.repeat(8);\n\n for (const p of headers) {\n let value: string | null = null;\n\n if (p.example != null) {\n value = p.example.toString();\n }\n\n if (p.examples && Object.keys(p.examples).length > 0) {\n value = Object.keys(p.examples).join(',');\n }\n\n if (value == null) {\n value = '<placeholder>';\n }\n\n builder += spacing + `{ name: \"${p.name}\", value: \"${value}\" }\\n`;\n }\n\n spacing = ' '.repeat(6);\n builder += spacing + ']';\n }\n } else {\n builder += '\"';\n }\n\n return `{ GET: ${builder} }`;\n }\n\n private writeSelection(context: OasContext, writer: Writer, type: IType, selection: string[]): void {\n context.indent = 6;\n type.select(context, writer, selection);\n }\n\n private writeDirectives(writer: Writer): void {\n const api: Oas = this.generator.parser;\n const host = this.getServerUrl(api.getDefinition().servers?.[0]);\n writer\n .append('extend schema\\n')\n .append(' @link(url: \"https://specs.apollo.dev/federation/v2.10\", import: [\"@key\"])\\n')\n .append(' @link(\\n')\n .append(' url: \"https://specs.apollo.dev/connect/v0.1\"\\n')\n .append(' import: [\"@connect\", \"@source\"]\\n')\n .append(' )\\n')\n .append(' @source(name: \"api\", http: { baseURL: \"')\n .append(host)\n .append('\" })\\n\\n');\n }\n\n private getServerUrl(server: ServerObject | undefined): string {\n if (!server) {\n return 'http://localhost:4010';\n }\n let url: string = server.url;\n if (server.variables) {\n for (const key in server.variables) {\n url = url.replace('{' + key + '}', server.variables[key].default);\n }\n }\n return url;\n }\n\n private traverseTree(current: IType, selection: string[], pending: Map<string, IType>) {\n // we might be in a node far from the root, so we need to traverse upwards\n // as well and add the props that we can find on the way\n const source = current as Type;\n\n source\n .ancestors()\n .filter((t) => t instanceof Prop)\n .map((p) => Writer.findNonPropParent(p))\n .forEach((parent) => pending.set(parent.id, parent));\n\n T.traverse(source, (child) => {\n if (T.isLeaf(child)) {\n // this is a weird take but if the child is an array of scalars\n // then we want to avoid adding it twice\n if (T.isLeaf(child.parent!)) {\n return;\n }\n selection.push(child.path());\n\n const parentType = Writer.findNonPropParent(child);\n if (!pending.has(parentType.id)) {\n pending.set(parentType.id, parentType);\n }\n } else {\n this.generator.expand(child);\n\n if (child instanceof Composed) {\n child.consolidate(selection);\n }\n }\n });\n }\n\n private isContainer(type: IType) {\n return type instanceof Obj || type instanceof Union || type instanceof Composed || type instanceof CircularRef;\n }\n\n private collectExpandedPaths(selection: string[]) {\n const newSelection = new Set<string>();\n const expands = selection.filter((p) => p.endsWith('>**'));\n const filtered = expands.map((p) => p.replace('>**', ''));\n\n const paths = Array.from(this.generator.paths.values());\n const nodes = filtered.map((p) => this.collectPaths(p, paths));\n /*.map(stack => _.last(stack)!.id)\n .filter(id => selection.includes(id))\n .forEach(id => newSelection.add(id));*/\n\n nodes.forEach((stack) => {\n const root = _.last(stack)!;\n T.traverse(root, (child) => {\n if (T.isPropScalar(child) || (child instanceof PropArray && child.items instanceof PropScalar)) {\n newSelection.add(child.path());\n } else {\n this.generator.expand(child);\n }\n });\n });\n\n // finally remove the expanded paths from the selection\n return [...newSelection, ...selection.filter((p) => !expands.includes(p))];\n }\n}\n"]}
@@ -1,8 +1,7 @@
1
- import { Get, IType, ReferenceObject, Prop } from './internal.js';
1
+ import { Get, IType, ReferenceObject, Prop, Param } from './internal.js';
2
2
  import { Operation } from 'oas/operation';
3
3
  import { ParameterObject, SchemaObject } from 'oas/types';
4
4
  import { OasContext } from '../oasContext.js';
5
- import { Param } from './param/param.js';
6
5
  export declare class Factory {
7
6
  static createGet(name: string, op: Operation): Get;
8
7
  static fromSchema(parent: IType, schema: SchemaObject): IType;
@@ -1,9 +1,8 @@
1
- import { Get, Ref, Arr, Composed, Obj, En, Scalar, PropRef, PropArray, PropObj, PropScalar, CircularRef, Union, Response, } from './internal.js';
1
+ import { Get, Ref, Arr, Composed, Obj, En, Scalar, PropRef, PropArray, PropObj, PropScalar, CircularRef, Union, Response, Param, } from './internal.js';
2
2
  import _ from 'lodash';
3
3
  import { trace, warn } from '../log/trace.js';
4
4
  import { Naming } from '../utils/naming.js';
5
5
  import { GqlUtils } from '../utils/gql.js';
6
- import { Param } from './param/param.js';
7
6
  export class Factory {
8
7
  static createGet(name, op) {
9
8
  return new Get(name, op);
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/oas/nodes/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Get,\n IType,\n Ref,\n ReferenceObject,\n Arr,\n Composed,\n Obj,\n En,\n Scalar,\n Prop,\n PropRef,\n PropArray,\n PropObj,\n PropScalar,\n CircularRef,\n Union,\n Response,\n} from './internal.js';\nimport { Operation } from 'oas/operation';\nimport { ParameterObject, SchemaObject } from 'oas/types';\nimport { OpenAPIV3 } from 'openapi-types';\nimport ArraySchemaObject = OpenAPIV3.ArraySchemaObject;\nimport _ from 'lodash';\nimport { trace, warn } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Naming } from '../utils/naming.js';\nimport { GqlUtils } from '../utils/gql.js';\nimport { Param } from './param/param.js';\n\nexport class Factory {\n public static createGet(name: string, op: Operation): Get {\n return new Get(name, op);\n }\n\n public static fromSchema(parent: IType, schema: SchemaObject): IType {\n let result: IType | null = null;\n\n if ('$ref' in schema) {\n result = new Ref(parent, schema.$ref as string, schema as ReferenceObject);\n }\n // array case\n else if (schema.type === 'array' && schema.items) {\n // Array schema case.\n let parentName = parent.name;\n if (parent instanceof Response) {\n // Assume parent.parent is a GetOp.\n const get = parent.parent as Get;\n parentName = _.upperFirst(get.getGqlOpName());\n } else {\n trace(null, '[factory]', 'Factory.fromSchema >>> HERE');\n }\n\n // result = new Arr(parent, parentName, schema.items as ArraySchemaObject);\n // (result as Arr).itemsType = Factory.fromSchema(result, schema.items as ArraySchemaObject);\n const arr = new Arr(parent, parentName);\n\n const items = schema.items as ArraySchemaObject;\n arr.items = items;\n arr.itemsType = Factory.fromSchema(arr, items);\n\n result = arr;\n }\n // array case\n else if (schema.type === 'object') {\n if (schema.allOf || schema.oneOf) {\n result = new Composed(parent, _.get(schema, 'name') || parent.name, schema);\n } else {\n if (!schema.properties) {\n warn(\n null,\n '[factory]',\n 'Object has no properties: ' + JSON.stringify(schema, null, 2) + ' in: ' + parent.pathToRoot(),\n );\n }\n\n result = new Obj(parent, _.get(schema, 'name') || null, schema);\n }\n }\n // Composed schema case.\n else if (schema.allOf || schema.oneOf) {\n result = new Composed(parent, _.get(schema, 'name') || parent.name, schema);\n }\n // scalar\n else {\n const typeStr = schema.type;\n if (typeStr != null) {\n if (typeStr === 'array') {\n throw new Error(`Should have been handled already? ${typeStr}, schema: ${JSON.stringify(schema)}`);\n } else if (schema.enum != null) {\n result = new En(parent, schema, schema.enum! as string[]);\n }\n // scalar case\n else if (GqlUtils.gqlScalar(typeStr as string)) {\n const scalarType = GqlUtils.getGQLScalarType(schema);\n result = new Scalar(parent, scalarType, schema);\n } else {\n throw new Error(`Cannot handle property type ${typeStr}, schema: ${JSON.stringify(schema)}`);\n }\n } else if (schema.enum != null) {\n result = new En(parent, schema, _.get(schema, 'enum') as string[]);\n } else {\n throw new Error(`Cannot handle schema ${parent.pathToRoot()}, schema: ${JSON.stringify(schema)}`);\n }\n }\n\n if (result != null) {\n parent.add(result);\n } else {\n throw new Error(`Not yet implemented for ${JSON.stringify(schema)}`);\n }\n\n return result;\n }\n\n public static fromProp(context: OasContext, parent: IType, propertyName: string, schema: SchemaObject): Prop {\n if (!schema) {\n throw new Error(`Should have a schema defined for property '${propertyName}' (parent: '${parent.name}')`);\n }\n\n const type = schema.type;\n let prop: Prop;\n\n if (!type && '$ref' in schema) {\n prop = new PropRef(parent, propertyName, schema, (schema as ReferenceObject).$ref);\n }\n // uses the type of the schema to find out what kind of property it is\n else if (type) {\n // 1st case is if the type is an array\n if (type === 'array') {\n const array = new PropArray(parent, propertyName, schema);\n\n const itemsName = Naming.genArrayItems(propertyName);\n const itemsType = Factory.fromProp(context, array, itemsName, schema.items as ArraySchemaObject);\n\n array.setItems(itemsType);\n\n prop = array;\n }\n // 2nd checks for obj property\n else if (type === 'object') {\n // the type of the property will be an object, which needs to be added as a child\n const propType: IType = new Obj(parent, propertyName, schema);\n prop = new PropObj(parent, propertyName, schema, propType);\n }\n // 3rd tries for scalar\n else if (GqlUtils.gqlScalar(type as string)) {\n const scalar = GqlUtils.gqlScalar(type as string);\n prop = new PropScalar(parent, propertyName, scalar as string, schema);\n }\n // or we don't know how to handle this\n else {\n throw new Error('Cannot handle property type ' + type);\n }\n }\n // otherwise let's use the properties instead and assume an Obj\n else if (schema.properties != null) {\n const propType: IType = new Obj(parent, propertyName, schema);\n prop = new PropObj(parent, propertyName, schema, propType);\n }\n // default case, we don't know what to do so we'll create a scalar of type JSON\n else {\n prop = new PropScalar(parent, propertyName, 'JSON', schema);\n }\n\n if (parent.ancestors().includes(prop)) {\n console.warn('[factory] Recursion detected! Ancestors already contain this type: \\n' + prop.pathToRoot());\n }\n\n return prop;\n }\n\n public static fromResponse(_context: OasContext, parent: IType, mediaSchema: SchemaObject): IType {\n // const content = Factory.fromSchema(response, mediaSchema);\n // response.response = content;\n return new Response(parent, 'r', mediaSchema);\n }\n\n public static fromParam(context: OasContext, parent: IType, p: ParameterObject | ReferenceObject): Param {\n let param: ParameterObject;\n\n if ('$ref' in p) {\n const ref: ReferenceObject = p as ReferenceObject;\n const schema = context.lookupParam(ref.$ref);\n\n if (!schema) {\n throw new Error('Schema not found for ref: ' + ref.$ref);\n }\n param = schema as ParameterObject;\n } else {\n param = p as ParameterObject;\n }\n\n const schema = param.schema as SchemaObject;\n const required = param.required === true;\n\n return new Param(parent, param.name, schema, required, schema.default, param);\n }\n\n public static fromCircularRef(parent: IType, child: IType): IType {\n const circularRef = new CircularRef(parent, child.name);\n circularRef.ref = child;\n return circularRef;\n }\n\n public static fromUnion(_context: OasContext, parent: IType, oneOfs: SchemaObject[]): IType {\n const union = new Union(parent, parent.name, oneOfs);\n parent.add(union);\n return union;\n }\n}\n"]}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/oas/nodes/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Get,\n IType,\n Ref,\n ReferenceObject,\n Arr,\n Composed,\n Obj,\n En,\n Scalar,\n Prop,\n PropRef,\n PropArray,\n PropObj,\n PropScalar,\n CircularRef,\n Union,\n Response,\n Param,\n} from './internal.js';\nimport { Operation } from 'oas/operation';\nimport { ParameterObject, SchemaObject } from 'oas/types';\nimport { OpenAPIV3 } from 'openapi-types';\nimport ArraySchemaObject = OpenAPIV3.ArraySchemaObject;\nimport _ from 'lodash';\nimport { trace, warn } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Naming } from '../utils/naming.js';\nimport { GqlUtils } from '../utils/gql.js';\n\nexport class Factory {\n public static createGet(name: string, op: Operation): Get {\n return new Get(name, op);\n }\n\n public static fromSchema(parent: IType, schema: SchemaObject): IType {\n let result: IType | null = null;\n\n if ('$ref' in schema) {\n result = new Ref(parent, schema.$ref as string, schema as ReferenceObject);\n }\n // array case\n else if (schema.type === 'array' && schema.items) {\n // Array schema case.\n let parentName = parent.name;\n if (parent instanceof Response) {\n // Assume parent.parent is a GetOp.\n const get = parent.parent as Get;\n parentName = _.upperFirst(get.getGqlOpName());\n } else {\n trace(null, '[factory]', 'Factory.fromSchema >>> HERE');\n }\n\n // result = new Arr(parent, parentName, schema.items as ArraySchemaObject);\n // (result as Arr).itemsType = Factory.fromSchema(result, schema.items as ArraySchemaObject);\n const arr = new Arr(parent, parentName);\n\n const items = schema.items as ArraySchemaObject;\n arr.items = items;\n arr.itemsType = Factory.fromSchema(arr, items);\n\n result = arr;\n }\n // array case\n else if (schema.type === 'object') {\n if (schema.allOf || schema.oneOf) {\n result = new Composed(parent, _.get(schema, 'name') || parent.name, schema);\n } else {\n if (!schema.properties) {\n warn(\n null,\n '[factory]',\n 'Object has no properties: ' + JSON.stringify(schema, null, 2) + ' in: ' + parent.pathToRoot(),\n );\n }\n\n result = new Obj(parent, _.get(schema, 'name') || null, schema);\n }\n }\n // Composed schema case.\n else if (schema.allOf || schema.oneOf) {\n result = new Composed(parent, _.get(schema, 'name') || parent.name, schema);\n }\n // scalar\n else {\n const typeStr = schema.type;\n if (typeStr != null) {\n if (typeStr === 'array') {\n throw new Error(`Should have been handled already? ${typeStr}, schema: ${JSON.stringify(schema)}`);\n } else if (schema.enum != null) {\n result = new En(parent, schema, schema.enum! as string[]);\n }\n // scalar case\n else if (GqlUtils.gqlScalar(typeStr as string)) {\n const scalarType = GqlUtils.getGQLScalarType(schema);\n result = new Scalar(parent, scalarType, schema);\n } else {\n throw new Error(`Cannot handle property type ${typeStr}, schema: ${JSON.stringify(schema)}`);\n }\n } else if (schema.enum != null) {\n result = new En(parent, schema, _.get(schema, 'enum') as string[]);\n } else {\n throw new Error(`Cannot handle schema ${parent.pathToRoot()}, schema: ${JSON.stringify(schema)}`);\n }\n }\n\n if (result != null) {\n parent.add(result);\n } else {\n throw new Error(`Not yet implemented for ${JSON.stringify(schema)}`);\n }\n\n return result;\n }\n\n public static fromProp(context: OasContext, parent: IType, propertyName: string, schema: SchemaObject): Prop {\n if (!schema) {\n throw new Error(`Should have a schema defined for property '${propertyName}' (parent: '${parent.name}')`);\n }\n\n const type = schema.type;\n let prop: Prop;\n\n if (!type && '$ref' in schema) {\n prop = new PropRef(parent, propertyName, schema, (schema as ReferenceObject).$ref);\n }\n // uses the type of the schema to find out what kind of property it is\n else if (type) {\n // 1st case is if the type is an array\n if (type === 'array') {\n const array = new PropArray(parent, propertyName, schema);\n\n const itemsName = Naming.genArrayItems(propertyName);\n const itemsType = Factory.fromProp(context, array, itemsName, schema.items as ArraySchemaObject);\n\n array.setItems(itemsType);\n\n prop = array;\n }\n // 2nd checks for obj property\n else if (type === 'object') {\n // the type of the property will be an object, which needs to be added as a child\n const propType: IType = new Obj(parent, propertyName, schema);\n prop = new PropObj(parent, propertyName, schema, propType);\n }\n // 3rd tries for scalar\n else if (GqlUtils.gqlScalar(type as string)) {\n const scalar = GqlUtils.gqlScalar(type as string);\n prop = new PropScalar(parent, propertyName, scalar as string, schema);\n }\n // or we don't know how to handle this\n else {\n throw new Error('Cannot handle property type ' + type);\n }\n }\n // otherwise let's use the properties instead and assume an Obj\n else if (schema.properties != null) {\n const propType: IType = new Obj(parent, propertyName, schema);\n prop = new PropObj(parent, propertyName, schema, propType);\n }\n // default case, we don't know what to do so we'll create a scalar of type JSON\n else {\n prop = new PropScalar(parent, propertyName, 'JSON', schema);\n }\n\n if (parent.ancestors().includes(prop)) {\n console.warn('[factory] Recursion detected! Ancestors already contain this type: \\n' + prop.pathToRoot());\n }\n\n return prop;\n }\n\n public static fromResponse(_context: OasContext, parent: IType, mediaSchema: SchemaObject): IType {\n // const content = Factory.fromSchema(response, mediaSchema);\n // response.response = content;\n return new Response(parent, 'r', mediaSchema);\n }\n\n public static fromParam(context: OasContext, parent: IType, p: ParameterObject | ReferenceObject): Param {\n let param: ParameterObject;\n\n if ('$ref' in p) {\n const ref: ReferenceObject = p as ReferenceObject;\n const schema = context.lookupParam(ref.$ref);\n\n if (!schema) {\n throw new Error('Schema not found for ref: ' + ref.$ref);\n }\n param = schema as ParameterObject;\n } else {\n param = p as ParameterObject;\n }\n\n const schema = param.schema as SchemaObject;\n const required = param.required === true;\n\n return new Param(parent, param.name, schema, required, schema.default, param);\n }\n\n public static fromCircularRef(parent: IType, child: IType): IType {\n const circularRef = new CircularRef(parent, child.name);\n circularRef.ref = child;\n return circularRef;\n }\n\n public static fromUnion(_context: OasContext, parent: IType, oneOfs: SchemaObject[]): IType {\n const union = new Union(parent, parent.name, oneOfs);\n parent.add(union);\n return union;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Prop } from './props/prop.js';
1
+ import { Prop } from './prop.js';
2
2
  import { OasContext } from '../oasContext.js';
3
3
  import { Writer } from '../io/writer.js';
4
4
  export interface IType {
@@ -1 +1 @@
1
- {"version":3,"file":"iType.js","sourceRoot":"","sources":["../../../src/oas/nodes/iType.ts"],"names":[],"mappings":"","sourcesContent":["import { Prop } from './props/prop.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\n\nexport interface IType {\n name: string;\n parent?: IType;\n children: IType[];\n circularRef?: IType;\n props: Map<string, Prop>;\n id: string;\n\n forPrompt(context: OasContext): string;\n\n add(child: IType): void;\n\n ancestors(): IType[];\n\n visit(context: OasContext): void;\n\n generate(context: OasContext, writer: Writer, selection: string[]): void;\n\n pathToRoot(): string;\n\n path(): string;\n\n expand(context: OasContext): IType[];\n\n find(path: string, collection: IType[]): IType | boolean;\n\n select(context: OasContext, writer: Writer, selection: string[]): void;\n}\n"]}
1
+ {"version":3,"file":"iType.js","sourceRoot":"","sources":["../../../src/oas/nodes/iType.ts"],"names":[],"mappings":"","sourcesContent":["import { Prop } from './prop.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\n\nexport interface IType {\n name: string;\n parent?: IType;\n children: IType[];\n circularRef?: IType;\n props: Map<string, Prop>;\n id: string;\n\n forPrompt(context: OasContext): string;\n\n add(child: IType): void;\n\n ancestors(): IType[];\n\n visit(context: OasContext): void;\n\n generate(context: OasContext, writer: Writer, selection: string[]): void;\n\n pathToRoot(): string;\n\n path(): string;\n\n expand(context: OasContext): IType[];\n\n find(path: string, collection: IType[]): IType | boolean;\n\n select(context: OasContext, writer: Writer, selection: string[]): void;\n}\n"]}
@@ -1,20 +1,20 @@
1
1
  export * from './iType.js';
2
- export * from './type.js';
3
- export * from './arr.js';
4
- export * from './circularRef.js';
5
- export * from './comp.js';
6
- export * from './en.js';
7
- export * from './factory.js';
8
- export * from './get.js';
9
- export * from './obj.js';
10
- export * from './ref.js';
11
- export * from './response.js';
12
- export * from './scalar.js';
13
- export * from './union.js';
14
- export * from './props/prop.js';
15
- export * from './props/propArray.js';
16
- export * from './props/propObj.js';
17
- export * from './props/propRef.js';
18
- export * from './props/propScalar.js';
19
- export * from './props/referenceObject.js';
20
- export * from './param/param.js';
2
+ export { Type } from './type.js';
3
+ export { type ReferenceObject } from './referenceObject.js';
4
+ export { Prop } from './prop.js';
5
+ export { Param } from './param.js';
6
+ export { Arr } from './arr.js';
7
+ export { CircularRef } from './circularRef.js';
8
+ export { Composed } from './comp.js';
9
+ export { En } from './en.js';
10
+ export { Factory } from './factory.js';
11
+ export { Get } from './get.js';
12
+ export { Obj } from './obj.js';
13
+ export { Ref } from './ref.js';
14
+ export { Response } from './response.js';
15
+ export { Scalar } from './scalar.js';
16
+ export { Union } from './union.js';
17
+ export { PropArray } from './propArray.js';
18
+ export { PropObj } from './propObj.js';
19
+ export { PropRef } from './propRef.js';
20
+ export { PropScalar } from './propScalar.js';
@@ -1,22 +1,20 @@
1
- // -- internal.js --
2
1
  export * from './iType.js';
3
- export * from './type.js';
4
- export * from './arr.js';
5
- export * from './circularRef.js';
6
- export * from './comp.js';
7
- export * from './en.js';
8
- export * from './factory.js';
9
- export * from './get.js';
10
- export * from './obj.js';
11
- export * from './ref.js';
12
- export * from './response.js';
13
- export * from './scalar.js';
14
- export * from './union.js';
15
- export * from './props/prop.js';
16
- export * from './props/propArray.js';
17
- export * from './props/propObj.js';
18
- export * from './props/propRef.js';
19
- export * from './props/propScalar.js';
20
- export * from './props/referenceObject.js';
21
- export * from './param/param.js';
2
+ export { Type } from './type.js';
3
+ export { Prop } from './prop.js';
4
+ export { Param } from './param.js';
5
+ export { Arr } from './arr.js';
6
+ export { CircularRef } from './circularRef.js';
7
+ export { Composed } from './comp.js';
8
+ export { En } from './en.js';
9
+ export { Factory } from './factory.js';
10
+ export { Get } from './get.js';
11
+ export { Obj } from './obj.js';
12
+ export { Ref } from './ref.js';
13
+ export { Response } from './response.js';
14
+ export { Scalar } from './scalar.js';
15
+ export { Union } from './union.js';
16
+ export { PropArray } from './propArray.js';
17
+ export { PropObj } from './propObj.js';
18
+ export { PropRef } from './propRef.js';
19
+ export { PropScalar } from './propScalar.js';
22
20
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/oas/nodes/internal.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC","sourcesContent":["// -- internal.js --\nexport * from './iType.js';\nexport * from './type.js';\nexport * from './arr.js';\nexport * from './circularRef.js';\nexport * from './comp.js';\nexport * from './en.js';\nexport * from './factory.js';\nexport * from './get.js';\nexport * from './obj.js';\nexport * from './ref.js';\nexport * from './response.js';\nexport * from './scalar.js';\nexport * from './union.js';\nexport * from './props/prop.js';\nexport * from './props/propArray.js';\nexport * from './props/propObj.js';\nexport * from './props/propRef.js';\nexport * from './props/propScalar.js';\nexport * from './props/referenceObject.js';\nexport * from './param/param.js';\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/oas/nodes/internal.ts"],"names":[],"mappings":"AAsBA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["// -- internal.js --\nimport { IType } from './iType.js';\nimport { Type } from './type.js';\nimport { Prop } from './prop.js';\nimport { Param } from './param.js';\nimport { PropArray } from './propArray.js';\nimport { PropObj } from './propObj.js';\nimport { PropRef } from './propRef.js';\nimport { PropScalar } from './propScalar.js';\nimport { ReferenceObject } from './referenceObject.js';\nimport { Arr } from './arr.js';\nimport { CircularRef } from './circularRef.js';\nimport { Composed } from './comp.js';\nimport { En } from './en.js';\nimport { Factory } from './factory.js';\nimport { Get } from './get.js';\nimport { Obj } from './obj.js';\nimport { Ref } from './ref.js';\nimport { Response } from './response.js';\nimport { Scalar } from './scalar.js';\nimport { Union } from './union.js';\n\nexport * from './iType.js';\nexport { Type } from './type.js';\nexport { type ReferenceObject } from './referenceObject.js';\nexport { Prop } from './prop.js';\n\nexport { Param } from './param.js';\nexport { Arr } from './arr.js';\nexport { CircularRef } from './circularRef.js';\nexport { Composed } from './comp.js';\nexport { En } from './en.js';\nexport { Factory } from './factory.js';\nexport { Get } from './get.js';\nexport { Obj } from './obj.js';\nexport { Ref } from './ref.js';\nexport { Response } from './response.js';\nexport { Scalar } from './scalar.js';\nexport { Union } from './union.js';\nexport { PropArray } from './propArray.js';\nexport { PropObj } from './propObj.js';\nexport { PropRef } from './propRef.js';\nexport { PropScalar } from './propScalar.js';\n"]}
@@ -3,7 +3,7 @@ import { trace } from '../log/trace.js';
3
3
  import { Naming } from '../utils/naming.js';
4
4
  import { Arr } from './arr.js';
5
5
  import { Factory } from './factory.js';
6
- import { PropArray } from './props/propArray.js';
6
+ import { PropArray } from './propArray.js';
7
7
  import { Ref } from './ref.js';
8
8
  import { Response } from './response.js';
9
9
  export class Obj extends Type {
@@ -1 +1 @@
1
- {"version":3,"file":"obj.js","sourceRoot":"","sources":["../../../src/oas/nodes/obj.ts"],"names":[],"mappings":"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","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';\nimport { Naming } from '../utils/naming.js';\nimport { Arr } from './arr.js';\nimport { Factory } from './factory.js';\nimport { Get } from './get.js';\nimport { PropArray } from './props/propArray.js';\nimport { Ref } from './ref.js';\nimport { Response } from './response.js';\n\nexport class Obj extends Type {\n constructor(\n parent: IType | undefined,\n name: string,\n public schema: SchemaObject,\n ) {\n super(parent, name);\n this.updateName();\n }\n\n public forPrompt(_context: OasContext): string {\n return `${Naming.getRefName(this.name)} (Obj)`;\n }\n\n get id(): string {\n return `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, '-> [obj:visit]', 'in ' + this.name);\n\n if (!context.inContextOf('Composed', this)) {\n trace(context, '[obj]', 'In object: ' + (this.name ? this.name : this.parent?.name));\n }\n\n this.visitProperties(context);\n this.visited = true;\n\n if (this.name) {\n context.store(this.name, this);\n }\n\n trace(context, '<- [obj:visit]', 'out ' + this.name);\n context.leave(this);\n }\n\n public generate(context: OasContext, writer: Writer, selection: string[]): void {\n if (this.props.size === 0) {\n return;\n }\n\n if (context.inContextOf('Response', this)) {\n writer.append(Naming.genTypeName(this.name));\n return;\n }\n\n context.enter(this);\n trace(context, '-> [obj::generate]', `-> in: ${this.name}`);\n\n const sanitised = Naming.genTypeName(this.name);\n const refName = Naming.getRefName(this.name);\n\n writer\n .append('type ')\n .append(sanitised === refName ? refName : sanitised)\n .append(' {\\n');\n\n const selected = this.selectedProps(selection);\n for (const prop of selected) {\n trace(context, '-> [obj::generate]', `-> property: ${prop.name} (parent: ${prop.parent!.name})`);\n prop.generate(context, writer, selection);\n }\n\n writer.append('}\\n\\n');\n\n trace(context, '<- [obj::generate]', `-> out: ${this.name}`);\n context.leave(this);\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n trace(context, '-> [obj::select]', `-> in: ${this.name}`);\n\n const selected = this.selectedProps(selection);\n for (const prop of selected) {\n prop.select(context, writer, selection);\n }\n\n trace(context, '<- [obj::select]', `-> out: ${this.name}`);\n }\n\n private updateName(): void {\n let name = this.name;\n // If we are an inline object named \"items\", try to create a better name.\n if (!name || name === 'items') {\n const parent = this.parent;\n const parentName = parent!.name;\n\n // if the parent is a reference, we can use the name of the obj itself\n if (parent instanceof Ref) {\n name = parentName.replace('ref:', 'obj:');\n }\n // else is our parent an array?\n else if (parent instanceof Arr || parent instanceof PropArray) {\n // if so, synthesize a name based on the parent name\n name = Naming.genTypeName(Naming.getRefName(parentName) + 'Item');\n }\n // if the parent is a response, we can use the operation name and append \"Response\"\n else if (parent instanceof Response) {\n const op = parent.parent as Get;\n name = op.getGqlOpName() + 'Response';\n }\n // if the parent is an object then we can use the parent name\n else if (parent instanceof Obj) {\n name = parentName + 'Obj';\n }\n // extreme case -- we synthesize an anonymous name\n else {\n name = `[anonymous:${this.parent!.name}]`;\n }\n }\n\n this.name = name;\n }\n\n private visitProperties(context: OasContext): void {\n if (!this.schema.properties) {\n return;\n }\n\n const properties = this.schema.properties as Record<string, SchemaObject>;\n const propKeys = Object.keys(properties);\n trace(context, '-> [obj::props]', 'in props ' + (propKeys.length === 0 ? '0' : propKeys.length.toString()));\n\n if (propKeys.length === 0) {\n trace(context, '<- [obj::props]', 'no props ' + this.props.size);\n return;\n }\n\n const sorted = Object.entries(properties).sort((a, b) => a[0].toLowerCase().localeCompare(b[0].toLowerCase()));\n\n for (const [key, schemaValue] of sorted) {\n const prop = Factory.fromProp(context, this, key, schemaValue);\n this.props.set(prop.name, prop);\n\n // TODO: we should not be adding this twice\n if (!this.children.includes(prop)) {\n this.add(prop);\n }\n }\n\n // const propertiesNames = Array.from(collected.values())\n // .map((p) => p.forPrompt(context))\n // .join(',\\n - ');\n //\n // const inCompose = context.inContextOf(Composed, this);\n // const inComposeIdx = Type.findAncestorOf(this, Composed);\n // const inArrayIdx = Type.findAncestorOf(this, PropArray);\n //\n // if (!inCompose || inArrayIdx > inComposeIdx) {\n // console.log('Obj.visitProperties HERE');\n // }\n //\n // trace(\n // context,\n // ' [obj::props]',\n // `${this.getSimpleName()} is within compose context? ${inCompose}`\n // );\n //\n // const addAll =\n // !inCompose || inArrayIdx > inComposeIdx\n // ? await context.prompt.yesNoSelect(\n // this.path(),\n // ` -> Add all properties from [object] ${this.getOwner()}?: \\n - ${propertiesNames}\\n`\n // )\n // : 'y';\n //\n // if (addAll === 'y' || addAll === 's') {\n // for (const [propertyName, propertySchema] of sorted) {\n // const prop = Factory.fromProperty(\n // context,\n // this,\n // propertyName,\n // propertySchema\n // );\n // if (\n // addAll === 'y' ||\n // (await context.prompt.yesNo(\n // prop.path(),\n // `Add field '${prop.forPrompt(context)}'?`\n // ))\n // ) {\n // trace(context, ' [obj::props]', 'prop: ' + prop);\n // this.props.set(propertyName, prop);\n // if (!this.children.includes(prop)) {\n // this.add(prop);\n // }\n // }\n // }\n // }\n //\n // this.addDependencies(context);\n trace(context, '<- [obj::props]', 'out props ' + this.props.size);\n }\n}\n"]}
1
+ {"version":3,"file":"obj.js","sourceRoot":"","sources":["../../../src/oas/nodes/obj.ts"],"names":[],"mappings":"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","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';\nimport { Naming } from '../utils/naming.js';\nimport { Arr } from './arr.js';\nimport { Factory } from './factory.js';\nimport { Get } from './get.js';\nimport { PropArray } from './propArray.js';\nimport { Ref } from './ref.js';\nimport { Response } from './response.js';\n\nexport class Obj extends Type {\n constructor(\n parent: IType | undefined,\n name: string,\n public schema: SchemaObject,\n ) {\n super(parent, name);\n this.updateName();\n }\n\n public forPrompt(_context: OasContext): string {\n return `${Naming.getRefName(this.name)} (Obj)`;\n }\n\n get id(): string {\n return `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, '-> [obj:visit]', 'in ' + this.name);\n\n if (!context.inContextOf('Composed', this)) {\n trace(context, '[obj]', 'In object: ' + (this.name ? this.name : this.parent?.name));\n }\n\n this.visitProperties(context);\n this.visited = true;\n\n if (this.name) {\n context.store(this.name, this);\n }\n\n trace(context, '<- [obj:visit]', 'out ' + this.name);\n context.leave(this);\n }\n\n public generate(context: OasContext, writer: Writer, selection: string[]): void {\n if (this.props.size === 0) {\n return;\n }\n\n if (context.inContextOf('Response', this)) {\n writer.append(Naming.genTypeName(this.name));\n return;\n }\n\n context.enter(this);\n trace(context, '-> [obj::generate]', `-> in: ${this.name}`);\n\n const sanitised = Naming.genTypeName(this.name);\n const refName = Naming.getRefName(this.name);\n\n writer\n .append('type ')\n .append(sanitised === refName ? refName : sanitised)\n .append(' {\\n');\n\n const selected = this.selectedProps(selection);\n for (const prop of selected) {\n trace(context, '-> [obj::generate]', `-> property: ${prop.name} (parent: ${prop.parent!.name})`);\n prop.generate(context, writer, selection);\n }\n\n writer.append('}\\n\\n');\n\n trace(context, '<- [obj::generate]', `-> out: ${this.name}`);\n context.leave(this);\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n trace(context, '-> [obj::select]', `-> in: ${this.name}`);\n\n const selected = this.selectedProps(selection);\n for (const prop of selected) {\n prop.select(context, writer, selection);\n }\n\n trace(context, '<- [obj::select]', `-> out: ${this.name}`);\n }\n\n private updateName(): void {\n let name = this.name;\n // If we are an inline object named \"items\", try to create a better name.\n if (!name || name === 'items') {\n const parent = this.parent;\n const parentName = parent!.name;\n\n // if the parent is a reference, we can use the name of the obj itself\n if (parent instanceof Ref) {\n name = parentName.replace('ref:', 'obj:');\n }\n // else is our parent an array?\n else if (parent instanceof Arr || parent instanceof PropArray) {\n // if so, synthesize a name based on the parent name\n name = Naming.genTypeName(Naming.getRefName(parentName) + 'Item');\n }\n // if the parent is a response, we can use the operation name and append \"Response\"\n else if (parent instanceof Response) {\n const op = parent.parent as Get;\n name = op.getGqlOpName() + 'Response';\n }\n // if the parent is an object then we can use the parent name\n else if (parent instanceof Obj) {\n name = parentName + 'Obj';\n }\n // extreme case -- we synthesize an anonymous name\n else {\n name = `[anonymous:${this.parent!.name}]`;\n }\n }\n\n this.name = name;\n }\n\n private visitProperties(context: OasContext): void {\n if (!this.schema.properties) {\n return;\n }\n\n const properties = this.schema.properties as Record<string, SchemaObject>;\n const propKeys = Object.keys(properties);\n trace(context, '-> [obj::props]', 'in props ' + (propKeys.length === 0 ? '0' : propKeys.length.toString()));\n\n if (propKeys.length === 0) {\n trace(context, '<- [obj::props]', 'no props ' + this.props.size);\n return;\n }\n\n const sorted = Object.entries(properties).sort((a, b) => a[0].toLowerCase().localeCompare(b[0].toLowerCase()));\n\n for (const [key, schemaValue] of sorted) {\n const prop = Factory.fromProp(context, this, key, schemaValue);\n this.props.set(prop.name, prop);\n\n // TODO: we should not be adding this twice\n if (!this.children.includes(prop)) {\n this.add(prop);\n }\n }\n\n // const propertiesNames = Array.from(collected.values())\n // .map((p) => p.forPrompt(context))\n // .join(',\\n - ');\n //\n // const inCompose = context.inContextOf(Composed, this);\n // const inComposeIdx = Type.findAncestorOf(this, Composed);\n // const inArrayIdx = Type.findAncestorOf(this, PropArray);\n //\n // if (!inCompose || inArrayIdx > inComposeIdx) {\n // console.log('Obj.visitProperties HERE');\n // }\n //\n // trace(\n // context,\n // ' [obj::props]',\n // `${this.getSimpleName()} is within compose context? ${inCompose}`\n // );\n //\n // const addAll =\n // !inCompose || inArrayIdx > inComposeIdx\n // ? await context.prompt.yesNoSelect(\n // this.path(),\n // ` -> Add all properties from [object] ${this.getOwner()}?: \\n - ${propertiesNames}\\n`\n // )\n // : 'y';\n //\n // if (addAll === 'y' || addAll === 's') {\n // for (const [propertyName, propertySchema] of sorted) {\n // const prop = Factory.fromProperty(\n // context,\n // this,\n // propertyName,\n // propertySchema\n // );\n // if (\n // addAll === 'y' ||\n // (await context.prompt.yesNo(\n // prop.path(),\n // `Add field '${prop.forPrompt(context)}'?`\n // ))\n // ) {\n // trace(context, ' [obj::props]', 'prop: ' + prop);\n // this.props.set(propertyName, prop);\n // if (!this.children.includes(prop)) {\n // this.add(prop);\n // }\n // }\n // }\n // }\n //\n // this.addDependencies(context);\n trace(context, '<- [obj::props]', 'out props ' + this.props.size);\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { IType, Type } from '../internal.js';
1
+ import { IType, Type } from './internal.js';
2
2
  import { ParameterObject, SchemaObject } from 'oas/types';
3
- import { OasContext } from '../../oasContext.js';
4
- import { Writer } from '../../io/writer.js';
3
+ import { OasContext } from '../oasContext.js';
4
+ import { Writer } from '../io/writer.js';
5
5
  export declare class Param extends Type {
6
6
  schema: SchemaObject;
7
7
  required: boolean;
@@ -1,6 +1,6 @@
1
- import { Factory, Type } from '../internal.js';
2
- import { trace } from '../../log/trace.js';
3
- import { Naming } from '../../utils/naming.js';
1
+ import { Factory, Type } from './internal.js';
2
+ import { trace } from '../log/trace.js';
3
+ import { Naming } from '../utils/naming.js';
4
4
  export class Param extends Type {
5
5
  schema;
6
6
  required;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param.js","sourceRoot":"","sources":["../../../src/oas/nodes/param.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,KAAM,SAAQ,IAAI;IAMpB;IACA;IACA;IACA;IARF,UAAU,CAAS;IAE1B,YACE,MAAa,EACb,IAAY,EACL,MAAoB,EACpB,QAAiB,EACjB,YAAqB,EACrB,SAA0B;QAEjC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QALb,WAAM,GAAN,MAAM,CAAc;QACpB,aAAQ,GAAR,QAAQ,CAAS;QACjB,iBAAY,GAAZ,YAAY,CAAS;QACrB,cAAS,GAAT,SAAS,CAAiB;IAGnC,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,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE/B,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,QAAQ,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACtE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEnB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAClE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,SAAS,CAAC,OAAmB;QAClC,OAAO,eAAe,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,QAAQ,kBAAkB,IAAI,CAAC,YAAY,WAAW,IAAI,CAAC,KAAK,gBAAgB,IAAI,CAAC,UAAU,IAAI,CAAC;IACxJ,CAAC;IAEM,MAAM,CAAC,OAAmB,EAAE,MAAc,EAAE,SAAmB;QACpE,aAAa;IACf,CAAC;IAEO,iBAAiB,CAAC,MAAc;QACtC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAEhC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;CACF","sourcesContent":["import { Factory, IType, Type } from './internal.js';\nimport { ParameterObject, 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 Param extends Type {\n public resultType!: IType;\n\n constructor(\n parent: IType,\n name: string,\n public schema: SchemaObject,\n public required: boolean,\n public defaultValue: unknown,\n public parameter: ParameterObject,\n ) {\n super(parent, name);\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n return;\n }\n\n context.enter(this);\n trace(context, '-> [param:visit]', 'in: ' + this.name);\n\n this.resultType = Factory.fromSchema(this, this.schema);\n trace(context, ' [param:visit]', 'type: ' + this.resultType);\n this.resultType.visit(context);\n\n trace(context, '<- [param:visit]', 'out: ' + this.name);\n context.leave(this);\n }\n\n public generate(context: OasContext, writer: Writer, selection: string[]): void {\n context.enter(this);\n trace(context, '-> [param::generate]', `-> in: ${this.name}`);\n\n writer.write(Naming.genParamName(this.name));\n writer.write(': ');\n\n this.resultType.generate(context, writer, selection);\n\n if (this.required) {\n writer.write('!');\n }\n\n if (this.defaultValue !== null && this.defaultValue !== undefined) {\n this.writeDefaultValue(writer);\n }\n\n trace(context, '<- [param::generate]', `-> out: ${this.name}`);\n context.leave(this);\n }\n\n public forPrompt(context: OasContext): string {\n return `Param{ name=${this.name}, required=${this.required}, defaultValue=${this.defaultValue}, props=${this.props}, resultType=${this.resultType} }`;\n }\n\n public select(context: OasContext, writer: Writer, selection: string[]) {\n // do nothing\n }\n\n private writeDefaultValue(writer: Writer): void {\n writer.write(' = ');\n const value = this.defaultValue;\n\n if (typeof value === 'number') {\n writer.write(value.toString());\n } else if (typeof value === 'string') {\n writer.write('\"');\n writer.write(String(value));\n writer.write('\"');\n }\n }\n}\n"]}