@bitstack/ng-query-codegen-openapi 0.0.31-alpha.9 → 0.0.32-alpha.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 +28 -28
- package/lib/bin/cli.mjs.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +3 -3
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/bin/cli.ts +1 -1
- package/src/bin/utils.ts +5 -5
- package/src/generators/rtk-query-generator.ts +3 -3
package/lib/bin/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var I=Object.defineProperty;var
|
|
2
|
+
var I=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var Ne=Object.prototype.hasOwnProperty;var M=(r,t)=>()=>(r&&(t=r(r=0)),t);var Ae=(r,t)=>{for(var e in t)I(r,e,{get:t[e],enumerable:!0})},Ee=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $e(t))!Ne.call(r,o)&&o!==e&&I(r,o,{get:()=>t[o],enumerable:!(n=Pe(t,o))||n.enumerable});return r};var Re=r=>Ee(I({},"__esModule",{value:!0}),r);import{fileURLToPath as Se}from"node:url";var qe,g,c=M(()=>{"use strict";qe=()=>Se(import.meta.url),g=qe()});var ne={};Ae(ne,{argumentMatches:()=>Ue,defaultIsDataResponse:()=>ke,getOperationName:()=>E,getOverrides:()=>D,getTags:()=>Ve,operationMatches:()=>re});import{getOperationName as Qe}from"oazapfts/generate";function ke(r,t){if(t&&r==="default")return!0;let e=Number(r);return!Number.isNaN(e)&&e>=200&&e<300}function E({verb:r,path:t}){return Qe(r,t,void 0)}function Ve({verb:r,pathItem:t}){return r?t[r]?.tags||[]:[]}function te(r){let t=Array.isArray(r)?r:[r];return function(n){return r?t.some(o=>typeof o=="string"?o===n:o?.test(n)):!0}}function re(r){let t=typeof r=="function"?r:te(r);return function(n){if(!r)return!0;let o=E(n);return t(o,n)}}function Ue(r){let t=typeof r=="function"?r:te(r);return function(n){if(!r||n.in==="path")return!0;let o=n.name;return t(o,n)}}function D(r,t){return t?.find(e=>re(e.pattern)(r))}var K=M(()=>{"use strict";c()});c();import j from"commander";import{createRequire as Je}from"node:module";c();import Fe from"commander";import{createRequire as we}from"node:module";import{resolve as Q}from"node:path";import{existsSync as je,rmSync as Ie,readdirSync as ut,statSync as mt,mkdirSync as gt}from"node:fs";var x=we(g);function k(r){let t=["/","/usr","/etc","/var","/home","/Users",".",".."],e=Q(r);t.some(n=>e===Q(n))&&(console.error(`Dangerous path detected: ${e}. Refusing to delete.`),process.exit(1)),je(r)&&(console.log(`Cleaning output directory: ${r}`),Ie(r,{recursive:!0,force:!0}),console.log(`Directory cleaned: ${r}`))}function V(){try{if(x.resolve("esbuild")&&x.resolve("esbuild-runner"))return x("esbuild-runner/register"),!0}catch{}try{if(x.resolve("typescript")&&x.resolve("ts-node"))return x("ts-node").register({transpileOnly:!0,compilerOptions:{target:"es6",module:"commonjs"}}),!0}catch{}return!1}function U(r){(!r||!/\.([mc]?(jsx?|tsx?)|jsonc?)?$/.test(r))&&(console.error("Please provide a valid configuration file."),Fe.help())}function W(r,t){/\.[mc]?tsx?$/.test(r)&&!t&&(console.error("Encountered a TypeScript config file, but neither esbuild-runner nor ts-node are installed."),process.exit(1))}import{dirname as Xe,resolve as et}from"node:path";c();c();import F from"node:path";import de from"typescript";c();c();function P(r){return r.replace(r[0],r[0].toUpperCase())}c();import G from"node:fs";import Ge from"node:path";c();function _(r){try{new URL(r)}catch{return!1}return!0}async function B(r,t){if(!_(r))throw new Error(`remoteFile must be a valid URL: ${r}`);try{let e=Ge.dirname(t);G.existsSync(e)||await G.promises.mkdir(e,{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 G.promises.writeFile(t,o,"utf-8"),console.log(`Schema downloaded from ${r} to ${t}`),t}catch(e){throw console.error(`Error downloading schema from ${r}:`,e),e}}c();c();var L=["get","put","post","delete","options","head","patch","trace"];function z(r){return Object.entries(r.paths).flatMap(([t,e])=>e?Object.entries(e).filter(n=>L.includes(n[0])).map(([n,o])=>({path:t,verb:n,pathItem:e,operation:o})):[])}c();import De from"@apidevtools/swagger-parser";import Ke from"swagger2openapi";async function H(r,t){let e=await De.bundle(r,{resolve:{http:t}});return"openapi"in e&&e.openapi.startsWith("3")?e:(await Ke.convertObj(e,{})).openapi}c();function Z(r,t,e,n){return n?n(r,t):e?.type?e.type==="query":r==="get"}var $=class{docCache={};async getDocument(t,e){if(this.docCache[t])return this.docCache[t];let n=await H(t,e);return this.docCache[t]=n,n}async downloadSchema(t,e){return B(t,e)}getPaths(t){return Object.keys(t.paths||{})}clearCache(){this.docCache={}}};c();import Y from"lodash.camelcase";var N=class{groupPaths(t,e){let{groupKeyMatch:n,outputDir:o}=e,s=t.reduce((p,u)=>{let i=n(u),m=i?Y(i):"_common";return p[m]||(p[m]=[]),p[m].push(u),p},{}),a={};for(let[p,u]of Object.entries(s))a[p]={groupKey:p,paths:u,outputPath:`${o}/${p}/query.service.ts`};return a}createGroupFilter(t,e){return(n,o)=>{let s=o.path,a=Y(e.groupKeyMatch(s)||"");return a!==t&&(a||"_common")!==t?!1:e.filterEndpoint?e.filterEndpoint(n,s,t):!0}}};c();import ee from"node:fs";import f from"node:path";c();import Me from"node:path";import J from"node:fs";async function X(r){let t=Me.dirname(r);J.existsSync(t)||await J.promises.mkdir(t,{recursive:!0})}var A=class{async writeFile(t,e){try{let n=f.resolve(process.cwd(),t);return f.basename(n)==="enhanceEndpoints.ts"&&ee.existsSync(n)?{path:n,success:!0}:(await X(n),ee.writeFileSync(n,e),{path:n,success:!0})}catch(n){return{path:t,success:!1,error:n}}}async writeFiles(t){let e=[];for(let[n,o]of Object.entries(t)){let s=await this.writeFile(n,o);e.push(s)}return e}async writeGroupFiles(t,e){let n={};return e.types&&(n[f.join(t,"types.ts")]=e.types),e.queryService&&(n[f.join(t,"query.generated.ts")]=e.queryService),e.enhanceEndpoints&&(n[f.join(t,"enhanceEndpoints.ts")]=e.enhanceEndpoints),e.index&&(n[f.join(t,"index.ts")]=e.index),this.writeFiles(n)}async writeSharedFiles(t,e){let n={};return e.commonTypes&&(n[f.join(t,"common-types.ts")]=e.commonTypes),e.tagTypes&&(n[f.join(t,"tagTypes.ts")]=e.tagTypes),e.doNotModify&&(n[f.join(t,"DO_NOT_MODIFY.md")]=e.doNotModify),e.utils&&(n[f.join(t,"utils.ts")]=e.utils),this.writeFiles(n)}async writeSchemaFile(t,e){let n={};return n[f.join(t,"schema.ts")]=e,this.writeFiles(n)}};c();import We from"oazapfts/generate";var R=class{constructor(t,e){this.v3Doc=t;this.apiGen=new We(t,{unionUndefined:e.unionUndefined,mergeReadWriteOnly:e.mergeReadWriteOnly})}apiGen;initialize(){this.apiGen.spec.components?.schemas&&(Object.keys(this.apiGen.spec.components.schemas).forEach(t=>{let e=this.apiGen.spec.components.schemas[t];e&&typeof e=="object"&&"title"in e&&delete e.title}),this.apiGen.preprocessComponents(this.apiGen.spec.components.schemas),Object.keys(this.apiGen.spec.components.schemas).forEach(t=>{try{this.apiGen.getRefAlias({$ref:`#/components/schemas/${t}`})}catch{}}))}getOperationDefinitions(t){let{operationMatches:e}=(K(),Re(ne));return z(this.v3Doc).filter(e(t))}getApiGenerator(){return this.apiGen}getDocument(){return this.v3Doc}getSchemaTypeNames(){return new Set}};c();function oe(){return`/* eslint-disable */
|
|
3
3
|
// [Warning] Generated automatically - do not edit manually
|
|
4
4
|
|
|
5
5
|
export interface RequestOptions {
|
|
@@ -27,12 +27,12 @@ export type IRestFulEndpointsQueryReturn<TVariables> = TVariables extends void ?
|
|
|
27
27
|
fetchOptions?: IRequestConfig;
|
|
28
28
|
config?: QueryConfig;
|
|
29
29
|
};
|
|
30
|
-
`}c();import h from"typescript";function
|
|
30
|
+
`}c();import h from"typescript";function _e(r){return r.charAt(0).toUpperCase()+r.slice(1)}function Be(r,t,e){return h.transform(r,[n=>o=>h.visitNode(o,function s(a){return h.isIdentifier(a)&&a.text===t?h.factory.createIdentifier(e):h.visitEachChild(a,s,n)})]).transformed[0]}function ie(r){let t=h.createPrinter({newLine:h.NewLineKind.LineFeed}),e=h.createSourceFile("component-schema.ts","",h.ScriptTarget.Latest,!1,h.ScriptKind.TS),n=[],o={};return Object.entries(r).forEach(([s,a])=>{let p=_e(s);o[s]=p;let u=Be(a,s,p),i=t.printNode(h.EmitHint.Unspecified,u,e);n.push(i)}),`/* eslint-disable */
|
|
31
31
|
// [Warning] Generated automatically - do not edit manually
|
|
32
32
|
|
|
33
|
-
${
|
|
33
|
+
${n.join(`
|
|
34
34
|
`)}
|
|
35
|
-
`}c();function
|
|
35
|
+
`}c();function se(){return`# \u8ACB\u52FF\u4FEE\u6539\u6B64\u8CC7\u6599\u593E
|
|
36
36
|
|
|
37
37
|
\u26A0\uFE0F **\u91CD\u8981\u63D0\u9192\uFF1A\u8ACB\u52FF\u4FEE\u6539\u6B64\u8CC7\u6599\u593E\u4E2D\u7684\u4EFB\u4F55\u6A94\u6848**
|
|
38
38
|
|
|
@@ -51,33 +51,33 @@ ${r.join(`
|
|
|
51
51
|
\u9019\u4E9B\u6A94\u6848\u662F\u7531 @bitstack/ng-query-codegen-openapi \u7522\u751F\u5668\u6240\u5EFA\u7ACB\u3002
|
|
52
52
|
|
|
53
53
|
\u5982\u6709\u7591\u554F\uFF0C\u8ACB\u53C3\u8003\u5C08\u6848\u6587\u4EF6\u6216\u806F\u7E6B\u958B\u767C\u5718\u968A\u3002
|
|
54
|
-
`}c();import
|
|
54
|
+
`}c();import me from"typescript";c();K();import{supportDeepObjects as Le}from"oazapfts/generate";var S=class{constructor(t){this.options=t}extractEndpointInfos(t){return t.map(e=>this.extractSingleEndpointInfo(e))}extractSingleEndpointInfo(t){let{verb:e,path:n,operation:o}=t,{operationNameSuffix:s="",argSuffix:a="Req",responseSuffix:p="Res",queryMatch:u,endpointOverrides:i}=this.options,m=E({verb:e,path:n}),y=s?P(m+s):m,d=P(m+s+a),C=P(m+s+p),v=Z(e,n,D(t,i),u),T=`${m.replace(/([A-Z])/g,"_$1").toUpperCase()}`,b=o.summary||`${e.toUpperCase()} ${n}`,{queryParams:ve,pathParams:Oe,isVoidArg:be,hasRequestBody:xe}=this.extractParameters(t),Ce=this.extractContentType(o),Te=Array.isArray(o.tags)?o.tags:[];return{operationName:y,argTypeName:d,responseTypeName:C,isQuery:v,verb:e.toUpperCase(),path:n,queryKeyName:T,queryParams:ve,pathParams:Oe,isVoidArg:be,summary:b,contentType:Ce,hasRequestBody:xe,tags:Te}}extractParameters(t){let{operation:e,pathItem:n}=t,o=this.resolveArray(e.parameters),s=this.resolveArray(n.parameters).filter(y=>!o.some(d=>d.name===y.name&&d.in===y.in)),a=Le([...s,...o]).filter(y=>y.in!=="header"),p=a.filter(y=>y.in==="query"),u=a.filter(y=>y.in==="path"),i=!!e.requestBody,m=p.length===0&&u.length===0&&!e.requestBody;return{queryParams:p,pathParams:u,isVoidArg:m,hasRequestBody:i}}resolveArray(t){return t?Array.isArray(t)?t:[t]:[]}extractContentType(t){if(!t.requestBody)return"application/json";let e=t.requestBody.content;if(!e||typeof e!="object")return"application/json";let n=Object.keys(e);return n.length===0?"application/json":n[0]}};c();var ze=r=>r.charAt(0).toUpperCase()+r.slice(1);function pe(r,t,e,n){let o={};e&&Object.keys(e).forEach(i=>{if(o[i]=i,i.endsWith("Vo")){let m=i.slice(0,-2)+"VO";o[m]=i}if(i.endsWith("Dto")){let m=i.slice(0,-3)+"DTO";o[m]=i}});let s=`/* eslint-disable */
|
|
55
55
|
// [Warning] Generated automatically - do not edit manually
|
|
56
56
|
|
|
57
57
|
`;e&&Object.keys(e).length>0&&(s+=`import * as Schema from "../schema";
|
|
58
58
|
`),s+=`
|
|
59
|
-
`;let p=[],u=[];return
|
|
59
|
+
`;let p=[],u=[];return r.forEach(i=>{let m=i.argTypeName,y=i.responseTypeName;if(m){let d=He(i,n,o);d.trim()===""?u.push(`export type ${m} = void;`,""):u.push(`export type ${m} = {`,d,"};","")}if(y){let d=Ze(i,n,o);d.trim()===""?u.push(`export type ${y} = void;`,""):u.push(`export type ${y} = {`,d,"};","")}}),u.length>0&&p.push(u.join(`
|
|
60
60
|
`)),p.length===0&&p.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",""),s+p.join(`
|
|
61
61
|
|
|
62
|
-
`)}function
|
|
63
|
-
`)}function
|
|
64
|
-
`)}function
|
|
62
|
+
`)}function He(r,t,e={}){let n=[];r.queryParams&&r.queryParams.length>0&&r.queryParams.forEach(s=>{let a=s.required?"":"?",p=ae(s,e);n.push(` ${s.name}${a}: ${p};`)}),r.pathParams&&r.pathParams.length>0&&r.pathParams.forEach(s=>{let a=s.required?"":"?",p=ae(s,e);n.push(` ${s.name}${a}: ${p};`)});let o=t?.find(s=>s.operation?.operationId===r.operationName||s.operation?.operationId===r.operationName.toLowerCase()||s.verb===r.verb.toLowerCase()&&s.path===r.path);if(o?.operation?.requestBody){let a=o.operation.requestBody.content,p=a["application/json"]||a["*/*"],u=a["multipart/form-data"]||a["application/x-www-form-urlencoded"];if(p?.schema){let i=O(p.schema,e,1);n.push(` body: ${i};`)}else if(u?.schema){let i=O(u.schema,e,1);n.push(` body: ${i};`)}else{let i=Object.values(a)[0];if(i?.schema){let m=O(i.schema,e,1);n.push(` body: ${m};`)}else n.push(" body?: any; // Request body from OpenAPI")}}return n.length===0?"":n.join(`
|
|
63
|
+
`)}function Ze(r,t,e={}){let n=[],o=t?.find(s=>s.operation?.operationId===r.operationName||s.operation?.operationId===r.operationName.toLowerCase()||s.verb===r.verb.toLowerCase()&&s.path===r.path);if(o?.operation?.responses){let s=o.operation.responses[200]||o.operation.responses[201];if(s?.content){let a=s.content["application/json"]||s.content["*/*"]||Object.values(s.content)[0];if(a?.schema){let p=Ye(a.schema,e);n.push(...p)}else n.push(" // Success response from OpenAPI"),n.push(" data?: any;")}}return n.length===0?"":n.join(`
|
|
64
|
+
`)}function Ye(r,t={}){let e=[];if(r.type==="object"&&r.properties){let n=r.required||[];Object.entries(r.properties).forEach(([o,s])=>{let p=n.includes(o)?"":"?",u=O(s,t,1),m=/[^a-zA-Z0-9_$]/.test(o)?`"${o}"`:o;s.description&&e.push(` /** ${s.description} */`),e.push(` ${m}${p}: ${u};`)})}return e}function O(r,t={},e=0){if(!r)return"any";if(r.$ref){let o=r.$ref;if(o.startsWith("#/components/schemas/")){let s=o.replace("#/components/schemas/",""),a=t[s]||s,u=`Schema.${ze(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,t,e):"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,t,e)}>`:n="{}";else{let p=" ".repeat(e+1),u=" ".repeat(e),i=[];a.forEach(([m,y])=>{let C=(r.required||[]).includes(m)?"":"?",v=O(y,t,e+1),b=/[^a-zA-Z0-9_$]/.test(m)?`"${m}"`:m;y.description&&i.push(`${p}/** ${y.description} */`),i.push(`${p}${b}${C}: ${v};`)}),n=`{
|
|
65
65
|
${i.join(`
|
|
66
66
|
`)}
|
|
67
|
-
${u}}`}}else
|
|
67
|
+
${u}}`}}else r.additionalProperties?n=`Record<string, ${r.additionalProperties===!0?"any":O(r.additionalProperties,t,e)}>`:n="any";break;default:n="any";break}return r.nullable?`${n} | null`:n}function ae(r,t={}){return r.schema?O(r.schema,t):"any"}c();function ce(r,t){let{groupKey:e,refetchOnMountOrArgChange:n=60}=t,o=e?`${e.charAt(0).toUpperCase()+e.slice(1)}QueryService`:"QueryService",s=e?`${e.charAt(0).toUpperCase()+e.slice(1)}ApiService`:"ApiService",a=r.filter(i=>i.isQuery).map(i=>`
|
|
68
68
|
/**
|
|
69
69
|
* ${i.summary}
|
|
70
70
|
*/
|
|
71
|
-
${i.operationName}Query(args: IRestFulEndpointsQueryReturn<${i.argTypeName}>):
|
|
72
|
-
return this.ntkQuery.query<${i.responseTypeName}, ${i.isVoidArg?"
|
|
71
|
+
${i.operationName}Query(args: IRestFulEndpointsQueryReturn<${i.argTypeName}>): QueryResponse<${i.responseTypeName}> {
|
|
72
|
+
return this.ntkQuery.query<${i.responseTypeName}, ${i.isVoidArg?"void":`IRestFulEndpointsQueryReturn<${i.argTypeName}>`}>({
|
|
73
73
|
queryKey: [ECacheTagTypes.${i.queryKeyName}${i.isVoidArg?"":", args.variables"}],
|
|
74
74
|
queryFn: () => {
|
|
75
75
|
return this.apiService.${i.operationName}(args);
|
|
76
76
|
},
|
|
77
77
|
fetchOptions: args?.fetchOptions,
|
|
78
78
|
config: args?.config,
|
|
79
|
-
}
|
|
80
|
-
}`).join(""),p=
|
|
79
|
+
}, ${i.isVoidArg?"":"args"});
|
|
80
|
+
}`).join(""),p=r.filter(i=>!i.isQuery).map(i=>`
|
|
81
81
|
/**
|
|
82
82
|
* ${i.summary}
|
|
83
83
|
*/
|
|
@@ -91,7 +91,7 @@ ${u}}`}}else n.additionalProperties?r=`Record<string, ${n.additionalProperties==
|
|
|
91
91
|
return this.apiService.${i.operationName}(args);
|
|
92
92
|
},
|
|
93
93
|
});
|
|
94
|
-
}`).join(""),u=
|
|
94
|
+
}`).join(""),u=r.filter(i=>i.isQuery).map(i=>`
|
|
95
95
|
/**
|
|
96
96
|
* ${i.summary}
|
|
97
97
|
*/
|
|
@@ -120,7 +120,7 @@ import {NtkQueryService, MutationState, QueryState, MutationResponse} from '@cor
|
|
|
120
120
|
import {ECacheTagTypes} from '../tagTypes';
|
|
121
121
|
import {${s}} from './enhanceEndpoints';
|
|
122
122
|
import {IRestFulEndpointsQueryReturn, RequestOptions} from '../common-types';
|
|
123
|
-
import {${
|
|
123
|
+
import {${r.map(i=>` ${i.argTypeName}, ${i.responseTypeName}`).join(",")}} from './types';
|
|
124
124
|
|
|
125
125
|
@Injectable({
|
|
126
126
|
providedIn: 'root',
|
|
@@ -130,25 +130,25 @@ export class ${o} {
|
|
|
130
130
|
private ntkQuery = inject(NtkQueryService);
|
|
131
131
|
${a}${p}${u}
|
|
132
132
|
}
|
|
133
|
-
`}c();function
|
|
133
|
+
`}c();function ue(r,t){let{apiConfiguration:e,httpClient:n,groupKey:o}=t,s=o?`${o.charAt(0).toUpperCase()+o.slice(1)}ApiService`:"ApiService";return`/* eslint-disable */
|
|
134
134
|
// [Warning] Generated automatically - do not edit manually
|
|
135
135
|
|
|
136
|
-
import { ${
|
|
136
|
+
import { ${n.importReturnTypeName} } from '${n.file}';
|
|
137
137
|
import { Injectable, inject } from '@angular/core';
|
|
138
138
|
import { Observable } from 'rxjs';
|
|
139
139
|
import { ${e.importName} } from '${e.file}';
|
|
140
140
|
import { RequestOptions, IRestFulEndpointsQueryReturn } from '../common-types';
|
|
141
141
|
import { withoutUndefined } from '../utils';
|
|
142
|
-
import {${
|
|
142
|
+
import {${r.map(a=>` ${a.argTypeName}, ${a.responseTypeName}`).join(",")} } from './types';
|
|
143
143
|
|
|
144
144
|
@Injectable({
|
|
145
145
|
providedIn: 'root',
|
|
146
146
|
})
|
|
147
147
|
export class ${s} {
|
|
148
148
|
private config = inject(${e.importName});
|
|
149
|
-
private http = inject(${
|
|
149
|
+
private http = inject(${n.importReturnTypeName});
|
|
150
150
|
|
|
151
|
-
${
|
|
151
|
+
${r.map(a=>{let p=a.verb.toUpperCase()==="GET",u=!a.isVoidArg,i=a.hasRequestBody,m=v=>v.includes("{")&&u?`\`\${this.config.rootUrl}${v.replace(/\{([^}]+)\}/g,"${args.variables.$1}")}\``:`\`\${this.config.rootUrl}${v}\``,y=a.queryParams.length>0,d=!p&&u,C=()=>{let v="";return a.queryParams&&a.queryParams.length>0&&(v=`params: {${a.queryParams.map(b=>`${b.name}: args.variables.${b.name},`).join(`
|
|
152
152
|
`)}},`),`{
|
|
153
153
|
...args?.fetchOptions,
|
|
154
154
|
headers: { 'Content-Type': '${a.contentType}', ...args?.fetchOptions?.headers },
|
|
@@ -164,13 +164,13 @@ ${n.map(a=>{let p=a.verb.toUpperCase()==="GET",u=!a.isVoidArg,i=a.hasRequestBody
|
|
|
164
164
|
return this.http.request('${a.verb.toLowerCase()}', url, ${C()});
|
|
165
165
|
}`}).join("")}
|
|
166
166
|
}
|
|
167
|
-
`}var q=class{constructor(t,e){this.parserService=t;this.options=e;this.infoExtractor=new S(e)}infoExtractor;async generate(){let t=this.parserService.getOperationDefinitions(this.options.filterEndpoints),e=this.infoExtractor.extractEndpointInfos(t);return this.generateRtkQueryCode(e)}generateRtkQueryCode(t){let e=this.generateTypes(t),
|
|
167
|
+
`}var q=class{constructor(t,e){this.parserService=t;this.options=e;this.infoExtractor=new S(e)}infoExtractor;async generate(){let t=this.parserService.getOperationDefinitions(this.options.filterEndpoints),e=this.infoExtractor.extractEndpointInfos(t);return this.generateRtkQueryCode(e)}generateRtkQueryCode(t){let e=this.generateTypes(t),n=ce(t,this.options),o=ue(t,this.options),s=this.generateIndex(),a=t.filter(i=>i.isQuery).map(i=>({operationName:i.operationName,queryKeyName:i.queryKeyName,groupKey:this.options.groupKey||"_common"})),p=t.map(i=>i.operationName),u=new Set;return t.forEach(i=>{i.tags&&Array.isArray(i.tags)&&i.tags.forEach(m=>u.add(m))}),{operationNames:p,tags:Array.from(u),files:{types:e,queryService:n,index:s,enhanceEndpoints:o,allEndpointCacheKeys:a}}}generateTypes(t){let e={...this.options,apiConfiguration:this.options.apiConfiguration||{file:"@/store/webapi",importName:"WebApiConfiguration"}},o=this.parserService.getApiGenerator().aliases.reduce((a,p)=>{if(me.isInterfaceDeclaration(p)||me.isTypeAliasDeclaration(p)){let u=p.name.text;return{...a,[u]:p}}return a},{}),s=this.parserService.getOperationDefinitions(this.options.filterEndpoints);return pe(t,e,o,s)}generateIndex(){let t=this.options.groupKey||"",e=t?`${t.charAt(0).toLowerCase()+t.slice(1)}Api`:"api";return`/* eslint-disable */
|
|
168
168
|
// [Warning] Generated automatically - do not edit manually
|
|
169
169
|
|
|
170
170
|
export * from "./enhanceEndpoints";
|
|
171
171
|
export * from "./query.generated";
|
|
172
172
|
export * from "./types";
|
|
173
|
-
`}};c();function
|
|
173
|
+
`}};c();function ge(){return`/* eslint-disable */
|
|
174
174
|
// [Warning] Generated automatically - do not edit manually
|
|
175
175
|
|
|
176
176
|
/**
|
|
@@ -183,13 +183,13 @@ export function withoutUndefined(obj?: Record<string, any>) {
|
|
|
183
183
|
);
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
`}function
|
|
186
|
+
`}function le(r){return r.toLowerCase().replace(/_([a-z])/g,(t,e)=>e.toUpperCase())}c();function ye(r){let t=r.reduce((n,o)=>(n[o.groupKey]||(n[o.groupKey]=[]),n[o.groupKey].push({operationName:o.operationName,queryKeyName:o.queryKeyName}),n),{});return`// [Warning] Generated automatically - do not edit manually
|
|
187
187
|
|
|
188
188
|
/**
|
|
189
189
|
* Cache keys enum for all API queries
|
|
190
190
|
*/
|
|
191
191
|
export enum ECacheTagTypes {
|
|
192
|
-
${Object.entries(t).map(([
|
|
192
|
+
${Object.entries(t).map(([n,o])=>{let s=` // ${n.charAt(0).toUpperCase()+n.slice(1)} related cache keys`,a=o.map(p=>` ${p.queryKeyName} = '${le(p.queryKeyName)}',`).join(`
|
|
193
193
|
`);return`${s}
|
|
194
194
|
${a}`}).join(`
|
|
195
195
|
|
|
@@ -197,10 +197,10 @@ ${a}`}).join(`
|
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
export default ECacheTagTypes;
|
|
200
|
-
`}var w=class{_options;openApiService=new $;groupService=new N;fileWriterService=new A;allEndpointCacheKeys=[];openApiDoc=null;parserService=null;schemaInterfaces={};actualSchemaFile="";generatedContent={groups:[],commonTypes:"",componentSchema:"",doNotModify:"",utils:"",tagTypes:""};allTags=new Set;constructor(t){this._options=t}async generateAll(){return await this.prepare(),await this.generateApi(),this.generateCommonTypesContent(),this.generateSchemaContent(),this.generateUtilsContent(),this.generateDoNotModifyContent(),this.generatECacheTagTypesContent(),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 R(this.openApiDoc,this._options),this.parserService.initialize();let t=this.parserService.getApiGenerator();this.schemaInterfaces=t.aliases.reduce((e,
|
|
200
|
+
`}var w=class{_options;openApiService=new $;groupService=new N;fileWriterService=new A;allEndpointCacheKeys=[];openApiDoc=null;parserService=null;schemaInterfaces={};actualSchemaFile="";generatedContent={groups:[],commonTypes:"",componentSchema:"",doNotModify:"",utils:"",tagTypes:""};allTags=new Set;constructor(t){this._options=t}async generateAll(){return await this.prepare(),await this.generateApi(),this.generateCommonTypesContent(),this.generateSchemaContent(),this.generateUtilsContent(),this.generateDoNotModifyContent(),this.generatECacheTagTypesContent(),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 R(this.openApiDoc,this._options),this.parserService.initialize();let t=this.parserService.getApiGenerator();this.schemaInterfaces=t.aliases.reduce((e,n)=>{if(de.isInterfaceDeclaration(n)||de.isTypeAliasDeclaration(n)){let o=n.name.text;return{...e,[o]:n}}return e},{})}async generateApi(){if(!this.openApiDoc||!this.parserService)throw new Error("\u8ACB\u5148\u8ABF\u7528 prepare() \u65B9\u6CD5");let t=this.openApiService.getPaths(this.openApiDoc),e=this.groupService.groupPaths(t,this._options.outputFiles);for(let n of Object.values(e))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(s=>this.allTags.add(s)))}catch(o){throw new Error(`\u7FA4\u7D44 ${n.groupKey} \u751F\u6210\u5931\u6557: ${o}`)}}async generatECacheTagTypesContent(){this.generatedContent.tagTypes=ye(this.allEndpointCacheKeys)}async generateCommonTypesContent(){this.generatedContent.commonTypes=oe()}async generateSchemaContent(){this.generatedContent.componentSchema=ie(this.schemaInterfaces)}async generateDoNotModifyContent(){this.generatedContent.doNotModify=se()}async generateUtilsContent(){this.generatedContent.utils=ge()}async release(){let t=[],e=[],n=[];try{for(let p of this.generatedContent.groups)try{if(p.content?.files){let u=F.dirname(p.outputPath),i=await this.fileWriterService.writeGroupFiles(u,{types:p.content.files.types,queryService:p.content.files.queryService,enhanceEndpoints:p.content.files.enhanceEndpoints,index:p.content.files.index});t.push(...i),n.push(p.groupKey)}}catch(u){e.push(new Error(`\u5BEB\u5165\u7FA4\u7D44 ${p.groupKey} \u5931\u6557: ${u}`))}let o=this.generatedContent.groups[0]?F.dirname(F.dirname(this.generatedContent.groups[0].outputPath)):"./generated";if(this.generatedContent.tagTypes||this.generatedContent.commonTypes||this.generatedContent.doNotModify||this.generatedContent.utils){let p=await this.fileWriterService.writeSharedFiles(o,{tagTypes:this.generatedContent.tagTypes||void 0,commonTypes:this.generatedContent.commonTypes||void 0,doNotModify:this.generatedContent.doNotModify||void 0,utils:this.generatedContent.utils||void 0});t.push(...p)}if(this.generatedContent.componentSchema){let p=await this.fileWriterService.writeSchemaFile(o,this.generatedContent.componentSchema);t.push(...p)}let s=this.generateMainIndex(n),a=await this.fileWriterService.writeFile(F.join(o,"index.ts"),s);t.push(a)}catch(o){e.push(o)}return{success:e.length===0,writtenFiles:t,errors:e,generatedGroups:n}}async generateApiGroupContent(t,e){let{outputFiles:n,...o}=t,s={...o,schemaFile:this.actualSchemaFile,outputFile:e.outputPath,sharedTypesFile:`${n.outputDir}/common-types.ts`,filterEndpoints:this.groupService.createGroupFilter(e.groupKey,n),queryMatch:n.queryMatch,groupKey:e.groupKey};if(!this.openApiDoc||!this.parserService)throw new Error("OpenAPI \u6587\u6A94\u672A\u521D\u59CB\u5316\uFF0C\u8ACB\u5148\u8ABF\u7528 prepare()");let p=await new q(this.parserService,s).generate();if(p.files&&"allEndpointCacheKeys"in p.files){let u=p.files.allEndpointCacheKeys;this.allEndpointCacheKeys.push(...u)}return p}generateMainIndex(t){return`/* eslint-disable */
|
|
201
201
|
// [Warning] Generated automatically - do not edit manually
|
|
202
202
|
|
|
203
|
-
${t.map(
|
|
203
|
+
${t.map(n=>`export * from "./${n}";`).join(`
|
|
204
204
|
`)}
|
|
205
|
-
`}};async function
|
|
205
|
+
`}};async function fe(r){let e=await new w(r).generateAll();if(!e.success&&e.errors.length>0)throw e.errors[0]}var he=Je(g);async function tt(r){let t=et(process.cwd(),r);process.chdir(Xe(t));let e=he(t),n=e.default??e;"outputFiles"in n||(console.error('Configuration must include "outputFiles" property. Single file output is no longer supported.'),process.exit(1)),n.outputFiles&&n.outputFiles.outputDir&&k(n.outputFiles.outputDir);try{console.log("Generating multiple outputs..."),await fe(n),console.log("Done")}catch(o){console.error("Generation failed:",o),process.exit(1)}}async function rt(){let r=he("../../package.json"),t=V();j.version(r.version).usage("<path/to/config.js>").parse(process.argv);let e=j.args[0];if(j.args.length===0){j.help();return}U(e),W(e,t),await tt(e)}rt().catch(r=>{console.error("CLI execution failed:",r),process.exit(1)});export{tt as runGeneration};
|
|
206
206
|
//# sourceMappingURL=cli.mjs.map
|