oazapfts 6.2.2 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,6 +36,7 @@ Options:
36
36
  --include, -i tag to include
37
37
  --optimistic
38
38
  --useEnumType
39
+ --useUnknown
39
40
  --mergeReadWriteOnly
40
41
  --argumentStyle=<positional | object> (default: positional)
41
42
  ```
@@ -48,6 +49,8 @@ Where `<spec>` is the URL or local path of an OpenAPI or Swagger spec (in either
48
49
 
49
50
  - `--useEnumType` generate enums instead of union types
50
51
 
52
+ - `--useUnknown` generate `unknown` instead of `any` for empty schemas
53
+
51
54
  - `--mergeReadWriteOnly` by default oazapfs will generate separate types for read-only and write-only properties. This option will merge them into one type.
52
55
 
53
56
  - `--argumentStyle` if "object" generated functions take single object style argument for parameters and requestBody, by default it's "positional" and parameters are separate as positional arguments
package/cli.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var a=(r,i,t)=>new Promise((n,u)=>{var d=e=>{try{c(t.next(e))}catch(l){u(l)}},p=e=>{try{c(t.throw(e))}catch(l){u(l)}},c=e=>e.done?n(e.value):Promise.resolve(e.value).then(d,p);c((t=t.apply(r,i)).next())});const y=require("fs"),f=require("minimist"),o=require("./index.cjs"),g=f(process.argv.slice(2),{alias:{i:"include",e:"exclude"},boolean:["optimistic","useEnumType","mergeReadWriteOnly"],string:["argumentStyle"]});function S(r,i,t){return a(this,null,function*(){const n=yield o.generateSource(r,t);i?y.writeFileSync(i,n):console.log(n)})}const{include:x,exclude:b,optimistic:v,useEnumType:O,mergeReadWriteOnly:q,argumentStyle:s}=g,[m,A]=g._;m||(console.error(`
2
+ "use strict";var a=(r,t,n)=>new Promise((s,l)=>{var d=e=>{try{u(n.next(e))}catch(c){l(c)}},p=e=>{try{u(n.throw(e))}catch(c){l(c)}},u=e=>e.done?s(e.value):Promise.resolve(e.value).then(d,p);u((n=n.apply(r,t)).next())});const y=require("fs"),f=require("minimist"),o=require("./index.cjs"),g=f(process.argv.slice(2),{alias:{i:"include",e:"exclude"},boolean:["optimistic","useEnumType","mergeReadWriteOnly","useUnknown"],string:["argumentStyle"]});function S(r,t,n){return a(this,null,function*(){const s=yield o.generateSource(r,n);t?y.writeFileSync(t,s):console.log(s)})}const{include:x,exclude:w,optimistic:b,useEnumType:v,mergeReadWriteOnly:O,useUnknown:U,argumentStyle:i}=g,[m,k]=g._;m||(console.error(`
3
3
  Usage:
4
4
  oazapfts <spec> [filename]
5
5
 
@@ -8,7 +8,8 @@
8
8
  --include, -i <tag to include>
9
9
  --optimistic
10
10
  --useEnumType
11
+ --useUnknown
11
12
  --mergeReadWriteOnly
12
13
  --argumentStyle=<${o.optsArgumentStyles.join(" | ")}> (default: positional)
13
- `),process.exit(1));s!==void 0&&!o.optsArgumentStyles.includes(s)&&(console.error(`--argumentStyle should be one of <${o.optsArgumentStyles.join(" | ")}>, but got "${s}"`),process.exit(1));S(m,A,{include:x,exclude:b,optimistic:v,useEnumType:O,mergeReadWriteOnly:q,argumentStyle:s});
14
+ `),process.exit(1));i!==void 0&&!o.optsArgumentStyles.includes(i)&&(console.error(`--argumentStyle should be one of <${o.optsArgumentStyles.join(" | ")}>, but got "${i}"`),process.exit(1));S(m,k,{include:x,exclude:w,optimistic:b,useEnumType:v,useUnknown:U,mergeReadWriteOnly:O,argumentStyle:i});
14
15
  //# sourceMappingURL=cli.cjs.map
package/cli.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.cjs","sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport fs from \"fs\";\nimport minimist from \"minimist\";\n\nimport { generateSource, Opts, optsArgumentStyles } from \"./\";\n\nconst argv = minimist(process.argv.slice(2), {\n alias: {\n i: \"include\",\n e: \"exclude\",\n },\n boolean: [\"optimistic\", \"useEnumType\", \"mergeReadWriteOnly\"],\n string: [\"argumentStyle\"],\n});\n\nasync function generate(spec: string, dest: string, opts: Opts) {\n const code = await generateSource(spec, opts);\n if (dest) fs.writeFileSync(dest, code);\n else console.log(code);\n}\n\nconst {\n include,\n exclude,\n optimistic,\n useEnumType,\n mergeReadWriteOnly,\n argumentStyle,\n} = argv;\nconst [spec, dest] = argv._;\nif (!spec) {\n console.error(`\n Usage:\n oazapfts <spec> [filename]\n\n Options:\n --exclude, -e <tag to exclude>\n --include, -i <tag to include>\n --optimistic\n --useEnumType\n --mergeReadWriteOnly\n --argumentStyle=<${optsArgumentStyles.join(\" | \")}> (default: positional)\n`);\n process.exit(1);\n}\n\nif (\n argumentStyle !== undefined &&\n !optsArgumentStyles.includes(argumentStyle)\n) {\n console.error(\n `--argumentStyle should be one of <${optsArgumentStyles.join(\n \" | \",\n )}>, but got \"${argumentStyle}\"`,\n );\n process.exit(1);\n}\n\ngenerate(spec, dest, {\n include,\n exclude,\n optimistic,\n useEnumType,\n mergeReadWriteOnly,\n argumentStyle,\n});\n"],"names":["argv","minimist","generate","spec","dest","opts","__async","code","generateSource","fs","include","exclude","optimistic","useEnumType","mergeReadWriteOnly","argumentStyle","optsArgumentStyles"],"mappings":";+RAOMA,EAAOC,EAAS,QAAQ,KAAK,MAAM,CAAC,EAAG,CAC3C,MAAO,CACL,EAAG,UACH,EAAG,SACL,EACA,QAAS,CAAC,aAAc,cAAe,oBAAoB,EAC3D,OAAQ,CAAC,eAAe,CAC1B,CAAC,EAED,SAAeC,EAASC,EAAcC,EAAcC,EAAY,QAAAC,EAAA,sBAC9D,MAAMC,EAAO,MAAMC,iBAAeL,EAAME,CAAI,EACxCD,EAAMK,EAAG,cAAcL,EAAMG,CAAI,EAChC,QAAQ,IAAIA,CAAI,CACvB,GAEA,KAAM,CACJ,QAAAG,EACA,QAAAC,EACA,WAAAC,EACA,YAAAC,EACA,mBAAAC,EACA,cAAAC,CACF,EAAIf,EACE,CAACG,EAAMC,CAAI,EAAIJ,EAAK,EACrBG,IACH,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAUOa,EAAA,mBAAmB,KAAK,KAAK,CAAC;AAAA,CACpD,EACC,QAAQ,KAAK,CAAC,GAIdD,IAAkB,QAClB,CAACC,EAAmB,mBAAA,SAASD,CAAa,IAElC,QAAA,MACN,qCAAqCC,EAAAA,mBAAmB,KACtD,KAAA,CACD,eAAeD,CAAa,GAC/B,EACA,QAAQ,KAAK,CAAC,GAGhBb,EAASC,EAAMC,EAAM,CACnB,QAAAM,EACA,QAAAC,EACA,WAAAC,EACA,YAAAC,EACA,mBAAAC,EACA,cAAAC,CACF,CAAC"}
1
+ {"version":3,"file":"cli.cjs","sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport fs from \"fs\";\nimport minimist from \"minimist\";\n\nimport { generateSource, Opts, optsArgumentStyles } from \"./\";\n\nconst argv = minimist(process.argv.slice(2), {\n alias: {\n i: \"include\",\n e: \"exclude\",\n },\n boolean: [\"optimistic\", \"useEnumType\", \"mergeReadWriteOnly\", \"useUnknown\"],\n string: [\"argumentStyle\"],\n});\n\nasync function generate(spec: string, dest: string, opts: Opts) {\n const code = await generateSource(spec, opts);\n if (dest) fs.writeFileSync(dest, code);\n else console.log(code);\n}\n\nconst {\n include,\n exclude,\n optimistic,\n useEnumType,\n mergeReadWriteOnly,\n useUnknown,\n argumentStyle,\n} = argv;\nconst [spec, dest] = argv._;\nif (!spec) {\n console.error(`\n Usage:\n oazapfts <spec> [filename]\n\n Options:\n --exclude, -e <tag to exclude>\n --include, -i <tag to include>\n --optimistic\n --useEnumType\n --useUnknown\n --mergeReadWriteOnly\n --argumentStyle=<${optsArgumentStyles.join(\" | \")}> (default: positional)\n`);\n process.exit(1);\n}\n\nif (\n argumentStyle !== undefined &&\n !optsArgumentStyles.includes(argumentStyle)\n) {\n console.error(\n `--argumentStyle should be one of <${optsArgumentStyles.join(\n \" | \",\n )}>, but got \"${argumentStyle}\"`,\n );\n process.exit(1);\n}\n\ngenerate(spec, dest, {\n include,\n exclude,\n optimistic,\n useEnumType,\n useUnknown,\n mergeReadWriteOnly,\n argumentStyle,\n});\n"],"names":["argv","minimist","generate","spec","dest","opts","__async","code","generateSource","fs","include","exclude","optimistic","useEnumType","mergeReadWriteOnly","useUnknown","argumentStyle","optsArgumentStyles"],"mappings":";+RAOMA,EAAOC,EAAS,QAAQ,KAAK,MAAM,CAAC,EAAG,CAC3C,MAAO,CACL,EAAG,UACH,EAAG,SACL,EACA,QAAS,CAAC,aAAc,cAAe,qBAAsB,YAAY,EACzE,OAAQ,CAAC,eAAe,CAC1B,CAAC,EAED,SAAeC,EAASC,EAAcC,EAAcC,EAAY,QAAAC,EAAA,sBAC9D,MAAMC,EAAO,MAAMC,iBAAeL,EAAME,CAAI,EACxCD,EAAMK,EAAG,cAAcL,EAAMG,CAAI,EAChC,QAAQ,IAAIA,CAAI,CACvB,GAEA,KAAM,CACJ,QAAAG,EACA,QAAAC,EACA,WAAAC,EACA,YAAAC,EACA,mBAAAC,EACA,WAAAC,EACA,cAAAC,CACF,EAAIhB,EACE,CAACG,EAAMC,CAAI,EAAIJ,EAAK,EACrBG,IACH,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAWOc,EAAA,mBAAmB,KAAK,KAAK,CAAC;AAAA,CACpD,EACC,QAAQ,KAAK,CAAC,GAIdD,IAAkB,QAClB,CAACC,EAAmB,mBAAA,SAASD,CAAa,IAElC,QAAA,MACN,qCAAqCC,EAAAA,mBAAmB,KACtD,KAAA,CACD,eAAeD,CAAa,GAC/B,EACA,QAAQ,KAAK,CAAC,GAGhBd,EAASC,EAAMC,EAAM,CACnB,QAAAM,EACA,QAAAC,EACA,WAAAC,EACA,YAAAC,EACA,WAAAE,EACA,mBAAAD,EACA,cAAAE,CACF,CAAC"}
package/cli.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import l from "fs";
3
3
  import u from "minimist";
