apollo-conn-gen 0.5.0 → 0.6.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.
@@ -9,7 +9,8 @@ export function generateFromSelection(opts, gen) {
9
9
  console.error('Invalid selections file');
10
10
  return;
11
11
  }
12
- console.info('--------------- Apollo Connector schema -----------------');
12
+ console.info('# --------------- Apollo Connector schema -----------------');
13
+ console.info(`# Generated at: ${new Date().toISOString()}`);
13
14
  console.info(gen.generateSchema(selections));
14
15
  return;
15
16
  }
@@ -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,6BAA6B,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,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,EAAE,CAAC;YAC7B,oCAAoC;YACnC,IAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACnC,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;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 { Type, IType, Composed } from '../../oas/nodes/internal.js';\nimport { OasGen } from '../../oas/oasGen.js';\nimport { typesPrompt } from '../../oas/prompts/prompt.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) {\n // make sure we gather all the props\n (type as Composed).consolidate([]);\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 }\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;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,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,6DAA6D,CAAC,CAAC;IAC5E,OAAO,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC5D,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,EAAE,CAAC;YAC7B,oCAAoC;YACnC,IAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACnC,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;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 { Type, IType, Composed } from '../../oas/nodes/internal.js';\nimport { OasGen } from '../../oas/oasGen.js';\nimport { typesPrompt } from '../../oas/prompts/prompt.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(`# Generated at: ${new Date().toISOString()}`);\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) {\n // make sure we gather all the props\n (type as Composed).consolidate([]);\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 }\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"]}
package/dist/cli/oas.js CHANGED
@@ -32,7 +32,7 @@ async function main(sourceFile, opts) {
32
32
  const gen = await OasGen.fromFile(sourceFile, {
33
33
  ...opts,
34
34
  consolidateUnions: true,
35
- showParentInSelections: true,
35
+ showParentInSelections: false,
36
36
  federationVersion: opts.federationVersion,
37
37
  connectorSpecVersion: opts.connectorSpecVersion,
38
38
  postName: opts.postName,
@@ -63,9 +63,9 @@ async function main(sourceFile, opts) {
63
63
  console = originalConsole;
64
64
  console.info(gen.generateSchema(paths));
65
65
  if (opts.printSelections) {
66
- console.info('--------------- Selections -----------------');
66
+ console.info('# --------------- Selections -----------------');
67
67
  console.info(gen.selections);
68
- console.info('--------------- Paths -----------------');
68
+ console.info('# --------------- Paths -----------------');
69
69
  console.info('paths =', JSON.stringify(paths, null, 2));
70
70
  }
71
71
  }
@@ -81,7 +81,6 @@ program
81
81
  .option('-s --load-selections <file>', 'Load a JSON file with field selections (other options are ignored)')
82
82
  .option('-v --verbose', 'Log all messages from generator')
83
83
  .option('-m --print-selections', 'Print selections from generator')
84
- .option('-r --post-name <pattern>', 'Apply a regex to transform operation names (e.g., "apiV1(.*):api_v1_$1" to convert "apiV1SomeOperation" to "api_v1_SomeOperation")')
85
84
  .option('-t --transform-rules <file>', 'Load transform rules from a JSON file to apply multiple name transformations')
86
85
  .option('--federation-version <version>', 'Federation version to use', DEFAULT_VERSIONS.federationVersion)
87
86
  .option('--connector-spec-version <version>', 'Connector spec version to use', DEFAULT_VERSIONS.connectorSpecVersion)
@@ -1 +1 @@
1
- {"version":3,"file":"oas.js","sourceRoot":"","sources":["../../src/cli/oas.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command } from 'commander';\nimport { DEFAULT_VERSIONS } from '../versions.js';\nimport { generateFromSelection, promptForSelection } from './oas-helpers/index.js';\nimport { OasGen } from '../oas/oasGen.js';\nimport { RulesLoader, OpNameMapper, MapRules, Mapper } from '../oas/mapper/index.js';\n\nconst originalConsole = Object.assign(\n {\n log: console.log,\n },\n console,\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction loadRules(opts: any): Mapper | undefined {\n let mapper;\n if (opts.transformRules) {\n try {\n const rules = RulesLoader.fromFile(opts.transformRules);\n mapper = OpNameMapper.fromRules(rules);\n } catch (error) {\n console.error(`Error loading transform rules: ${error}`);\n return undefined;\n }\n } else if (opts.postName) {\n // Backward compatibility with legacy --post-name\n mapper = OpNameMapper.fromPattern(opts.postName);\n }\n\n return mapper;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- for options\nasync function main(sourceFile: string, opts: any): Promise<void> {\n console.log = () => {};\n\n const mapper = loadRules(opts);\n\n const gen = await OasGen.fromFile(sourceFile, {\n ...opts,\n consolidateUnions: true,\n showParentInSelections: true,\n federationVersion: opts.federationVersion,\n connectorSpecVersion: opts.connectorSpecVersion,\n postName: opts.postName,\n mapper: mapper,\n });\n\n await gen.visit();\n\n let pathSet = Array.from(gen.paths.values());\n if (opts.loadSelections) {\n generateFromSelection(opts, gen);\n return;\n }\n\n if (opts.grep !== '*') {\n const regex = new RegExp(opts.grep, 'ig');\n pathSet = pathSet.filter((p) => regex.test(p.path()));\n }\n\n if (opts.listPaths) {\n pathSet.forEach((path) => console.info(path.path()));\n return;\n }\n\n let paths: string[];\n if (opts.skipSelection) {\n paths = pathSet.map((p) => p.path() + '>**');\n } else {\n paths = await promptForSelection(gen, opts, pathSet);\n }\n\n if (opts.verbose) console = originalConsole;\n\n console.info(gen.generateSchema(paths));\n\n if (opts.printSelections) {\n console.info('--------------- Selections -----------------');\n console.info(gen.selections);\n console.info('--------------- Paths -----------------');\n console.info('paths =', JSON.stringify(paths, null, 2));\n }\n}\n\nconst program = new Command();\nprogram\n .version('0.0.1')\n .argument('<source>', 'source spec (yaml or json)')\n .option('-i --skip-validation', 'Skip validation step', false)\n .option('-n --skip-selection', 'Generate all [filtered] paths without prompting for a selection', false)\n .option('-l --list-paths', 'Only list the paths that can be generated', false)\n .option('-g --grep <regex>', 'Filter the list of paths with the passed expression', '*')\n .option('-p --page-size <num>', 'Number of rows to display in selection mode', '10')\n .option('-s --load-selections <file>', 'Load a JSON file with field selections (other options are ignored)')\n .option('-v --verbose', 'Log all messages from generator')\n .option('-m --print-selections', 'Print selections from generator')\n .option(\n '-r --post-name <pattern>',\n 'Apply a regex to transform operation names (e.g., \"apiV1(.*):api_v1_$1\" to convert \"apiV1SomeOperation\" to \"api_v1_SomeOperation\")',\n )\n .option('-t --transform-rules <file>', 'Load transform rules from a JSON file to apply multiple name transformations')\n .option('--federation-version <version>', 'Federation version to use', DEFAULT_VERSIONS.federationVersion)\n .option('--connector-spec-version <version>', 'Connector spec version to use', DEFAULT_VERSIONS.connectorSpecVersion)\n .parse(process.argv);\n\nconst source = program.args[0];\nmain(source, program.opts()).then(() => console.log('done'));\n"]}
1
+ {"version":3,"file":"oas.js","sourceRoot":"","sources":["../../src/cli/oas.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command } from 'commander';\nimport { DEFAULT_VERSIONS } from '../versions.js';\nimport { generateFromSelection, promptForSelection } from './oas-helpers/index.js';\nimport { OasGen } from '../oas/oasGen.js';\nimport { RulesLoader, OpNameMapper, MapRules, Mapper } from '../oas/mapper/index.js';\n\nconst originalConsole = Object.assign(\n {\n log: console.log,\n },\n console,\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction loadRules(opts: any): Mapper | undefined {\n let mapper;\n if (opts.transformRules) {\n try {\n const rules = RulesLoader.fromFile(opts.transformRules);\n mapper = OpNameMapper.fromRules(rules);\n } catch (error) {\n console.error(`Error loading transform rules: ${error}`);\n return undefined;\n }\n } else if (opts.postName) {\n // Backward compatibility with legacy --post-name\n mapper = OpNameMapper.fromPattern(opts.postName);\n }\n\n return mapper;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- for options\nasync function main(sourceFile: string, opts: any): Promise<void> {\n console.log = () => {};\n\n const mapper = loadRules(opts);\n\n const gen = await OasGen.fromFile(sourceFile, {\n ...opts,\n consolidateUnions: true,\n showParentInSelections: false,\n federationVersion: opts.federationVersion,\n connectorSpecVersion: opts.connectorSpecVersion,\n postName: opts.postName,\n mapper: mapper,\n });\n\n await gen.visit();\n\n let pathSet = Array.from(gen.paths.values());\n if (opts.loadSelections) {\n generateFromSelection(opts, gen);\n return;\n }\n\n if (opts.grep !== '*') {\n const regex = new RegExp(opts.grep, 'ig');\n pathSet = pathSet.filter((p) => regex.test(p.path()));\n }\n\n if (opts.listPaths) {\n pathSet.forEach((path) => console.info(path.path()));\n return;\n }\n\n let paths: string[];\n if (opts.skipSelection) {\n paths = pathSet.map((p) => p.path() + '>**');\n } else {\n paths = await promptForSelection(gen, opts, pathSet);\n }\n\n if (opts.verbose) console = originalConsole;\n\n console.info(gen.generateSchema(paths));\n\n if (opts.printSelections) {\n console.info('# --------------- Selections -----------------');\n console.info(gen.selections);\n console.info('# --------------- Paths -----------------');\n console.info('paths =', JSON.stringify(paths, null, 2));\n }\n}\n\nconst program = new Command();\nprogram\n .version('0.0.1')\n .argument('<source>', 'source spec (yaml or json)')\n .option('-i --skip-validation', 'Skip validation step', false)\n .option('-n --skip-selection', 'Generate all [filtered] paths without prompting for a selection', false)\n .option('-l --list-paths', 'Only list the paths that can be generated', false)\n .option('-g --grep <regex>', 'Filter the list of paths with the passed expression', '*')\n .option('-p --page-size <num>', 'Number of rows to display in selection mode', '10')\n .option('-s --load-selections <file>', 'Load a JSON file with field selections (other options are ignored)')\n .option('-v --verbose', 'Log all messages from generator')\n .option('-m --print-selections', 'Print selections from generator')\n .option('-t --transform-rules <file>', 'Load transform rules from a JSON file to apply multiple name transformations')\n .option('--federation-version <version>', 'Federation version to use', DEFAULT_VERSIONS.federationVersion)\n .option('--connector-spec-version <version>', 'Connector spec version to use', DEFAULT_VERSIONS.connectorSpecVersion)\n .parse(process.argv);\n\nconst source = program.args[0];\nmain(source, program.opts()).then(() => console.log('done'));\n"]}
@@ -1,5 +1,5 @@
1
1
  import { MapRules as MapRules } from './types.js';
2
2
  export declare class RulesLoader {
3
3
  static fromFile(filePath: string): MapRules;
4
- static loadFromString(content: string): MapRules;
4
+ static fromString(json: string): MapRules;
5
5
  }
@@ -5,10 +5,13 @@ export class RulesLoader {
5
5
  throw new Error(`Transform rules file not found: ${filePath}`);
6
6
  }
7
7
  const content = fs.readFileSync(filePath, 'utf-8');
8
- const rules = JSON.parse(content);
8
+ return RulesLoader.fromString(content);
9
+ }
10
+ static fromString(json) {
11
+ const rules = JSON.parse(json);
9
12
  // Validate the structure
10
13
  if (!rules.rules || !Array.isArray(rules.rules)) {
11
- throw new Error('Invalid transform rules file: missing or invalid "rules" array');
14
+ throw new Error('Invalid transform rules: missing or invalid "rules" array');
12
15
  }
13
16
  // Validate each rule
14
17
  rules.rules.forEach((rule, index) => {
@@ -21,13 +24,5 @@ export class RulesLoader {
21
24
  });
22
25
  return rules;
23
26
  }
24
- static loadFromString(content) {
25
- const rules = JSON.parse(content);
26
- // Validate the structure
27
- if (!rules.rules || !Array.isArray(rules.rules)) {
28
- throw new Error('Invalid transform rules: missing or invalid "rules" array');
29
- }
30
- return rules;
31
- }
32
27
  }
33
28
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/oas/mapper/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,OAAO,WAAW;IACf,MAAM,CAAC,QAAQ,CAAC,QAAgB;QACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE5C,yBAAyB;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,qBAAqB;QACrB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAa,EAAE,KAAa,EAAE,EAAE;YACnD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,gCAAgC,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,oCAAoC,CAAC,CAAC;YACtF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,OAAe;QAC1C,MAAM,KAAK,GAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE5C,yBAAyB;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["import fs from 'fs';\nimport { MapRules as MapRules, MapRule } from './types.js';\n\nexport class RulesLoader {\n public static fromFile(filePath: string): MapRules {\n if (!fs.existsSync(filePath)) {\n throw new Error(`Transform rules file not found: ${filePath}`);\n }\n\n const content = fs.readFileSync(filePath, 'utf-8');\n const rules: MapRules = JSON.parse(content);\n\n // Validate the structure\n if (!rules.rules || !Array.isArray(rules.rules)) {\n throw new Error('Invalid transform rules file: missing or invalid \"rules\" array');\n }\n\n // Validate each rule\n rules.rules.forEach((rule: MapRule, index: number) => {\n if (!rule.pattern || typeof rule.pattern !== 'string') {\n throw new Error(`Invalid rule at index ${index}: missing or invalid \"pattern\"`);\n }\n if (!rule.replacement || typeof rule.replacement !== 'string') {\n throw new Error(`Invalid rule at index ${index}: missing or invalid \"replacement\"`);\n }\n });\n\n return rules;\n }\n\n public static loadFromString(content: string): MapRules {\n const rules: MapRules = JSON.parse(content);\n\n // Validate the structure\n if (!rules.rules || !Array.isArray(rules.rules)) {\n throw new Error('Invalid transform rules: missing or invalid \"rules\" array');\n }\n\n return rules;\n }\n}\n"]}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/oas/mapper/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,OAAO,WAAW;IACf,MAAM,CAAC,QAAQ,CAAC,QAAgB;QACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,OAAO,GAAW,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,IAAY;QACnC,MAAM,KAAK,GAAa,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEzC,yBAAyB;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QAED,qBAAqB;QACrB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAa,EAAE,KAAa,EAAE,EAAE;YACnD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,gCAAgC,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,oCAAoC,CAAC,CAAC;YACtF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["import fs from 'fs';\nimport { MapRules as MapRules, MapRule } from './types.js';\n\nexport class RulesLoader {\n public static fromFile(filePath: string): MapRules {\n if (!fs.existsSync(filePath)) {\n throw new Error(`Transform rules file not found: ${filePath}`);\n }\n\n const content: string = fs.readFileSync(filePath, 'utf-8');\n return RulesLoader.fromString(content);\n }\n\n public static fromString(json: string): MapRules {\n const rules: MapRules = JSON.parse(json);\n\n // Validate the structure\n if (!rules.rules || !Array.isArray(rules.rules)) {\n throw new Error('Invalid transform rules: missing or invalid \"rules\" array');\n }\n\n // Validate each rule\n rules.rules.forEach((rule: MapRule, index: number) => {\n if (!rule.pattern || typeof rule.pattern !== 'string') {\n throw new Error(`Invalid rule at index ${index}: missing or invalid \"pattern\"`);\n }\n if (!rule.replacement || typeof rule.replacement !== 'string') {\n throw new Error(`Invalid rule at index ${index}: missing or invalid \"replacement\"`);\n }\n });\n\n return rules;\n }\n}\n"]}
@@ -3,6 +3,7 @@ export declare class OpNameMapper implements Mapper {
3
3
  private rules;
4
4
  constructor(rules: MapRules);
5
5
  operationName(name: string): string;
6
+ static fromString(json: string): OpNameMapper;
6
7
  static fromRules(rules: MapRules): OpNameMapper;
7
8
  static fromPattern(pattern: string): OpNameMapper;
8
9
  }
@@ -1,3 +1,4 @@
1
+ import { RulesLoader } from './loader.js';
1
2
  export class OpNameMapper {
2
3
  rules;
3
4
  constructor(rules) {
@@ -25,6 +26,10 @@ export class OpNameMapper {
25
26
  }
26
27
  return mappedName;
27
28
  }
29
+ static fromString(json) {
30
+ const rules = RulesLoader.fromString(json);
31
+ return new OpNameMapper(rules);
32
+ }
28
33
  static fromRules(rules) {
29
34
  return new OpNameMapper(rules);
30
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nameMapper.js","sourceRoot":"","sources":["../../../src/oas/mapper/nameMapper.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IACf,KAAK,CAA2C;IAExD,YAAY,KAAe;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;aACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC;aACxC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,wBAAwB;aAC9E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,IAAI,CAAC;gBACH,OAAO;oBACL,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,IAAI,EAAkD,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACrF,CAAC;IAEM,aAAa,CAAC,IAAY;QAC/B,IAAI,UAAU,GAAG,IAAI,CAAC;QAEtB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,KAAe;QACrC,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,OAAe;QACvC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,KAAK,GAAa;YACtB,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,YAAY;oBACrB,WAAW,EAAE,WAAW,IAAI,IAAI;iBACjC;aACF;SACF,CAAC;QACF,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF","sourcesContent":["import { MapRules as MapRules, Mapper } from './types.js';\n\nexport class OpNameMapper implements Mapper {\n private rules: { regex: RegExp; replacement: string }[];\n\n constructor(rules: MapRules) {\n this.rules = rules.rules\n .filter((rule) => rule.enabled !== false)\n .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0)) // Higher priority first\n .map((rule) => {\n try {\n return {\n regex: new RegExp(rule.pattern),\n replacement: rule.replacement,\n };\n } catch (error) {\n console.warn(`Invalid regex pattern \"${rule.pattern}\": ${error}`);\n return null;\n }\n })\n .filter((rule): rule is { regex: RegExp; replacement: string } => rule !== null);\n }\n\n public operationName(name: string): string {\n let mappedName = name;\n\n for (const rule of this.rules) {\n mappedName = mappedName.replace(rule.regex, rule.replacement);\n }\n\n return mappedName;\n }\n\n public static fromRules(rules: MapRules): OpNameMapper {\n return new OpNameMapper(rules);\n }\n\n public static fromPattern(pattern: string): OpNameMapper {\n const [regexPattern, replacement] = pattern.split(':');\n const rules: MapRules = {\n rules: [\n {\n pattern: regexPattern,\n replacement: replacement || '$1',\n },\n ],\n };\n return new OpNameMapper(rules);\n }\n}\n"]}
1
+ {"version":3,"file":"nameMapper.js","sourceRoot":"","sources":["../../../src/oas/mapper/nameMapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,OAAO,YAAY;IACf,KAAK,CAA2C;IAExD,YAAY,KAAe;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;aACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC;aACxC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,wBAAwB;aAC9E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,IAAI,CAAC;gBACH,OAAO;oBACL,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,IAAI,EAAkD,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACrF,CAAC;IAEM,aAAa,CAAC,IAAY;QAC/B,IAAI,UAAU,GAAG,IAAI,CAAC;QAEtB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,IAAY;QACnC,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,KAAe;QACrC,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,OAAe;QACvC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,KAAK,GAAa;YACtB,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,YAAY;oBACrB,WAAW,EAAE,WAAW,IAAI,IAAI;iBACjC;aACF;SACF,CAAC;QACF,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF","sourcesContent":["import { RulesLoader } from './loader.js';\nimport { MapRules as MapRules, Mapper } from './types.js';\n\nexport class OpNameMapper implements Mapper {\n private rules: { regex: RegExp; replacement: string }[];\n\n constructor(rules: MapRules) {\n this.rules = rules.rules\n .filter((rule) => rule.enabled !== false)\n .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0)) // Higher priority first\n .map((rule) => {\n try {\n return {\n regex: new RegExp(rule.pattern),\n replacement: rule.replacement,\n };\n } catch (error) {\n console.warn(`Invalid regex pattern \"${rule.pattern}\": ${error}`);\n return null;\n }\n })\n .filter((rule): rule is { regex: RegExp; replacement: string } => rule !== null);\n }\n\n public operationName(name: string): string {\n let mappedName = name;\n\n for (const rule of this.rules) {\n mappedName = mappedName.replace(rule.regex, rule.replacement);\n }\n\n return mappedName;\n }\n\n public static fromString(json: string): OpNameMapper {\n const rules = RulesLoader.fromString(json);\n return new OpNameMapper(rules);\n }\n\n public static fromRules(rules: MapRules): OpNameMapper {\n return new OpNameMapper(rules);\n }\n\n public static fromPattern(pattern: string): OpNameMapper {\n const [regexPattern, replacement] = pattern.split(':');\n const rules: MapRules = {\n rules: [\n {\n pattern: regexPattern,\n replacement: replacement || '$1',\n },\n ],\n };\n return new OpNameMapper(rules);\n }\n}\n"]}
@@ -7,6 +7,7 @@ export declare class Factory {
7
7
  static fromSchema(context: OasContext, parent: IType, inputSchema: SchemaObject | ReferenceObject): IType;
8
8
  private static createScalarType;
9
9
  private static createContainerType;
10
+ private static isMapSchema;
10
11
  private static createArrayType;
11
12
  static fromProp(context: OasContext, parent: IType, propName: string, inputSchema: SchemaObject | ReferenceObject): Prop;
12
13
  static fromResponse(_context: OasContext, parent: IType, mediaSchema: SchemaObject): IType;
@@ -1,4 +1,4 @@
1
- import { Arr, Body, CircularRef, Composed, Delete, En, Get, Obj, Param, Patch, Post, PropArray, PropCircRef, PropComp, PropObj, PropScalar, Put, Res, Scalar, T, Union, PropEn, } from './internal.js';
1
+ import { Arr, Body, CircularRef, Composed, Delete, En, Get, Map, Obj, Param, Patch, Post, PropArray, PropCircRef, PropComp, PropMap, PropObj, PropScalar, Put, Res, Scalar, T, Union, PropEn, } from './internal.js';
2
2
  import _ from 'lodash';
3
3
  import { warn } from '../log/trace.js';
4
4
  import { GqlUtils } from '../utils/gql.js';
@@ -81,6 +81,10 @@ export class Factory {
81
81
  const oneOfs = schema.oneOf || [];
82
82
  result = new Union(parent, ref || _.get(schema, 'name'), oneOfs);
83
83
  }
84
+ // map (object with only additionalProperties)
85
+ else if (this.isMapSchema(schema)) {
86
+ result = new Map(parent, ref || _.get(schema, 'name') || null, schema);
87
+ }
84
88
  // or a plain obj
85
89
  else {
86
90
  if (!schema.properties) {
@@ -94,6 +98,14 @@ export class Factory {
94
98
  }
95
99
  return result;
96
100
  }
101
+ static isMapSchema(schema) {
102
+ // A schema is considered a map if:
103
+ // 1. It has additionalProperties defined as an object
104
+ // 2. It has no explicit properties OR has empty properties
105
+ return Boolean(schema.additionalProperties &&
106
+ typeof schema.additionalProperties === 'object' &&
107
+ (!schema.properties || _.isEmpty(schema.properties)));
108
+ }
97
109
  static createArrayType(parent, schema, context) {
98
110
  // Array schema case.
99
111
  let parentName = parent.name;
@@ -152,6 +164,12 @@ export class Factory {
152
164
  propComp.comp = new Composed(propComp, ref || _.get(schemaObj, 'name'), schemaObj);
153
165
  prop = propComp;
154
166
  }
167
+ else if (this.isMapSchema(schemaObj)) {
168
+ console.log('isMapSchema', schemaObj);
169
+ // Map property: object with only additionalProperties
170
+ const mapType = new Map(parent, ref || propName, schemaObj);
171
+ prop = new PropMap(parent, propName, schemaObj, mapType);
172
+ }
155
173
  else if (schemaObj.properties != null) {
156
174
  const propType = new Obj(parent, ref || propName, schemaObj);
157
175
  prop = new PropObj(parent, propName, schemaObj, propType);
@@ -191,6 +209,11 @@ export class Factory {
191
209
  propComp.comp = new Composed(propComp, ref || _.get(schemaObj, 'name'), schemaObj);
192
210
  prop = propComp;
193
211
  }
212
+ else if (this.isMapSchema(schemaObj)) {
213
+ // Map property: object with only additionalProperties (no explicit type)
214
+ const mapType = new Map(parent, ref || propName, schemaObj);
215
+ prop = new PropMap(parent, propName, schemaObj, mapType);
216
+ }
194
217
  else if (schemaObj.properties != null) {
195
218
  const propType = new Obj(parent, ref || propName, schemaObj);
196
219
  prop = new PropObj(parent, propName, schemaObj, propType);
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/oas/nodes/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Arr,\n Body,\n CircularRef,\n Composed,\n Delete,\n En,\n Get,\n IType,\n Obj,\n Param,\n Patch,\n Post,\n Prop,\n PropArray,\n PropCircRef,\n PropComp,\n PropObj,\n PropScalar,\n Put,\n ReferenceObject,\n Res,\n Scalar,\n T,\n Union,\n PropEn,\n} from './internal.js';\nimport { Operation } from 'oas/operation';\nimport { ParameterObject, SchemaObject } from 'oas/types';\nimport { OpenAPIV3 } from 'openapi-types';\nimport _ from 'lodash';\nimport { warn } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { GqlUtils } from '../utils/gql.js';\nimport { APOLLO_SYNTHETIC_OBJ } from '../schemas/index.js';\nimport ArraySchemaObject = OpenAPIV3.ArraySchemaObject;\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(context: OasContext, parent: IType, inputSchema: SchemaObject | ReferenceObject): IType {\n let result: IType | null = null;\n let schema: SchemaObject | ReferenceObject | undefined = inputSchema;\n let ref: string | undefined;\n\n // resolve first if reference\n if ('$ref' in schema) {\n // result = new Ref(parent, schema.$ref as string, schema as ReferenceObject);\n ref = schema?.$ref;\n if (ref) schema = context.lookupRef(ref) as SchemaObject;\n }\n\n if (!schema) throw new Error('Unknown or undefined schema');\n const schemaObj: SchemaObject = schema as SchemaObject;\n\n // array case\n if (schemaObj.type === 'array' && schemaObj.items) {\n result = this.createArrayType(parent, schemaObj, context);\n }\n // array case\n else if (\n schemaObj?.type === 'object' ||\n schemaObj?.oneOf ||\n schemaObj?.allOf ||\n schemaObj?.anyOf ||\n !_.isEmpty(schemaObj.properties)\n ) {\n result = this.createContainerType(parent, schemaObj, ref);\n }\n // scalar\n else {\n result = this.createScalarType(schemaObj, parent);\n }\n\n // we could not infer a proper type\n if (result == null) {\n throw new Error(`Not yet implemented for ${JSON.stringify(schemaObj)}`);\n }\n\n return result;\n }\n\n private static createScalarType(schema: SchemaObject | null, parent: IType) {\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 return new En(parent, 'enum', schema, schema.enum! as string[]);\n }\n // scalar case\n else if (GqlUtils.gqlScalar(typeStr as string)) {\n const scalarType = GqlUtils.getGQLScalarType(schema!);\n return new Scalar(parent, scalarType, schema!);\n }\n // or we have no idea how to handle this\n else {\n throw new Error(`Cannot handle property type ${typeStr}, schema: ${JSON.stringify(schema)}`);\n }\n } else if (schema?.enum != null) {\n return new En(parent, 'enum', schema, _.get(schema, 'enum') as string[]);\n }\n // or we have no idea how to handle this\n else {\n throw new Error(`Cannot handle schema ${parent.pathToRoot()}, schema: ${JSON.stringify(schema)}`);\n }\n }\n\n private static createContainerType(parent: IType, schema: SchemaObject, ref?: string) {\n let result: IType | null;\n\n // composed object\n if (schema.allOf) {\n result = new Composed(parent, ref || _.get(schema, 'name'), schema);\n }\n // union\n else if (schema.oneOf || schema.anyOf) {\n const oneOfs = schema.oneOf || [];\n result = new Union(parent, ref || _.get(schema, 'name'), oneOfs as SchemaObject[]);\n }\n // or a plain obj\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, ref || _.get(schema, 'name') || null, schema);\n\n // if we want to syntethise an object:\n if (schema.format == APOLLO_SYNTHETIC_OBJ) {\n (result as Obj).synthetic = true;\n }\n }\n\n return result;\n }\n\n private static createArrayType(parent: IType | Res, schema: SchemaObject | null, context: OasContext) {\n // Array schema case.\n let parentName = parent.name;\n if (parent instanceof Res) {\n const get = parent.parent as Get; // Assume parent.parent is a GetOp.\n parentName = _.upperFirst(get.getGqlOpName());\n }\n\n const arr = new Arr(parent, parentName);\n const items = _.get(schema, 'items') as ArraySchemaObject;\n arr.items = items;\n\n // TODO: check this\n arr.itemsType = Factory.fromSchema(context, arr, items);\n arr.add(arr.itemsType); // add it to the children\n\n return arr;\n }\n\n public static fromProp(\n context: OasContext,\n parent: IType,\n propName: string,\n inputSchema: SchemaObject | ReferenceObject,\n ): Prop {\n if (!inputSchema) {\n throw new Error(`Should have a schema defined for property '${propName}' (parent: '${parent.name}')`);\n }\n\n let schema: SchemaObject | ReferenceObject | null = inputSchema;\n\n let prop: Prop;\n let ref: string | undefined;\n\n if (!_.get(schema, 'type') && '$ref' in schema) {\n ref = (schema as ReferenceObject).$ref;\n schema = context.lookupRef(ref);\n // this was a prop ref, but now needs to be returned as the ref directly?\n // prop = new PropRef(parent, propName, schema, ref);\n // return prop;\n }\n\n // uses the type of the schema to find out what kind of property it is\n const schemaObj = schema as SchemaObject;\n const type = schemaObj.type;\n\n if (type) {\n // 1st case is if the type is an array\n if (type === 'array') {\n const array = new PropArray(parent, propName, schema!);\n // const itemsName = Naming.genArrayItems(propName);\n\n const itemsSchema = _.get(schemaObj, 'items') as ArraySchemaObject;\n // const itemsType = Factory.fromProp(context, array, itemsName, itemsSchema); // TODO: re-test\n const itemsType = Factory.fromSchema(context, array, itemsSchema);\n\n array.setItems(itemsType);\n prop = array;\n }\n // 2nd checks for obj property\n else if (\n schemaObj?.type === 'object' ||\n schemaObj?.oneOf ||\n schemaObj?.allOf ||\n !_.isEmpty(schemaObj.properties)\n ) {\n if (schemaObj.oneOf) {\n const inner: PropComp = new PropComp(parent, propName, schemaObj);\n inner.comp = new Union(inner, ref || _.get(schemaObj, 'name'), schemaObj.oneOf as SchemaObject[]);\n prop = inner;\n } else if (schemaObj.allOf) {\n const propComp: PropComp = new PropComp(parent, propName, schemaObj);\n propComp.comp = new Composed(propComp, ref || _.get(schemaObj, 'name'), schemaObj);\n prop = propComp;\n } else if (schemaObj.properties != null) {\n const propType: IType = new Obj(parent, ref || propName, schemaObj);\n prop = new PropObj(parent, propName, schemaObj, propType);\n } else {\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, ref || propName, schemaObj);\n prop = new PropObj(parent, propName, schemaObj, propType);\n }\n } else if (ref && schemaObj?.enum) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- for options\n const stringEnum = _.every(schemaObj.enum, (value: any, _: string) => typeof value === 'string');\n const en: En = new En(parent, ref, schemaObj, stringEnum ? (schemaObj.enum as string[]) : []);\n\n prop = new PropEn(parent, propName, ref, schemaObj);\n prop.add(en);\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, propName, scalar as string, schemaObj);\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 // TODO: repeated code\n else if (schemaObj.oneOf) {\n const inner: PropComp = new PropComp(parent, propName, schemaObj);\n inner.comp = new Union(inner, ref || _.get(schemaObj, 'name'), schemaObj.oneOf as SchemaObject[]);\n prop = inner;\n } else if (schemaObj.allOf) {\n const propComp: PropComp = new PropComp(parent, propName, schemaObj);\n propComp.comp = new Composed(propComp, ref || _.get(schemaObj, 'name'), schemaObj);\n prop = propComp;\n } else if (schemaObj.properties != null) {\n const propType: IType = new Obj(parent, ref || propName, schemaObj);\n prop = new PropObj(parent, propName, schemaObj, 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, propName, 'JSON', schemaObj);\n }\n\n if (parent.ancestors().find((a) => a.id === prop.id)) {\n console.warn('[factory] Recursion detected! Ancestors already contain this type: \\n' + prop.id);\n prop = new PropCircRef(parent, prop);\n }\n\n return prop;\n }\n\n public static fromResponse(_context: OasContext, parent: IType, mediaSchema: SchemaObject): IType {\n return new Res(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 _tree = T.print(parent);\n\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 public static fromPost(name: string, op: Operation): Post {\n return new Post(name, op);\n }\n\n public static fromPut(name: string, op: Operation): Post {\n return new Put(name, op);\n }\n\n public static fromPatch(name: string, op: Operation): Post {\n return new Patch(name, op);\n }\n\n public static fromDelete(name: string, op: Operation): Post {\n return new Delete(name, op);\n }\n\n public static fromBody(_context: OasContext, parent: IType, schema: SchemaObject): IType {\n const body = new Body(parent, 'b', schema);\n parent.add(body);\n return body;\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 Arr,\n Body,\n CircularRef,\n Composed,\n Delete,\n En,\n Get,\n IType,\n Map,\n Obj,\n Param,\n Patch,\n Post,\n Prop,\n PropArray,\n PropCircRef,\n PropComp,\n PropMap,\n PropObj,\n PropScalar,\n Put,\n ReferenceObject,\n Res,\n Scalar,\n T,\n Union,\n PropEn,\n} from './internal.js';\nimport { Operation } from 'oas/operation';\nimport { ParameterObject, SchemaObject } from 'oas/types';\nimport { OpenAPIV3 } from 'openapi-types';\nimport _ from 'lodash';\nimport { warn } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { GqlUtils } from '../utils/gql.js';\nimport { APOLLO_SYNTHETIC_OBJ } from '../schemas/index.js';\nimport ArraySchemaObject = OpenAPIV3.ArraySchemaObject;\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(context: OasContext, parent: IType, inputSchema: SchemaObject | ReferenceObject): IType {\n let result: IType | null = null;\n let schema: SchemaObject | ReferenceObject | undefined = inputSchema;\n let ref: string | undefined;\n\n // resolve first if reference\n if ('$ref' in schema) {\n // result = new Ref(parent, schema.$ref as string, schema as ReferenceObject);\n ref = schema?.$ref;\n if (ref) schema = context.lookupRef(ref) as SchemaObject;\n }\n\n if (!schema) throw new Error('Unknown or undefined schema');\n const schemaObj: SchemaObject = schema as SchemaObject;\n\n // array case\n if (schemaObj.type === 'array' && schemaObj.items) {\n result = this.createArrayType(parent, schemaObj, context);\n }\n // array case\n else if (\n schemaObj?.type === 'object' ||\n schemaObj?.oneOf ||\n schemaObj?.allOf ||\n schemaObj?.anyOf ||\n !_.isEmpty(schemaObj.properties)\n ) {\n result = this.createContainerType(parent, schemaObj, ref);\n }\n // scalar\n else {\n result = this.createScalarType(schemaObj, parent);\n }\n\n // we could not infer a proper type\n if (result == null) {\n throw new Error(`Not yet implemented for ${JSON.stringify(schemaObj)}`);\n }\n\n return result;\n }\n\n private static createScalarType(schema: SchemaObject | null, parent: IType) {\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 return new En(parent, 'enum', schema, schema.enum! as string[]);\n }\n // scalar case\n else if (GqlUtils.gqlScalar(typeStr as string)) {\n const scalarType = GqlUtils.getGQLScalarType(schema!);\n return new Scalar(parent, scalarType, schema!);\n }\n // or we have no idea how to handle this\n else {\n throw new Error(`Cannot handle property type ${typeStr}, schema: ${JSON.stringify(schema)}`);\n }\n } else if (schema?.enum != null) {\n return new En(parent, 'enum', schema, _.get(schema, 'enum') as string[]);\n }\n // or we have no idea how to handle this\n else {\n throw new Error(`Cannot handle schema ${parent.pathToRoot()}, schema: ${JSON.stringify(schema)}`);\n }\n }\n\n private static createContainerType(parent: IType, schema: SchemaObject, ref?: string) {\n let result: IType | null;\n\n // composed object\n if (schema.allOf) {\n result = new Composed(parent, ref || _.get(schema, 'name'), schema);\n }\n // union\n else if (schema.oneOf || schema.anyOf) {\n const oneOfs = schema.oneOf || [];\n result = new Union(parent, ref || _.get(schema, 'name'), oneOfs as SchemaObject[]);\n }\n // map (object with only additionalProperties)\n else if (this.isMapSchema(schema)) {\n result = new Map(parent, ref || _.get(schema, 'name') || null, schema);\n }\n // or a plain obj\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, ref || _.get(schema, 'name') || null, schema);\n\n // if we want to syntethise an object:\n if (schema.format == APOLLO_SYNTHETIC_OBJ) {\n (result as Obj).synthetic = true;\n }\n }\n\n return result;\n }\n\n private static isMapSchema(schema: SchemaObject): boolean {\n // A schema is considered a map if:\n // 1. It has additionalProperties defined as an object\n // 2. It has no explicit properties OR has empty properties\n return Boolean(\n schema.additionalProperties &&\n typeof schema.additionalProperties === 'object' &&\n (!schema.properties || _.isEmpty(schema.properties)),\n );\n }\n\n private static createArrayType(parent: IType | Res, schema: SchemaObject | null, context: OasContext) {\n // Array schema case.\n let parentName = parent.name;\n if (parent instanceof Res) {\n const get = parent.parent as Get; // Assume parent.parent is a GetOp.\n parentName = _.upperFirst(get.getGqlOpName());\n }\n\n const arr = new Arr(parent, parentName);\n const items = _.get(schema, 'items') as ArraySchemaObject;\n arr.items = items;\n\n // TODO: check this\n arr.itemsType = Factory.fromSchema(context, arr, items);\n arr.add(arr.itemsType); // add it to the children\n\n return arr;\n }\n\n public static fromProp(\n context: OasContext,\n parent: IType,\n propName: string,\n inputSchema: SchemaObject | ReferenceObject,\n ): Prop {\n if (!inputSchema) {\n throw new Error(`Should have a schema defined for property '${propName}' (parent: '${parent.name}')`);\n }\n\n let schema: SchemaObject | ReferenceObject | null = inputSchema;\n\n let prop: Prop;\n let ref: string | undefined;\n\n if (!_.get(schema, 'type') && '$ref' in schema) {\n ref = (schema as ReferenceObject).$ref;\n schema = context.lookupRef(ref);\n // this was a prop ref, but now needs to be returned as the ref directly?\n // prop = new PropRef(parent, propName, schema, ref);\n // return prop;\n }\n\n // uses the type of the schema to find out what kind of property it is\n const schemaObj = schema as SchemaObject;\n const type = schemaObj.type;\n\n if (type) {\n // 1st case is if the type is an array\n if (type === 'array') {\n const array = new PropArray(parent, propName, schema!);\n // const itemsName = Naming.genArrayItems(propName);\n\n const itemsSchema = _.get(schemaObj, 'items') as ArraySchemaObject;\n // const itemsType = Factory.fromProp(context, array, itemsName, itemsSchema); // TODO: re-test\n const itemsType = Factory.fromSchema(context, array, itemsSchema);\n\n array.setItems(itemsType);\n prop = array;\n }\n // 2nd checks for obj property\n else if (\n schemaObj?.type === 'object' ||\n schemaObj?.oneOf ||\n schemaObj?.allOf ||\n !_.isEmpty(schemaObj.properties)\n ) {\n if (schemaObj.oneOf) {\n const inner: PropComp = new PropComp(parent, propName, schemaObj);\n inner.comp = new Union(inner, ref || _.get(schemaObj, 'name'), schemaObj.oneOf as SchemaObject[]);\n prop = inner;\n } else if (schemaObj.allOf) {\n const propComp: PropComp = new PropComp(parent, propName, schemaObj);\n propComp.comp = new Composed(propComp, ref || _.get(schemaObj, 'name'), schemaObj);\n prop = propComp;\n } else if (this.isMapSchema(schemaObj)) {\n console.log('isMapSchema', schemaObj);\n // Map property: object with only additionalProperties\n const mapType: Map = new Map(parent, ref || propName, schemaObj);\n prop = new PropMap(parent, propName, schemaObj, mapType);\n } else if (schemaObj.properties != null) {\n const propType: IType = new Obj(parent, ref || propName, schemaObj);\n prop = new PropObj(parent, propName, schemaObj, propType);\n } else {\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, ref || propName, schemaObj);\n prop = new PropObj(parent, propName, schemaObj, propType);\n }\n } else if (ref && schemaObj?.enum) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- for options\n const stringEnum = _.every(schemaObj.enum, (value: any, _: string) => typeof value === 'string');\n const en: En = new En(parent, ref, schemaObj, stringEnum ? (schemaObj.enum as string[]) : []);\n\n prop = new PropEn(parent, propName, ref, schemaObj);\n prop.add(en);\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, propName, scalar as string, schemaObj);\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 // TODO: repeated code\n else if (schemaObj.oneOf) {\n const inner: PropComp = new PropComp(parent, propName, schemaObj);\n inner.comp = new Union(inner, ref || _.get(schemaObj, 'name'), schemaObj.oneOf as SchemaObject[]);\n prop = inner;\n } else if (schemaObj.allOf) {\n const propComp: PropComp = new PropComp(parent, propName, schemaObj);\n propComp.comp = new Composed(propComp, ref || _.get(schemaObj, 'name'), schemaObj);\n prop = propComp;\n } else if (this.isMapSchema(schemaObj)) {\n // Map property: object with only additionalProperties (no explicit type)\n const mapType: Map = new Map(parent, ref || propName, schemaObj);\n prop = new PropMap(parent, propName, schemaObj, mapType);\n } else if (schemaObj.properties != null) {\n const propType: IType = new Obj(parent, ref || propName, schemaObj);\n prop = new PropObj(parent, propName, schemaObj, 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, propName, 'JSON', schemaObj);\n }\n\n if (parent.ancestors().find((a) => a.id === prop.id)) {\n console.warn('[factory] Recursion detected! Ancestors already contain this type: \\n' + prop.id);\n prop = new PropCircRef(parent, prop);\n }\n\n return prop;\n }\n\n public static fromResponse(_context: OasContext, parent: IType, mediaSchema: SchemaObject): IType {\n return new Res(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 _tree = T.print(parent);\n\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 public static fromPost(name: string, op: Operation): Post {\n return new Post(name, op);\n }\n\n public static fromPut(name: string, op: Operation): Post {\n return new Put(name, op);\n }\n\n public static fromPatch(name: string, op: Operation): Post {\n return new Patch(name, op);\n }\n\n public static fromDelete(name: string, op: Operation): Post {\n return new Delete(name, op);\n }\n\n public static fromBody(_context: OasContext, parent: IType, schema: SchemaObject): IType {\n const body = new Body(parent, 'b', schema);\n parent.add(body);\n return body;\n }\n}\n"]}
@@ -119,9 +119,9 @@ export class Get extends Type {
119
119
  // If the response has a content property, we need to find the JSON content.
120
120
  else if (content) {
121
121
  const availableKeys = _.keys(response.content);
122
- warn(context, ` [${code}]`, `Available content types: ${availableKeys.join(', ')}`);
122
+ trace(context, ` [${code}]`, `Available content types: ${availableKeys.join(', ')}`);
123
123
  const keys = _.first(availableKeys.filter((k) => /^application\/(?:.*\+)?json/i.test(k)));
124
- warn(context, ` [${code}]`, `Matched JSON key: ${keys || 'none'}`);
124
+ trace(context, ` [${code}]`, `Matched JSON key: ${keys || 'none'}`);
125
125
  const json = keys ? response.content[keys] : undefined;
126
126
  if (!json) {
127
127
  warn(context, ` [${code}]`, 'No JSON content found!');
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/oas/nodes/get.ts"],"names":[],"mappings":"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","sourcesContent":["import { IType, Type, Param, ReferenceObject, Factory, Op } from './internal.js';\nimport { Operation } from 'oas/operation';\nimport { MediaTypeObject, ParameterObject, ResponseObject, SchemaObject } from 'oas/types';\n\nimport { trace, warn } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\nimport { SYN_SUCCESS_RESPONSE } from '../schemas/index.js';\nimport _ from 'lodash';\n\nexport class Get extends Type implements Op {\n public verb: string = 'GET';\n\n public resultType?: IType;\n public params: Param[] = [];\n public summary?: string;\n public description?: string;\n\n constructor(\n name: string,\n public operation: Operation,\n ) {\n super(undefined, name);\n this.summary = operation.getSummary();\n this.description = operation.getDescription();\n }\n\n get id(): string {\n return `get:${this.name}`;\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n trace(context, '-> [get:visit]', this.name + ' already visited.');\n return;\n }\n\n context.enter(this);\n trace(context, '-> [get:visit]', 'in ' + this.name);\n\n // 1. Visit params.\n this.visitParameters(context);\n\n // 2. Visit responses\n this.visitResponses(context);\n this.visited = true;\n\n trace(context, '<- [get:visit]', 'out ' + this.name);\n context.leave(this);\n }\n\n public forPrompt(_context: OasContext): string {\n return `[get] ${this.name}`;\n }\n\n public generate(context: OasContext, writer: Writer, selection: string[]): void {\n context.enter(this);\n trace(context, '-> [get::generate]', `-> in: ${this.name}`);\n\n const description = this.operation.getDescription();\n const summary = this.operation.getSummary();\n const originalPath = this.operation.path;\n\n if (description || summary || originalPath) {\n writer.write(' \"\"\"\\n').write(' ');\n if (description) {\n writer.write(description).write(' ');\n }\n if (summary) {\n writer.write(summary).write(' ');\n }\n if (originalPath) {\n writer.write('(').write(originalPath).write(')');\n }\n writer.write('\\n \"\"\"\\n');\n }\n\n this.writeOpName(context, writer);\n this.generateParameters(context, writer, selection);\n\n if (this.resultType) {\n writer.write(': ');\n this.resultType.generate(context, writer, selection);\n }\n\n writer.write('\\n');\n trace(context, '<- [get::generate]', `-> out: ${this.name}`);\n context.leave(this);\n }\n\n public select(_context: OasContext, _writer: Writer, _selection: string[]) {\n // do nothing\n }\n\n public getGqlOpName(): string {\n return Naming.genOperationName(this.operation.path, this.operation);\n }\n\n protected writeOpName(context: OasContext, writer: Writer): void {\n let name = this.getGqlOpName();\n\n // Use the new name mapper if available, otherwise fall back to legacy postName\n if (context.generateOptions.mapper) {\n name = context.generateOptions.mapper.operationName(name);\n }\n\n writer.write(' ').write(_.lowerFirst(name));\n }\n\n protected visitParameters(context: OasContext): void {\n trace(context, '-> [get::params]', 'in: ' + this.name);\n\n const parameters = this.operation.getParameters();\n\n if (parameters && parameters.length > 0) {\n this.params = parameters\n .filter((p) => !p.in || (p.in && (p.in as string).toLowerCase() !== 'header'))\n .map((p: ParameterObject) => this.visitParameter(context, this, p));\n } else {\n this.params = [];\n }\n\n trace(context, '<- [get::params]', 'out: ' + this.name);\n }\n\n protected visitResponses = (context: OasContext) => {\n const statusCodes = this.operation.getResponseStatusCodes();\n\n if (!statusCodes.includes('200') && !statusCodes.includes('default')) {\n // we can potentially synthesize an Empty response here:\n this.visitResponse(context, '200', SYN_SUCCESS_RESPONSE);\n return;\n }\n\n const responses = this.operation.schema.responses;\n if (responses!['200']) {\n this.visitResponse(context, '200', responses!['200'] as ResponseObject);\n } else if (responses!.default) {\n this.visitResponse(context, 'default', responses!.default as ResponseObject);\n } else {\n throw new Error(\"Could not find a '200' or 'default' response\");\n }\n };\n\n private visitResponse(context: OasContext, code: string, response: ResponseObject): void {\n const content = response.content as MediaTypeObject;\n\n if ('$ref' in response) {\n this.visitResponseRef(context, response as ReferenceObject);\n }\n // If the response has a content property, we need to find the JSON content.\n else if (content) {\n const availableKeys = _.keys(response.content);\n\n warn(context, ` [${code}]`, `Available content types: ${availableKeys.join(', ')}`);\n const keys = _.first(availableKeys.filter((k) => /^application\\/(?:.*\\+)?json/i.test(k)));\n warn(context, ` [${code}]`, `Matched JSON key: ${keys || 'none'}`);\n\n const json = keys ? response.content![keys] : undefined;\n if (!json) {\n warn(context, ` [${code}]`, 'No JSON content found!');\n } else {\n this.visitResponseContent(context, code, json);\n }\n } else if ((code === 'default' || code === '200') && !content) {\n // there is no response for this operation\n // TODO: should we synthesize one?\n this.visitResponse(context, '200', SYN_SUCCESS_RESPONSE);\n } else {\n throw new Error('Not yet implemented for: ' + JSON.stringify(response));\n }\n }\n\n private visitResponseContent(context: OasContext, _code: string, media: MediaTypeObject): void {\n trace(context, '-> [get::responses::content]', 'in ' + this.name);\n const schema = media!.schema as SchemaObject;\n\n if (!schema) {\n throw new Error('No schema content found!');\n }\n\n this.resultType = Factory.fromResponse(context, this, schema);\n // PENDING: do not visit anymore\n // if (this.resultType) {\n // this.resultType.visit(context);\n // }\n\n if (this.resultType && !this.children.includes(this.resultType)) {\n this.add(this.resultType);\n }\n\n trace(context, '<- [get::responses::content]', 'out ' + this.name);\n }\n\n private visitResponseRef(context: OasContext, ref: ReferenceObject): void {\n trace(context, '-> [get::responses::ref]', `in: ${this.name}, ref: ${ref.$ref}`);\n\n const lookup = context.lookupResponse(ref.$ref!);\n if (!lookup) {\n throw new Error('Could not find a response with ref: ' + ref.$ref);\n }\n\n if ('$ref' in lookup) {\n throw new Error('Not yet implemented for nested refs');\n }\n\n this.visitResponse(context, ref.$ref!, lookup as ResponseObject);\n trace(context, '<- [get::responses::ref]', `out: ${this.name}, ref: ${ref.$ref}`);\n }\n\n protected generateParameters(context: OasContext, writer: Writer, selection: string[]): void {\n const sorted = this.params.sort((a, b) => (b.required ? 1 : 0) - (a.required ? 1 : 0));\n\n if (sorted.length === 0) {\n return;\n }\n\n writer.write('(');\n\n sorted.forEach((parameter, index) => {\n if (index > 0) {\n writer.write(', ');\n }\n parameter.generate(context, writer, selection);\n });\n\n writer.write(')');\n }\n\n private visitParameter(context: OasContext, parent: Type, p: ParameterObject): Param {\n trace(context, '->[visitParameter]', 'begin: ' + p.name);\n\n const param = Factory.fromParam(context, parent, p);\n param.visit(context);\n\n trace(context, '<-[visitParameter]', 'end: ' + p.name);\n return param;\n }\n}\n"]}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/oas/nodes/get.ts"],"names":[],"mappings":"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","sourcesContent":["import { IType, Type, Param, ReferenceObject, Factory, Op } from './internal.js';\nimport { Operation } from 'oas/operation';\nimport { MediaTypeObject, ParameterObject, ResponseObject, SchemaObject } from 'oas/types';\n\nimport { trace, warn } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\nimport { SYN_SUCCESS_RESPONSE } from '../schemas/index.js';\nimport _ from 'lodash';\n\nexport class Get extends Type implements Op {\n public verb: string = 'GET';\n\n public resultType?: IType;\n public params: Param[] = [];\n public summary?: string;\n public description?: string;\n\n constructor(\n name: string,\n public operation: Operation,\n ) {\n super(undefined, name);\n this.summary = operation.getSummary();\n this.description = operation.getDescription();\n }\n\n get id(): string {\n return `get:${this.name}`;\n }\n\n public visit(context: OasContext): void {\n if (this.visited) {\n trace(context, '-> [get:visit]', this.name + ' already visited.');\n return;\n }\n\n context.enter(this);\n trace(context, '-> [get:visit]', 'in ' + this.name);\n\n // 1. Visit params.\n this.visitParameters(context);\n\n // 2. Visit responses\n this.visitResponses(context);\n this.visited = true;\n\n trace(context, '<- [get:visit]', 'out ' + this.name);\n context.leave(this);\n }\n\n public forPrompt(_context: OasContext): string {\n return `[get] ${this.name}`;\n }\n\n public generate(context: OasContext, writer: Writer, selection: string[]): void {\n context.enter(this);\n trace(context, '-> [get::generate]', `-> in: ${this.name}`);\n\n const description = this.operation.getDescription();\n const summary = this.operation.getSummary();\n const originalPath = this.operation.path;\n\n if (description || summary || originalPath) {\n writer.write(' \"\"\"\\n').write(' ');\n if (description) {\n writer.write(description).write(' ');\n }\n if (summary) {\n writer.write(summary).write(' ');\n }\n if (originalPath) {\n writer.write('(').write(originalPath).write(')');\n }\n writer.write('\\n \"\"\"\\n');\n }\n\n this.writeOpName(context, writer);\n this.generateParameters(context, writer, selection);\n\n if (this.resultType) {\n writer.write(': ');\n this.resultType.generate(context, writer, selection);\n }\n\n writer.write('\\n');\n trace(context, '<- [get::generate]', `-> out: ${this.name}`);\n context.leave(this);\n }\n\n public select(_context: OasContext, _writer: Writer, _selection: string[]) {\n // do nothing\n }\n\n public getGqlOpName(): string {\n return Naming.genOperationName(this.operation.path, this.operation);\n }\n\n protected writeOpName(context: OasContext, writer: Writer): void {\n let name = this.getGqlOpName();\n\n // Use the new name mapper if available, otherwise fall back to legacy postName\n if (context.generateOptions.mapper) {\n name = context.generateOptions.mapper.operationName(name);\n }\n\n writer.write(' ').write(_.lowerFirst(name));\n }\n\n protected visitParameters(context: OasContext): void {\n trace(context, '-> [get::params]', 'in: ' + this.name);\n\n const parameters = this.operation.getParameters();\n\n if (parameters && parameters.length > 0) {\n this.params = parameters\n .filter((p) => !p.in || (p.in && (p.in as string).toLowerCase() !== 'header'))\n .map((p: ParameterObject) => this.visitParameter(context, this, p));\n } else {\n this.params = [];\n }\n\n trace(context, '<- [get::params]', 'out: ' + this.name);\n }\n\n protected visitResponses = (context: OasContext) => {\n const statusCodes = this.operation.getResponseStatusCodes();\n\n if (!statusCodes.includes('200') && !statusCodes.includes('default')) {\n // we can potentially synthesize an Empty response here:\n this.visitResponse(context, '200', SYN_SUCCESS_RESPONSE);\n return;\n }\n\n const responses = this.operation.schema.responses;\n if (responses!['200']) {\n this.visitResponse(context, '200', responses!['200'] as ResponseObject);\n } else if (responses!.default) {\n this.visitResponse(context, 'default', responses!.default as ResponseObject);\n } else {\n throw new Error(\"Could not find a '200' or 'default' response\");\n }\n };\n\n private visitResponse(context: OasContext, code: string, response: ResponseObject): void {\n const content = response.content as MediaTypeObject;\n\n if ('$ref' in response) {\n this.visitResponseRef(context, response as ReferenceObject);\n }\n // If the response has a content property, we need to find the JSON content.\n else if (content) {\n const availableKeys = _.keys(response.content);\n\n trace(context, ` [${code}]`, `Available content types: ${availableKeys.join(', ')}`);\n const keys = _.first(availableKeys.filter((k) => /^application\\/(?:.*\\+)?json/i.test(k)));\n trace(context, ` [${code}]`, `Matched JSON key: ${keys || 'none'}`);\n\n const json = keys ? response.content![keys] : undefined;\n if (!json) {\n warn(context, ` [${code}]`, 'No JSON content found!');\n } else {\n this.visitResponseContent(context, code, json);\n }\n } else if ((code === 'default' || code === '200') && !content) {\n // there is no response for this operation\n // TODO: should we synthesize one?\n this.visitResponse(context, '200', SYN_SUCCESS_RESPONSE);\n } else {\n throw new Error('Not yet implemented for: ' + JSON.stringify(response));\n }\n }\n\n private visitResponseContent(context: OasContext, _code: string, media: MediaTypeObject): void {\n trace(context, '-> [get::responses::content]', 'in ' + this.name);\n const schema = media!.schema as SchemaObject;\n\n if (!schema) {\n throw new Error('No schema content found!');\n }\n\n this.resultType = Factory.fromResponse(context, this, schema);\n // PENDING: do not visit anymore\n // if (this.resultType) {\n // this.resultType.visit(context);\n // }\n\n if (this.resultType && !this.children.includes(this.resultType)) {\n this.add(this.resultType);\n }\n\n trace(context, '<- [get::responses::content]', 'out ' + this.name);\n }\n\n private visitResponseRef(context: OasContext, ref: ReferenceObject): void {\n trace(context, '-> [get::responses::ref]', `in: ${this.name}, ref: ${ref.$ref}`);\n\n const lookup = context.lookupResponse(ref.$ref!);\n if (!lookup) {\n throw new Error('Could not find a response with ref: ' + ref.$ref);\n }\n\n if ('$ref' in lookup) {\n throw new Error('Not yet implemented for nested refs');\n }\n\n this.visitResponse(context, ref.$ref!, lookup as ResponseObject);\n trace(context, '<- [get::responses::ref]', `out: ${this.name}, ref: ${ref.$ref}`);\n }\n\n protected generateParameters(context: OasContext, writer: Writer, selection: string[]): void {\n const sorted = this.params.sort((a, b) => (b.required ? 1 : 0) - (a.required ? 1 : 0));\n\n if (sorted.length === 0) {\n return;\n }\n\n writer.write('(');\n\n sorted.forEach((parameter, index) => {\n if (index > 0) {\n writer.write(', ');\n }\n parameter.generate(context, writer, selection);\n });\n\n writer.write(')');\n }\n\n private visitParameter(context: OasContext, parent: Type, p: ParameterObject): Param {\n trace(context, '->[visitParameter]', 'begin: ' + p.name);\n\n const param = Factory.fromParam(context, parent, p);\n param.visit(context);\n\n trace(context, '<-[visitParameter]', 'end: ' + p.name);\n return param;\n }\n}\n"]}
@@ -24,5 +24,7 @@ export { PropComp } from './propComp.js';
24
24
  export { PropCircRef } from './propCircRef.js';
25
25
  export { PropEn } from './propEn.js';
26
26
  export { PropScalar } from './propScalar.js';
27
+ export { Map } from './map.js';
28
+ export { PropMap } from './propMap.js';
27
29
  export { T } from './typeUtils.js';
28
30
  export { type Op } from './op.js';
@@ -23,5 +23,7 @@ export { PropComp } from './propComp.js';
23
23
  export { PropCircRef } from './propCircRef.js';
24
24
  export { PropEn } from './propEn.js';
25
25
  export { PropScalar } from './propScalar.js';
26
+ export { Map } from './map.js';
27
+ export { PropMap } from './propMap.js';
26
28
  export { T } from './typeUtils.js';
27
29
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/oas/nodes/internal.ts"],"names":[],"mappings":"AA+BA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,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,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,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,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,gBAAgB,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 { PropComp } from './propComp.js';\nimport { PropCircRef } from './propCircRef.js';\nimport { PropEn } from './propEn.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 { Post } from './post.js';\nimport { Put } from './put.js';\nimport { Patch } from './patch.js';\nimport { Delete } from './delete.js';\nimport { Body } from './body.js';\nimport { Obj } from './obj.js';\nimport { Ref } from './ref.js';\nimport { Res } from './res.js';\nimport { Scalar } from './scalar.js';\nimport { Union } from './union.js';\nimport { T } from './typeUtils.js';\nimport { Op } from './op.js';\n\nexport * from './iType.js';\nexport { Type } from './type.js';\nexport { type ReferenceObject } from './referenceObject.js';\nexport { Prop } from './prop.js';\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 { Post } from './post.js';\nexport { Put } from './put.js';\nexport { Patch } from './patch.js';\nexport { Delete } from './delete.js';\nexport { Body } from './body.js';\nexport { Obj } from './obj.js';\nexport { Res } from './res.js';\nexport { Scalar } from './scalar.js';\nexport { Union } from './union.js';\nexport { PropArray } from './propArray.js';\nexport { PropObj } from './propObj.js';\nexport { PropComp } from './propComp.js';\nexport { PropCircRef } from './propCircRef.js';\nexport { PropEn } from './propEn.js';\nexport { PropScalar } from './propScalar.js';\nexport { T } from './typeUtils.js';\nexport { type Op } from './op.js';\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/oas/nodes/internal.ts"],"names":[],"mappings":"AAiCA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,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,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,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,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,gBAAgB,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 { PropComp } from './propComp.js';\nimport { PropCircRef } from './propCircRef.js';\nimport { PropEn } from './propEn.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 { Post } from './post.js';\nimport { Put } from './put.js';\nimport { Patch } from './patch.js';\nimport { Delete } from './delete.js';\nimport { Body } from './body.js';\nimport { Obj } from './obj.js';\nimport { Ref } from './ref.js';\nimport { Res } from './res.js';\nimport { Scalar } from './scalar.js';\nimport { Union } from './union.js';\nimport { Map } from './map.js';\nimport { PropMap } from './propMap.js';\nimport { T } from './typeUtils.js';\nimport { Op } from './op.js';\n\nexport * from './iType.js';\nexport { Type } from './type.js';\nexport { type ReferenceObject } from './referenceObject.js';\nexport { Prop } from './prop.js';\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 { Post } from './post.js';\nexport { Put } from './put.js';\nexport { Patch } from './patch.js';\nexport { Delete } from './delete.js';\nexport { Body } from './body.js';\nexport { Obj } from './obj.js';\nexport { Res } from './res.js';\nexport { Scalar } from './scalar.js';\nexport { Union } from './union.js';\nexport { PropArray } from './propArray.js';\nexport { PropObj } from './propObj.js';\nexport { PropComp } from './propComp.js';\nexport { PropCircRef } from './propCircRef.js';\nexport { PropEn } from './propEn.js';\nexport { PropScalar } from './propScalar.js';\nexport { Map } from './map.js';\nexport { PropMap } from './propMap.js';\nexport { T } from './typeUtils.js';\nexport { type Op } from './op.js';\n"]}
@@ -0,0 +1,17 @@
1
+ import { IType, Type } from './internal.js';
2
+ import { SchemaObject } from 'oas/types';
3
+ import { OasContext } from '../oasContext.js';
4
+ import { Writer } from '../io/writer.js';
5
+ export declare class Map extends Type {
6
+ schema: SchemaObject;
7
+ valueType?: IType;
8
+ constructor(parent: IType | undefined, name: string, schema: SchemaObject);
9
+ forPrompt(_context: OasContext): string;
10
+ get id(): string;
11
+ visit(context: OasContext): void;
12
+ generate(context: OasContext, writer: Writer, selection: string[]): void;
13
+ select(context: OasContext, writer: Writer, selection: string[]): void;
14
+ private visitAdditionalProperties;
15
+ dependencies(): IType[];
16
+ private updateName;
17
+ }