@acrool/rtk-query-codegen-openapi 1.2.0-alpha.1 → 1.2.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/lib/bin/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- var j=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var Se=Object.prototype.hasOwnProperty;var W=(r,e)=>()=>(r&&(e=r(r=0)),e);var Ee=(r,e)=>{for(var t in e)j(r,t,{get:e[t],enumerable:!0})},Re=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of $e(e))!Se.call(r,o)&&o!==t&&j(r,o,{get:()=>e[o],enumerable:!(n=Ae(e,o))||n.enumerable});return r};var Ne=r=>Re(j({},"__esModule",{value:!0}),r);import{fileURLToPath as we}from"node:url";var Fe,g,p=W(()=>{"use strict";Fe=()=>we(import.meta.url),g=Fe()});var ae={};Ee(ae,{argumentMatches:()=>Le,defaultIsDataResponse:()=>Be,getOperationName:()=>w,getOverrides:()=>k,getTags:()=>ze,operationMatches:()=>se});import{getOperationName as _e}from"oazapfts/generate";function Be(r,e){if(e&&r==="default")return!0;let t=Number(r);return!Number.isNaN(t)&&t>=200&&t<300}function w({verb:r,path:e}){return _e(r,e,void 0)}function ze({verb:r,pathItem:e}){return r?e[r]?.tags||[]:[]}function ie(r){let e=Array.isArray(r)?r:[r];return function(n){return r?e.some(o=>typeof o=="string"?o===n:o?.test(n)):!0}}function se(r){let e=typeof r=="function"?r:ie(r);return function(n){if(!r)return!0;let o=w(n);return e(o,n)}}function Le(r){let e=typeof r=="function"?r:ie(r);return function(n){if(!r||n.in==="path")return!0;let o=n.name;return e(o,n)}}function k(r,e){return e?.find(t=>se(t.pattern)(r))}var V=W(()=>{"use strict";p()});p();import D from"commander";import{createRequire as nt}from"node:module";p();import qe from"commander";import{createRequire as Ge}from"node:module";import{resolve as U}from"node:path";import{existsSync as M,rmSync as Ie,readdirSync as De,statSync as je,mkdirSync as Me}from"node:fs";import Q from"node:path";var T=Ge(g);function Ke(r){let e=new Map;if(!M(r))return e;function t(n){try{let o=De(n);for(let i of o){let a=Q.join(n,i);if(je(a).isDirectory())t(a);else if(i==="enhanceEndpoints.ts"){let u=T("node:fs").readFileSync(a);e.set(a,u)}}}catch{}}return t(r),e}function ke(r){for(let[e,t]of r)try{let n=Q.dirname(e);M(n)||Me(n,{recursive:!0}),T("node:fs").writeFileSync(e,t)}catch(n){console.warn(`Failed to restore ${e}:`,n)}}function _(r){let e=["/","/usr","/etc","/var","/home","/Users",".",".."],t=U(r);if(e.some(n=>t===U(n))&&(console.error(`Dangerous path detected: ${t}. Refusing to delete.`),process.exit(1)),M(r)){console.log(`Cleaning output directory: ${r}`);let n=Ke(r);Ie(r,{recursive:!0,force:!0}),n.size>0&&(ke(n),console.log(`Protected ${n.size} enhanceEndpoints.ts file(s) from deletion`)),console.log(`Directory cleaned: ${r}`)}}function B(){try{if(T.resolve("esbuild")&&T.resolve("esbuild-runner"))return T("esbuild-runner/register"),!0}catch{}try{if(T.resolve("typescript")&&T.resolve("ts-node"))return T("ts-node").register({transpileOnly:!0,compilerOptions:{target:"es6",module:"commonjs"}}),!0}catch{}return!1}function z(r){(!r||!/\.([mc]?(jsx?|tsx?)|jsonc?)?$/.test(r))&&(console.error("Please provide a valid configuration file."),qe.help())}function L(r,e){/\.[mc]?tsx?$/.test(r)&&!e&&(console.error("Encountered a TypeScript config file, but neither esbuild-runner nor ts-node are installed."),process.exit(1))}import{dirname as ot,resolve as it}from"node:path";p();p();import $ from"node:path";import ve from"typescript";p();p();function S(r){return r.replace(r[0],r[0].toUpperCase())}p();import K from"node:fs";import Ve from"node:path";p();function H(r){try{new URL(r)}catch{return!1}return!0}async function Z(r,e){if(!H(r))throw new Error(`remoteFile must be a valid URL: ${r}`);try{let t=Ve.dirname(e);K.existsSync(t)||await K.promises.mkdir(t,{recursive:!0});let n=await fetch(r);if(!n.ok)throw new Error(`Failed to download schema from ${r}: ${n.statusText}`);let o=await n.text();return await K.promises.writeFile(e,o,"utf-8"),console.log(`Schema downloaded from ${r} to ${e}`),e}catch(t){throw console.error(`Error downloading schema from ${r}:`,t),t}}p();p();var Y=["get","put","post","delete","options","head","patch","trace"];function J(r){return Object.entries(r.paths).flatMap(([e,t])=>t?Object.entries(t).filter(n=>Y.includes(n[0])).map(([n,o])=>({path:e,verb:n,pathItem:t,operation:o})):[])}p();import We from"@apidevtools/swagger-parser";import Ue from"swagger2openapi";async function X(r,e){let t=await We.bundle(r,{resolve:{http:e}});return"openapi"in t&&t.openapi.startsWith("3")?t:(await Ue.convertObj(t,{})).openapi}p();function ee(r,e,t,n){return n?n(r,e):t?.type?t.type==="query":r==="get"}var E=class{docCache={};async getDocument(e,t){if(this.docCache[e])return this.docCache[e];let n=await X(e,t);return this.docCache[e]=n,n}async downloadSchema(e,t){return Z(e,t)}getPaths(e){return Object.keys(e.paths||{})}clearCache(){this.docCache={}}};p();import te from"lodash.camelcase";var R=class{groupPaths(e,t){let{groupKeyMatch:n,outputDir:o}=t,i=e.reduce((s,u)=>{let m=n(u),l=m?te(m):"_common";return s[l]||(s[l]=[]),s[l].push(u),s},{}),a={};for(let[s,u]of Object.entries(i))a[s]={groupKey:s,paths:u,outputPath:`${o}/${s}/query.service.ts`};return a}createGroupFilter(e,t){return(n,o)=>{let i=o.path,a=te(t.groupKeyMatch(i)||"");return a!==e&&(a||"_common")!==e?!1:t.filterEndpoint?t.filterEndpoint(n,i,e):!0}}};p();import oe from"node:fs";import v from"node:path";p();import Qe from"node:path";import re from"node:fs";async function ne(r){let e=Qe.dirname(r);re.existsSync(e)||await re.promises.mkdir(e,{recursive:!0})}var N=class{async writeFile(e,t){try{let n=v.resolve(process.cwd(),e);return v.basename(n)==="enhanceEndpoints.ts"&&oe.existsSync(n)?{path:n,success:!0}:(await ne(n),oe.writeFileSync(n,t),{path:n,success:!0})}catch(n){return{path:e,success:!1,error:n}}}async writeFiles(e){let t=[];for(let[n,o]of Object.entries(e)){let i=await this.writeFile(n,o);t.push(i)}return t}async writeGroupFiles(e,t){let n={};return t.types&&(n[v.join(e,"types.ts")]=t.types),t.queryService&&(n[v.join(e,"query.generated.ts")]=t.queryService),t.enhanceEndpoints&&(n[v.join(e,"enhanceEndpoints.ts")]=t.enhanceEndpoints),t.index&&(n[v.join(e,"index.ts")]=t.index),this.writeFiles(n)}async writeSharedFiles(e,t){let n={};return t.commonTypes&&(n[v.join(e,"common-types.ts")]=t.commonTypes),t.doNotModify&&(n[v.join(e,"DO_NOT_MODIFY.md")]=t.doNotModify),t.utils&&(n[v.join(e,"utils.ts")]=t.utils),this.writeFiles(n)}async writeSchemaFile(e,t){let n={};return n[v.join(e,"schema.ts")]=t,this.writeFiles(n)}};p();import He from"oazapfts/generate";var F=class{constructor(e,t){this.v3Doc=e;this.apiGen=new He(e,{unionUndefined:t.unionUndefined,mergeReadWriteOnly:t.mergeReadWriteOnly})}apiGen;initialize(){this.apiGen.spec.components?.schemas&&(Object.keys(this.apiGen.spec.components.schemas).forEach(e=>{let t=this.apiGen.spec.components.schemas[e];t&&typeof t=="object"&&"title"in t&&delete t.title}),this.apiGen.preprocessComponents(this.apiGen.spec.components.schemas),Object.keys(this.apiGen.spec.components.schemas).forEach(e=>{try{this.apiGen.getRefAlias({$ref:`#/components/schemas/${e}`})}catch{}}))}getOperationDefinitions(e){let{operationMatches:t}=(V(),Ne(ae));return J(this.v3Doc).filter(t(e))}getApiGenerator(){return this.apiGen}getDocument(){return this.v3Doc}getSchemaTypeNames(){return new Set}};p();function pe(){return`/* eslint-disable */
2
+ var j=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var Se=Object.prototype.hasOwnProperty;var W=(r,e)=>()=>(r&&(e=r(r=0)),e);var Ee=(r,e)=>{for(var t in e)j(r,t,{get:e[t],enumerable:!0})},Re=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of $e(e))!Se.call(r,o)&&o!==t&&j(r,o,{get:()=>e[o],enumerable:!(n=Ae(e,o))||n.enumerable});return r};var we=r=>Re(j({},"__esModule",{value:!0}),r);import{fileURLToPath as Ne}from"node:url";var Fe,g,a=W(()=>{"use strict";Fe=()=>Ne(import.meta.url),g=Fe()});var ae={};Ee(ae,{argumentMatches:()=>Le,defaultIsDataResponse:()=>Be,getOperationName:()=>N,getOverrides:()=>k,getTags:()=>ze,operationMatches:()=>se});import{getOperationName as _e}from"oazapfts/generate";function Be(r,e){if(e&&r==="default")return!0;let t=Number(r);return!Number.isNaN(t)&&t>=200&&t<300}function N({verb:r,path:e}){return _e(r,e,void 0)}function ze({verb:r,pathItem:e}){return r?e[r]?.tags||[]:[]}function ie(r){let e=Array.isArray(r)?r:[r];return function(n){return r?e.some(o=>typeof o=="string"?o===n:o?.test(n)):!0}}function se(r){let e=typeof r=="function"?r:ie(r);return function(n){if(!r)return!0;let o=N(n);return e(o,n)}}function Le(r){let e=typeof r=="function"?r:ie(r);return function(n){if(!r||n.in==="path")return!0;let o=n.name;return e(o,n)}}function k(r,e){return e?.find(t=>se(t.pattern)(r))}var V=W(()=>{"use strict";a()});a();import D from"commander";import{createRequire as nt}from"node:module";a();import qe from"commander";import{createRequire as Ge}from"node:module";import{resolve as U}from"node:path";import{existsSync as M,rmSync as Ie,readdirSync as De,statSync as je,mkdirSync as Me}from"node:fs";import Q from"node:path";var P=Ge(g);function Ke(r){let e=new Map;if(!M(r))return e;function t(n){try{let o=De(n);for(let i of o){let p=Q.join(n,i);if(je(p).isDirectory())t(p);else if(i==="enhanceEndpoints.ts"){let u=P("node:fs").readFileSync(p);e.set(p,u)}}}catch{}}return t(r),e}function ke(r){for(let[e,t]of r)try{let n=Q.dirname(e);M(n)||Me(n,{recursive:!0}),P("node:fs").writeFileSync(e,t)}catch(n){console.warn(`Failed to restore ${e}:`,n)}}function _(r){let e=["/","/usr","/etc","/var","/home","/Users",".",".."],t=U(r);if(e.some(n=>t===U(n))&&(console.error(`Dangerous path detected: ${t}. Refusing to delete.`),process.exit(1)),M(r)){console.log(`Cleaning output directory: ${r}`);let n=Ke(r);Ie(r,{recursive:!0,force:!0}),n.size>0&&(ke(n),console.log(`Protected ${n.size} enhanceEndpoints.ts file(s) from deletion`)),console.log(`Directory cleaned: ${r}`)}}function B(){try{if(P.resolve("esbuild")&&P.resolve("esbuild-runner"))return P("esbuild-runner/register"),!0}catch{}try{if(P.resolve("typescript")&&P.resolve("ts-node"))return P("ts-node").register({transpileOnly:!0,compilerOptions:{target:"es6",module:"commonjs"}}),!0}catch{}return!1}function z(r){(!r||!/\.([mc]?(jsx?|tsx?)|jsonc?)?$/.test(r))&&(console.error("Please provide a valid configuration file."),qe.help())}function L(r,e){/\.[mc]?tsx?$/.test(r)&&!e&&(console.error("Encountered a TypeScript config file, but neither esbuild-runner nor ts-node are installed."),process.exit(1))}import{dirname as ot,resolve as it}from"node:path";a();a();import $ from"node:path";import ve from"typescript";a();a();function S(r){return r.replace(r[0],r[0].toUpperCase())}a();import K from"node:fs";import Ve from"node:path";a();function H(r){try{new URL(r)}catch{return!1}return!0}async function Z(r,e){if(!H(r))throw new Error(`remoteFile must be a valid URL: ${r}`);try{let t=Ve.dirname(e);K.existsSync(t)||await K.promises.mkdir(t,{recursive:!0});let n=await fetch(r);if(!n.ok)throw new Error(`Failed to download schema from ${r}: ${n.statusText}`);let o=await n.text();return await K.promises.writeFile(e,o,"utf-8"),console.log(`Schema downloaded from ${r} to ${e}`),e}catch(t){throw console.error(`Error downloading schema from ${r}:`,t),t}}a();a();var Y=["get","put","post","delete","options","head","patch","trace"];function J(r){return Object.entries(r.paths).flatMap(([e,t])=>t?Object.entries(t).filter(n=>Y.includes(n[0])).map(([n,o])=>({path:e,verb:n,pathItem:t,operation:o})):[])}a();import We from"@apidevtools/swagger-parser";import Ue from"swagger2openapi";async function X(r,e){let t=await We.bundle(r,{resolve:{http:e}});return"openapi"in t&&t.openapi.startsWith("3")?t:(await Ue.convertObj(t,{})).openapi}a();function ee(r,e,t,n){return n?n(r,e):t?.type?t.type==="query":r==="get"}var E=class{docCache={};async getDocument(e,t){if(this.docCache[e])return this.docCache[e];let n=await X(e,t);return this.docCache[e]=n,n}async downloadSchema(e,t){return Z(e,t)}getPaths(e){return Object.keys(e.paths||{})}clearCache(){this.docCache={}}};a();import te from"lodash.camelcase";var R=class{groupPaths(e,t){let{groupKeyMatch:n,outputDir:o}=t,i=e.reduce((s,u)=>{let m=n(u),l=m?te(m):"_common";return s[l]||(s[l]=[]),s[l].push(u),s},{}),p={};for(let[s,u]of Object.entries(i))p[s]={groupKey:s,paths:u,outputPath:`${o}/${s}/query.service.ts`};return p}createGroupFilter(e,t){return(n,o)=>{let i=o.path,p=te(t.groupKeyMatch(i)||"");return p!==e&&(p||"_common")!==e?!1:t.filterEndpoint?t.filterEndpoint(n,i,e):!0}}};a();import oe from"node:fs";import v from"node:path";a();import Qe from"node:path";import re from"node:fs";async function ne(r){let e=Qe.dirname(r);re.existsSync(e)||await re.promises.mkdir(e,{recursive:!0})}var w=class{async writeFile(e,t){try{let n=v.resolve(process.cwd(),e);return v.basename(n)==="enhanceEndpoints.ts"&&oe.existsSync(n)?{path:n,success:!0}:(await ne(n),oe.writeFileSync(n,t),{path:n,success:!0})}catch(n){return{path:e,success:!1,error:n}}}async writeFiles(e){let t=[];for(let[n,o]of Object.entries(e)){let i=await this.writeFile(n,o);t.push(i)}return t}async writeGroupFiles(e,t){let n={};return t.types&&(n[v.join(e,"types.ts")]=t.types),t.queryService&&(n[v.join(e,"query.generated.ts")]=t.queryService),t.enhanceEndpoints&&(n[v.join(e,"enhanceEndpoints.ts")]=t.enhanceEndpoints),t.index&&(n[v.join(e,"index.ts")]=t.index),this.writeFiles(n)}async writeSharedFiles(e,t){let n={};return t.commonTypes&&(n[v.join(e,"common-types.ts")]=t.commonTypes),t.doNotModify&&(n[v.join(e,"DO_NOT_MODIFY.md")]=t.doNotModify),t.utils&&(n[v.join(e,"utils.ts")]=t.utils),this.writeFiles(n)}async writeSchemaFile(e,t){let n={};return n[v.join(e,"schema.ts")]=t,this.writeFiles(n)}};a();import He from"oazapfts/generate";var F=class{constructor(e,t){this.v3Doc=e;this.apiGen=new He(e,{unionUndefined:t.unionUndefined,mergeReadWriteOnly:t.mergeReadWriteOnly})}apiGen;initialize(){this.apiGen.spec.components?.schemas&&(Object.keys(this.apiGen.spec.components.schemas).forEach(e=>{let t=this.apiGen.spec.components.schemas[e];t&&typeof t=="object"&&"title"in t&&delete t.title}),this.apiGen.preprocessComponents(this.apiGen.spec.components.schemas),Object.keys(this.apiGen.spec.components.schemas).forEach(e=>{try{this.apiGen.getRefAlias({$ref:`#/components/schemas/${e}`})}catch{}}))}getOperationDefinitions(e){let{operationMatches:t}=(V(),we(ae));return J(this.v3Doc).filter(t(e))}getApiGenerator(){return this.apiGen}getDocument(){return this.v3Doc}getSchemaTypeNames(){return new Set}};a();function pe(){return`/* eslint-disable */
3
3
  // [Warning] Generated automatically - do not edit manually
4
4
 
5
5
  export interface RequestOptions {
@@ -20,12 +20,12 @@ export type IRestFulEndpointsQueryReturn<TVariables> = TVariables extends void ?
20
20
  variables: TVariables;
21
21
  fetchOptions?: IRequestConfig;
22
22
  };
23
- `}p();import h from"typescript";function Ze(r){return r.charAt(0).toUpperCase()+r.slice(1)}function Ye(r,e,t){return h.transform(r,[n=>o=>h.visitNode(o,function i(a){return h.isIdentifier(a)&&a.text===e?h.factory.createIdentifier(t):h.visitEachChild(a,i,n)})]).transformed[0]}function ce(r){let e=h.createPrinter({newLine:h.NewLineKind.LineFeed}),t=h.createSourceFile("component-schema.ts","",h.ScriptTarget.Latest,!1,h.ScriptKind.TS),n=[],o={};return Object.entries(r).forEach(([i,a])=>{let s=Ze(i);o[i]=s;let u=Ye(a,i,s),m=e.printNode(h.EmitHint.Unspecified,u,t);n.push(m)}),`/* eslint-disable */
23
+ `}a();import h from"typescript";function Ze(r){return r.charAt(0).toUpperCase()+r.slice(1)}function Ye(r,e,t){return h.transform(r,[n=>o=>h.visitNode(o,function i(p){return h.isIdentifier(p)&&p.text===e?h.factory.createIdentifier(t):h.visitEachChild(p,i,n)})]).transformed[0]}function ce(r){let e=h.createPrinter({newLine:h.NewLineKind.LineFeed}),t=h.createSourceFile("component-schema.ts","",h.ScriptTarget.Latest,!1,h.ScriptKind.TS),n=[],o={};return Object.entries(r).forEach(([i,p])=>{let s=Ze(i);o[i]=s;let u=Ye(p,i,s),m=e.printNode(h.EmitHint.Unspecified,u,t);n.push(m)}),`/* eslint-disable */
24
24
  // [Warning] Generated automatically - do not edit manually
25
25
 
26
26
  ${n.join(`
27
27
  `)}
28
- `}p();function ue(){return`# \u8ACB\u52FF\u4FEE\u6539\u6B64\u8CC7\u6599\u593E
28
+ `}a();function ue(){return`# \u8ACB\u52FF\u4FEE\u6539\u6B64\u8CC7\u6599\u593E
29
29
 
30
30
  \u26A0\uFE0F **\u91CD\u8981\u63D0\u9192\uFF1A\u8ACB\u52FF\u4FEE\u6539\u6B64\u8CC7\u6599\u593E\u4E2D\u7684\u4EFB\u4F55\u6A94\u6848**
31
31
 
@@ -44,7 +44,7 @@ ${n.join(`
44
44
  \u9019\u4E9B\u6A94\u6848\u662F\u7531 @acrool/rtk-query-codegen-openapi \u7522\u751F\u5668\u6240\u5EFA\u7ACB\u3002
45
45
 
46
46
  \u5982\u6709\u7591\u554F\uFF0C\u8ACB\u53C3\u8003\u5C08\u6848\u6587\u4EF6\u6216\u806F\u7E6B\u958B\u767C\u5718\u968A\u3002
47
- `}p();import fe from"typescript";p();V();import{supportDeepObjects as Je}from"oazapfts/generate";var q=class{constructor(e){this.options=e}extractEndpointInfos(e){return e.map(t=>this.extractSingleEndpointInfo(t))}extractSingleEndpointInfo(e){let{verb:t,path:n,operation:o}=e,{operationNameSuffix:i="",argSuffix:a="Req",responseSuffix:s="Res",queryMatch:u,endpointOverrides:m}=this.options,l=w({verb:t,path:n}),c=i?S(l+i):l,f=S(l+i+a),x=S(l+i+s),d=ee(t,n,k(e,m),u),A=`${l.replace(/([A-Z])/g,"_$1").toUpperCase()}`,P=o.summary||`${t.toUpperCase()} ${n}`,{queryParams:b,pathParams:C,isVoidArg:be,hasRequestBody:Te}=this.extractParameters(e),Pe=this.extractContentType(o),Ce=Array.isArray(o.tags)?o.tags:[];return{operationName:c,argTypeName:f,responseTypeName:x,isQuery:d,verb:t.toUpperCase(),path:n,queryKeyName:A,queryParams:b,pathParams:C,isVoidArg:be,summary:P,contentType:Pe,hasRequestBody:Te,tags:Ce}}extractParameters(e){let{operation:t,pathItem:n}=e,o=this.resolveArray(t.parameters),i=this.resolveArray(n.parameters).filter(c=>!o.some(f=>f.name===c.name&&f.in===c.in)),a=Je([...i,...o]).filter(c=>c.in!=="header"),s=a.filter(c=>c.in==="query"),u=a.filter(c=>c.in==="path"),m=!!t.requestBody,l=s.length===0&&u.length===0&&!t.requestBody;return{queryParams:s,pathParams:u,isVoidArg:l,hasRequestBody:m}}resolveArray(e){return e?Array.isArray(e)?e:[e]:[]}extractContentType(e){if(!e.requestBody)return"application/json";let t=e.requestBody.content;if(!t||typeof t!="object")return"application/json";let n=Object.keys(t);return n.length===0?"application/json":n[0]}};p();var Xe=r=>r.charAt(0).toUpperCase()+r.slice(1);function le(r,e,t,n){let o={};t&&Object.keys(t).forEach(m=>{if(o[m]=m,m.endsWith("Vo")){let l=m.slice(0,-2)+"VO";o[l]=m}if(m.endsWith("Dto")){let l=m.slice(0,-3)+"DTO";o[l]=m}});let i=`/* eslint-disable */
47
+ `}a();import fe from"typescript";a();V();import{supportDeepObjects as Je}from"oazapfts/generate";var q=class{constructor(e){this.options=e}extractEndpointInfos(e){return e.map(t=>this.extractSingleEndpointInfo(t))}extractSingleEndpointInfo(e){let{verb:t,path:n,operation:o}=e,{operationNameSuffix:i="",argSuffix:p="Req",responseSuffix:s="Res",queryMatch:u,endpointOverrides:m}=this.options,l=N({verb:t,path:n}),c=i?S(l+i):l,f=S(l+i+p),x=S(l+i+s),d=ee(t,n,k(e,m),u),A=`${l.replace(/([A-Z])/g,"_$1").toUpperCase()}`,T=o.summary||`${t.toUpperCase()} ${n}`,{queryParams:b,pathParams:C,isVoidArg:be,hasRequestBody:Pe}=this.extractParameters(e),Te=this.extractContentType(o),Ce=Array.isArray(o.tags)?o.tags:[];return{operationName:c,argTypeName:f,responseTypeName:x,isQuery:d,verb:t.toUpperCase(),path:n,queryKeyName:A,queryParams:b,pathParams:C,isVoidArg:be,summary:T,contentType:Te,hasRequestBody:Pe,tags:Ce}}extractParameters(e){let{operation:t,pathItem:n}=e,o=this.resolveArray(t.parameters),i=this.resolveArray(n.parameters).filter(c=>!o.some(f=>f.name===c.name&&f.in===c.in)),p=Je([...i,...o]).filter(c=>c.in!=="header"),s=p.filter(c=>c.in==="query"),u=p.filter(c=>c.in==="path"),m=!!t.requestBody,l=s.length===0&&u.length===0&&!t.requestBody;return{queryParams:s,pathParams:u,isVoidArg:l,hasRequestBody:m}}resolveArray(e){return e?Array.isArray(e)?e:[e]:[]}extractContentType(e){if(!e.requestBody)return"application/json";let t=e.requestBody.content;if(!t||typeof t!="object")return"application/json";let n=Object.keys(t);return n.length===0?"application/json":n[0]}};a();var Xe=r=>r.charAt(0).toUpperCase()+r.slice(1);function le(r,e,t,n){let o={};t&&Object.keys(t).forEach(m=>{if(o[m]=m,m.endsWith("Vo")){let l=m.slice(0,-2)+"VO";o[l]=m}if(m.endsWith("Dto")){let l=m.slice(0,-3)+"DTO";o[l]=m}});let i=`/* eslint-disable */
48
48
  // [Warning] Generated automatically - do not edit manually
49
49
 
50
50
  `;t&&Object.keys(t).length>0&&(i+=`import * as Schema from "../schema";
@@ -52,22 +52,22 @@ ${n.join(`
52
52
  `;let s=[],u=[];return r.forEach(m=>{let l=m.argTypeName,c=m.responseTypeName;if(l){let f=et(m,n,o);f.trim()===""?u.push(`export type ${l} = void;`,""):u.push(`export type ${l} = {`,f,"};","")}if(c){let f=tt(m,n,o);f.trim()===""?u.push(`export type ${c} = void;`,""):u.push(`export type ${c} = {`,f,"};","")}}),u.length>0&&s.push(u.join(`
53
53
  `)),s.length===0&&s.push("// \u6B64\u6A94\u6848\u7528\u65BC\u5B9A\u7FA9 API \u76F8\u95DC\u7684\u985E\u578B","// \u985E\u578B\u5B9A\u7FA9\u6703\u6839\u64DA OpenAPI Schema \u81EA\u52D5\u751F\u6210",""),i+s.join(`
54
54
 
55
- `)}function et(r,e,t={}){let n=[];r.queryParams&&r.queryParams.length>0&&r.queryParams.forEach(i=>{let a=i.required?"":"?",s=me(i,t);n.push(` ${i.name}${a}: ${s};`)}),r.pathParams&&r.pathParams.length>0&&r.pathParams.forEach(i=>{let a=i.required?"":"?",s=me(i,t);n.push(` ${i.name}${a}: ${s};`)});let o=e?.find(i=>i.operation?.operationId===r.operationName||i.operation?.operationId===r.operationName.toLowerCase()||i.verb===r.verb.toLowerCase()&&i.path===r.path);if(o?.operation?.requestBody){let a=o.operation.requestBody.content,s=a["application/json"]||a["*/*"],u=a["multipart/form-data"]||a["application/x-www-form-urlencoded"];if(s?.schema){let m=O(s.schema,t,1);n.push(` body: ${m};`)}else if(u?.schema){let m=O(u.schema,t,1);n.push(` body: ${m};`)}else{let m=Object.values(a)[0];if(m?.schema){let l=O(m.schema,t,1);n.push(` body: ${l};`)}else n.push(" body?: any; // Request body from OpenAPI")}}return n.length===0?"":n.join(`
56
- `)}function tt(r,e,t={}){let n=[],o=e?.find(i=>i.operation?.operationId===r.operationName||i.operation?.operationId===r.operationName.toLowerCase()||i.verb===r.verb.toLowerCase()&&i.path===r.path);if(o?.operation?.responses){let i=o.operation.responses[200]||o.operation.responses[201];if(i?.content){let a=i.content["application/json"]||i.content["*/*"]||Object.values(i.content)[0];if(a?.schema){let s=rt(a.schema,t);n.push(...s)}else n.push(" // Success response from OpenAPI"),n.push(" data?: any;")}}return n.length===0?"":n.join(`
57
- `)}function rt(r,e={}){let t=[];if(r.type==="object"&&r.properties){let n=r.required||[];Object.entries(r.properties).forEach(([o,i])=>{let s=n.includes(o)?"":"?",u=O(i,e,1),l=/[^a-zA-Z0-9_$]/.test(o)?`"${o}"`:o;i.description&&t.push(` /** ${i.description} */`),t.push(` ${l}${s}: ${u};`)})}return t}function O(r,e={},t=0){if(!r)return"any";if(r.$ref){let o=r.$ref;if(o.startsWith("#/components/schemas/")){let i=o.replace("#/components/schemas/",""),a=e[i]||i,u=`Schema.${Xe(a)}`;return r.nullable?`${u} | null`:u}}let n;switch(r.type){case"string":r.enum?n=r.enum.map(a=>`"${a}"`).join(" | "):r.format==="binary"?n="Blob":n="string";break;case"number":case"integer":n="number";break;case"boolean":n="boolean";break;case"array":let o=r.items?O(r.items,e,t):"any";n=o.includes("|")?`(${o})[]`:`${o}[]`;break;case"object":if(r.properties){let a=Object.entries(r.properties);if(a.length===0)r.additionalProperties?n=`Record<string, ${r.additionalProperties===!0?"any":O(r.additionalProperties,e,t)}>`:n="{}";else{let s=" ".repeat(t+1),u=" ".repeat(t),m=[];a.forEach(([l,c])=>{let x=(r.required||[]).includes(l)?"":"?",d=O(c,e,t+1),P=/[^a-zA-Z0-9_$]/.test(l)?`"${l}"`:l;c.description&&m.push(`${s}/** ${c.description} */`),m.push(`${s}${P}${x}: ${d};`)}),n=`{
55
+ `)}function et(r,e,t={}){let n=[];r.queryParams&&r.queryParams.length>0&&r.queryParams.forEach(i=>{let p=i.required?"":"?",s=me(i,t);n.push(` ${i.name}${p}: ${s};`)}),r.pathParams&&r.pathParams.length>0&&r.pathParams.forEach(i=>{let p=i.required?"":"?",s=me(i,t);n.push(` ${i.name}${p}: ${s};`)});let o=e?.find(i=>i.operation?.operationId===r.operationName||i.operation?.operationId===r.operationName.toLowerCase()||i.verb===r.verb.toLowerCase()&&i.path===r.path);if(o?.operation?.requestBody){let p=o.operation.requestBody.content,s=p["application/json"]||p["*/*"],u=p["multipart/form-data"]||p["application/x-www-form-urlencoded"];if(s?.schema){let m=O(s.schema,t,1);n.push(` body: ${m};`)}else if(u?.schema){let m=O(u.schema,t,1);n.push(` body: ${m};`)}else{let m=Object.values(p)[0];if(m?.schema){let l=O(m.schema,t,1);n.push(` body: ${l};`)}else n.push(" body?: any; // Request body from OpenAPI")}}return n.length===0?"":n.join(`
56
+ `)}function tt(r,e,t={}){let n=[],o=e?.find(i=>i.operation?.operationId===r.operationName||i.operation?.operationId===r.operationName.toLowerCase()||i.verb===r.verb.toLowerCase()&&i.path===r.path);if(o?.operation?.responses){let i=o.operation.responses[200]||o.operation.responses[201];if(i?.content){let p=i.content["application/json"]||i.content["*/*"]||Object.values(i.content)[0];if(p?.schema){let s=rt(p.schema,t);n.push(...s)}else n.push(" // Success response from OpenAPI"),n.push(" data?: any;")}}return n.length===0?"":n.join(`
57
+ `)}function rt(r,e={}){let t=[];if(r.type==="object"&&r.properties){let n=r.required||[];Object.entries(r.properties).forEach(([o,i])=>{let s=n.includes(o)?"":"?",u=O(i,e,1),l=/[^a-zA-Z0-9_$]/.test(o)?`"${o}"`:o;i.description&&t.push(` /** ${i.description} */`),t.push(` ${l}${s}: ${u};`)})}return t}function O(r,e={},t=0){if(!r)return"any";if(r.$ref){let o=r.$ref;if(o.startsWith("#/components/schemas/")){let i=o.replace("#/components/schemas/",""),p=e[i]||i,u=`Schema.${Xe(p)}`;return r.nullable?`${u} | null`:u}}let n;switch(r.type){case"string":r.enum?n=r.enum.map(p=>`"${p}"`).join(" | "):r.format==="binary"?n="Blob":n="string";break;case"number":case"integer":n="number";break;case"boolean":n="boolean";break;case"array":let o=r.items?O(r.items,e,t):"any";n=o.includes("|")?`(${o})[]`:`${o}[]`;break;case"object":if(r.properties){let p=Object.entries(r.properties);if(p.length===0)r.additionalProperties?n=`Record<string, ${r.additionalProperties===!0?"any":O(r.additionalProperties,e,t)}>`:n="{}";else{let s=" ".repeat(t+1),u=" ".repeat(t),m=[];p.forEach(([l,c])=>{let x=(r.required||[]).includes(l)?"":"?",d=O(c,e,t+1),T=/[^a-zA-Z0-9_$]/.test(l)?`"${l}"`:l;c.description&&m.push(`${s}/** ${c.description} */`),m.push(`${s}${T}${x}: ${d};`)}),n=`{
58
58
  ${m.join(`
59
59
  `)}
60
- ${u}}`}}else r.additionalProperties?n=`Record<string, ${r.additionalProperties===!0?"any":O(r.additionalProperties,e,t)}>`:n="any";break;default:n="any";break}return r.nullable?`${n} | null`:n}function me(r,e={}){return r.schema?O(r.schema,e):"any"}p();function ge(r,e){let{groupKey:t}=e,n=e.httpClient?.importReturnTypeName||"IRestFulEndpointsQueryReturn",o=r.map(c=>{let f=c.isQuery?"query":"mutation",x=c.isVoidArg?"void":`${n}<${c.argTypeName}>`,d=c.path;c.pathParams&&c.pathParams.length>0?(c.pathParams.forEach(b=>{d=d.replace(`{${b.name}}`,`\${queryArg.variables.${b.name}}`)}),d="`"+d+"`"):d=`"${d}"`;let A="";c.queryParams&&c.queryParams.length>0&&(A=`
60
+ ${u}}`}}else r.additionalProperties?n=`Record<string, ${r.additionalProperties===!0?"any":O(r.additionalProperties,e,t)}>`:n="any";break;default:n="any";break}return r.nullable?`${n} | null`:n}function me(r,e={}){return r.schema?O(r.schema,e):"any"}a();function ge(r,e){let{groupKey:t}=e,n=e.httpClient?.importReturnTypeName||"IRestFulEndpointsQueryReturn",o=r.map(c=>{let f=c.isQuery?"query":"mutation",x=c.isVoidArg?"void":`${n}<${c.argTypeName}>`,d=c.path;c.pathParams&&c.pathParams.length>0?(c.pathParams.forEach(b=>{d=d.replace(`{${b.name}}`,`\${queryArg.variables.${b.name}}`)}),d="`"+d+"`"):d=`"${d}"`;let A="";c.queryParams&&c.queryParams.length>0&&(A=`
61
61
  params: {
62
62
  ${c.queryParams.map(C=>` ${C.name}: queryArg.variables.${C.name},`).join(`
63
63
  `)}
64
- },`);let P="";if(c.tags&&c.tags.length>0){let b=c.tags.map(C=>`ECacheTagTypes.${C}`).join(", ");c.isQuery?P=`
65
- providesTags: [${b}],`:P=`
66
- invalidatesTags: [${b}],`}return` /** ${c.summary||c.operationName} */
64
+ },`);let T="";if(c.tags&&c.tags.length>0){let b=c.tags.map(C=>`ECacheTagTypes.${C}`).join(", ");c.isQuery?T=`
65
+ providesTags: [${b}],`:T=`
66
+ invalidatesTags: (result, error) => error ? [] : [${b}],`}return` /** ${c.summary||c.operationName} */
67
67
  ${c.operationName}: build.${f}<
68
68
  ${c.responseTypeName},
69
69
  ${x}
70
- >({${P}
70
+ >({${T}
71
71
  query: (queryArg) => ({
72
72
  url: ${d},
73
73
  method: "${c.verb.toUpperCase()}",
@@ -76,7 +76,7 @@ ${c.queryParams.map(C=>` ${C.name}: queryArg.variables.${C.na
76
76
  fetchOptions: queryArg?.fetchOptions,`}
77
77
  }),
78
78
  }),`}).join(`
79
- `),i=[...new Set([...r.map(c=>c.argTypeName),...r.map(c=>c.responseTypeName)])].filter(c=>c!=="VoidApiArg"),a=i.length>0?`import type { ${i.join(", ")} } from "./types";`:"",s=e.apiConfiguration?`import {${e.apiConfiguration.importName} as api} from "${e.apiConfiguration.file.replace(/\.ts$/,"")}";
79
+ `),i=[...new Set([...r.map(c=>c.argTypeName),...r.map(c=>c.responseTypeName)])].filter(c=>c!=="VoidApiArg"),p=i.length>0?`import type { ${i.join(", ")} } from "./types";`:"",s=e.apiConfiguration?`import {${e.apiConfiguration.importName} as api} from "${e.apiConfiguration.file.replace(/\.ts$/,"")}";
80
80
  `:`import {baseApi as api} from "../../../library/redux/baseApi";
81
81
  `,u=e.httpClient?`import {${e.httpClient.importReturnTypeName}} from "${e.httpClient.file}";
82
82
  `:`import {IRestFulEndpointsQueryReturn} from "@acrool/react-fetcher";
@@ -85,7 +85,7 @@ ${c.queryParams.map(C=>` ${C.name}: queryArg.variables.${C.na
85
85
  // [Warning] Generated automatically - do not edit manually
86
86
 
87
87
  ${s}${u}${l}
88
- ${a}
88
+ ${p}
89
89
 
90
90
 
91
91
  const injectedRtkApi = api.injectEndpoints({
@@ -101,31 +101,30 @@ ${r.map(c=>{let f=c.operationName.charAt(0).toUpperCase()+c.operationName.slice(
101
101
  } = injectedRtkApi;
102
102
 
103
103
  export default injectedRtkApi;
104
- `}p();function ye(r,e){let{groupKey:t,cacheTagTypes:n}=e,o=r.map(a=>a.isQuery?` ${a.operationName}: {
105
- providesTags: (result, error, arg) => [],
106
- },`:` ${a.operationName}: {
107
- invalidatesTags: (result, error, arg) => [],
108
- },`).join(`
109
- `),i=`/* eslint-disable */
104
+ `}a();function ye(r,e){return`/* eslint-disable */
110
105
  // [Warning] Generated automatically - do not edit manually
111
106
 
112
- `;return n&&(i+=`import { ${n.importReturnTypeName} } from "${n.file}";
113
- `),i+=`import api from "./query.generated";
114
- `,`${i}
107
+ import api from "./query.generated";
108
+
115
109
  const enhancedApi = api.enhanceEndpoints({
116
110
  endpoints: {
117
- ${o}
111
+ ${r.map(o=>o.isQuery?` ${o.operationName}: {
112
+ providesTags: (result, error, arg) => [],
113
+ },`:` ${o.operationName}: {
114
+ invalidatesTags: (result, error, arg) => [],
115
+ },`).join(`
116
+ `)}
118
117
  },
119
118
  });
120
119
 
121
120
  export default enhancedApi;
122
- `}var G=class{constructor(e,t){this.parserService=e;this.options=t;this.infoExtractor=new q(t)}infoExtractor;async generate(){let e=this.parserService.getOperationDefinitions(this.options.filterEndpoints),t=this.infoExtractor.extractEndpointInfos(e);return this.generateRtkQueryCode(t)}generateRtkQueryCode(e){let t=this.generateTypes(e),n=ge(e,this.options),o=ye(e,this.options),i=this.generateIndex(),a=e.map(u=>u.operationName),s=new Set;return e.forEach(u=>{u.tags&&Array.isArray(u.tags)&&u.tags.forEach(m=>s.add(m))}),{operationNames:a,tags:Array.from(s),files:{types:t,queryService:n,index:i,enhanceEndpoints:o}}}generateTypes(e){let t={...this.options,apiConfiguration:this.options.apiConfiguration||{file:"@/store/webapi",importName:"WebApiConfiguration"}},o=this.parserService.getApiGenerator().aliases.reduce((a,s)=>{if(fe.isInterfaceDeclaration(s)||fe.isTypeAliasDeclaration(s)){let u=s.name.text;return{...a,[u]:s}}return a},{}),i=this.parserService.getOperationDefinitions(this.options.filterEndpoints);return le(e,t,o,i)}generateIndex(){let e=this.options.groupKey||"";return`/* eslint-disable */
121
+ `}var G=class{constructor(e,t){this.parserService=e;this.options=t;this.infoExtractor=new q(t)}infoExtractor;async generate(){let e=this.parserService.getOperationDefinitions(this.options.filterEndpoints),t=this.infoExtractor.extractEndpointInfos(e);return this.generateRtkQueryCode(t)}generateRtkQueryCode(e){let t=this.generateTypes(e),n=ge(e,this.options),o=ye(e,this.options),i=this.generateIndex(),p=e.map(u=>u.operationName),s=new Set;return e.forEach(u=>{u.tags&&Array.isArray(u.tags)&&u.tags.forEach(m=>s.add(m))}),{operationNames:p,tags:Array.from(s),files:{types:t,queryService:n,index:i,enhanceEndpoints:o}}}generateTypes(e){let t={...this.options,apiConfiguration:this.options.apiConfiguration||{file:"@/store/webapi",importName:"WebApiConfiguration"}},o=this.parserService.getApiGenerator().aliases.reduce((p,s)=>{if(fe.isInterfaceDeclaration(s)||fe.isTypeAliasDeclaration(s)){let u=s.name.text;return{...p,[u]:s}}return p},{}),i=this.parserService.getOperationDefinitions(this.options.filterEndpoints);return le(e,t,o,i)}generateIndex(){let e=this.options.groupKey||"";return`/* eslint-disable */
123
122
  // [Warning] Generated automatically - do not edit manually
124
123
 
125
124
  export { default as ${e?`${e.charAt(0).toLowerCase()+e.slice(1)}Api`:"api"} } from "./enhanceEndpoints";
126
125
  export * from "./query.generated";
127
126
  export * from "./types";
128
- `}};p();function de(){return`/* eslint-disable */
127
+ `}};a();function de(){return`/* eslint-disable */
129
128
  // [Warning] Generated automatically - do not edit manually
130
129
 
131
130
  /**
@@ -138,7 +137,7 @@ export function withoutUndefined(obj?: Record<string, any>) {
138
137
  );
139
138
  }
140
139
 
141
- `}p();function he(r){return r.length===0?`/* eslint-disable */
140
+ `}a();function he(r){return r.length===0?`/* eslint-disable */
142
141
  // [Warning] Generated automatically - do not edit manually
143
142
 
144
143
  export enum ECacheTagTypes {
@@ -150,7 +149,7 @@ export enum ECacheTagTypes {
150
149
  ${r.sort().map(t=>` ${t} = '${t}',`).join(`
151
150
  `)}
152
151
  }
153
- `}var I=class{_options;openApiService=new E;groupService=new R;fileWriterService=new N;openApiDoc=null;parserService=null;schemaInterfaces={};actualSchemaFile="";generatedContent={groups:[],commonTypes:"",componentSchema:"",doNotModify:"",utils:"",tagTypes:""};allTags=new Set;constructor(e){this._options=e}async generateAll(){return await this.prepare(),await this.generateApi(),this.generateCommonTypesContent(),this.generateSchemaContent(),this.generateUtilsContent(),this.generateDoNotModifyContent(),this.generateTagTypesContent(),await this.release()}async prepare(){this.actualSchemaFile=this._options.schemaFile,this._options.remoteFile&&(this.actualSchemaFile=await this.openApiService.downloadSchema(this._options.remoteFile,this._options.schemaFile)),this.openApiDoc=await this.openApiService.getDocument(this.actualSchemaFile,this._options.httpResolverOptions),this.parserService=new F(this.openApiDoc,this._options),this.parserService.initialize();let e=this.parserService.getApiGenerator();this.schemaInterfaces=e.aliases.reduce((t,n)=>{if(ve.isInterfaceDeclaration(n)||ve.isTypeAliasDeclaration(n)){let o=n.name.text;return{...t,[o]:n}}return t},{})}async generateApi(){if(!this.openApiDoc||!this.parserService)throw new Error("\u8ACB\u5148\u8ABF\u7528 prepare() \u65B9\u6CD5");let e=this.openApiService.getPaths(this.openApiDoc),t=this.groupService.groupPaths(e,this._options.outputFiles);for(let n of Object.values(t))try{let o=await this.generateApiGroupContent(this._options,n);o.operationNames.length>0&&(this.generatedContent.groups.push({groupKey:n.groupKey,outputPath:n.outputPath,content:o}),o.tags&&Array.isArray(o.tags)&&o.tags.forEach(i=>this.allTags.add(i)))}catch(o){throw new Error(`\u7FA4\u7D44 ${n.groupKey} \u751F\u6210\u5931\u6557: ${o}`)}}async generateCommonTypesContent(){this.generatedContent.commonTypes=pe()}async generateSchemaContent(){this.generatedContent.componentSchema=ce(this.schemaInterfaces)}async generateDoNotModifyContent(){this.generatedContent.doNotModify=ue()}async generateUtilsContent(){this.generatedContent.utils=de()}async generateTagTypesContent(){let e=Array.from(this.allTags);this.generatedContent.tagTypes=he(e)}async release(){let e=[],t=[],n=[];try{for(let s of this.generatedContent.groups)try{if(s.content?.files){let u=$.dirname(s.outputPath),m=await this.fileWriterService.writeGroupFiles(u,{types:s.content.files.types,queryService:s.content.files.queryService,enhanceEndpoints:s.content.files.enhanceEndpoints,index:s.content.files.index});e.push(...m),n.push(s.groupKey)}}catch(u){t.push(new Error(`\u5BEB\u5165\u7FA4\u7D44 ${s.groupKey} \u5931\u6557: ${u}`))}let o=this.generatedContent.groups[0]?$.dirname($.dirname(this.generatedContent.groups[0].outputPath)):"./generated";if(this.generatedContent.commonTypes||this.generatedContent.doNotModify||this.generatedContent.utils){let s=await this.fileWriterService.writeSharedFiles(o,{commonTypes:this.generatedContent.commonTypes||void 0,doNotModify:this.generatedContent.doNotModify||void 0,utils:this.generatedContent.utils||void 0});e.push(...s)}if(this.generatedContent.tagTypes){let s=await this.fileWriterService.writeFile($.join(o,"tagTypes.ts"),this.generatedContent.tagTypes);e.push(s)}if(this.generatedContent.componentSchema){let s=await this.fileWriterService.writeSchemaFile(o,this.generatedContent.componentSchema);e.push(...s)}let i=this.generateMainIndex(n),a=await this.fileWriterService.writeFile($.join(o,"index.ts"),i);e.push(a)}catch(o){t.push(o)}return{success:t.length===0,writtenFiles:e,errors:t,generatedGroups:n}}async generateApiGroupContent(e,t){let{outputFiles:n,...o}=e,i={...o,schemaFile:this.actualSchemaFile,outputFile:t.outputPath,sharedTypesFile:`${n.outputDir}/common-types.ts`,filterEndpoints:this.groupService.createGroupFilter(t.groupKey,n),queryMatch:n.queryMatch,groupKey:t.groupKey};if(!this.openApiDoc||!this.parserService)throw new Error("OpenAPI \u6587\u6A94\u672A\u521D\u59CB\u5316\uFF0C\u8ACB\u5148\u8ABF\u7528 prepare()");return await new G(this.parserService,i).generate()}generateMainIndex(e){return`/* eslint-disable */
152
+ `}var I=class{_options;openApiService=new E;groupService=new R;fileWriterService=new w;openApiDoc=null;parserService=null;schemaInterfaces={};actualSchemaFile="";generatedContent={groups:[],commonTypes:"",componentSchema:"",doNotModify:"",utils:"",tagTypes:""};allTags=new Set;constructor(e){this._options=e}async generateAll(){return await this.prepare(),await this.generateApi(),this.generateCommonTypesContent(),this.generateSchemaContent(),this.generateUtilsContent(),this.generateDoNotModifyContent(),this.generateTagTypesContent(),await this.release()}async prepare(){this.actualSchemaFile=this._options.schemaFile,this._options.remoteFile&&(this.actualSchemaFile=await this.openApiService.downloadSchema(this._options.remoteFile,this._options.schemaFile)),this.openApiDoc=await this.openApiService.getDocument(this.actualSchemaFile,this._options.httpResolverOptions),this.parserService=new F(this.openApiDoc,this._options),this.parserService.initialize();let e=this.parserService.getApiGenerator();this.schemaInterfaces=e.aliases.reduce((t,n)=>{if(ve.isInterfaceDeclaration(n)||ve.isTypeAliasDeclaration(n)){let o=n.name.text;return{...t,[o]:n}}return t},{})}async generateApi(){if(!this.openApiDoc||!this.parserService)throw new Error("\u8ACB\u5148\u8ABF\u7528 prepare() \u65B9\u6CD5");let e=this.openApiService.getPaths(this.openApiDoc),t=this.groupService.groupPaths(e,this._options.outputFiles);for(let n of Object.values(t))try{let o=await this.generateApiGroupContent(this._options,n);o.operationNames.length>0&&(this.generatedContent.groups.push({groupKey:n.groupKey,outputPath:n.outputPath,content:o}),o.tags&&Array.isArray(o.tags)&&o.tags.forEach(i=>this.allTags.add(i)))}catch(o){throw new Error(`\u7FA4\u7D44 ${n.groupKey} \u751F\u6210\u5931\u6557: ${o}`)}}async generateCommonTypesContent(){this.generatedContent.commonTypes=pe()}async generateSchemaContent(){this.generatedContent.componentSchema=ce(this.schemaInterfaces)}async generateDoNotModifyContent(){this.generatedContent.doNotModify=ue()}async generateUtilsContent(){this.generatedContent.utils=de()}async generateTagTypesContent(){let e=Array.from(this.allTags);this.generatedContent.tagTypes=he(e)}async release(){let e=[],t=[],n=[];try{for(let s of this.generatedContent.groups)try{if(s.content?.files){let u=$.dirname(s.outputPath),m=await this.fileWriterService.writeGroupFiles(u,{types:s.content.files.types,queryService:s.content.files.queryService,enhanceEndpoints:s.content.files.enhanceEndpoints,index:s.content.files.index});e.push(...m),n.push(s.groupKey)}}catch(u){t.push(new Error(`\u5BEB\u5165\u7FA4\u7D44 ${s.groupKey} \u5931\u6557: ${u}`))}let o=this.generatedContent.groups[0]?$.dirname($.dirname(this.generatedContent.groups[0].outputPath)):"./generated";if(this.generatedContent.commonTypes||this.generatedContent.doNotModify||this.generatedContent.utils){let s=await this.fileWriterService.writeSharedFiles(o,{commonTypes:this.generatedContent.commonTypes||void 0,doNotModify:this.generatedContent.doNotModify||void 0,utils:this.generatedContent.utils||void 0});e.push(...s)}if(this.generatedContent.tagTypes){let s=await this.fileWriterService.writeFile($.join(o,"tagTypes.ts"),this.generatedContent.tagTypes);e.push(s)}if(this.generatedContent.componentSchema){let s=await this.fileWriterService.writeSchemaFile(o,this.generatedContent.componentSchema);e.push(...s)}let i=this.generateMainIndex(n),p=await this.fileWriterService.writeFile($.join(o,"index.ts"),i);e.push(p)}catch(o){t.push(o)}return{success:t.length===0,writtenFiles:e,errors:t,generatedGroups:n}}async generateApiGroupContent(e,t){let{outputFiles:n,...o}=e,i={...o,schemaFile:this.actualSchemaFile,outputFile:t.outputPath,sharedTypesFile:`${n.outputDir}/common-types.ts`,filterEndpoints:this.groupService.createGroupFilter(t.groupKey,n),queryMatch:n.queryMatch,groupKey:t.groupKey};if(!this.openApiDoc||!this.parserService)throw new Error("OpenAPI \u6587\u6A94\u672A\u521D\u59CB\u5316\uFF0C\u8ACB\u5148\u8ABF\u7528 prepare()");return await new G(this.parserService,i).generate()}generateMainIndex(e){return`/* eslint-disable */
154
153
  // [Warning] Generated automatically - do not edit manually
155
154
 
156
155
  ${e.map(n=>`export * from "./${n}";`).join(`