4
- import { optsArgumentStyles as t, generateSource as a } from "./index.js";
5
- const n = u(process.argv.slice(2), {
4
+ import { optsArgumentStyles as n, generateSource as a } from "./index.js";
5
+ const i = u(process.argv.slice(2), {
6
6
  alias: {
7
7
  i: "include",
8
8
  e: "exclude"
9
9
  },
10
- boolean: ["optimistic", "useEnumType", "mergeReadWriteOnly"],
10
+ boolean: ["optimistic", "useEnumType", "mergeReadWriteOnly", "useUnknown"],
11
11
  string: ["argumentStyle"]
12
12
  });
13
- async function m(r, i, c) {
14
- const o = await a(r, c);
15
- i ? l.writeFileSync(i, o) : console.log(o);
13
+ async function m(r, o, c) {
14
+ const t = await a(r, c);
15
+ o ? l.writeFileSync(o, t) : console.log(t);
16
16
  }
17
17
  const {
18
18
  include: g,
@@ -20,8 +20,9 @@ const {
20
20
  optimistic: d,
21
21
  useEnumType: y,
22
22
  mergeReadWriteOnly: f,
23
+ useUnknown: S,
23
24
  argumentStyle: e
24
- } = n, [s, S] = n._;
25
+ } = i, [s, x] = i._;
25
26
  s || (console.error(`
26
27
  Usage:
27
28
  oazapfts <spec> [filename]
@@ -31,19 +32,21 @@ s || (console.error(`
31
32
  --include, -i <tag to include>
32
33
  --optimistic
33
34
  --useEnumType
35
+ --useUnknown
34
36
  --mergeReadWriteOnly
35
- --argumentStyle=<${t.join(" | ")}> (default: positional)
37
+ --argumentStyle=<${n.join(" | ")}> (default: positional)
36
38
  `), process.exit(1));
37
- e !== void 0 && !t.includes(e) && (console.error(
38
- `--argumentStyle should be one of <${t.join(
39
+ e !== void 0 && !n.includes(e) && (console.error(
40
+ `--argumentStyle should be one of <${n.join(
39
41
  " | "
40
42
  )}>, but got "${e}"`
41
43
  ), process.exit(1));
42
- m(s, S, {
44
+ m(s, x, {
43
45
  include: g,
44
46
  exclude: p,
45
47
  optimistic: d,
46
48
  useEnumType: y,
49
+ useUnknown: S,
47
50
  mergeReadWriteOnly: f,
48
51
  argumentStyle: e
49
52
  });
package/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport fs from \"fs\";\nimport minimist from \"minimist\";\n\nimport { generateSource, Opts, optsArgumentStyles } from \"./\";\n\nconst argv = minimist(process.argv.slice(2), {\n alias: {\n i: \"include\",\n e: \"exclude\",\n },\n boolean: [\"optimistic\", \"useEnumType\", \"mergeReadWriteOnly\"],\n string: [\"argumentStyle\"],\n});\n\nasync function generate(spec: string, dest: string, opts: Opts) {\n const code = await generateSource(spec, opts);\n if (dest) fs.writeFileSync(dest, code);\n else console.log(code);\n}\n\nconst {\n include,\n exclude,\n optimistic,\n useEnumType,\n mergeReadWriteOnly,\n argumentStyle,\n} = argv;\nconst [spec, dest] = argv._;\nif (!spec) {\n console.error(`\n Usage:\n oazapfts <spec> [filename]\n\n Options:\n --exclude, -e <tag to exclude>\n --include, -i <tag to include>\n --optimistic\n --useEnumType\n --mergeReadWriteOnly\n --argumentStyle=<${optsArgumentStyles.join(\" | \")}> (default: positional)\n`);\n process.exit(1);\n}\n\nif (\n argumentStyle !== undefined &&\n !optsArgumentStyles.includes(argumentStyle)\n) {\n console.error(\n `--argumentStyle should be one of <${optsArgumentStyles.join(\n \" | \",\n )}>, but got \"${argumentStyle}\"`,\n );\n process.exit(1);\n}\n\ngenerate(spec, dest, {\n include,\n exclude,\n optimistic,\n useEnumType,\n mergeReadWriteOnly,\n argumentStyle,\n});\n"],"names":["argv","minimist","generate","spec","dest","opts","code","generateSource","fs","include","exclude","optimistic","useEnumType","mergeReadWriteOnly","argumentStyle","optsArgumentStyles"],"mappings":";;;;AAOA,MAAMA,IAAOC,EAAS,QAAQ,KAAK,MAAM,CAAC,GAAG;AAAA,EAC3C,OAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,SAAS,CAAC,cAAc,eAAe,oBAAoB;AAAA,EAC3D,QAAQ,CAAC,eAAe;AAC1B,CAAC;AAED,eAAeC,EAASC,GAAcC,GAAcC,GAAY;AAC9D,QAAMC,IAAO,MAAMC,EAAeJ,GAAME,CAAI;AAC5C,EAAID,IAAMI,EAAG,cAAcJ,GAAME,CAAI,IAChC,QAAQ,IAAIA,CAAI;AACvB;AAEA,MAAM;AAAA,EACJ,SAAAG;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,eAAAC;AACF,IAAId,GACE,CAACG,GAAMC,CAAI,IAAIJ,EAAK;AACrBG,MACH,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAUOY,EAAmB,KAAK,KAAK,CAAC;AAAA,CACpD,GACC,QAAQ,KAAK,CAAC;AAIdD,MAAkB,UAClB,CAACC,EAAmB,SAASD,CAAa,MAElC,QAAA;AAAA,EACN,qCAAqCC,EAAmB;AAAA,IACtD;AAAA,EAAA,CACD,eAAeD,CAAa;AAC/B,GACA,QAAQ,KAAK,CAAC;AAGhBZ,EAASC,GAAMC,GAAM;AAAA,EACnB,SAAAK;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,eAAAC;AACF,CAAC;"}
1
+ {"version":3,"file":"cli.js","sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport fs from \"fs\";\nimport minimist from \"minimist\";\n\nimport { generateSource, Opts, optsArgumentStyles } from \"./\";\n\nconst argv = minimist(process.argv.slice(2), {\n alias: {\n i: \"include\",\n e: \"exclude\",\n },\n boolean: [\"optimistic\", \"useEnumType\", \"mergeReadWriteOnly\", \"useUnknown\"],\n string: [\"argumentStyle\"],\n});\n\nasync function generate(spec: string, dest: string, opts: Opts) {\n const code = await generateSource(spec, opts);\n if (dest) fs.writeFileSync(dest, code);\n else console.log(code);\n}\n\nconst {\n include,\n exclude,\n optimistic,\n useEnumType,\n mergeReadWriteOnly,\n useUnknown,\n argumentStyle,\n} = argv;\nconst [spec, dest] = argv._;\nif (!spec) {\n console.error(`\n Usage:\n oazapfts <spec> [filename]\n\n Options:\n --exclude, -e <tag to exclude>\n --include, -i <tag to include>\n --optimistic\n --useEnumType\n --useUnknown\n --mergeReadWriteOnly\n --argumentStyle=<${optsArgumentStyles.join(\" | \")}> (default: positional)\n`);\n process.exit(1);\n}\n\nif (\n argumentStyle !== undefined &&\n !optsArgumentStyles.includes(argumentStyle)\n) {\n console.error(\n `--argumentStyle should be one of <${optsArgumentStyles.join(\n \" | \",\n )}>, but got \"${argumentStyle}\"`,\n );\n process.exit(1);\n}\n\ngenerate(spec, dest, {\n include,\n exclude,\n optimistic,\n useEnumType,\n useUnknown,\n mergeReadWriteOnly,\n argumentStyle,\n});\n"],"names":["argv","minimist","generate","spec","dest","opts","code","generateSource","fs","include","exclude","optimistic","useEnumType","mergeReadWriteOnly","useUnknown","argumentStyle","optsArgumentStyles"],"mappings":";;;;AAOA,MAAMA,IAAOC,EAAS,QAAQ,KAAK,MAAM,CAAC,GAAG;AAAA,EAC3C,OAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,SAAS,CAAC,cAAc,eAAe,sBAAsB,YAAY;AAAA,EACzE,QAAQ,CAAC,eAAe;AAC1B,CAAC;AAED,eAAeC,EAASC,GAAcC,GAAcC,GAAY;AAC9D,QAAMC,IAAO,MAAMC,EAAeJ,GAAME,CAAI;AAC5C,EAAID,IAAMI,EAAG,cAAcJ,GAAME,CAAI,IAChC,QAAQ,IAAIA,CAAI;AACvB;AAEA,MAAM;AAAA,EACJ,SAAAG;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AACF,IAAIf,GACE,CAACG,GAAMC,CAAI,IAAIJ,EAAK;AACrBG,MACH,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAWOa,EAAmB,KAAK,KAAK,CAAC;AAAA,CACpD,GACC,QAAQ,KAAK,CAAC;AAIdD,MAAkB,UAClB,CAACC,EAAmB,SAASD,CAAa,MAElC,QAAA;AAAA,EACN,qCAAqCC,EAAmB;AAAA,IACtD;AAAA,EAAA,CACD,eAAeD,CAAa;AAC/B,GACA,QAAQ,KAAK,CAAC;AAGhBb,EAASC,GAAMC,GAAM;AAAA,EACnB,SAAAK;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAE;AAAA,EACA,oBAAAD;AAAA,EACA,eAAAE;AACF,CAAC;"}
package/generate.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("lodash");require("typescript");const e=require("./tscodegen-DV-Rd5p1.cjs");exports.addComment=e.addComment;exports.appendNodes=e.appendNodes;exports.block=e.block;exports.callOazapftsFunction=e.callOazapftsFunction;exports.callQsFunction=e.callQsFunction;exports.changePropertyValue=e.changePropertyValue;exports.createArrowFunction=e.createArrowFunction;exports.createCall=e.createCall;exports.createClassDeclaration=e.createClassDeclaration;exports.createConstructor=e.createConstructor;exports.createEnumTypeNode=e.createEnumTypeNode;exports.createFunctionDeclaration=e.createFunctionDeclaration;exports.createIndexSignature=e.createIndexSignature;exports.createInterfaceAliasDeclaration=e.createInterfaceAliasDeclaration;exports.createKeywordType=e.createKeywordType;exports.createLiteral=e.createLiteral;exports.createMethod=e.createMethod;exports.createMethodCall=e.createMethodCall;exports.createObjectBinding=e.createObjectBinding;exports.createObjectLiteral=e.createObjectLiteral;exports.createParameter=e.createParameter;exports.createPropertyAssignment=e.createPropertyAssignment;exports.createPropertySignature=e.createPropertySignature;exports.createQuestionToken=e.createQuestionToken;exports.createTemplateString=e.createTemplateString;exports.createTypeAliasDeclaration=e.createTypeAliasDeclaration;exports.createUrlExpression=e.createUrlExpression;exports.default=e.ApiGenerator;exports.defaultBaseUrl=e.defaultBaseUrl;exports.findFirstVariableDeclaration=e.findFirstVariableDeclaration;exports.findNode=e.findNode;exports.getBodyFormatter=e.getBodyFormatter;exports.getFirstDeclarationName=e.getFirstDeclarationName;exports.getFormatter=e.getFormatter;exports.getName=e.getName;exports.getOperationIdentifier=e.getOperationIdentifier;exports.getOperationName=e.getOperationName;exports.getReferenceName=e.getReferenceName;exports.isJsonMimeType=e.isJsonMimeType;exports.isMimeType=e.isMimeType;exports.isNullable=e.isNullable;exports.isReference=e.isReference;exports.isValidIdentifier=e.isValidIdentifier;exports.keywordType=e.keywordType;exports.modifier=e.modifier;exports.printFile=e.printFile;exports.printNode=e.printNode;exports.printNodes=e.printNodes;exports.questionToken=e.questionToken;exports.refPathToPropertyPath=e.refPathToPropertyPath;exports.supportDeepObjects=e.supportDeepObjects;exports.toExpression=e.toExpression;exports.toIdentifier=e.toIdentifier;exports.verbs=e.verbs;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("lodash");require("typescript");const e=require("./tscodegen-BLknMY2_.cjs");exports.addComment=e.addComment;exports.appendNodes=e.appendNodes;exports.block=e.block;exports.callOazapftsFunction=e.callOazapftsFunction;exports.callQsFunction=e.callQsFunction;exports.changePropertyValue=e.changePropertyValue;exports.createArrowFunction=e.createArrowFunction;exports.createCall=e.createCall;exports.createClassDeclaration=e.createClassDeclaration;exports.createConstructor=e.createConstructor;exports.createEnumTypeNode=e.createEnumTypeNode;exports.createFunctionDeclaration=e.createFunctionDeclaration;exports.createIndexSignature=e.createIndexSignature;exports.createInterfaceAliasDeclaration=e.createInterfaceAliasDeclaration;exports.createKeywordType=e.createKeywordType;exports.createLiteral=e.createLiteral;exports.createMethod=e.createMethod;exports.createMethodCall=e.createMethodCall;exports.createObjectBinding=e.createObjectBinding;exports.createObjectLiteral=e.createObjectLiteral;exports.createParameter=e.createParameter;exports.createPropertyAssignment=e.createPropertyAssignment;exports.createPropertySignature=e.createPropertySignature;exports.createQuestionToken=e.createQuestionToken;exports.createTemplateString=e.createTemplateString;exports.createTypeAliasDeclaration=e.createTypeAliasDeclaration;exports.createUrlExpression=e.createUrlExpression;exports.default=e.ApiGenerator;exports.defaultBaseUrl=e.defaultBaseUrl;exports.findFirstVariableDeclaration=e.findFirstVariableDeclaration;exports.findNode=e.findNode;exports.getBodyFormatter=e.getBodyFormatter;exports.getFirstDeclarationName=e.getFirstDeclarationName;exports.getFormatter=e.getFormatter;exports.getName=e.getName;exports.getOperationIdentifier=e.getOperationIdentifier;exports.getOperationName=e.getOperationName;exports.getReferenceName=e.getReferenceName;exports.isJsonMimeType=e.isJsonMimeType;exports.isMimeType=e.isMimeType;exports.isNullable=e.isNullable;exports.isReference=e.isReference;exports.isValidIdentifier=e.isValidIdentifier;exports.keywordType=e.keywordType;exports.modifier=e.modifier;exports.printFile=e.printFile;exports.printNode=e.printNode;exports.printNodes=e.printNodes;exports.questionToken=e.questionToken;exports.refPathToPropertyPath=e.refPathToPropertyPath;exports.supportDeepObjects=e.supportDeepObjects;exports.toExpression=e.toExpression;exports.toIdentifier=e.toIdentifier;exports.verbs=e.verbs;
2
2
  //# sourceMappingURL=generate.cjs.map
package/generate.d.ts CHANGED
@@ -47,6 +47,7 @@ declare class ApiGenerator {
47
47
  * optionally adds a union with null.
48
48
  */
49
49
  getTypeFromSchema(schema?: SchemaObject | OpenAPIReferenceObject, name?: string, onlyMode?: OnlyMode): default_2.TypeNode;
50
+ getEmptySchemaType(): default_2.KeywordTypeNode<default_2.SyntaxKind.AnyKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.UnknownKeyword>;
50
51
  /**
51
52
  * This is the very core of the OpenAPI to TS conversion - it takes a
52
53
  * schema and returns the appropriate type.
@@ -159,7 +160,7 @@ export declare function createInterfaceAliasDeclaration({ modifiers, name, typeP
159
160
  inheritedNodeNames?: (string | default_2.Identifier)[];
160
161
  }): default_2.InterfaceDeclaration;
161
162
 
162
- export declare function createKeywordType(type: KeywordTypeName): default_2.KeywordTypeNode<default_2.SyntaxKind.AnyKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.NumberKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.ObjectKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.StringKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.BooleanKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.UndefinedKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.VoidKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.NeverKeyword> | default_2.LiteralTypeNode;
163
+ export declare function createKeywordType(type: KeywordTypeName): default_2.KeywordTypeNode<default_2.SyntaxKind.AnyKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.NumberKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.ObjectKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.StringKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.BooleanKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.UndefinedKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.VoidKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.NeverKeyword> | default_2.LiteralTypeNode | default_2.KeywordTypeNode<default_2.SyntaxKind.UnknownKeyword>;
163
164
 
164
165
  export declare function createLiteral(v: string | boolean | number): default_2.StringLiteral | default_2.TrueLiteral | default_2.FalseLiteral | default_2.NumericLiteral | default_2.PrefixUnaryExpression;
165
166
 
@@ -284,6 +285,7 @@ export declare const keywordType: {
284
285
  void: default_2.KeywordTypeNode<default_2.SyntaxKind.VoidKeyword>;
285
286
  never: default_2.KeywordTypeNode<default_2.SyntaxKind.NeverKeyword>;
286
287
  null: default_2.LiteralTypeNode;
288
+ unknown: default_2.KeywordTypeNode<default_2.SyntaxKind.UnknownKeyword>;
287
289
  };
288
290
 
289
291
  declare type KeywordTypeName = keyof typeof keywordType;
@@ -322,6 +324,7 @@ declare type Opts = {
322
324
  unionUndefined?: boolean;
323
325
  useEnumType?: boolean;
324
326
  mergeReadWriteOnly?: boolean;
327
+ useUnknown?: boolean;
325
328
  argumentStyle?: (typeof optsArgumentStyles)[number];
326
329
  };
327
330
 
package/generate.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import "lodash";
2
2
  import "typescript";
3
- import { Y as r, X as i, H as o, m as n, l as c, W as l, I as p, D as d, K as m, L as u, y as f, J as g, P as y, B as N, u as T, x as F, M as b, E as D, Q as P, F as O, N as h, G as C, O as I, n as k, R as x, z as A, k as M, A as j, a0 as w, V as B, S as E, g as S, U as V, b as L, T as Q, c as R, d as U, h as q, a as v, i as z, e as J, f as K, $ as G, o as H, w as W, p as X, Z as Y, _ as Z, q as _, r as $, s as ee, C as ae, j as te, v as se } from "./tscodegen-D2LY0iua.js";
3
+ import { Y as r, X as i, H as o, m as n, l as c, W as l, I as p, D as d, K as m, L as u, y as f, J as g, P as y, B as N, u as T, x as F, M as b, E as D, Q as P, F as O, N as h, G as C, O as I, n as k, R as x, z as A, k as M, A as j, a0 as w, V as B, S as E, g as S, U as V, b as L, T as Q, c as R, d as U, h as q, a as v, i as z, e as J, f as K, $ as G, o as H, w as W, p as X, Z as Y, _ as Z, q as _, r as $, s as ee, C as ae, j as te, v as se } from "./tscodegen-BSr1G7_b.js";
4
4
  export {
5
5
  r as addComment,
6
6
  i as appendNodes,
package/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
- "use strict";var u=(e,t,r)=>new Promise((s,i)=>{var a=n=>{try{o(r.next(n))}catch(c){i(c)}},p=n=>{try{o(r.throw(n))}catch(c){i(c)}},o=n=>n.done?s(n.value):Promise.resolve(n.value).then(a,p);o((r=r.apply(e,t)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./tscodegen-DV-Rd5p1.cjs"),v=require("@apidevtools/swagger-parser"),A=require("swagger2openapi"),S=["positional","object"];function g(e,t,r){return new l.ApiGenerator(e,t,r).generateApi()}function d(e){return l.printFile(e)}function b(r){return u(this,arguments,function*(e,t={}){var{doc:s,isConverted:i}=yield f(e);const a=g(s,t,i),{title:p,version:o}=s.info,n=["$&",p,o].filter(Boolean).join(`
1
+ "use strict";var u=(e,t,r)=>new Promise((s,i)=>{var a=n=>{try{o(r.next(n))}catch(c){i(c)}},p=n=>{try{o(r.throw(n))}catch(c){i(c)}},o=n=>n.done?s(n.value):Promise.resolve(n.value).then(a,p);o((r=r.apply(e,t)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./tscodegen-BLknMY2_.cjs"),v=require("@apidevtools/swagger-parser"),A=require("swagger2openapi"),S=["positional","object"];function g(e,t,r){return new l.ApiGenerator(e,t,r).generateApi()}function d(e){return l.printFile(e)}function b(r){return u(this,arguments,function*(e,t={}){var{doc:s,isConverted:i}=yield f(e);const a=g(s,t,i),{title:p,version:o}=s.info,n=["$&",p,o].filter(Boolean).join(`
2
2
  * `);return d(a).replace(/^\/\*\*/,n)})}function y(e){return"openapi"in e&&e.openapi.startsWith("3")}function f(e){return u(this,null,function*(){const t=yield v.bundle(e);return y(t)?{doc:t,isConverted:!1}:{doc:(yield A.convertObj(t,{})).openapi,isConverted:!0}})}exports.cg=l.tscodegen;exports.generateAst=g;exports.generateSource=b;exports.optsArgumentStyles=S;exports.parseSpec=f;exports.printAst=d;
3
3
  //# sourceMappingURL=index.cjs.map
package/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import * as cg from \"./tscodegen\";\nimport ApiGenerator from \"./generate\";\nimport ts from \"typescript\";\nimport SwaggerParser from \"@apidevtools/swagger-parser\";\nimport converter from \"swagger2openapi\";\nimport { OpenAPI, OpenAPIV3 } from \"openapi-types\";\n\nexport { cg };\n\nexport const optsArgumentStyles = [\"positional\", \"object\"];\nexport type Opts = {\n include?: string[];\n exclude?: string[];\n optimistic?: boolean;\n unionUndefined?: boolean;\n useEnumType?: boolean;\n mergeReadWriteOnly?: boolean;\n argumentStyle?: (typeof optsArgumentStyles)[number];\n};\n\nexport function generateAst(\n doc: OpenAPIV3.Document,\n opts: Opts,\n isConverted: boolean,\n) {\n return new ApiGenerator(doc, opts, isConverted).generateApi();\n}\n\nexport function printAst(ast: ts.SourceFile) {\n return cg.printFile(ast);\n}\n\nexport async function generateSource(spec: string, opts: Opts = {}) {\n var { doc, isConverted } = await parseSpec(spec);\n const ast = generateAst(doc, opts, isConverted);\n const { title, version } = doc.info;\n const preamble = [\"$&\", title, version].filter(Boolean).join(\"\\n * \");\n const src = printAst(ast);\n return src.replace(/^\\/\\*\\*/, preamble);\n}\n\nfunction isOpenApiV3(doc: OpenAPI.Document): doc is OpenAPIV3.Document {\n return \"openapi\" in doc && doc.openapi.startsWith(\"3\");\n}\n\nexport async function parseSpec(spec: string) {\n const doc = await SwaggerParser.bundle(spec);\n if (isOpenApiV3(doc)) {\n return {\n doc,\n isConverted: false,\n };\n } else {\n const converted = await converter.convertObj(doc, {});\n return {\n doc: converted.openapi as OpenAPIV3.Document,\n isConverted: true,\n };\n }\n}\n"],"names":["optsArgumentStyles","generateAst","doc","opts","isConverted","ApiGenerator","printAst","ast","cg.printFile","generateSource","_0","__async","spec","parseSpec","title","version","preamble","isOpenApiV3","SwaggerParser","converter"],"mappings":"+YASaA,EAAqB,CAAC,aAAc,QAAQ,EAWzC,SAAAC,EACdC,EACAC,EACAC,EACA,CACA,OAAO,IAAIC,EAAa,aAAAH,EAAKC,EAAMC,CAAW,EAAE,YAAY,CAC9D,CAEO,SAASE,EAASC,EAAoB,CACpC,OAAAC,EAAAA,UAAaD,CAAG,CACzB,CAEA,SAAsBE,EAAeC,EAA+B,QAAAC,EAAA,yBAA/BC,EAAcT,EAAa,GAAI,CAClE,GAAI,CAAE,IAAAD,EAAK,YAAAE,CAAgB,EAAA,MAAMS,EAAUD,CAAI,EAC/C,MAAML,EAAMN,EAAYC,EAAKC,EAAMC,CAAW,EACxC,CAAE,MAAAU,EAAO,QAAAC,CAAQ,EAAIb,EAAI,KACzBc,EAAW,CAAC,KAAMF,EAAOC,CAAO,EAAE,OAAO,OAAO,EAAE,KAAK;AAAA,IAAO,EAE7D,OADKT,EAASC,CAAG,EACb,QAAQ,UAAWS,CAAQ,CACxC,GAEA,SAASC,EAAYf,EAAkD,CACrE,MAAO,YAAaA,GAAOA,EAAI,QAAQ,WAAW,GAAG,CACvD,CAEA,SAAsBW,EAAUD,EAAc,QAAAD,EAAA,sBAC5C,MAAMT,EAAM,MAAMgB,EAAc,OAAON,CAAI,EACvC,OAAAK,EAAYf,CAAG,EACV,CACL,IAAAA,EACA,YAAa,EACf,EAGO,CACL,KAFgB,MAAMiB,EAAU,WAAWjB,EAAK,CAAA,CAAE,GAEnC,QACf,YAAa,EACf,CAEJ"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import * as cg from \"./tscodegen\";\nimport ApiGenerator from \"./generate\";\nimport ts from \"typescript\";\nimport SwaggerParser from \"@apidevtools/swagger-parser\";\nimport converter from \"swagger2openapi\";\nimport { OpenAPI, OpenAPIV3 } from \"openapi-types\";\n\nexport { cg };\n\nexport const optsArgumentStyles = [\"positional\", \"object\"];\nexport type Opts = {\n include?: string[];\n exclude?: string[];\n optimistic?: boolean;\n unionUndefined?: boolean;\n useEnumType?: boolean;\n mergeReadWriteOnly?: boolean;\n useUnknown?: boolean;\n argumentStyle?: (typeof optsArgumentStyles)[number];\n};\n\nexport function generateAst(\n doc: OpenAPIV3.Document,\n opts: Opts,\n isConverted: boolean,\n) {\n return new ApiGenerator(doc, opts, isConverted).generateApi();\n}\n\nexport function printAst(ast: ts.SourceFile) {\n return cg.printFile(ast);\n}\n\nexport async function generateSource(spec: string, opts: Opts = {}) {\n var { doc, isConverted } = await parseSpec(spec);\n const ast = generateAst(doc, opts, isConverted);\n const { title, version } = doc.info;\n const preamble = [\"$&\", title, version].filter(Boolean).join(\"\\n * \");\n const src = printAst(ast);\n return src.replace(/^\\/\\*\\*/, preamble);\n}\n\nfunction isOpenApiV3(doc: OpenAPI.Document): doc is OpenAPIV3.Document {\n return \"openapi\" in doc && doc.openapi.startsWith(\"3\");\n}\n\nexport async function parseSpec(spec: string) {\n const doc = await SwaggerParser.bundle(spec);\n if (isOpenApiV3(doc)) {\n return {\n doc,\n isConverted: false,\n };\n } else {\n const converted = await converter.convertObj(doc, {});\n return {\n doc: converted.openapi as OpenAPIV3.Document,\n isConverted: true,\n };\n }\n}\n"],"names":["optsArgumentStyles","generateAst","doc","opts","isConverted","ApiGenerator","printAst","ast","cg.printFile","generateSource","_0","__async","spec","parseSpec","title","version","preamble","isOpenApiV3","SwaggerParser","converter"],"mappings":"+YASaA,EAAqB,CAAC,aAAc,QAAQ,EAYzC,SAAAC,EACdC,EACAC,EACAC,EACA,CACA,OAAO,IAAIC,EAAa,aAAAH,EAAKC,EAAMC,CAAW,EAAE,YAAY,CAC9D,CAEO,SAASE,EAASC,EAAoB,CACpC,OAAAC,EAAAA,UAAaD,CAAG,CACzB,CAEA,SAAsBE,EAAeC,EAA+B,QAAAC,EAAA,yBAA/BC,EAAcT,EAAa,GAAI,CAClE,GAAI,CAAE,IAAAD,EAAK,YAAAE,CAAgB,EAAA,MAAMS,EAAUD,CAAI,EAC/C,MAAML,EAAMN,EAAYC,EAAKC,EAAMC,CAAW,EACxC,CAAE,MAAAU,EAAO,QAAAC,CAAQ,EAAIb,EAAI,KACzBc,EAAW,CAAC,KAAMF,EAAOC,CAAO,EAAE,OAAO,OAAO,EAAE,KAAK;AAAA,IAAO,EAE7D,OADKT,EAASC,CAAG,EACb,QAAQ,UAAWS,CAAQ,CACxC,GAEA,SAASC,EAAYf,EAAkD,CACrE,MAAO,YAAaA,GAAOA,EAAI,QAAQ,WAAW,GAAG,CACvD,CAEA,SAAsBW,EAAUD,EAAc,QAAAD,EAAA,sBAC5C,MAAMT,EAAM,MAAMgB,EAAc,OAAON,CAAI,EACvC,OAAAK,EAAYf,CAAG,EACV,CACL,IAAAA,EACA,YAAa,EACf,EAGO,CACL,KAFgB,MAAMiB,EAAU,WAAWjB,EAAK,CAAA,CAAE,GAEnC,QACf,YAAa,EACf,CAEJ"}
package/index.d.ts CHANGED
@@ -100,7 +100,7 @@ declare function createInterfaceAliasDeclaration({ modifiers, name, typeParamete
100
100
  inheritedNodeNames?: (string | default_2.Identifier)[];
101
101
  }): default_2.InterfaceDeclaration;
