@bitstack/ng-query-codegen-openapi 0.0.38-alpha.1 → 0.0.38-alpha.3
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 +9 -8
- package/lib/bin/cli.mjs.map +1 -1
- package/lib/index.js +3 -2
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +3 -2
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/generators/rtk-query-generator.ts +3 -2
package/lib/bin/cli.mjs
CHANGED
|
@@ -52,7 +52,7 @@ ${n.join(`
|
|
|
52
52
|
\u9019\u4E9B\u6A94\u6848\u662F\u7531 @bitstack/ng-query-codegen-openapi \u7522\u751F\u5668\u6240\u5EFA\u7ACB\u3002
|
|
53
53
|
|
|
54
54
|
\u5982\u6709\u7591\u554F\uFF0C\u8ACB\u53C3\u8003\u5C08\u6848\u6587\u4EF6\u6216\u806F\u7E6B\u958B\u767C\u5718\u968A\u3002
|
|
55
|
-
`}c();import me from"typescript";c();K();import{supportDeepObjects as ze}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}),g=s?P(m+s):m,f=P(m+s+a),T=P(m+s+p),
|
|
55
|
+
`}c();import me from"typescript";c();K();import{supportDeepObjects as ze}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}),g=s?P(m+s):m,f=P(m+s+a),T=P(m+s+p),v=Z(e,n,D(t,i),u),C=`${m.replace(/([A-Z])/g,"_$1").toUpperCase()}`,b=o.summary||`${e.toUpperCase()} ${n}`,{queryParams:Oe,pathParams:ve,isVoidArg:be,hasRequestBody:xe}=this.extractParameters(t),Te=this.extractContentType(o),Ce=Array.isArray(o.tags)?o.tags:[];return{operationName:g,argTypeName:f,responseTypeName:T,isQuery:v,verb:e.toUpperCase(),path:n,queryKeyName:C,queryParams:Oe,pathParams:ve,isVoidArg:be,summary:b,contentType:Te,hasRequestBody:xe,tags:Ce}}extractParameters(t){let{operation:e,pathItem:n}=t,o=this.resolveArray(e.parameters),s=this.resolveArray(n.parameters).filter(g=>!o.some(f=>f.name===g.name&&f.in===g.in)),a=ze([...s,...o]).filter(g=>g.in!=="header"),p=a.filter(g=>g.in==="query"),u=a.filter(g=>g.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 Le=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 */
|
|
56
56
|
// [Warning] Generated automatically - do not edit manually
|
|
57
57
|
|
|
58
58
|
`;e&&Object.keys(e).length>0&&(s+=`import * as Schema from "../schema";
|
|
@@ -60,16 +60,16 @@ ${n.join(`
|
|
|
60
60
|
`;let p=[],u=[];return r.forEach(i=>{let m=i.argTypeName,g=i.responseTypeName;if(m){let f=He(i,n,o);f.trim()===""?u.push(`export type ${m} = void;`,""):u.push(`export type ${m} = {`,f,"};","")}if(g){let f=Ze(i,n,o);f.trim()===""?u.push(`export type ${g} = void;`,""):u.push(`export type ${g} = {`,f,"};","")}}),u.length>0&&p.push(u.join(`
|
|
61
61
|
`)),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(`
|
|
62
62
|
|
|
63
|
-
`)}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=
|
|
63
|
+
`)}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(`
|
|
64
64
|
`)}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(`
|
|
65
|
-
`)}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=
|
|
65
|
+
`)}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.title||s.description)&&e.push(` /** ${s.title??""} ${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.${Le(a)}`;return r.nullable?`${u} | null`:u}}if(r.oneOf||r.anyOf){let a=(r.oneOf||r.anyOf).map(p=>O(p,t,e)).join(" | ");return r.nullable?`${a} | null`:a}if(r.allOf){let s=r.allOf.map(a=>O(a,t,e)).join(" & ");return r.nullable?`(${s}) | null`:s}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,g])=>{let T=(r.required||[]).includes(m)?"":"?",v=O(g,t,e+1),b=/[^a-zA-Z0-9_$]/.test(m)?`"${m}"`:m;(g.title||g.description)&&i.push(`${p}/** ${g.title??""} ${g.description??""}*/`),i.push(`${p}${b}${T}: ${v};`)}),n=`{
|
|
66
66
|
${i.join(`
|
|
67
67
|
`)}
|
|
68
|
-
${u}}`}}else r.additionalProperties?n=`Record<string, ${r.additionalProperties===!0?"any":
|
|
68
|
+
${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=>`
|
|
69
69
|
/**
|
|
70
70
|
* ${i.summary}
|
|
71
71
|
*/
|
|
72
|
-
${i.operationName}Query(args: IRestFulEndpointsQueryReturn<${i.argTypeName}>, queryOptions?:
|
|
72
|
+
${i.operationName}Query(args: IRestFulEndpointsQueryReturn<${i.argTypeName}>, queryOptions?: BaseQueryOptions): Observable<QueryState<${i.responseTypeName}>> {
|
|
73
73
|
if (queryOptions?.skip) {
|
|
74
74
|
return this.ntkQuery.skipQuery<${i.responseTypeName}>();
|
|
75
75
|
}
|
|
@@ -80,6 +80,7 @@ ${u}}`}}else r.additionalProperties?n=`Record<string, ${r.additionalProperties==
|
|
|
80
80
|
},
|
|
81
81
|
fetchOptions: args?.fetchOptions,
|
|
82
82
|
config: args?.config,
|
|
83
|
+
refetchDeps: queryOptions?.refetchDeps,
|
|
83
84
|
})(${i.isVoidArg?"":"args"});
|
|
84
85
|
}`).join(""),p=r.filter(i=>!i.isQuery).map(i=>`
|
|
85
86
|
/**
|
|
@@ -110,7 +111,7 @@ ${u}}`}}else r.additionalProperties?n=`Record<string, ${r.additionalProperties==
|
|
|
110
111
|
import {Injectable, inject} from '@angular/core';
|
|
111
112
|
import {Observable} from 'rxjs';
|
|
112
113
|
import {HttpErrorResponse} from '@angular/common/http';
|
|
113
|
-
import {NtkQueryService, MutationState, QueryState, MutationResponse, LazyQueryResult, LazyQueryTriggerOptions} from '@core/ntk-query';
|
|
114
|
+
import {NtkQueryService, MutationState, QueryState, BaseQueryOptions, MutationResponse, LazyQueryResult, LazyQueryTriggerOptions} from '@core/ntk-query';
|
|
114
115
|
import {ECacheTagTypes} from '../tagTypes';
|
|
115
116
|
import {${s}} from './enhanceEndpoints';
|
|
116
117
|
import {IRestFulEndpointsQueryReturn, RequestOptions} from '../common-types';
|
|
@@ -142,11 +143,11 @@ export class ${s} {
|
|
|
142
143
|
private config = inject(${e.importName});
|
|
143
144
|
private http = inject(${n.importReturnTypeName});
|
|
144
145
|
|
|
145
|
-
${r.map(a=>{let p=a.verb.toUpperCase()==="GET",u=!a.isVoidArg,i=a.hasRequestBody,m=
|
|
146
|
+
${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}\``,g=a.queryParams.length>0,f=!p&&u,T=()=>{let v="";return a.queryParams&&a.queryParams.length>0&&(v=`params: {${a.queryParams.map(b=>`${b.name}: args.variables.${b.name},`).join(`
|
|
146
147
|
`)}},`),`{
|
|
147
148
|
...args?.fetchOptions,
|
|
148
149
|
headers: { 'Content-Type': '${a.contentType}', ...args?.fetchOptions?.headers },
|
|
149
|
-
${
|
|
150
|
+
${v}${a.hasRequestBody?"body: args.variables.body,":""}
|
|
150
151
|
}`};return`
|
|
151
152
|
/**
|
|
152
153
|
* ${a.summary}
|