102
102
 
103
- declare function createKeywordType(type: KeywordTypeName): default_2.KeywordTypeNode<default_2.SyntaxKind.AnyKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.NumberKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.ObjectKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.StringKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.BooleanKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.UndefinedKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.VoidKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.NeverKeyword> | default_2.LiteralTypeNode;
103
+ declare function createKeywordType(type: KeywordTypeName): default_2.KeywordTypeNode<default_2.SyntaxKind.AnyKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.NumberKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.ObjectKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.StringKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.BooleanKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.UndefinedKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.VoidKeyword> | default_2.KeywordTypeNode<default_2.SyntaxKind.NeverKeyword> | default_2.LiteralTypeNode | default_2.KeywordTypeNode<default_2.SyntaxKind.UnknownKeyword>;
104
104
 
105
105
  declare function createLiteral(v: string | boolean | number): default_2.StringLiteral | default_2.TrueLiteral | default_2.FalseLiteral | default_2.NumericLiteral | default_2.PrefixUnaryExpression;
106
106
 
@@ -188,6 +188,7 @@ declare const keywordType: {
188
188
  void: default_2.KeywordTypeNode<default_2.SyntaxKind.VoidKeyword>;
189
189
  never: default_2.KeywordTypeNode<default_2.SyntaxKind.NeverKeyword>;
190
190
  null: default_2.LiteralTypeNode;
191
+ unknown: default_2.KeywordTypeNode<default_2.SyntaxKind.UnknownKeyword>;
191
192
  };
192
193
 
193
194
  declare type KeywordTypeName = keyof typeof keywordType;
@@ -204,6 +205,7 @@ export declare type Opts = {
204
205
  unionUndefined?: boolean;
205
206
  useEnumType?: boolean;
206
207
  mergeReadWriteOnly?: boolean;
208
+ useUnknown?: boolean;
207
209
  argumentStyle?: (typeof optsArgumentStyles)[number];
208
210
  };
209
211
 
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { A as c, p } from "./tscodegen-D2LY0iua.js";
2
- import { t as x } from "./tscodegen-D2LY0iua.js";
1
+ import { A as c, p } from "./tscodegen-BSr1G7_b.js";
2
+ import { t as x } from "./tscodegen-BSr1G7_b.js";
3
3
  import u from "@apidevtools/swagger-parser";
4
4
  import f from "swagger2openapi";
5
5
  const S = ["positional", "object"];
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import * as cg from \"./tscodegen\";\nimport ApiGenerator from \"./generate\";\nimport ts from \"typescript\";\nimport SwaggerParser from \"@apidevtools/swagger-parser\";\nimport converter from \"swagger2openapi\";\nimport { OpenAPI, OpenAPIV3 } from \"openapi-types\";\n\nexport { cg };\n\nexport const optsArgumentStyles = [\"positional\", \"object\"];\nexport type Opts = {\n include?: string[];\n exclude?: string[];\n optimistic?: boolean;\n unionUndefined?: boolean;\n useEnumType?: boolean;\n mergeReadWriteOnly?: boolean;\n argumentStyle?: (typeof optsArgumentStyles)[number];\n};\n\nexport function generateAst(\n doc: OpenAPIV3.Document,\n opts: Opts,\n isConverted: boolean,\n) {\n return new ApiGenerator(doc, opts, isConverted).generateApi();\n}\n\nexport function printAst(ast: ts.SourceFile) {\n return cg.printFile(ast);\n}\n\nexport async function generateSource(spec: string, opts: Opts = {}) {\n var { doc, isConverted } = await parseSpec(spec);\n const ast = generateAst(doc, opts, isConverted);\n const { title, version } = doc.info;\n const preamble = [\"$&\", title, version].filter(Boolean).join(\"\\n * \");\n const src = printAst(ast);\n return src.replace(/^\\/\\*\\*/, preamble);\n}\n\nfunction isOpenApiV3(doc: OpenAPI.Document): doc is OpenAPIV3.Document {\n return \"openapi\" in doc && doc.openapi.startsWith(\"3\");\n}\n\nexport async function parseSpec(spec: string) {\n const doc = await SwaggerParser.bundle(spec);\n if (isOpenApiV3(doc)) {\n return {\n doc,\n isConverted: false,\n };\n } else {\n const converted = await converter.convertObj(doc, {});\n return {\n doc: converted.openapi as OpenAPIV3.Document,\n isConverted: true,\n };\n }\n}\n"],"names":["optsArgumentStyles","generateAst","doc","opts","isConverted","ApiGenerator","printAst","ast","cg.printFile","generateSource","spec","parseSpec","title","version","preamble","isOpenApiV3","SwaggerParser","converter"],"mappings":";;;;AASa,MAAAA,IAAqB,CAAC,cAAc,QAAQ;AAWzC,SAAAC,EACdC,GACAC,GACAC,GACA;AACA,SAAO,IAAIC,EAAaH,GAAKC,GAAMC,CAAW,EAAE,YAAY;AAC9D;AAEO,SAASE,EAASC,GAAoB;AACpC,SAAAC,EAAaD,CAAG;AACzB;AAEA,eAAsBE,EAAeC,GAAcP,IAAa,IAAI;AAClE,MAAI,EAAE,KAAAD,GAAK,aAAAE,EAAgB,IAAA,MAAMO,EAAUD,CAAI;AAC/C,QAAMH,IAAMN,EAAYC,GAAKC,GAAMC,CAAW,GACxC,EAAE,OAAAQ,GAAO,SAAAC,EAAQ,IAAIX,EAAI,MACzBY,IAAW,CAAC,MAAMF,GAAOC,CAAO,EAAE,OAAO,OAAO,EAAE,KAAK;AAAA,IAAO;AAE7D,SADKP,EAASC,CAAG,EACb,QAAQ,WAAWO,CAAQ;AACxC;AAEA,SAASC,EAAYb,GAAkD;AACrE,SAAO,aAAaA,KAAOA,EAAI,QAAQ,WAAW,GAAG;AACvD;AAEA,eAAsBS,EAAUD,GAAc;AAC5C,QAAMR,IAAM,MAAMc,EAAc,OAAON,CAAI;AACvC,SAAAK,EAAYb,CAAG,IACV;AAAA,IACL,KAAAA;AAAA,IACA,aAAa;AAAA,EACf,IAGO;AAAA,IACL,MAFgB,MAAMe,EAAU,WAAWf,GAAK,CAAA,CAAE,GAEnC;AAAA,IACf,aAAa;AAAA,EACf;AAEJ;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import * as cg from \"./tscodegen\";\nimport ApiGenerator from \"./generate\";\nimport ts from \"typescript\";\nimport SwaggerParser from \"@apidevtools/swagger-parser\";\nimport converter from \"swagger2openapi\";\nimport { OpenAPI, OpenAPIV3 } from \"openapi-types\";\n\nexport { cg };\n\nexport const optsArgumentStyles = [\"positional\", \"object\"];\nexport type Opts = {\n include?: string[];\n exclude?: string[];\n optimistic?: boolean;\n unionUndefined?: boolean;\n useEnumType?: boolean;\n mergeReadWriteOnly?: boolean;\n useUnknown?: boolean;\n argumentStyle?: (typeof optsArgumentStyles)[number];\n};\n\nexport function generateAst(\n doc: OpenAPIV3.Document,\n opts: Opts,\n isConverted: boolean,\n) {\n return new ApiGenerator(doc, opts, isConverted).generateApi();\n}\n\nexport function printAst(ast: ts.SourceFile) {\n return cg.printFile(ast);\n}\n\nexport async function generateSource(spec: string, opts: Opts = {}) {\n var { doc, isConverted } = await parseSpec(spec);\n const ast = generateAst(doc, opts, isConverted);\n const { title, version } = doc.info;\n const preamble = [\"$&\", title, version].filter(Boolean).join(\"\\n * \");\n const src = printAst(ast);\n return src.replace(/^\\/\\*\\*/, preamble);\n}\n\nfunction isOpenApiV3(doc: OpenAPI.Document): doc is OpenAPIV3.Document {\n return \"openapi\" in doc && doc.openapi.startsWith(\"3\");\n}\n\nexport async function parseSpec(spec: string) {\n const doc = await SwaggerParser.bundle(spec);\n if (isOpenApiV3(doc)) {\n return {\n doc,\n isConverted: false,\n };\n } else {\n const converted = await converter.convertObj(doc, {});\n return {\n doc: converted.openapi as OpenAPIV3.Document,\n isConverted: true,\n };\n }\n}\n"],"names":["optsArgumentStyles","generateAst","doc","opts","isConverted","ApiGenerator","printAst","ast","cg.printFile","generateSource","spec","parseSpec","title","version","preamble","isOpenApiV3","SwaggerParser","converter"],"mappings":";;;;AASa,MAAAA,IAAqB,CAAC,cAAc,QAAQ;AAYzC,SAAAC,EACdC,GACAC,GACAC,GACA;AACA,SAAO,IAAIC,EAAaH,GAAKC,GAAMC,CAAW,EAAE,YAAY;AAC9D;AAEO,SAASE,EAASC,GAAoB;AACpC,SAAAC,EAAaD,CAAG;AACzB;AAEA,eAAsBE,EAAeC,GAAcP,IAAa,IAAI;AAClE,MAAI,EAAE,KAAAD,GAAK,aAAAE,EAAgB,IAAA,MAAMO,EAAUD,CAAI;AAC/C,QAAMH,IAAMN,EAAYC,GAAKC,GAAMC,CAAW,GACxC,EAAE,OAAAQ,GAAO,SAAAC,EAAQ,IAAIX,EAAI,MACzBY,IAAW,CAAC,MAAMF,GAAOC,CAAO,EAAE,OAAO,OAAO,EAAE,KAAK;AAAA,IAAO;AAE7D,SADKP,EAASC,CAAG,EACb,QAAQ,WAAWO,CAAQ;AACxC;AAEA,SAASC,EAAYb,GAAkD;AACrE,SAAO,aAAaA,KAAOA,EAAI,QAAQ,WAAW,GAAG;AACvD;AAEA,eAAsBS,EAAUD,GAAc;AAC5C,QAAMR,IAAM,MAAMc,EAAc,OAAON,CAAI;AACvC,SAAAK,EAAYb,CAAG,IACV;AAAA,IACL,KAAAA;AAAA,IACA,aAAa;AAAA,EACf,IAGO;AAAA,IACL,MAFgB,MAAMe,EAAU,WAAWf,GAAK,CAAA,CAAE,GAEnC;AAAA,IACf,aAAa;AAAA,EACf;AAEJ;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oazapfts",
3
- "version": "6.2.2",
3
+ "version": "6.3.0",
4
4
  "description": "OpenApi TypeScript client generator",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -46,9 +46,9 @@
46
46
  ]
47
47
  },
48
48
  "devDependencies": {
49
- "@types/lodash": "^4.17.16",
49
+ "@types/lodash": "^4.17.17",
50
50
  "@types/minimist": "^1.2.5",
51
- "@types/node": "^22.13.14",
51
+ "@types/node": "^22.15.23",
52
52
  "@types/tapable": "^2.2.7"
53
53
  },
54
54
  "peerDependencies": {
@@ -59,8 +59,8 @@
59
59
  "lodash": "^4.17.21",
60
60
  "minimist": "^1.2.8",
61
61
  "swagger2openapi": "^7.0.8",
62
- "tapable": "^2.2.1",
63
- "typescript": "^5.8.2"
62
+ "tapable": "^2.2.2",
63
+ "typescript": "^5.8.3"
64
64
  },
65
65
  "keywords": [
66
66
  "openapi",
@@ -0,0 +1,22 @@
1
+ "use strict";var Xe=Object.defineProperty,et=Object.defineProperties;var tt=Object.getOwnPropertyDescriptors;var je=Object.getOwnPropertySymbols;var rt=Object.prototype.hasOwnProperty,nt=Object.prototype.propertyIsEnumerable;var ce=(t,e,r)=>e in t?Xe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,X=(t,e)=>{for(var r in e||(e={}))rt.call(e,r)&&ce(t,r,e[r]);if(je)for(var r of je(e))nt.call(e,r)&&ce(t,r,e[r]);return t},ke=(t,e)=>et(t,tt(e));var j=(t,e,r)=>ce(t,typeof e!="symbol"?e+"":e,r);const u=require("typescript"),O=require("lodash"),_=u.factory;function it(t){const e=t.split(/{([\s\S]+?)}/g),r=O.chunk(e.slice(1),2);return ie(e[0],r.map(([n,i])=>({expression:_.createIdentifier(n),literal:i})))}function ot(t,e){const r=[E(W(Object.entries(e||{}).map(([n,i])=>({name:n,initializer:q(i.default)}))),{type:_.createTypeLiteralNode(Object.entries(e||{}).map(([n,i])=>x({name:n,type:i.enum?H(i.enum):_.createUnionTypeNode([g.string,g.number,g.boolean])})))})];return ye(r,it(t))}function st(t){return t.variables?ot(t.url,t.variables):_.createStringLiteral(t.url)}function at(t){if(!t)return"/";const{url:e,variables:r}=t;return r?e.replace(/\{(.+?)\}/g,(n,i)=>r[i]?String(r[i].default):n):e}function Ke(t){return _.createStringLiteral(at(t[0]))}function ct(t,e){return t.description?O.camelCase(t.description.replace(/\W+/," ")):`server${e+1}`}function ut(t){return ne(t.map((e,r)=>[ct(e,r),st(e)]))}const a=u.factory,Le=["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"],Pe={"*/*":"json","application/json":"json","application/x-www-form-urlencoded":"form","multipart/form-data":"multipart"};function Ie(t){return typeof t=="string"&&/^[^/]+\/[^/]+$/.test(t)}function te(t){return Pe[t]==="json"||/\bjson\b/i.test(t)}function Re(t){if(t!=null&&t.content)for(const e of Object.keys(t.content)){const r=Pe[e];if(r)return r;if(te(e))return"json"}}function Ce({style:t="form",explode:e=!0,content:r}){if(r){const n=Object.keys(r);if(n.length!==1)throw new Error("Parameters with content property must specify one media type");if(!te(n[0]))throw new Error("Parameters with content property must specify a JSON compatible media type");return"json"}return e&&t==="deepObject"?"deep":e?"explode":t==="spaceDelimited"?"space":t==="pipeDelimited"?"pipe":"form"}function Ue(t){if(t&&!t.match(/[^\w\s]/)&&(t=O.camelCase(t),G(t)))return t}function $e(t,e,r){const n=Ue(r);return n||(e=e.replace(/\{(.+?)\}/,"by $1").replace(/\{(.+?)\}/,"and $1"),N(`${t} ${e}`))}function qe(t){return typeof t=="boolean"?t:t&&"nullable"in t?!w(t)&&t.nullable:!1}function w(t){return typeof t=="object"&&t!==null&&"$ref"in t}function fe(t){if(!t.startsWith("#/"))throw new Error(`External refs are not supported (${t}). Make sure to call SwaggerParser.bundle() first.`);return t.slice(2).split("/").map(e=>decodeURI(e.replace(/~1/g,"/").replace(/~0/g,"~")))}function $(t){return t.replace(/.+\//,"")}function pt(t){const e=$(t);return/^\d+/.test(e)?fe(t).join("_"):e}function ue(t){if(w(t))return $(t.$ref)}const ft={readOnly:"Read",writeOnly:"Write"};function lt(t){return t?ft[t]:""}function N(t,e=!1,r){let n=O.camelCase(t)+lt(r);return e&&(n=O.upperFirst(n)),G(n)?n:"$"+n}function De(t,e){const r=[],n=t.replace(/(.*?)\{(.+?)\}(.*?)(?=\{|$)/g,(i,o,s,f)=>{const p=N(s);return r.push({expression:D(a.createIdentifier("encodeURIComponent"),{args:[a.createIdentifier(p)]}),literal:f}),o});return e&&r.push({expression:e,literal:""}),ie(n,r)}function pe(t,e){return D(a.createPropertyAccessExpression(a.createIdentifier("QS"),t),{args:e})}function z(t,e,r){return D(a.createPropertyAccessExpression(a.createIdentifier("oazapfts"),t),{args:e,typeArgs:r})}function Be(t){const e=[],r={};return t.forEach(n=>{const i=/^(.+?)\[(.*?)\]/.exec(n.name);if(!i){e.push(n);return}const[,o,s]=i;let f=r[o];f||(f=r[o]={name:o,in:n.in,style:"deepObject",schema:{type:"object",properties:{}}},e.push(f)),f.schema.properties[s]=n.schema}),e}function dt(t){return t in g}class yt{constructor(e,r={},n=!1){j(this,"discriminatingSchemas",new Set);j(this,"aliases",[]);j(this,"enumAliases",[]);j(this,"enumRefs",{});j(this,"refs",{});j(this,"refsOnlyMode",new Map);j(this,"typeAliases",{});var i;this.spec=e,this.opts=r,this.isConverted=n,(i=this.spec.components)!=null&&i.schemas&&this.preprocessComponents(this.spec.components.schemas)}reset(){this.aliases=[],this.enumAliases=[],this.refs={},this.typeAliases={}}resolve(e){if(!w(e))return e;const r=e.$ref,n=fe(r),i=O.get(this.spec,n);if(typeof i=="undefined")throw new Error(`Can't find ${n}`);return i}resolveArray(e){return e?e.map(r=>this.resolve(r)):[]}skip(e){var n;return e&&e.some(i=>{var o,s;return(s=(o=this.opts)==null?void 0:o.exclude)==null?void 0:s.includes(i)})?!0:(n=this.opts)!=null&&n.include?!(e&&e.some(o=>{var s;return(s=this.opts.include)==null?void 0:s.includes(o)})):!1}findAvailableRef(e){const r=i=>{try{return this.resolve({$ref:i}),!1}catch(o){return!0}};if(r(e))return e;let n=2;for(;;){const i=e+String(n);if(r(i))return i;n+=1}}getUniqueAlias(e){let r=this.typeAliases[e]||0;return r&&(this.typeAliases[e]=++r,e+=r),this.typeAliases[e]=1,e}getEnumUniqueAlias(e,r){return this.enumRefs[e]&&this.enumRefs[e].values==r?e:this.getUniqueAlias(e)}getRefAlias(e,r,n){var o;const i=n?this.findAvailableRef(e.$ref+"Base"):e.$ref;if(!this.refs[i]){let s=this.resolve(e);typeof s!="boolean"&&n&&(s=O.cloneDeep(s),delete s.discriminator);const f=typeof s!="boolean"&&s.title||pt(i),p=N(f,!0);if(this.isTrueEnum(s,f))return this.getTypeFromSchema(s,f);const d=this.getUniqueAlias(p);this.refs[i]={base:a.createTypeReferenceNode(d,void 0),readOnly:void 0,writeOnly:void 0};const y=this.getTypeFromSchema(s,void 0);this.aliases.push(V({modifiers:[I.export],name:d,type:y}));const{readOnly:h,writeOnly:T}=this.checkSchemaOnlyMode(s);if(h){const S=this.getUniqueAlias(N(f,!0,"readOnly"));this.refs[i].readOnly=a.createTypeReferenceNode(S,void 0);const v=this.getTypeFromSchema(s,f,"readOnly");this.aliases.push(V({modifiers:[I.export],name:S,type:v}))}if(T){const S=this.getUniqueAlias(N(f,!0,"writeOnly"));this.refs[i].writeOnly=a.createTypeReferenceNode(S,void 0);const v=this.getTypeFromSchema(s,f,"writeOnly");this.aliases.push(V({modifiers:[I.export],name:S,type:v}))}}return(o=this.refs[i][r||"base"])!=null?o:this.refs[i].base}getUnionType(e,r,n){if(r){if(r.propertyName===void 0)throw new Error("Discriminators require a propertyName");const i=new Set(Object.values(r.mapping||{}).map($));return a.createUnionTypeNode([...Object.entries(r.mapping||{}).map(([o,s])=>[o,{$ref:s}]),...e.filter(o=>{if(!w(o))throw new Error("Discriminators require references, not inline schemas");return!i.has($(o.$ref))}).map(o=>{var y,h;const s=$(o.$ref),p=(y=this.resolve(o).properties)==null?void 0:y[r.propertyName];return[(p&&"enum"in p?(h=p==null?void 0:p.enum)==null?void 0:h[0]:"")||s,o]})].map(([o,s])=>a.createIntersectionTypeNode([a.createTypeLiteralNode([x({name:r.propertyName,type:a.createLiteralTypeNode(a.createStringLiteral(o))})]),this.getTypeFromSchema(s,void 0,n)])))}else return a.createUnionTypeNode(e.map(i=>this.getTypeFromSchema(i,void 0,n)))}getTypeFromSchema(e,r,n){const i=this.getBaseTypeFromSchema(e,r,n);return qe(e)?a.createUnionTypeNode([i,g.null]):i}getEmptySchemaType(){return this.opts.useUnknown?g.unknown:g.any}getBaseTypeFromSchema(e,r,n){var i;if(!e&&typeof e!="boolean")return this.getEmptySchemaType();if(w(e))return this.getRefAlias(e,n);if(e===!0)return this.getEmptySchemaType();if(e===!1)return g.never;if(e.oneOf){const o=X({},e);return delete o.oneOf,this.getUnionType(e.oneOf.map(s=>O.mergeWith({},o,s,(f,p)=>{if(O.isArray(f))return f.concat(p)})),e.discriminator,n)}if(e.anyOf)return this.getUnionType(e.anyOf,void 0,n);if((i=e.discriminator)!=null&&i.mapping){const o=e.discriminator.mapping;return this.getUnionType(Object.values(o).map(s=>({$ref:s})),void 0,n)}if(e.allOf){const o=[];for(const s of e.allOf)if(w(s)&&this.discriminatingSchemas.has(s.$ref)){const p=this.resolve(s).discriminator,d=Object.entries(p.mapping||{}).find(([,y])=>y===e["x-component-ref-path"]);if(d){const[y]=d;o.push(a.createTypeLiteralNode([x({name:p.propertyName,type:a.createLiteralTypeNode(a.createStringLiteral(y))})]))}o.push(this.getRefAlias(s,n,!0))}else o.push(this.getTypeFromSchema(X({required:e.required},s),void 0,n));return(e.properties||e.additionalProperties)&&o.push(this.getTypeFromProperties(e.properties||{},e.required,e.additionalProperties,n)),a.createIntersectionTypeNode(o)}if(Array.isArray(e.type))return a.createUnionTypeNode(e.type.map(o=>{const s=ke(X({},e),{type:o});return"items"in s&&o!=="array"&&delete s.items,"properties"in s&&o!=="object"&&delete s.properties,this.getBaseTypeFromSchema(s,r,n)}));if("items"in e){const o=e.items;if(o.enum){const s=this.isTrueEnum(o,r)?this.getTrueEnum(o,r):H(o.enum);return a.createArrayTypeNode(s)}return a.createArrayTypeNode(this.getTypeFromSchema(e.items,void 0,n))}if("prefixItems"in e&&e.prefixItems)return a.createTupleTypeNode(e.prefixItems.map(o=>this.getTypeFromSchema(o)));if(e.properties||e.additionalProperties)return this.getTypeFromProperties(e.properties||{},e.required,e.additionalProperties,n);if(e.enum)return this.isTrueEnum(e,r)?this.getTrueEnum(e,r):H(e.enum);if(e.format=="binary")return a.createTypeReferenceNode("Blob",[]);if(e.const)return this.getTypeFromEnum([e.const]);if(e.type!==void 0){if(e.type===null)return g.null;if(dt(e.type))return g[e.type]}return this.getEmptySchemaType()}isTrueEnum(e,r){return!!(typeof e!="boolean"&&e.enum&&this.opts.useEnumType&&r&&e.type!=="boolean")}getTypeFromEnum(e){const r=e.map(n=>{if(n===null)return g.null;if(typeof n=="boolean")return n?a.createLiteralTypeNode(u.factory.createToken(u.SyntaxKind.TrueKeyword)):a.createLiteralTypeNode(u.factory.createToken(u.SyntaxKind.FalseKeyword));if(typeof n=="number")return a.createLiteralTypeNode(a.createNumericLiteral(n));if(typeof n=="string")return a.createLiteralTypeNode(a.createStringLiteral(n));throw new Error(`Unexpected ${String(n)} of type ${typeof n} in enum`)});return r.length>1?a.createUnionTypeNode(r):r[0]}getEnumValuesString(e){return e.join("_")}getTrueEnum(e,r){var h;if(typeof e=="boolean")throw new Error("cannot get enum from boolean schema. schema must be an object");const i=(e.title||O.upperFirst(r)).split(/[^A-Za-z0-9$_]/g).map(T=>O.upperFirst(T)).join(""),o=this.getEnumValuesString(e.enum?e.enum:[]),s=this.getEnumUniqueAlias(i,o);if(this.enumRefs[i]&&i===s)return this.enumRefs[i].type;const f=e.enum?e.enum:[],p=(h=e["x-enumNames"])!=null?h:e["x-enum-varnames"];if(p){if(!Array.isArray(p))throw new Error("enum names must be an array");if(p.length!==f.length)throw new Error("enum names must have the same length as enum values")}const d=f.map((T,S)=>{if(e.type==="number"||e.type==="integer"){const v=p?p[S]:String(T);return a.createEnumMember(a.createIdentifier(N(v,!0)),q(T))}return a.createEnumMember(a.createIdentifier(N(T,!0)),q(T))});this.enumAliases.push(a.createEnumDeclaration([I.export],s,d));const y=a.createTypeReferenceNode(s,void 0);return this.enumRefs[i]={values:o,type:a.createTypeReferenceNode(s,void 0)},y}checkSchemaOnlyMode(e,r=!0){if(this.opts.mergeReadWriteOnly)return{readOnly:!1,writeOnly:!1};const n=(i,o)=>{var d,y,h,T,S,v;if(w(i)){if(!r)return{readOnly:!1,writeOnly:!1};if(o.has(i.$ref))return{readOnly:!1,writeOnly:!1};const R=this.refsOnlyMode.get(i.$ref);if(R)return R;o.add(i.$ref);const k=n(this.resolve(i),o);return o.delete(i.$ref),this.refsOnlyMode.set(i.$ref,k),k}if(typeof i=="boolean")return{readOnly:!1,writeOnly:!1};let s=(d=i.readOnly)!=null?d:!1,f=(y=i.writeOnly)!=null?y:!1;const p=[];"items"in i&&i.items?p.push(i.items):(p.push(...Object.values((h=i.properties)!=null?h:{})),p.push(...(T=i.allOf)!=null?T:[]),p.push(...(S=i.anyOf)!=null?S:[]),p.push(...(v=i.oneOf)!=null?v:[]));for(const R of p){if(s&&f)break;const k=n(R,o);s=s||k.readOnly,f=f||k.writeOnly}return{readOnly:s,writeOnly:f}};return n(e,new Set)}getTypeFromProperties(e,r,n,i){const f=Object.keys(e).filter(p=>{const d=e[p],{readOnly:y,writeOnly:h}=this.checkSchemaOnlyMode(d,!1);switch(i){case"readOnly":return y||!h;case"writeOnly":return h||!y;default:return!y&&!h}}).map(p=>{const d=e[p],y=r&&r.includes(p);let h=this.getTypeFromSchema(d,p,i);!y&&this.opts.unionUndefined&&(h=a.createUnionTypeNode([h,g.undefined]));const T=x({questionToken:!y,name:p,type:h});if(typeof d!="boolean"&&"description"in d&&d.description){const S=d.description.replace("*/","*\\/");u.addSyntheticLeadingComment(T,u.SyntaxKind.MultiLineCommentTrivia,`* ${S} `,!0)}return T});if(n){const p=n===!0?this.getEmptySchemaType():this.getTypeFromSchema(n,void 0,i);f.push(he(p))}return a.createTypeLiteralNode(f)}getTypeFromResponses(e,r){return a.createUnionTypeNode(Object.entries(e).map(([n,i])=>{const o=n==="default"?g.number:a.createLiteralTypeNode(a.createNumericLiteral(n)),s=[x({name:"status",type:o})],f=this.getTypeFromResponse(i,r);return f!==g.void&&s.push(x({name:"data",type:f})),a.createTypeLiteralNode(s)}))}getTypeFromResponse(e,r){const n=this.resolve(e);return!n||!n.content?g.void:this.getTypeFromSchema(this.getSchemaFromContent(n.content),void 0,r)}getResponseType(e){if(!e)return"text";const r=Object.values(e).map(i=>this.resolve(i));return r.some(i=>{var o;return Object.keys((o=i.content)!=null?o:{}).length>0})?r.some(i=>{var s;return Object.keys((s=i.content)!=null?s:{}).some(te)})?"json":r.some(i=>{var o;return Object.keys((o=i.content)!=null?o:[]).some(s=>s.startsWith("text/"))})?"text":"blob":"text"}getSchemaFromContent(e){const r=Object.keys(e).find(Ie);if(r){const{schema:n}=e[r];if(n)return n}return Object.keys(e).length===0||Object.keys(e).some(n=>n.startsWith("text/"))?{type:"string"}:{type:"string",format:"binary"}}getTypeFromParameter(e){if(e.content){const r=this.getSchemaFromContent(e.content);return this.getTypeFromSchema(r)}return this.getTypeFromSchema(w(e)?e:e.schema)}wrapResult(e){var r;return(r=this.opts)!=null&&r.optimistic?z("ok",[e]):e}preprocessComponents(e){const r="#/components/schemas/";for(const i of Object.keys(e)){const o=e[i];w(o)||typeof o=="boolean"||(o["x-component-ref-path"]=r+i,typeof o!="boolean"&&o.discriminator&&!o.oneOf&&!o.anyOf&&this.discriminatingSchemas.add(r+i))}const n=(i,o)=>Object.values(i.mapping||{}).includes(o);for(const i of Object.keys(e)){const o=e[i];if(!(w(o)||typeof o=="boolean"||!o.allOf))for(const s of o.allOf){if(!w(s)||!this.discriminatingSchemas.has(s.$ref))continue;const p=e[$(s.$ref)].discriminator;n(p,r+i)||(p.mapping||(p.mapping={}),p.mapping[i]=r+i)}}}generateApi(){this.reset();const e=u.createSourceFile("ApiStub.ts",`/**
2
+ * DO NOT MODIFY - This file has been generated using oazapfts.
3
+ * See https://www.npmjs.com/package/oazapfts
4
+ */
5
+
6
+ import * as Oazapfts from "@oazapfts/runtime";
7
+ import * as QS from "@oazapfts/runtime/query";
8
+
9
+ export const defaults: Oazapfts.Defaults<Oazapfts.CustomHeaders> = {
10
+ headers: {},
11
+ baseUrl: "/",
12
+ };
13
+
14
+ const oazapfts = Oazapfts.runtime(defaults);
15
+
16
+ export const servers = {};
17
+ `,u.ScriptTarget.Latest,!1,u.ScriptKind.TS),r=ee(e.statements,"servers");Object.assign(r,{initializer:ut(this.spec.servers||[])});const{initializer:n}=ee(e.statements,"defaults");if(!n||!u.isObjectLiteralExpression(n))throw new Error("No object literal: defaults");Se(n,"baseUrl",Ke(this.spec.servers||[]));const i=[],o={};return this.spec.paths&&Object.keys(this.spec.paths).forEach(s=>{if(!this.spec.paths)return;const f=this.spec.paths[s];f&&Object.keys(this.resolve(f)).forEach(p=>{var Ae;const d=p.toUpperCase();if(!Le.includes(d))return;const y=f[p],{operationId:h,requestBody:T,responses:S,summary:v,description:R,tags:k}=y;if(this.skip(k))return;let Y=$e(p,s,h);const Ne=o[Y]=(o[Y]||0)+1;Ne>1&&(Y+=Ne);const Z=this.resolveArray(f.parameters);for(const l of this.resolveArray(y.parameters))Z.find(P=>P.name===l.name&&P.in===l.in)||Z.push(l);const C=this.isConverted?Be(Z):Z,se=new Map;O.sortBy(C,"name.length").forEach(l=>{const b=N(l.name),A=[...se.values()].includes(b)?O.upperFirst(l.in):"";se.set(l,b+A)});const K=l=>{const b=se.get(l);if(!b)throw new Error(`Can't find parameter: ${l.name}`);return b},U=[];let L,F;switch((Ae=this.opts.argumentStyle)!=null?Ae:"positional"){case"positional":const[l,b]=O.partition(C,"required"),P=l.map(m=>E(K(this.resolve(m)),{type:this.getTypeFromParameter(m)}));if(U.push(...P),T){L=this.resolve(T);const m=this.getSchemaFromContent(L.content),M=this.getTypeFromSchema(m,void 0,"writeOnly");F=N(M.name||ue(m)||"body"),U.push(E(F,{type:M,questionToken:!L.required}))}b.length&&U.push(E(W(b.map(m=>this.resolve(m)).map(m=>({name:K(m)}))),{initializer:a.createObjectLiteralExpression(),type:a.createTypeLiteralNode(b.map(m=>x({name:K(this.resolve(m)),questionToken:!0,type:this.getTypeFromParameter(m)})))}));break;case"object":const A=C.map(m=>x({name:K(this.resolve(m)),questionToken:!m.required,type:this.getTypeFromParameter(m)}));if(T){L=this.resolve(T);const m=this.getSchemaFromContent(L.content),M=this.getTypeFromSchema(m,void 0,"writeOnly");F=N(M.name||ue(m)||"body"),A.push(x({name:F,questionToken:!L.required,type:M}))}if(A.length===0)break;U.push(E(W([...C.map(m=>this.resolve(m)).map(m=>({name:K(m)})),...F?[{name:F}]:[]]),{type:a.createTypeLiteralNode(A)}));break}U.push(E("opts",{type:a.createTypeReferenceNode("Oazapfts.RequestOpts",void 0),questionToken:!0}));const ae=this.getResponseType(S),xe=C.filter(l=>l.in==="query"),ve=C.filter(l=>l.in==="header");let Ee;if(xe.length){const l=O.groupBy(xe,Ce);Ee=pe("query",Object.entries(l).map(([b,P])=>pe(b,[ne(P.map(A=>[A.name,K(A)]))])))}const Ze=De(s,Ee),B=[a.createSpreadAssignment(a.createIdentifier("opts"))];d!=="GET"&&B.push(a.createPropertyAssignment("method",a.createStringLiteral(d))),F&&B.push(Q("body",a.createIdentifier(F))),ve.length&&B.push(a.createPropertyAssignment("headers",z("mergeHeaders",[a.createPropertyAccessChain(a.createIdentifier("opts"),a.createToken(u.SyntaxKind.QuestionDotToken),"headers"),a.createObjectLiteralExpression([...ve.map(l=>Q(l.name,a.createIdentifier(K(l))))],!0)])));const Fe=[Ze];if(B.length){const l=Re(L),b=a.createObjectLiteralExpression(B,!0);Fe.push(l?z(l,[b]):b)}i.push(Oe(me(Y,{modifiers:[I.export]},U,de(a.createReturnStatement(this.wrapResult(z({json:"fetchJson",text:"fetchText",blob:"fetchBlob"}[ae],Fe,ae==="json"||ae==="blob"?[this.getTypeFromResponses(S,"readOnly")||u.SyntaxKind.AnyKeyword]:void 0))))),v||R))})}),Object.assign(e,{statements:be(e.statements,...this.aliases,...i,...this.enumAliases)}),e}}const c=u.factory,le=c.createToken(u.SyntaxKind.QuestionToken);function J(t){if(t)return t===!0?le:t}const g={any:c.createKeywordTypeNode(u.SyntaxKind.AnyKeyword),number:c.createKeywordTypeNode(u.SyntaxKind.NumberKeyword),integer:c.createKeywordTypeNode(u.SyntaxKind.NumberKeyword),object:c.createKeywordTypeNode(u.SyntaxKind.ObjectKeyword),string:c.createKeywordTypeNode(u.SyntaxKind.StringKeyword),boolean:c.createKeywordTypeNode(u.SyntaxKind.BooleanKeyword),undefined:c.createKeywordTypeNode(u.SyntaxKind.UndefinedKeyword),void:c.createKeywordTypeNode(u.SyntaxKind.VoidKeyword),never:c.createKeywordTypeNode(u.SyntaxKind.NeverKeyword),null:c.createLiteralTypeNode(c.createNull()),unknown:c.createKeywordTypeNode(u.SyntaxKind.UnknownKeyword)};function Me(t){return g[t]}const I={async:c.createModifier(u.SyntaxKind.AsyncKeyword),export:c.createModifier(u.SyntaxKind.ExportKeyword)};function q(t){switch(typeof t){case"string":return c.createStringLiteral(t);case"boolean":return t?c.createTrue():c.createFalse();case"number":return String(t).charAt(0)==="-"?c.createPrefixUnaryExpression(u.SyntaxKind.MinusToken,c.createNumericLiteral(String(-t))):c.createNumericLiteral(String(t))}}function H(t){const e=t.map(r=>r===null?g.null:c.createLiteralTypeNode(q(r)));return e.length>1?c.createUnionTypeNode(e):e[0]}function V({modifiers:t,name:e,typeParameters:r,type:n}){return c.createTypeAliasDeclaration(t,e,r,n)}function ze({modifiers:t,name:e,typeParameters:r,type:n,inheritedNodeNames:i}){const o=i?[c.createHeritageClause(u.SyntaxKind.ExtendsKeyword,i.map(s=>{const f=typeof s=="string"?s:s.escapedText.toString();return c.createExpressionWithTypeArguments(c.createIdentifier(N(f,!0)),void 0)}))]:[];return c.createInterfaceDeclaration(t,e,r,o,n.members)}function re(t){return typeof t=="string"?c.createIdentifier(t):t}function D(t,{typeArgs:e,args:r}={}){return c.createCallExpression(re(t),e,r)}function Ve(t,e){return D(c.createPropertyAccessExpression(c.createThis(),t),e)}function ne(t){return c.createObjectLiteralExpression(t.map(([e,r])=>Q(e,re(r))),!0)}function Q(t,e){return u.isIdentifier(e)&&e.text===t?c.createShorthandPropertyAssignment(t):c.createPropertyAssignment(We(t),e)}function de(...t){return c.createBlock(t,!0)}function ye(t,e,{modifiers:r,typeParameters:n,type:i,equalsGreaterThanToken:o}={}){return c.createArrowFunction(r,n,t,i,o,e)}function me(t,{modifiers:e,asteriskToken:r,typeParameters:n,type:i},o,s){return c.createFunctionDeclaration(e,r,t,n,o,i,s)}function _e({modifiers:t,name:e,typeParameters:r,heritageClauses:n,members:i}){return c.createClassDeclaration(t,e,r,n,i)}function He({modifiers:t,parameters:e,body:r}){return c.createConstructorDeclaration(t,e,r)}function Qe(t,{modifiers:e,asteriskToken:r,questionToken:n,typeParameters:i,type:o}={},s=[],f){return c.createMethodDeclaration(e,r,t,J(n),i,s,o,f)}function E(t,{modifiers:e,dotDotDotToken:r,questionToken:n,type:i,initializer:o}){return c.createParameterDeclaration(e,r,t,J(n),i,o)}function We(t){return typeof t=="string"?G(t)?c.createIdentifier(t):c.createStringLiteral(t):t}function x({modifiers:t,name:e,questionToken:r,type:n}){return c.createPropertySignature(t,We(e),J(r),n)}function he(t,{modifiers:e,indexName:r="key",indexType:n=g.string}={}){return c.createIndexSignature(e,[E(r,{type:n})],t)}function W(t){return c.createObjectBindingPattern(t.map(({dotDotDotToken:e,propertyName:r,name:n,initializer:i})=>c.createBindingElement(e,r,n,i)))}function ie(t,e){return e.length?c.createTemplateExpression(c.createTemplateHead(t),e.map(({expression:r,literal:n},i)=>c.createTemplateSpan(r,i===e.length-1?c.createTemplateTail(n):c.createTemplateMiddle(n)))):c.createStringLiteral(t)}function ge(t,e,r){const n=t.find(i=>i.kind===e&&(!r||r(i)));if(!n)throw new Error(`Node not found: ${e}`);return n}function oe(t){return u.isIdentifier(t)?t.escapedText:u.isLiteralExpression(t)?t.text:""}function Te(t){const e=u.getNameOfDeclaration(t.declarationList.declarations[0]);return e?oe(e):""}function ee(t,e){const r=ge(t,u.SyntaxKind.VariableStatement,i=>Te(i)===e),[n]=r.declarationList.declarations;if(!n)throw new Error("Missing declaration");return n}function Se(t,e,r){const n=t.properties.find(i=>u.isPropertyAssignment(i)&&oe(i.name)===e);if(n&&u.isPropertyAssignment(n))Object.assign(n,{initializer:r});else throw new Error(`No such property: ${e}`)}function be(t,...e){return c.createNodeArray([...t,...e])}function Oe(t,e){return e?u.addSyntheticLeadingComment(t,u.SyntaxKind.MultiLineCommentTrivia,`*
18
+ * ${e.replace(/\n/g,`
19
+ * `)}
20
+ `,!0):t}const we=u.createPrinter({newLine:u.NewLineKind.LineFeed});function Je(t){const e=u.createSourceFile("someFileName.ts","",u.ScriptTarget.Latest,!1,u.ScriptKind.TS);return we.printNode(u.EmitHint.Unspecified,t,e)}function Ge(t){const e=u.createSourceFile("someFileName.ts","",u.ScriptTarget.Latest,!1,u.ScriptKind.TS);return t.map(r=>we.printNode(u.EmitHint.Unspecified,r,e)).join(`
21
+ `)}function Ye(t){return we.printFile(t)}function G(t){if(!t.length||t.trim()!==t)return!1;const e=u.parseIsolatedEntityName(t,u.ScriptTarget.Latest);return!!e&&e.kind===u.SyntaxKind.Identifier&&u.identifierToKeywordKind(e)===void 0}const mt=Object.freeze(Object.defineProperty({__proto__:null,addComment:Oe,appendNodes:be,block:de,changePropertyValue:Se,createArrowFunction:ye,createCall:D,createClassDeclaration:_e,createConstructor:He,createEnumTypeNode:H,createFunctionDeclaration:me,createIndexSignature:he,createInterfaceAliasDeclaration:ze,createKeywordType:Me,createLiteral:q,createMethod:Qe,createMethodCall:Ve,createObjectBinding:W,createObjectLiteral:ne,createParameter:E,createPropertyAssignment:Q,createPropertySignature:x,createQuestionToken:J,createTemplateString:ie,createTypeAliasDeclaration:V,findFirstVariableDeclaration:ee,findNode:ge,getFirstDeclarationName:Te,getName:oe,isValidIdentifier:G,keywordType:g,modifier:I,printFile:Ye,printNode:Je,printNodes:Ge,questionToken:le,toExpression:re},Symbol.toStringTag,{value:"Module"}));exports.ApiGenerator=yt;exports.addComment=Oe;exports.appendNodes=be;exports.block=de;exports.callOazapftsFunction=z;exports.callQsFunction=pe;exports.changePropertyValue=Se;exports.createArrowFunction=ye;exports.createCall=D;exports.createClassDeclaration=_e;exports.createConstructor=He;exports.createEnumTypeNode=H;exports.createFunctionDeclaration=me;exports.createIndexSignature=he;exports.createInterfaceAliasDeclaration=ze;exports.createKeywordType=Me;exports.createLiteral=q;exports.createMethod=Qe;exports.createMethodCall=Ve;exports.createObjectBinding=W;exports.createObjectLiteral=ne;exports.createParameter=E;exports.createPropertyAssignment=Q;exports.createPropertySignature=x;exports.createQuestionToken=J;exports.createTemplateString=ie;exports.createTypeAliasDeclaration=V;exports.createUrlExpression=De;exports.defaultBaseUrl=Ke;exports.findFirstVariableDeclaration=ee;exports.findNode=ge;exports.getBodyFormatter=Re;exports.getFirstDeclarationName=Te;exports.getFormatter=Ce;exports.getName=oe;exports.getOperationIdentifier=Ue;exports.getOperationName=$e;exports.getReferenceName=ue;exports.isJsonMimeType=te;exports.isMimeType=Ie;exports.isNullable=qe;exports.isReference=w;exports.isValidIdentifier=G;exports.keywordType=g;exports.modifier=I;exports.printFile=Ye;exports.printNode=Je;exports.printNodes=Ge;exports.questionToken=le;exports.refPathToPropertyPath=fe;exports.supportDeepObjects=Be;exports.toExpression=re;exports.toIdentifier=N;exports.tscodegen=mt;exports.verbs=Le;
22
+ //# sourceMappingURL=tscodegen-BLknMY2_.cjs.map