@povio/openapi-codegen-cli 2.0.0-rc.2 → 2.0.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
@@ -1,9 +1,11 @@
1
1
  # OpenAPI code generation CLI
2
2
 
3
- **NOTE:** This CLI tool is primarily designed for use within our organization. The generated code output aligns with our internal template. If you are using this tool without our internal template, make sure to use it in **standalone** mode.
3
+ **NOTE:** This CLI tool is primarily designed for use within our organization. The generated code output aligns with our internal template.
4
4
 
5
5
  **NOTE:** Version 1+ requires zod v4 and is not compatible with zod v3.
6
6
 
7
+ **NOTE:** Version 2+ includes supporting classes/types/components for the generated code as well as auth, therefore it has peerDependencies for @casl/ability, @casl/react, @tanstack/react-query, axios, react and zod.
8
+
7
9
  Use this tool to generate code (Zod schemas, TypeScript types, API definitions, and React queries) from an OpenAPI v3 specification. API definitions are generated to use a REST client wrapper that utilizes Axios. React queries are generated in alignment with our code standards, without the need for explicit types.
8
10
 
9
11
  The tool partially leverages code from [openapi-zod-client](https://github.com/astahmer/openapi-zod-client) repository.
@@ -20,12 +22,6 @@ yarn add @povio/openapi-codegen-cli
20
22
  yarn openapi-codegen generate --input http://localhost:3001/docs-json
21
23
  ```
22
24
 
23
- #### Standalone mode
24
-
25
- ```bash
26
- yarn openapi-codegen generate --input http://localhost:3001/docs-json --standalone
27
- ```
28
-
29
25
  ## Configuration Files
30
26
 
31
27
  The CLI supports TypeScript configuration files to simplify command execution and provide consistent settings with full type safety. Configuration files are automatically discovered in your project root.
@@ -100,8 +96,7 @@ yarn openapi-codegen generate --config my-config.ts
100
96
 
101
97
  --builderConfigs Generate configs for builders (default: false)
102
98
 
103
- --standalone Generate any missing supporting classes/types, e.g., REST client class, React Query type extensions, etc. (default: false)
104
- --baseUrl (Requires `--standalone`) Base URL for the REST client; falls back to the OpenAPI spec if not provided
99
+ --baseUrl (Requires `--restClientImportPath` to NOT be set) Base URL for the generated REST client; falls back to the OpenAPI spec if not provided
105
100
  ```
106
101
 
107
102
  #### Check command (checks if OpenAPI spec is compliant)
@@ -145,6 +140,52 @@ yarn start:dist generate --input ./test/petstore.yaml --verbose
145
140
 
146
141
  ## Common Issues
147
142
 
143
+ ### App REST Client Interceptors
144
+
145
+ In order to add interceptors to the used REST client, you must create your own instance of a RestClient and pass your implemented interceptors into the constructor. Make sure to set `restClientImportPath` in your openapi generation configuration too.
146
+
147
+ ```ts
148
+ import { RestInterceptor } from "@povio/openapi-codegen-cli";
149
+
150
+ import { ACCESS_TOKEN_KEY } from "@/config/jwt.config";
151
+
152
+ export const AuthorizationHeaderInterceptor = new RestInterceptor((client) => {
153
+ return client.interceptors.request.use(async (config) => {
154
+ const accessToken = localStorage.getItem(ACCESS_TOKEN_KEY);
155
+ if (accessToken != null) {
156
+ config.headers.Authorization = `Bearer ${accessToken}`;
157
+ }
158
+
159
+ return config;
160
+ });
161
+ });
162
+ ```
163
+
164
+ ```ts
165
+ import { RestClient } from "@povio/openapi-codegen-cli";
166
+
167
+ import { AuthorizationHeaderInterceptor } from "@/clients/rest/interceptors/authorization-header.interceptor";
168
+ import { AppConfig } from "@/config/app.config";
169
+
170
+ export const AppRestClient = new RestClient({
171
+ config: {
172
+ baseURL: AppConfig.api.url,
173
+ },
174
+ interceptors: [AuthorizationHeaderInterceptor],
175
+ });
176
+ ```
177
+
178
+ ```ts
179
+ import type { OpenAPICodegenConfig } from "@povio/openapi-codegen-cli";
180
+
181
+ const config: OpenAPICodegenConfig = {
182
+ restClientImportPath: "@/clients/app-rest-client",
183
+ // ...
184
+ };
185
+
186
+ export default config;
187
+ ```
188
+
148
189
  ### Enums
149
190
 
150
191
  If you're using Enums in your backend DTOs with `@Expose()` and `@IsEnum`, they may still not appear correctly in the OpenAPI schema unless you also provide both `enum` **and** `enumName` to `@ApiProperty`.
package/dist/generator.js CHANGED
@@ -74,4 +74,4 @@ Expecting `+Dt.join(", ")+", got '"+(this.terminals_[P]||P)+"'":ls="Parse error
74
74
  `].some(s=>String.prototype.includes.call(e.description,s))?n.push(`describe(\`${e.description}\`)`):n.push(`describe("${e.description}")`));let i=n.concat(QN({schema:e,meta:t,options:r}),r.withDefaultValues!==!1?WN(e):[]).filter(Boolean).join(".");return i?`.${i}`:""}o(kt,"getZodChain");function QN({schema:e,meta:t,options:r}){return e.nullable&&!(t!=null&&t.isRequired)?"nullish()":e.nullable||r.replaceOptionalWithNullish&&(t!=null&&t.isParentPartial)?"nullable()":t!=null&&t.isRequired?"":r.replaceOptionalWithNullish?"nullish()":"optional()"}o(QN,"getZodChainablePresence");function WN(e){return e.default!==void 0?`default(${$e(e.type).with("number","integer",()=>ob(e.default)).otherwise(()=>JSON.stringify(e.default))})`:""}o(WN,"getZodChainableDefault");function YN(e){let t=[];return e.enum||(e.minLength!==void 0&&t.push(`min(${e.minLength})`),e.maxLength!==void 0&&t.push(`max(${e.maxLength})`)),e.pattern&&t.push(`regex(${JN(e.pattern)})`),t.join(".")}o(YN,"getZodChainableStringValidations");function JN(e){return e.startsWith("/")&&e.endsWith("/")&&(e=e.slice(1,-1)),e=sb(e),`/${e}/`}o(JN,"formatPatternIfNeeded");function XN(e){let t=[];return e.enum?"":(e.minimum!==void 0?e.exclusiveMinimum===!0?t.push(`gt(${e.minimum})`):t.push(`gte(${e.minimum})`):typeof e.exclusiveMinimum=="number"&&t.push(`gt(${e.exclusiveMinimum})`),e.maximum!==void 0?e.exclusiveMaximum===!0?t.push(`lt(${e.maximum})`):t.push(`lte(${e.maximum})`):typeof e.exclusiveMaximum=="number"&&t.push(`lt(${e.exclusiveMaximum})`),e.multipleOf&&t.push(`multipleOf(${e.multipleOf})`),t.join("."))}o(XN,"getZodChainableNumberValidations");function ek(e){let t=[];return e.minItems&&t.push(`min(${e.minItems})`),e.maxItems&&t.push(`max(${e.maxItems})`),t.join(".")}o(ek,"getZodChainableArrayValidations");var Sn=o(e=>e.reduce((t,r)=>t+r,0),"sum");function le(e,t){if(!t)return e;if(L(t))return e+2;if(Array.isArray(t.type))return t.type.length===1?Be("oneOf")+le(e,{...t,type:t.type[0]}):e+Be("oneOf")+Sn(t.type.map(r=>le(0,{...t,type:r})));if(t.oneOf)return t.oneOf.length===1?Be("oneOf")+le(e,t.oneOf[0]):e+Be("oneOf")+Sn(t.oneOf.map(r=>le(0,r)));if(t.anyOf)return t.anyOf.length===1?Be("anyOf")+le(e,t.anyOf[0]):e+Be("anyOf")+Sn(t.anyOf.map(r=>le(0,r)));if(t.allOf)return t.allOf.length===1?Be("allOf")+le(e,t.allOf[0]):e+Be("allOf")+Sn(t.allOf.map(r=>le(0,r)));if(!t.type)return e;if(zt(t.type))return t.enum?e+Fb(t)+Be("enum")+Sn(t.enum.map(r=>le(0,r))):e+Fb(t);if(t.type==="array")return t.items?Be("array")+le(e,t.items):Be("array")+le(e);if(t.type==="object"||t.properties||t.additionalProperties){if(t.properties){let r=Object.values(t.properties);e+=Be("object")+Sn(r.map(n=>le(0,n)))}else e+=Be("empty-object");t.additionalProperties&&(typeof t.additionalProperties=="object"?e+=le(0,t.additionalProperties):e+=le(1))}return e}o(le,"getOpenAPISchemaComplexity");function Fb(e){return $e(e.type).with("string","number","integer","boolean",()=>1).otherwise(()=>0)}o(Fb,"complexityByType");function Be(e){return $e(e).with("oneOf",()=>2).with("anyOf",()=>3).with("allOf",()=>2).with("enum","array","empty-object",()=>1).with("object",()=>2).otherwise(()=>0)}o(Be,"complexityByComposite");var Zf=class Zf{constructor(t,r,n={referencedBy:[]},i){this.schema=t;this.resolver=r;L(t)&&(this.ref=t.$ref),i&&(this.enumRef=i),this.meta={...n,referencedBy:[...(n==null?void 0:n.referencedBy)??[]]},this.ref&&this.meta.referencedBy.push(this)}code;ref;enumRef;children=[];meta;getCodeString(t,r){var s,a;if(!this.ref&&this.code)return this.code;if(!this.ref)throw new Error("Zod schema is missing both ref and code");let n=(s=this.resolver)==null?void 0:s.getZodSchemaNameByRef(this.ref);if(!n)return this.ref;let i=(a=this.resolver)==null?void 0:a.getTagByZodSchemaName(n);return r!=null&&r.tsNamespaces&&i&&i!==t?`${V({type:"models",tag:i,options:r})}.${n}`:n}get complexity(){return le(0,this.schema)}assign(t){return this.code=t,this}inherit(t){return t&&t.children.push(this),this}};o(Zf,"ZodSchema");var Zo=Zf;function Uf(e){var t,r;if(e)return(t=e.parent)!=null&&t.ref?e.parent.ref:Uf((r=e.parent)==null?void 0:r.meta)}o(Uf,"getParentRef");function Hb(e,t){let r=e.getRefByZodSchemaName(t);if(r){let i=Array.from(e.dependencyGraph.refsDependencyGraph[r]??[]).map(a=>e.getZodSchemaNameByRef(a)),s=e.getExtractedEnumZodSchemaNamesReferencedBySchemaRef(r);return[...i,...s]}let n=e.getCompositeZodSchemaByZodSchemaName(t);return n?Array.from(Ha(n)).map(i=>e.getZodSchemaNameByRef(i)):[]}o(Hb,"getZodSchemaRefs");function Ha(e,{skipObjectSchema:t=!1}={}){return e.children.reduce((n,i)=>{let s=i.ref??i.enumRef;return s&&n.add(s),i.children.length>0&&(!t||!he(i.schema)||i.schema.type!=="object")&&Ha(i).forEach(a=>n.add(a)),n},new Set)}o(Ha,"getSchemaRefs");function X({schema:e,resolver:t,meta:r,tag:n}){var g;let i=new Zo(e,t,r),s={parent:i.inherit(r==null?void 0:r.parent),referencedBy:[...i.meta.referencedBy]},a={resolver:t,meta:s,tag:n};if(L(e))return tk({schema:e,zodSchema:i,resolver:t,meta:s,tag:n});let c=nk({schema:e,zodSchema:i,resolver:t,meta:s,tag:n});if(c)return c;let u=rk({schema:e,zodSchema:i,resolver:t,meta:s,tag:n});if(u)return u;let l=ik({schema:e,zodSchema:i,resolver:t,meta:s,tag:n});if(l)return l;let f=ok({schema:e,zodSchema:i,resolver:t,meta:s,tag:n});if(f)return f;let p=sk({schema:e,zodSchema:i,resolver:t,meta:s,tag:n});if(p)return p;let d=t.options.allReadonly?".readonly()":"";if(Pa(e))return e.items?i.assign(`z.array(${X({...a,schema:e.items}).getCodeString(n,t.options)}${kt({schema:e.items,meta:{...s,isRequired:!0},options:t.options})})${d}`):i.assign(`z.array(${fi})${d}`);let m=e.type?e.type.toLowerCase():void 0;if(m==="object"||e.properties||e.additionalProperties){let y=e.required&&e.required.length>0,S=t.options.withImplicitRequiredProps?!1:e.properties&&!((g=e.required)!=null&&g.length),v="{}";e.properties&&(v=`{ ${Object.entries(e.properties).map(([w,I])=>{var Dt;let Y={...s,isRequired:S?!0:y?(Dt=e.required)==null?void 0:Dt.includes(w):t.options.withImplicitRequiredProps,name:w,isParentPartial:S},Q=I;if(L(I)&&t&&(Q=t.getSchemaByRef(I.$ref),!Q))throw new Error(`Schema ${I.$ref} not found`);let j=X({...a,schema:I,meta:Y}),A=j.getCodeString(n,t.options)+kt({schema:Q,meta:Y,options:t.options}),ce=!1,Mt=Uf(r);return Mt&&(ce=[...L(I)?[I.$ref]:[],...Ha(j,{skipObjectSchema:!0})].some(Ze=>{var Qd;return(Qd=t.dependencyGraph.deepDependencyGraph[Ze])==null?void 0:Qd.has(Mt)})),[w,A,ce]}).map(([w,I,Y])=>Y?`get ${kf(w)}() { return ${I} }`:`${kf(w)}: ${I}`).join(", ")} }`);let b="";e.additionalProperties&&(b=`.catchall(${typeof e.additionalProperties=="object"&&Object.keys(e.additionalProperties).length>0?X({...a,schema:e.additionalProperties}).getCodeString(n,t.options)+kt({schema:e.additionalProperties,meta:{...s,isRequired:!0},options:t.options}):fi})`);let P=`z.object(${v})${S?".partial()":""}${b}${d}`;return i.assign(P)}if(m==="any")return i.assign(fi);if(!m)return i.assign("z.unknown()");throw new Error(`Unsupported schema type: ${m}`)}o(X,"getZodSchema");function tk({schema:e,zodSchema:t,resolver:r,meta:n,tag:i}){if(!L(e))return;let s=t.meta.referencedBy.slice(0,-1).map(u=>u.ref?r.getZodSchemaNameByRef(u.ref)??u.ref:void 0).filter(Boolean),a=r.getZodSchemaNameByRef(e.$ref);if(s.length>1&&s.includes(a))return t.assign(r.getCodeByZodSchemaName(t.ref));let c=r.getCodeByZodSchemaName(e.$ref);if(!c){let u=r.getSchemaByRef(e.$ref);if(!u)throw new Error(`Schema ${e.$ref} not found`);c=X({schema:u,resolver:r,meta:n,tag:i}).getCodeString(i,r.options)}return r.getCodeByZodSchemaName(a)||r.setZodSchema(a,c,i),t}o(tk,"getReferenceZodSchema");function rk({schema:e,zodSchema:t,resolver:r,meta:n,tag:i}){var a;if(!he(e)||!e.oneOf)return;if(e.oneOf.length===1){let c=X({schema:e.oneOf[0],resolver:r,meta:n,tag:i});return t.assign(c.getCodeString(i,r.options))}let s=(a=e.oneOf)==null?void 0:a.some(c=>he(c)&&((c==null?void 0:c.allOf)||[]).length>1);if(e.discriminator&&!s){let c=e.discriminator.propertyName;return t.assign(`
75
75
  z.discriminatedUnion("${c}", [${e.oneOf.map(u=>X({schema:u,resolver:r,meta:n,tag:i}).getCodeString(i,r.options)).join(", ")}])
76
76
  `)}return t.assign(`z.union([${e.oneOf.map(c=>X({schema:c,resolver:r,meta:n,tag:i}).getCodeString(i,r.options)).join(", ")}])`)}o(rk,"getOneOfZodSchema");function nk({schema:e,zodSchema:t,resolver:r,meta:n,tag:i}){if(!(!he(e)||!Array.isArray(e.type)))return e.type.length===1?X({schema:{...e,type:e.type[0]},resolver:r,meta:n,tag:i}):t.assign(`z.union([${e.type.map(s=>X({schema:{...e,type:s},resolver:r,meta:n,tag:i}).getCodeString(i,r.options)).join(", ")}])`)}o(nk,"getArrayZodSchema");function ik({schema:e,zodSchema:t,resolver:r,meta:n,tag:i}){if(!he(e)||!e.anyOf)return;if(e.anyOf.length===1){let a=X({schema:e.anyOf[0],resolver:r,meta:n,tag:i});return t.assign(a.getCodeString(i,r.options))}let s=e.anyOf.map(a=>X({schema:a,resolver:r,meta:n,tag:i})).map(a=>a.getCodeString(i,r.options)).join(", ");return t.assign(`z.union([${s}])`)}o(ik,"getAnyOfZodSchema");function ok({schema:e,zodSchema:t,resolver:r,meta:n,tag:i}){if(!he(e)||!e.allOf)return;if(e.allOf.length===1){let p=X({schema:e.allOf[0],resolver:r,meta:n,tag:i});return t.assign(p.getCodeString(i,r.options))}let{patchRequiredSchemaInLoop:s,noRequiredOnlyAllof:a,composedRequiredSchema:c}=Jv(e),u=a.map(p=>{let d=X({schema:p,resolver:r,meta:n,tag:i});return r&&s(p,r.getSchemaByRef.bind(r)),d});c.required.length&&u.push(X({schema:c,resolver:r,meta:n,tag:i}));let l=u.at(0),f=u.slice(1).map(p=>`merge(${p.getCodeString(i,r.options)})`).join(".");return t.assign(`${l.getCodeString(i,r.options)}.${f}`)}o(ok,"getAllOfZodSchema");function sk({schema:e,zodSchema:t,resolver:r,meta:n,tag:i}){if(!he(e))return;let s=e.type?e.type.toLowerCase():void 0;if(s&&zt(s)){if(e.enum){if(s==="string")return ak({schema:e,zodSchema:t,resolver:r,meta:n,tag:i});if(e.enum.some(a=>typeof a=="string"))return t.assign("z.never()");if(e.enum.length===1){let a=e.enum[0];return t.assign(`z.literal(${a===null?"null":a})`)}return t.assign(`z.union([${e.enum.map(a=>`z.literal(${a===null?"null":a})`).join(", ")}])`)}return t.assign($e(s).with("integer",()=>$e(e.type).with("integer",()=>Rv).otherwise(()=>Nv)).with("string",()=>$e(e.format).with("binary",()=>ga).with("email",()=>kv).with("hostname","uri",()=>jv).with("uuid",()=>qv).with("date-time",()=>Mv).otherwise(()=>ya)).otherwise(a=>`z.${a}()`))}}o(sk,"getPrimitiveZodSchema");function ak({resolver:e,schema:t,zodSchema:r,meta:n,tag:i}){var l;if(!he(t))return;let s=Pi(t);if(!e.options.extractEnums)return r.assign(s);let a=e.getEnumZodSchemaDataByCode(s);if(a)return((l=r.meta.parent)==null?void 0:l.ref)===e.getRefByZodSchemaName(a.zodSchemaName)?r.assign(a.code):new Zo({$ref:e.getRefByZodSchemaName(a.zodSchemaName)},e,n).inherit(r).assign(s);let c=e.getExtractedEnumZodSchemaDataByCode(s);if(!c)return r.assign(s);if(!c.zodSchemaName||!c.tag)throw new Error(`Enum zod schema name or tag not resolved for code: ${s}`);let u=e.options.tsNamespaces&&c.tag!==i?`${V({type:"models",tag:c.tag,options:e.options})}.`:"";return r.assign(`${u}${c.zodSchemaName}`)}o(ak,"getEnumZodSchema");function Pi(e){var t;return`${To}([${(t=e.enum)==null?void 0:t.map(r=>r===null?"null":`"${r}"`).join(", ")}])`}o(Pi,"getEnumZodSchemaCode");function Vb(e){return`${To}([${e.map(t=>`"${t}"`).join(", ")}])`}o(Vb,"getEnumZodSchemaCodeFromEnumNames");function Oi({schema:e,zodSchema:t,fallbackName:r,resolver:n,tag:i}){var c;let s=t.getCodeString();if((!ne(s)||t.ref===void 0)&&r){if(t.complexity<Cf)return s;let u=pn(r,n.options.schemaSuffix);for(;n.getCodeByZodSchemaName(u);){if((c=n.getZodSchemaNamesByCompositeCode(s))!=null&&c.includes(u))return u;if(n.getCodeByZodSchemaName(u)===u)return u;throw new Error(`Can't uniquely resolve zod schema name: ${u}`)}return n.setZodSchema(u,s,i),n.addZodSchemaForCompositeCode(s,t,u,e),u}let a=n.getCodeByZodSchemaName(s);if(!a&&t.ref&&(a=n.getCodeByZodSchemaName(n.getZodSchemaNameByRef(t.ref))),t.ref&&a)return le(0,n.getSchemaByRef(t.ref))<Cf?n.getCodeByZodSchemaName(s):s;if(t.ref)return n.getZodSchemaNameByRef(t.ref);throw new Error(`Invalid ref: ${t.ref}`)}o(Oi,"resolveZodSchemaName");function vn(e,t){let r={};return Object.keys(e).forEach(n=>{t.includes(n)&&(r[n]=e[n])}),r}o(vn,"pick");var zf=["break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","false","finally","for","function","if","import","in","instanceof","new","null","return","super","switch","this","throw","true","try","typeof","var","void","while","with"];function $i(e,t){let r=e.deprecated&&!t.withDeprecatedEndpoints,n=Ar(e,t),i=ub(n,t);return r||i}o($i,"isOperationExcluded");function Kf({path:e,method:t,operation:r,options:n,tag:i,keepOperationTag:s,keepOperationPrefix:a}){let c=`${t}${ab(e)}`,u=r.operationId?wt(r.operationId):c;if(n.removeOperationPrefixEndingWith&&a)u=u.split(n.removeOperationPrefixEndingWith).map((f,p)=>p===0?f:B(f)).join("");else if(n.removeOperationPrefixEndingWith&&!a){let l=new RegExp(`^.*${n.removeOperationPrefixEndingWith}`);u=u.replace(l,"")}if(n.tsNamespaces&&!s){let l=Hv(u,i);l===""?u=t.toLowerCase():zf.includes(l)||(u=l)}return zf.includes(u)?c:u}o(Kf,"getOperationName");function zo({operationsByTag:e,...t}){let{operation:r,options:n}=t,i=n.splitByTags?Ar(r,n):n.defaultTag,s=o(a=>{let c=Kf({...t,tag:i,keepOperationTag:a});if(e[i].filter(l=>Kf({...t,operation:l,tag:i,keepOperationTag:a})===c).length===1)return c},"operationName");return s()??s(!0)??Kf({...t,tag:i,keepOperationTag:!0,keepOperationPrefix:!0})}o(zo,"getUniqueOperationName");function Bb(e,t,r){let n=[];for(let i in e.paths){if(ln(i,r))continue;let s=e.paths[i],a=vn(s,cn);for(let c in a){let u=a[c];if(!u||$i(u,r))continue;let l=zo({path:i,method:c,operation:u,operationsByTag:t,options:r});n.push(l)}}return n}o(Bb,"getUniqueOperationNamesWithoutSplitByTags");function Gb(e,t){let r={};for(let n in e.paths){if(ln(n,t))continue;let i=e.paths[n],s=vn(i,cn);for(let a in s){let c=s[a];if(!c||$i(c,t))continue;let u=t.splitByTags?Ar(c,t):t.defaultTag;r[u]||(r[u]=[]),r[u].push(c)}}return r}o(Gb,"getOperationsByTag");var Ub={100:"Continue",101:"Switching Protocols",102:"Processing",103:"Early Hints",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",300:"Ambiguous",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",418:"I Am a Teapot",421:"Misdirected Request",422:"Unprocessable Entity",424:"Failed Dependency",428:"Precondition Required",429:"Too Many Requests",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported"};function Ko(e){return{type:"invalid-schema",message:e}}o(Ko,"getInvalidSchemaError");function Zb(e){return{type:"invalid-operation-id",message:`Operation ${e}`}}o(Zb,"getInvalidOperationIdError");function zb(e,t){return{type:"missing-path-parameter",message:`Path ${t} is missing [${e.map(({name:r})=>r).join(", ")}]`}}o(zb,"getMissingPathParameterError");function Kb(e){return{type:"not-allowed-inline-enum",message:`${e} is missing @IsEnum() and @ApiProperty(enum:, enumName:)`}}o(Kb,"getNotAllowedInlineEnumError");function Qb(e,t,r){return{type:"missing-acl-condition-property",message:`Condition property ${e} is not found in parameters or body in operation ${Ba(t,r)}`}}o(Qb,"getMissingAclConditionPropertyError");function Qf(e,t,r){return{type:"missing-status-code",message:`Missing HTTP status code ${Va(e)} in operation ${Ba(t,r)}`}}o(Qf,"getMissingStatusCodeError");function Wb(e,t,r){return{type:"invalid-status-code",message:`Operation ${Ba(t,r)} expected HTTP status code ${Va(e.expected)} but received ${Va(e.received)}`}}o(Wb,"getInvalidStatusCodeError");function Yb(e,t,r){return{type:"multiple-success-status-codes",message:`Operation ${Ba(t,r)} has multiple success HTTP status codes: ${e.map(Va).join(", ")}`}}o(Yb,"getMultipleSuccessStatusCodesError");function Ba(e,t){return e.operationId??`${t.method} ${t.path}`}o(Ba,"getOperationDescriptor");function Va(e){return`${e} (${Ub[e]})`}o(Va,"getStatusCodeDescription");function Jb({resolver:e,endpoint:t,operation:r}){let n=r["x-acl"];return n==null?void 0:n.map(i=>{let s=Object.keys(i.conditions??{}).reduce((a,c)=>{let u=ck({resolver:e,endpoint:t,acl:n,name:c});return u?[...a,u]:(e.validationErrors.push(Qb(c,r,t)),a)},[]);return{...i,conditionsTypes:s}})}o(Jb,"getEndpointAcl");function ck({resolver:e,endpoint:t,acl:r,name:n}){var p,d,m,g,y,S,v,b,E,P;let i=(d=(p=r[0])==null?void 0:p.conditions)==null?void 0:d[n];if(!i)return;let s=i.replace(/^\$[^.]*\./,"").split("."),a,c,u,l=0,f=t.parameters.find(({name:_})=>_===s[l]);if(f)c=(m=f.parameterObject)==null?void 0:m.required,a=(g=f.parameterObject)==null?void 0:g.schema,u=`${f.name} ${vr(f.type)} parameter`,l++;else{let _=t.parameters.find(({bodyObject:Y})=>!!Y),I=Object.keys(((y=_==null?void 0:_.bodyObject)==null?void 0:y.content)??{}).find(Xe);I&&(a=(b=(v=(S=_==null?void 0:_.bodyObject)==null?void 0:S.content)==null?void 0:v[I])==null?void 0:b.schema,u=`${Le(t)?"query":"mutation"} data`)}for(;a&&l<s.length;){let _=e.resolveObject(a);a=(E=Object.entries(_.properties??{}).find(([I])=>I===s[l]))==null?void 0:E[1],c=((P=_.required)==null?void 0:P.includes(s[l]))??!1,l++}if(a)return{name:n,type:L(a)?void 0:a.type,zodSchemaName:L(a)?e.getZodSchemaNameByRef(a.$ref):void 0,required:c,info:u}}o(ck,"getEndpointAclConditionPropertyType");function Xb({resolver:e,operation:t,operationName:r,isUniqueOperationName:n,tag:i}){var m,g;let s=e.resolveObject(t.requestBody);if(!s)return;let c=Object.keys(s.content??{}).find(Xe);if(!c)return;let u=(g=(m=s.content)==null?void 0:m[c])==null?void 0:g.schema;if(!u)return;let l=X({schema:u,resolver:e,meta:{isRequired:s.required??!0},tag:i}),f=e.resolveObject(u),p=Oi({schema:f,zodSchema:l,fallbackName:Ma(fn(r,n,i)),resolver:e,tag:i}),d=kt({schema:f,meta:l.meta,options:e.options});return{endpointParameter:{name:_a,type:"Body",description:s.description,zodSchema:p+d,bodyObject:s},requestFormat:c}}o(Xb,"getEndpointBody");function e_({resolver:e,param:t,operationName:r,isUniqueOperationName:n,tag:i}){let s=e.resolveObject(t);if(!tb.includes(s.in))return;let a={};if(s.content){let m=Object.keys(s.content??{}),g=m.find(Xe);if(!g)throw new Error(`Unsupported media type for param ${s.name}: ${m.join(", ")}`);let y=s.content[g];if(!y)throw new Error(`No content with media type for param ${s.name}: ${g}`);a=(y==null?void 0:y.schema)??y}else s.schema&&(a=s.schema);e.options.withDescription&&a&&(a.description=(s.description??"").trim());let c=mb(fn(r,n,i),s.name),u;if(Aa(s)){let m=Ho(c,e.options.enumSuffix,e.options.schemaSuffix),g=Vb(s["x-enumNames"]);e.setZodSchema(m,g,i),u=m}let l=X({schema:a,resolver:e,meta:{isRequired:s.in==="path"?!0:s.required??!1},tag:i}),f=e.resolveObject(a),p=kt({schema:f,meta:l.meta,options:e.options}),d=Oi({schema:f,zodSchema:l.assign(l.getCodeString(i)+p),fallbackName:c,resolver:e,tag:i});return{name:$e(s.in).with("path",()=>jf(s.name)).otherwise(()=>s.name),type:$e(s.in).with("header",()=>"Header").with("query",()=>"Query").with("path",()=>"Path").run(),zodSchema:d,parameterObject:s,parameterSortingEnumSchemaName:u}}o(e_,"getEndpointParameter");function r_(e){var r,n,i,s,a;let t=[];for(let c in e.openApiDoc.paths){if(ln(c,e.options))continue;let u=e.openApiDoc.paths[c],l=vn(u,cn),f=t_(u.parameters??[]);for(let p in l){let d=l[p];if(!d||$i(d,e.options))continue;let m=d.operationId&&d.operationId!==wt(d.operationId);d.operationId&&m&&e.validationErrors.push(Zb(d.operationId));let g=Object.entries({...f,...t_(d.parameters??[])}).map(([,_])=>_),y=zo({path:c,method:p,operation:d,operationsByTag:e.operationsByTag,options:e.options}),S=e.operationNames.filter(_=>_===y).length<=1,v=Ar(d,e.options),b={method:p,path:cb(c),operationName:y,description:d.description,summary:d.summary,tags:(r=d.tags)==null?void 0:r.map(Kt),requestFormat:an,parameters:[],response:"",errors:[],responseStatusCodes:[],mediaUpload:!!d["x-media-upload"],mediaDownload:!!d["x-media-download"]};if(d.requestBody){let _=Xb({resolver:e,operation:d,operationName:y,isUniqueOperationName:S,tag:v});_&&(b.parameters.push(_.endpointParameter),b.requestFormat=_.requestFormat)}for(let _ of g){let w=e_({resolver:e,param:_,operationName:y,isUniqueOperationName:S,tag:v});w&&b.parameters.push(w)}let E=uk(b);E.forEach(_=>{b.parameters.push(_)}),E.length>0&&e.validationErrors.push(zb(E,c));for(let _ in d.responses){b.responseStatusCodes.push(_);let w=e.resolveObject(d.responses[_]),Y=Object.keys(w.content??{}).find(gi),Q,j;if(Y?(b.responseFormat=Y,Q=(i=(n=w.content)==null?void 0:n[Y])==null?void 0:i.schema):(j=Io,_==="200"&&e.validationErrors.push(Wb({received:"200",expected:"204"},d,b))),Q){let A=X({schema:Q,resolver:e,meta:{isRequired:!0},tag:v}),ce=e.resolveObject(Q);j=Oi({schema:ce,zodSchema:A,fallbackName:A.ref?void 0:Da({statusCode:_,operationName:y,isUniqueOperationName:S,tag:v}),resolver:e,tag:v})+kt({schema:ce,meta:A.meta,options:e.options})}if(j){let A=Number(_);ko(A)&&!b.response?(b.response=j,b.responseObject=w,b.responseDescription=w.description):_!=="default"&&xa(A)&&b.errors.push({zodSchema:j,status:A,description:w.description})}}b.response||(b.response=Io);let P=Object.keys(d.responses).map(Number).filter(ko);P.length>1&&e.validationErrors.push(Yb(P.map(String),d,b)),b.acl=Jb({resolver:e,endpoint:b,operation:d}),(s=d.security)!=null&&s[0].Authorization&&!b.responseStatusCodes.includes("401")&&e.validationErrors.push(Qf("401",d,b)),(a=b.acl)!=null&&a[0]&&!b.responseStatusCodes.includes("403")&&e.validationErrors.push(Qf("403",d,b)),t.push(b)}}return t}o(r_,"getEndpointsFromOpenAPIDoc");function t_(e){return Object.fromEntries((e??[]).map(t=>[L(t)?t.$ref:t.name,t]))}o(t_,"getParameters");function uk(e){return[...e.path.matchAll(/:([a-zA-Z0-9_]+)/g)].map(r=>r[1]).filter(r=>e.parameters.findIndex(({name:n})=>n===r)===-1).map(r=>lk(r))}o(uk,"getMissingPathParameters");function lk(e){return{name:e,type:"Path",zodSchema:ya,parameterObject:{name:e,required:!0,in:"path",schema:{type:"string"}}}}o(lk,"getPathParameterFromName");function n_(e,t){let r=pk(e,t),n=fk(e,r);return{refsDependencyGraph:r,deepDependencyGraph:n}}o(n_,"getOpenAPISchemaDependencyGraph");function pk(e,t){let r={},n={};return e.forEach(i=>dk({schema:t(i),fromRef:i,getSchemaByRef:t,visitedRefs:r,refsDependencyGraph:n})),n}o(pk,"getRefsDependencyGraph");function fk(e,t){let r={},n={},i=o((s,a)=>{n[a].add(s),t[s]&&a!==s&&t[s].forEach(c=>{let u=`${a}__${c}`;r[u]||(r[u]=!0,i(c,a))})},"visit");return e.forEach(s=>{let a=t[s];a&&(n[s]||(n[s]=new Set),a.forEach(c=>i(c,s)))}),n}o(fk,"getDeepRefsDependencyGraph");function dk({schema:e,fromRef:t,getSchemaByRef:r,visitedRefs:n={},refsDependencyGraph:i={}}){let s=o(a=>{if(a.type!=="reference"||!a.data)return;let{schema:c,data:u}=a;if(i[u.fromRef]||(i[u.fromRef]=new Set),i[u.fromRef].add(c.$ref),n[c.$ref])return!0;n[u.fromRef]=!0,Te(r(c.$ref),{data:{fromRef:c.$ref},onSchema:s})},"onSchema");return Te(e,{data:{fromRef:t},onSchema:s}),{visitedRefs:n,refsDependencyGraph:i}}o(dk,"getSchemaRefsDependencyGraph");function Ga(e,t,r){let n=[];return Te(t,{onSchema:o(s=>{s.type==="reference"?n.push(s.schema):L(s.parentSchema)&&(s.type==="property"?e.validationErrors.push(Ko(`${r} has both reference and properties`)):s.type==="additionalProperties"?e.validationErrors.push(Ko(`${r} has both reference and additionalProperties`)):s.type==="array"?e.validationErrors.push(Ko(`${r} is both reference and array schema`)):s.type==="composite"&&e.validationErrors.push(Ko(`${r} has both reference and composite keyword`)))},"onSchema")}),n}o(Ga,"getSchemaRefObjs");function i_(e,t){return t.map(i=>un(i.$ref)).reduce((i,s)=>{let a=e.dependencyGraph.deepDependencyGraph[s];return[...i,s,...Array.from(a??[])]},[])}o(i_,"getDeepSchemaRefObjs");function o_(e){e.extractedEnumZodSchemaData.forEach(r=>{let n=r.meta.zodSchemaNameSegments.map(s=>s[s.length-1]).filter(Boolean),i=_f(n);if(!i)throw new Error(`No common last segment found for enum: ${r.code}`);r.zodSchemaName=Ho(i,e.options.enumSuffix,e.options.schemaSuffix)});let t=0;for(;t<5&&!Wf(e);)mk(e,t+2),t++;if(Wf(e)||e.extractedEnumZodSchemaData.filter(n=>!s_(e,n)).forEach(n=>{n.zodSchemaName=Ho(n.meta.zodSchemaNameSegments[0].map(i=>Yf(B(i))).join(""),e.options.enumSuffix,e.options.schemaSuffix)}),!Wf(e))throw new Error("Failed to resolve unique names for enum zod schemas")}o(o_,"resolveExtractedEnumZodSchemaNames");function Wf(e){return e.extractedEnumZodSchemaData.every(t=>s_(e,t))}o(Wf,"allExtractedEnumZodSchemaNamesAreUnique");function mk(e,t){e.extractedEnumZodSchemaData.forEach(r=>{let n=e.extractedEnumZodSchemaData.filter(({zodSchemaName:i})=>r.zodSchemaName===i);n.length!==1&&hk(n,t)})}o(mk,"additionalResolveExtractedEnumZodSchemaName");function hk(e,t=2){e.forEach(r=>{let n=r.meta.zodSchemaNameSegments.map(i=>i[i.length-t]).filter(Boolean);if(n.length===1){let i=[Yf(B(n[0])),r.zodSchemaName].filter(Boolean).join("");r.zodSchemaName=i}else{let i=_f(n),s=[i?Yf(B(i)):"",r.zodSchemaName].filter(Boolean).join("");r.zodSchemaName=s}})}o(hk,"suffixWithPreviousSegmentName");function s_(e,t){return e.extractedEnumZodSchemaData.filter(({zodSchemaName:r})=>t.zodSchemaName===r).length===1}o(s_,"isUnique");function Yf(e){return e.replace(/(Dto|DTO|Response|Request)/g,"")}o(Yf,"sanitizeName");function a_(e){e.extractedEnumZodSchemaData.forEach(t=>{let r=Ve(t.meta.tags);t.tag=r.length===1?r[0]:e.options.defaultTag})}o(a_,"resolveExtractedEnumZodSchemaTags");function Qo({schema:e,nameSegments:t=[],includeSelf:r,...n}){r&&c_({schema:e,nameSegments:t,...n}),Te(e,{data:{nameSegments:t},onSchema:o(s=>{var c;if(s.type==="reference")return!0;let a=[...((c=s.data)==null?void 0:c.nameSegments)??[]];s.type==="property"&&a.push(s.propertyName),c_({schema:s.schema,nameSegments:[...a],...n})},"onSchema")})}o(Qo,"updateExtractedEnumZodSchemaData");function c_({resolver:e,schema:t,schemaRef:r,schemaInfo:n,tags:i,nameSegments:s=[]}){if(!t||L(t)||!t.enum)return;let a=Pi(t),c=e.extractedEnumZodSchemaData.find(u=>u.code===a);c?(c.meta.zodSchemaNameSegments.push(s),c.meta.tags.push(...i),c.meta.schemaRefs.push(...r?[r]:[]),c.meta.schemas.push(...t?[t]:[])):e.extractedEnumZodSchemaData.push({code:a,meta:{zodSchemaNameSegments:[s],tags:[...i],schemaRefs:r?[r]:[],schemas:t?[t]:[]}}),e.validationErrors.push(Kb(r?`${hi(r)}.${s[s.length-1]}`:n??s.join(".")))}o(c_,"handleExtractedEnumZodSchemaDataUpdate");function u_(e){var n;let t={},r={};return Object.entries(((n=e.openApiDoc.components)==null?void 0:n.schemas)??{}).forEach(([i,s])=>{let a=e.getSchemaDataByName(i);if(e.options.excludeRedundantZodSchemas&&(!a||a.deepRefOperations.length===0&&a.tags.length===0))return;let c=pn(i,e.options.schemaSuffix);if(t[c])return;let u=e.getTagByZodSchemaName(c),l=e.resolveObject(s);l.enum?r[c]=Pi(l):t[c]=X({schema:s,resolver:e,tag:u}).getCodeString(u)}),{zodSchemas:t,enumZodSchemas:r}}o(u_,"getZodSchemasFromOpenAPIDoc");function l_(e){var r;let t=[];return Object.entries(((r=e.openApiDoc.components)==null?void 0:r.schemas)??{}).forEach(([n,i])=>{let s=pn(n,e.options.schemaSuffix),a=e.resolveObject(i);!t.find(c=>c.zodSchemaName===s)&&a.enum&&t.push({zodSchemaName:s,code:Pi(a)})}),t}o(l_,"getEnumZodSchemasFromOpenAPIDoc");var Jf=class Jf{constructor(t,r){this.openApiDoc=t;this.options=r;this.dependencyGraph=n_(this.schemaRefs,this.getSchemaByRef.bind(this)),this.enumZodSchemas=l_(this),this.operationsByTag=Gb(t,r),this.operationNames=Bb(t,this.operationsByTag,r),this.initialize()}schemaData=[];zodSchemaData=[];compositeZodSchemaData=[];dependencyGraph;enumZodSchemas=[];extractedEnumZodSchemaData=[];operationsByTag={};operationNames=[];validationErrors=[];get docSchemas(){var t;return((t=this.openApiDoc.components)==null?void 0:t.schemas)??{}}get schemaRefs(){return Object.keys(this.docSchemas).map(ib)}getSchemaByRef(t){return this.docSchemas[hi(t)]}getSchemaDataByName(t){return this.schemaData.find(r=>r.name===t)}getZodSchemaNameByRef(t){var n,i;let r=((n=this.getSchemaDataByRef(un(t)))==null?void 0:n.zodSchemaName)??((i=this.extractedEnumZodSchemaData.find(s=>s.zodSchemaName===t))==null?void 0:i.zodSchemaName);if(!r)throw new Error(`Zod schema not found for ref: ${t}`);return r}getRefByZodSchemaName(t){var r;return(r=this.schemaData.find(n=>n.zodSchemaName===t))==null?void 0:r.ref}getTagByZodSchemaName(t){var u,l;if(!this.options.splitByTags)return this.options.defaultTag;let r=this.extractedEnumZodSchemaData.find(f=>f.zodSchemaName===t);if(r)return Kt(r.tag??this.options.defaultTag);let n=this.getRefByZodSchemaName(t),i=n?((u=this.getSchemaDataByRef(n))==null?void 0:u.tags)??[]:[],s=((l=this.zodSchemaData.find(f=>f.zodSchemaName===t))==null?void 0:l.tags)??[],a=Ve(i,s),c=a.length===1?a[0]:this.options.defaultTag;return Kt(c??this.options.defaultTag)}getCodeByZodSchemaName(t){var r;return(r=this.zodSchemaData.find(n=>n.zodSchemaName===t))==null?void 0:r.code}getZodSchemaNamesByCompositeCode(t){var r;return(r=this.compositeZodSchemaData.find(n=>n.code===t))==null?void 0:r.zodSchemas.map(n=>n.zodSchemaName)}setZodSchema(t,r,n){let i=this.zodSchemaData.find(s=>s.zodSchemaName===t);i?(i.code=r,i.tags=(i.tags??[]).concat(n)):this.zodSchemaData.push({zodSchemaName:t,code:r,tags:[n]})}addZodSchemaForCompositeCode(t,r,n,i){let s={zodSchemaName:n,zodSchema:r,schema:i},a=this.compositeZodSchemaData.find(c=>c.code===t);a?a.zodSchemas.push(s):this.compositeZodSchemaData.push({code:t,zodSchemas:[s]})}getCompositeZodSchemaByZodSchemaName(t){var n;let r=this.compositeZodSchemaData.find(i=>i.zodSchemas.some(s=>s.zodSchemaName===t));return(n=r==null?void 0:r.zodSchemas.find(i=>i.zodSchemaName===t))==null?void 0:n.zodSchema}getSchemaByCompositeZodSchemaName(t){var r,n;return(n=(r=this.compositeZodSchemaData.find(i=>i.zodSchemas.some(s=>s.zodSchemaName===t)))==null?void 0:r.zodSchemas.find(i=>i.zodSchemaName===t))==null?void 0:n.schema}getEnumZodSchemaDataByCode(t){return this.enumZodSchemas.find(r=>r.code===t)}getExtractedEnumZodSchemaDataByCode(t){return this.extractedEnumZodSchemaData.find(r=>r.code===t)}getExtractedEnumZodSchemaNamesReferencedBySchemaRef(t){return this.extractedEnumZodSchemaData.reduce((r,{zodSchemaName:n,meta:i})=>(n&&i.schemaRefs.includes(t)&&r.push(n),r),[])}getZodSchemas(){return this.zodSchemaData.reduce((t,{zodSchemaName:r,code:n})=>({...t,[r]:n}),{})}getExtractedEnumZodSchemas(){return this.extractedEnumZodSchemaData.reduce((t,{zodSchemaName:r,code:n})=>r?{...t,[r]:n}:t,{})}resolveObject(t){return L(t)?this.getSchemaByRef(t.$ref):t}isSchemaCircular(t){var r;return(r=this.dependencyGraph.deepDependencyGraph[t])==null?void 0:r.has(t)}getCircularSchemaChain(t,r=t,n=[],i=[]){var s,a;return i.includes(r)?[]:(i.push(r),(s=this.dependencyGraph.refsDependencyGraph[r])!=null&&s.has(t)?[...n,r,t]:Array.from(((a=this.dependencyGraph.refsDependencyGraph[r])==null?void 0:a.values())??[]).map(c=>{let u=this.getCircularSchemaChain(t,c,n,i);return u.length>0?[r,...u]:u}).flat())}getBaseUrl(){var r,n;let t=(n=(r=this.openApiDoc.servers)==null?void 0:r[0])==null?void 0:n.url;return this.options.baseUrl===""&&t?t:this.options.baseUrl}getZodSchemaObj(t){let r=this.getRefByZodSchemaName(t);if(r)return this.getSchemaByRef(r);let n=this.getSchemaByCompositeZodSchemaName(t);if(n)return n;let i=this.getExtractedEnumZodSchemaDataByName(t);if(i)return i.meta.schemas.reduce((s,a)=>({...s,...this.resolveObject(a)}),{})}getSchemaDataByRef(t){return this.schemaData.find(r=>r.ref===t)}getExtractedEnumZodSchemaDataByName(t){return this.extractedEnumZodSchemaData.find(({zodSchemaName:r})=>r===t)}initialize(){var t,r,n,i,s;this.schemaRefs.forEach(a=>{let c=un(a),u=hi(c),l=pn(u,this.options.schemaSuffix);this.schemaData.push({ref:c,name:u,zodSchemaName:l,tags:[],deepRefOperations:[]})});for(let a in this.openApiDoc.paths){if(ln(a,this.options))continue;let c=this.openApiDoc.paths[a],u=vn(c,cn);for(let l in u){let f=u[l];if(!f||$i(f,this.options))continue;let p=Ar(f,this.options),d=zo({path:a,method:l,operation:f,operationsByTag:this.operationsByTag,options:this.options}),m=this.operationNames.filter(v=>v===d).length<=1,g=me(fn(d,m,p)),y=[];if((t=f.parameters)==null||t.map(v=>{let b=v,E=b.schema,P=`Operation ${f.operationId??a} parameter ${b.name}`;y.push(...Ga(this,E,P)),this.options.extractEnums&&Qo({resolver:this,schema:E,schemaInfo:P,tags:[p],nameSegments:[g,b.name],includeSelf:!0})}),f.requestBody){let v=this.resolveObject(f.requestBody),E=Object.keys(v.content??{}).find(Xe);if(E){let P=(n=(r=v.content)==null?void 0:r[E])==null?void 0:n.schema,_=`Operation ${f.operationId} request body`;y.push(...Ga(this,P,_)),this.options.extractEnums&&Qo({resolver:this,schema:P,schemaInfo:_,tags:[p],nameSegments:[Ma(g)]})}}for(let v in f.responses){let b=this.resolveObject(f.responses[v]),P=Object.keys(b.content??{}).find(gi);if(P){let _=(s=(i=b.content)==null?void 0:i[P])==null?void 0:s.schema,w=`Operation ${f.operationId} response body`;y.push(...Ga(this,_,w)),this.options.extractEnums&&Qo({resolver:this,schema:_,schemaInfo:w,tags:[p],nameSegments:[Da({statusCode:v,operationName:d,isUniqueOperationName:m,tag:p})]})}}i_(this,y).forEach(v=>{let b=this.getSchemaDataByRef(v);b&&(b.tags.push(p),b.deepRefOperations.push(f))})}}this.options.extractEnums&&(this.schemaRefs.forEach(a=>{var u;let c=un(a);Qo({resolver:this,schema:this.getSchemaByRef(c),schemaRef:c,tags:((u=this.getSchemaDataByRef(c))==null?void 0:u.tags)??[],nameSegments:[hi(c)]})}),a_(this),this.handleDuplicateEnumZodSchemas(),o_(this))}handleDuplicateEnumZodSchemas(){let t=this.enumZodSchemas.map(({code:n})=>n),r=this.enumZodSchemas.filter(({code:n})=>t.includes(n));this.schemaData.forEach(n=>{var a,c;let i=(a=r.find(({zodSchemaName:u})=>u===n.zodSchemaName))==null?void 0:a.code;if(!i)return;let s=this.extractedEnumZodSchemaData.find(({code:u})=>u===i);!s||((c=this.getEnumZodSchemaDataByCode(s.code))==null?void 0:c.zodSchemaName)!==n.zodSchemaName||(n.tags.push(...s.meta.tags??[]),s.meta.schemaRefs.forEach(u=>{this.dependencyGraph.refsDependencyGraph[u]||(this.dependencyGraph.refsDependencyGraph[u]=new Set),this.dependencyGraph.refsDependencyGraph[u].add(n.ref),this.dependencyGraph.deepDependencyGraph[u]||(this.dependencyGraph.deepDependencyGraph[u]=new Set),this.dependencyGraph.deepDependencyGraph[u].add(n.ref)}))}),this.extractedEnumZodSchemaData.splice(0,this.extractedEnumZodSchemaData.length,...this.extractedEnumZodSchemaData.filter(({code:n})=>!t.includes(n)))}};o(Jf,"SchemaResolver");var Ua=Jf;function p_(e){let t=[],r={};function n(i,s){Array.isArray(s)||(s=[]),s.push(i),r[i]=!0,e[i]&&e[i].forEach(a=>{s.includes(a)||r[a]||n(a,s.slice(0))}),t.includes(i)||t.push(i)}return o(n,"visit"),Object.keys(e).forEach(i=>n(i,[])),t}o(p_,"topologicalSort");function f_(e,t){let r=Object.entries(e),n=r.filter(([i])=>t.includes(i)).sort(([i],[s])=>t.indexOf(i)-t.indexOf(s)).concat(r.filter(([i])=>!t.includes(i)));return Object.fromEntries(n)}o(f_,"sortObjKeysFromArray");function d_(e,t){let r=p_(e.dependencyGraph.deepDependencyGraph).map(i=>e.getZodSchemaNameByRef(i));return f_(t,r)}o(d_,"sortZodSchemasByTopology");function Za(e,t){let r=new Ua(e,t),n=r_(r),i=u_(r),s={...i.zodSchemas,...r.getZodSchemas(),...i.enumZodSchemas};return s=d_(r,s),s={...r.getExtractedEnumZodSchemas(),...s},{resolver:r,data:gk({resolver:r,endpoints:n,zodSchemas:s,options:t})}}o(Za,"getDataFromOpenAPIDoc");function gk({resolver:e,endpoints:t,zodSchemas:r,options:n}){let i=new Map;return n.splitByTags?(t.forEach(s=>{let a=De(s,n);m_(a,i).endpoints.push(s)}),Object.entries(r).forEach(([s,a])=>{let c=e.getTagByZodSchemaName(s);c&&(m_(c,i).zodSchemas[s]=a)}),i):(i.set(n.defaultTag,{endpoints:t,zodSchemas:r}),i)}o(gk,"splitDataByTags");function m_(e,t){return t.has(e)||t.set(e,{endpoints:[],zodSchemas:{}}),t.get(e)}o(m_,"getTagElement");async function h_(e,t){let{resolver:r,data:n}=await Za(e,t),i=[],s=[];return n.forEach(({endpoints:c,zodSchemas:u},l)=>{Object.keys(u).forEach(f=>{let p=r.getRefByZodSchemaName(f),d=p?r.getSchemaByRef(p):r.getSchemaByCompositeZodSchemaName(f),m=_i({zodSchemaName:f,schema:d,resolver:r}),g;d&&(g=gn({schema:d,parentTypes:[m],resolver:r})),i.push({...m,metaType:"primitive",...g})}),c.forEach(f=>{let p="queries",d=Kt(l);s.push({name:mn(f),importPath:bi({type:p,tag:d,includeTagDir:!0,options:t}),namespace:t.tsNamespaces?V({type:p,tag:d,options:t}):void 0,isQuery:Le(f),isMutation:Nt(f),params:yk({resolver:r,endpoint:f}),response:Sk({resolver:r,endpoint:f})})})}),{openApiDoc:e,models:i,queries:s}}o(h_,"getMetadataFromOpenAPIDoc");function yk({resolver:e,endpoint:t}){return t.parameters.map(r=>{var a,c,u,l;let n;if((a=r.parameterObject)!=null&&a.schema)n=e.resolveObject(r.parameterObject.schema);else if(r.bodyObject){let p=Object.keys(r.bodyObject.content??{}).find(Xe);p&&(n=e.resolveObject((u=(c=r.bodyObject.content)==null?void 0:c[p])==null?void 0:u.schema))}let i=_i({zodSchemaName:r.zodSchema,schema:n,resolver:e}),s;return n&&(s=gn({schema:n,parentTypes:[i],resolver:e})),{name:wt(r.name),isRequired:((l=r.parameterObject)==null?void 0:l.required)??!0,...i,...s,paramType:r.type}}).sort((r,n)=>{if(r.isRequired===n.isRequired){let i=["Path","Body","Query","Header"];return i.indexOf(r.paramType)-i.indexOf(n.paramType)}return r.isRequired?-1:1}).map(({paramType:r,...n})=>n)}o(yk,"getQueryMetadataParams");function Sk({resolver:e,endpoint:t}){var a,c,u,l;let r,n=Object.keys(((a=t.responseObject)==null?void 0:a.content)??{}).find(gi);n&&(r=e.resolveObject((l=(u=(c=t.responseObject)==null?void 0:c.content)==null?void 0:u[n])==null?void 0:l.schema));let i=_i({zodSchemaName:t.response,schema:r,resolver:e}),s;return r&&(s=gn({schema:r,parentTypes:[i],resolver:e})),{...i,metaType:"primitive",...s}}o(Sk,"getQueryMetadataResponse");var Zd=Re(Xt());var Gd=Re(require("fs")),sP=Re(require("path"));function aP(e){return Gd.default.readFileSync(sP.default.join(__dirname,`../${e}`),"utf-8")}o(aP,"readFileSync");function Ud(e){let t=`src/generators/templates/${e}.hbs`;return aP(t)}o(Ud,"readHbsTemplateSync");function cP(e){let t=`src/assets/${e}`;return aP(t)}o(cP,"readAssetSync");function er({output:e,fileName:t}){return`${e}/${t}`}o(er,"getOutputFileName");var tr=Re(Xt());function uP(e){lq(),pq(e.options),fq(),dq(),mq(),hq(),gq(),yq()}o(uP,"registerAclHbsHelpers");function lq(){tr.default.registerHelper("abilityFunctionName",Do)}o(lq,"registerAbilityFunctionNameHelper");function pq(e){tr.default.registerHelper("importedAbilityFunctionName",t=>qa(t,e))}o(pq,"registerImportedAbilityFunctionNameHelper");function fq(){tr.default.registerHelper("ablityAction",Ff)}o(fq,"registerAbilityActionHelper");function dq(){tr.default.registerHelper("ablitySubject",Hf)}o(dq,"registerAbilitySubjectHelper");function mq(){tr.default.registerHelper("hasAbilityConditions",Lo)}o(mq,"registerHasAbilityConditionsHelper");function hq(){tr.default.registerHelper("abilityConditionsTypes",Si)}o(hq,"registerAbilityConditionsTypesHelper");function gq(){tr.default.registerHelper("abilityDescription",pb)}o(gq,"registerAbilityDescriptionHelper");function yq(){tr.default.registerHelper("abilitySubjectTypes",Vf)}o(yq,"registerAbilitySubjectTypesHelper");var xn=Re(Xt());function lP(){Sq(),vq(),bq(),_q(),Eq(),Pq()}o(lP,"registerCommonHbsHelpers");function Sq(){xn.default.registerHelper("isEqual",(e,t)=>e===t)}o(Sq,"registerIsEqualHelper");function vq(){xn.default.registerHelper("commaSeparated",e=>e.join(", "))}o(vq,"registerCommaSeparatedListHelper");function bq(){xn.default.registerHelper("union",e=>e.join(" | "))}o(bq,"registerUnionHelper");function _q(){xn.default.registerHelper("addAsteriskAfterNewLine",e=>e.replace(/\n/g,`
77
- *`))}o(_q,"registerAddAsteriskAfterNewLineHelper");function Eq(){xn.default.registerHelper("jsonStringify",e=>JSON.stringify(e,null,2))}o(Eq,"registerJsonStringifyHelper");function Pq(){xn.default.registerHelper("capitalize",B)}o(Pq,"registerCapitalizeHelper");var qr=Re(Xt());function pP(e){Oq(),$q(e.options),wq(e),xq(),Aq(),Iq(e),Tq()}o(pP,"registerEndpointsHbsHelpers");function Oq(){qr.default.registerHelper("endpointName",Go)}o(Oq,"registerEndpointNameHelper");function $q(e){qr.default.registerHelper("importedEndpointName",t=>Nb(t,e))}o($q,"registerImportedEndpointNameHelper");function xq(){qr.default.registerHelper("endpointPath",qb)}o(xq,"registerEndpointPathHelper");function Aq(){qr.default.registerHelper("endpointBody",Rr)}o(Aq,"registerEndpointBodyHelper");function wq(e){qr.default.registerHelper("endpointParams",(t,r)=>Nr(e,t,r.hash))}o(wq,"registerEndpointParamsHelper");function Iq(e){qr.default.registerHelper("endpointArgs",(t,r)=>Nr(e,t,r.hash).map(n=>n.name).join(", "))}o(Iq,"registerEndpointArgsHelper");function Tq(){qr.default.registerHelper("endpointParamDescription",e=>{var s,a,c,u,l;let t=[`${e.paramType} parameter`],r=((s=e.parameterObject)==null?void 0:s.description)||((a=e.bodyObject)==null?void 0:a.description);r&&t.push(r);let n,i;if((c=e.parameterObject)!=null&&c.schema&&he(e.parameterObject.schema)&&(n=(u=e.parameterObject)==null?void 0:u.schema),(l=e.bodyObject)!=null&&l.content){let p=Object.keys(e.bodyObject.content??{}).find(Xe);p&&(i=e.bodyObject.content[p],i.schema&&he(i.schema)&&(n=i.schema))}if(n){let f=Vo(n);t.push(...f)}return i!=null&&i.example&&t.push(`Example: \`${i.example}\``),t.join(". ")})}o(Tq,"registerEndpointParamDescriptionHelper");var fP=Re(Xt());function dP(){Cq()}o(dP,"registerImportsHbsHelpers");function Cq(){fP.default.registerHelper("importNames",(e,t)=>[...t?[t]:[],...e?[`{ ${e.join(", ")} }`]:[]].join(", "))}o(Cq,"registerBindingsHelper");var pe=Re(Xt());var gt={query:"useQuery",infiniteQuery:"useInfiniteQuery",mutation:"useMutation"},mP={bindings:[gt.query,gt.infiniteQuery,gt.mutation],from:"@tanstack/react-query"},us="moduleName";function hP(e){Rq(),Nq(),kq(),jq(e),qq(e),Mq(),Dq(e),Lq(e),Fq(e),Hq(e),Vq(e),Bq(),Gq(),Uq(),Zq(),zq(),Kq()}o(hP,"registerPartialsHbsHelpers");function Rq(){pe.default.registerHelper("genModelJsDocs",(e,t,r)=>Se("model-js-docs")({name:e,zodSchema:t,tag:r}))}o(Rq,"registerGenerateModelJsDocsHelper");function Nq(){pe.default.registerHelper("genImport",e=>Se("import")({import:e}))}o(Nq,"registerImportHelper");function kq(){pe.default.registerHelper("genEndpointParams",(e,t)=>Se("endpoint-params")({endpoint:e,options:t}))}o(kq,"registerGenerateEndpointParamsHelper");function jq(e){pe.default.registerHelper("hasUndefinedEndpointBody",t=>kb(t)&&!Rr(t)&&jb(t,e))}o(jq,"registerHasUndefinedEndpointBodyHelper");function qq(e){pe.default.registerHelper("genEndpointConfig",t=>{let r=Gf(t),n=e.options.axiosRequestConfig;return Object.keys(r).length===0?n?_r:"":Se("endpoint-config")({endpointConfig:r,hasAxiosRequestConfig:n,hasBlobResponse:t.response===ga,hasFileDownload:t.mediaDownload,axiosRequestConfigName:_r,generateParse:e.options.parseRequestParams})})}o(qq,"registerGenerateEndpointConfigHelper");function Mq(){pe.default.registerHelper("genEndpointParamParse",(e,t)=>{var r;return Se("endpoint-param-parse")({param:e,paramName:t,isQuery:e.type==="Query",zodExtendedNamespace:et.namespace,parse:et.exports.parse,sortExp:et.exports.sortExp,addOptional:!((r=e.parameterObject??e.bodyObject)!=null&&r.required)&&(e.parameterSortingEnumSchemaName||ne(e.zodSchema))})})}o(Mq,"registerGenerateEndpointParamParseHelper");function Dq(e){pe.default.registerHelper("genQueryKeys",t=>t.length===0?"":Se("query-keys")({queryEndpoints:t,queriesModuleName:us,generateInfiniteQueries:e.options.infiniteQueries}))}o(Dq,"registerGenerateQueryKeysHelper");function Lq(e){pe.default.registerHelper("genQuery",t=>{if(!Le(t))return;let r=e.options.axiosRequestConfig,n=e.options.checkAcl&&t.acl;return Se("query-use-query")({endpoint:t,queryHook:gt.query,hasQueryFn:Nr(e,t).length>0||r||n,hasQueryFnBody:n,hasAxiosRequestConfig:r,axiosRequestConfigName:_r,axiosRequestConfigType:At,hasAclCheck:n,aclCheckHook:wr})})}o(Lq,"registerGenerateQueryHelper");function Fq(e){pe.default.registerHelper("genMutation",(t,r)=>{if(!Nt(t))return;let n=Mb(t,r),i=Db(e,t,n),s=e.options.checkAcl&&t.acl;return Se("query-use-mutation")({endpoint:t,queryHook:gt.mutation,queriesModuleName:us,hasAxiosRequestConfig:e.options.axiosRequestConfig,hasMutationFnBody:t.mediaUpload||s,axiosRequestConfigName:_r,axiosRequestConfigType:At,hasMutationEffects:e.options.mutationEffects,mutationEffectsType:yi.optionsType,updateQueryEndpoints:n,destructuredVariables:i,hasAclCheck:s,aclCheckHook:wr})})}o(Fq,"registerGenerateMutationHelper");function Hq(e){pe.default.registerHelper("genInfiniteQuery",t=>{if(!e.options.infiniteQueries||!Ei(t,e.options))return;let r=e.options.checkAcl&&t.acl;return Se("query-use-infinite-query")({endpoint:t,infiniteQueryHook:gt.infiniteQuery,hasQueryFnBody:r,pageParamName:e.options.infiniteQueryResponseParamNames.page,totalItemsName:e.options.infiniteQueryResponseParamNames.totalItems,limitParamName:e.options.infiniteQueryResponseParamNames.limit,hasAxiosRequestConfig:e.options.axiosRequestConfig,axiosRequestConfigName:_r,axiosRequestConfigType:At,hasAclCheck:r,aclCheckHook:wr})})}o(Hq,"registerGenerateInfiniteQueryHelper");function Vq(e){pe.default.registerHelper("genQueryJsDocs",(t,r)=>Se("query-js-docs")({endpoint:t,query:r.hash.query,mutation:r.hash.mutation,infiniteQuery:r.hash.infiniteQuery,hasMutationEffects:e.options.mutationEffects,mutationEffectsType:yi.optionsType}))}o(Vq,"registerGenerateQueryJsDocsHelper");function Bq(){pe.default.registerHelper("genCaslAbilityType",e=>Se("casl-ability-type")({endpoint:e,abilityTuple:ge.abilityTuple}))}o(Bq,"registerGenerateCaslAbilityTypeHelper");function Gq(){pe.default.registerHelper("genCaslAbilityFunction",e=>Se("casl-ability-function")({endpoint:e}))}o(Gq,"registerGenerateCaslAbilityFunctionHelper");function Uq(){pe.default.registerHelper("genCaslAbilityQuery",e=>Se("casl-ability-query")({endpoint:e}))}o(Uq,"registerGenerateCaslAbilityQueryHelper");function Zq(){pe.default.registerHelper("genAclCheckCall",e=>{var i;let t=(i=Si(e))==null?void 0:i.map(s=>s.name),r=e.parameters.map(s=>s.name),n=t==null?void 0:t.every(s=>r.includes(s));return Se("acl-check-call")({endpoint:e,generateAclCheckParams:Lo(e)&&n})})}o(Zq,"registerGenerateAclCheckCallHelper");function zq(){pe.default.registerHelper("genInputsConfig",e=>Se("inputs-config")({inputsConfig:e}))}o(zq,"registerGenerateInputsConfigHelper");function Kq(){pe.default.registerHelper("genColumnsConfig",e=>Se("columns-config")({columnsConfig:e}))}o(Kq,"registerGenerateColumnsConfigHelper");var ji=Re(Xt());function gP(e){Qq(),Yq(),Jq(),Wq(),Xq(e)}o(gP,"registerQueryHbsHelpers");function Qq(){ji.default.registerHelper("queryName",(e,t)=>mn(e,t.hash.mutation))}o(Qq,"registerQueryNameHelper");function Wq(){ji.default.registerHelper("infiniteQueryName",Uo)}o(Wq,"registerInfiniteQueryNameHelper");function Yq(){ji.default.registerHelper("isQuery",Le)}o(Yq,"registerIsQueryHelper");function Jq(){ji.default.registerHelper("isMutation",Nt)}o(Jq,"registerIsMutationHelper");function Xq(e){ji.default.registerHelper("isInfiniteQuery",t=>Ei(t,e.options))}o(Xq,"registerIsInfiniteQueryHelper");var An=Re(Xt());function yP(e){eM(e.options),tM(e),rM(e),nM(),iM(),oM(e)}o(yP,"registerZodHbsHelpers");function eM(e){An.default.registerHelper("zodInferedType",t=>Bo(t,e))}o(eM,"registerInferedTypeHelper");function tM(e){An.default.registerHelper("importedZodSchemaName",t=>dn(e,t))}o(tM,"registerImportedZodSchemaNameHelper");function rM(e){An.default.registerHelper("importedZodSchemaInferedType",t=>Tr(e,t))}o(rM,"registerImportedZodSchemaInferedTypeHelper");function nM(){An.default.registerHelper("zodSchemaType",e=>hb(e))}o(nM,"registerZodSchemaTypeHelper");function iM(){An.default.registerHelper("zodSchemaDescription",e=>gb(e))}o(iM,"registerZodSchemaDescriptionHelper");function oM(e){An.default.registerHelper("zodSchemaPropertyDescriptions",(t,r)=>Sb(e,t,r))}o(oM,"registerZodSchemaPropertyDescriptionsHelper");function ae(e,t){let r=Ud(t);return lP(),dP(),yP(e),pP(e),gP(e),uP(e),hP(e),Zd.default.compile(r)}o(ae,"getHbsTemplateDelegate");function Se(e){let t=Ud(`partials/${e}`);return Zd.default.compile(t)}o(Se,"getHbsPartialTemplateDelegate");function SP({resolver:e,data:t,tag:r}){let n=Bf({resolver:e,data:t,tag:r});if(!n)return;let{hasAdditionalAbilityImports:i,modelsImports:s,endpoints:a}=n,c={bindings:[ge.abilityTuple,...i?[ge.forcedSubject,ge.subject]:[]],from:qf.from};return ae(e,"acl")({caslAbilityTupleImport:c,modelsImports:s,includeNamespace:e.options.tsNamespaces,namespace:V({type:"acl",tag:r,options:e.options}),endpoints:a})}o(SP,"generateAcl");function vP({resolver:e,data:t}){let{appAbilitiesType:r,hasAdditionalAbilityImports:n,modelsImports:i}=fb({resolver:e,data:t}),s={bindings:[ge.pureAbility,ge.abilityTuple,...r?[]:[ge.subjectType],...n?[ge.forcedSubject]:[]],from:qf.from};return ae(e,"app-acl")({caslAbilityTupleImport:s,modelsImports:i,appAbilitiesType:r,appAbilities:jo,abilityTuple:ge.abilityTuple,subjectType:ge.subjectType})}o(vP,"generateAppAcl");var zd="config";function bP({data:e,tag:t,resolver:r}){var S;let n=(S=e.get(t))==null?void 0:S.endpoints;if(!n||n.length===0)return{configs:[]};let i=n.map(v=>({...v,pathSegments:Kv(v.path)})),s=i.filter(v=>Vv(v,r.options)),a=sM(s),c=!1,u=[],l=[],f=[],p=Object.entries(a).map(([v,b])=>{let E=aM(r,b);if(!E)return;l.push(b),f.push(b),E.zodSchema&&(ne(E.zodSchema)?u.push(E.zodSchema):c=!0),E.sortableEnumSchemaName&&u.push(E.sortableEnumSchemaName);let P=b.parameters.find(A=>A.name===r.options.filterParamName);P&&u.push(P.zodSchema);let _={name:v,title:B(Sa(v.replace(/config$/i,""))),readAll:{acl:qi(b,r.options),paginated:yn(b,r.options),infinite:r.options.infiniteQueries?Lb(b,r.options):void 0,filters:Ic(r,P),columns:E.columns}},w=i.find(A=>Bv(A,b));if(w){l.push(w);let A=w.response;ne(A)?(u.push(A),A=dn(r,A)):c=!0,_.read={acl:qi(w,r.options),schema:A,query:yn(w,r.options)}}let I=i.find(A=>Gv(A,b));if(I){l.push(I);let A=Rr(I);A&&u.push(A.zodSchema),_.create={acl:qi(I,r.options),mutation:yn(I,r.options),inputDefs:Ic(r,A)}}let Y=i.find(A=>Uv(A,b));if(Y){l.push(Y);let A=Rr(Y);A&&u.push(A.zodSchema),_.update={acl:qi(Y,r.options),mutation:yn(Y,r.options),inputDefs:Ic(r,A)}}let Q=i.find(A=>Zv(A,b));Q&&(l.push(Q),_.delete={acl:qi(Q,r.options),mutation:yn(Q,r.options)});let j=i.find(A=>zv(A,b));if(j){l.push(j);let A=Rr(j);A&&u.push(A.zodSchema),_.bulkDelete={acl:qi(j,r.options),mutation:yn(j,r.options),inputDefs:Ic(r,A)}}return _}),d=Rt({resolver:r,tag:t,zodSchemas:u}),m=bb({tag:t,endpoints:l,options:r.options}),g=r.options.infiniteQueries?_b({tag:t,endpoints:f,options:r.options}):[],y=La({tag:t,endpoints:l.filter(v=>v.acl),options:r.options});return{configs:p.filter(Boolean),hasZodImport:c,modelsImports:d,queriesImports:Fo(r.options,m,g),aclImports:y}}o(bP,"getBuilderConfigs");function sM(e){let t=e.map(n=>({...n,namePathSegments:n.pathSegments.filter(i=>!di(i))})).sort((n,i)=>n.namePathSegments.length-i.namePathSegments.length),r={};for(let n of t){let i=n.namePathSegments,s=i.length>0?`${Co(i.pop())}${B(zd)}`:zd;for(;r[s];){if(i.length===0)throw new Error(`Can't uniquely resolve builder config name: ${s}`);s=`${Co(i.pop())}${B(s)}`}r[s]=n}return r}o(sM,"resolveBuilderConfigNames");function qi(e,t){return t.acl&&e.acl?qa(e,t):void 0}o(qi,"getAclConfig");function Ic(e,t){var s,a,c;if(!t)return;let r;if(t.type==="Body"?r=(a=(s=t.bodyObject)==null?void 0:s.content[an])==null?void 0:a.schema:r=(c=t.parameterObject)==null?void 0:c.schema,!r)return;let n=e.resolveObject(r),i=Object.keys((n==null?void 0:n.properties)??{}).reduce((u,l)=>({...u,[l]:!0}),{});return{schema:dn(e,t.zodSchema),options:{inputs:i}}}o(Ic,"getInputsConfig");function aM(e,t){var m,g,y;let r=t.responseObject;if(!r)return;let n=(g=(m=r.content)==null?void 0:m[an])==null?void 0:g.schema;if(!n)return;let i=_P(e,n),s=Object.keys(i).filter(S=>e.resolveObject(i[S]).type==="array");s.sort((S,v)=>{let b=e.options.dataResponseParamNames.indexOf(S),E=e.options.dataResponseParamNames.indexOf(v);return b!==-1&&E!==-1?b-E:b!==-1?-1:E!==-1?1:S.localeCompare(v)});let a=s[0];if(!a)return;let c=e.resolveObject(i[a]);if(!c||c.type!=="array")return;let u=c.items,l=e.resolveObject(u);if(!l)return;let f=L(u)?e.getZodSchemaNameByRef(u.$ref):fi,p=Object.keys((l==null?void 0:l.properties)??{}).reduce((S,v)=>({...S,[v]:!0}),{}),d=(y=t.parameters.find(S=>S.parameterObject&&Aa(S.parameterObject)))==null?void 0:y.parameterSortingEnumSchemaName;return{columns:{schema:dn(e,f),options:{columns:p,sortable:d?dn(e,d):void 0}},zodSchema:f,sortableEnumSchemaName:d}}o(aM,"getColumnsConfig");function _P(e,t){let r=e.resolveObject(t);return r.properties?r.properties:"allOf"in r&&r.allOf?r.allOf.reduce((n,i)=>({...n,..._P(e,i)}),{}):{}}o(_P,"getSchemaProperties");function EP(e){let{configs:t,hasZodImport:r,modelsImports:n,queriesImports:i,aclImports:s}=bP(e);if(t.length===0)return;let{resolver:a,tag:c}=e,u=t.some(m=>{var g,y;return m.readAll.filters||((g=m.create)==null?void 0:g.inputDefs)||((y=m.update)==null?void 0:y.inputDefs)}),l={bindings:[Mo.dynamicInputs],from:a.options.dynamicInputsImportPath},f=t.some(m=>m.readAll.columns),p={bindings:[Mo.dynamicColumns],from:a.options.dynamicColumnsImportPath};return ae(a,"configs")({hasZodImport:r,zodImport:Sr,hasDynamicInputsImport:u,dynamicInputsImport:l,hasDynamicColumnsImport:f,dynamicColumnsImport:p,modelsImports:n,queriesImports:i,aclImports:s,includeNamespace:a.options.tsNamespaces,namespace:V({type:"configs",tag:c,options:a.options}),configs:t,dynamicInputs:Mo.dynamicInputs,dynamicColumns:Mo.dynamicColumns})}o(EP,"generateConfigs");function PP({resolver:e,data:t,tag:r}){var b;let n=(b=t.get(r))==null?void 0:b.endpoints;if(!n||n.length===0)return;let i={bindings:[qo],from:Ob(e.options)},s=e.options.axiosRequestConfig,a=s,c={bindings:s?[At]:[],from:Ea.from},u=e.options.parseRequestParams,l=n.reduce((E,P)=>[...E,...P.parameters],[]),f=l.filter(E=>!["Path","Header"].includes(E.type)).map(E=>E.parameterSortingEnumSchemaName??E.zodSchema),p=n.map(E=>E.response),d=Ve([...p,...u?f:[]]),m=d.some(E=>!ne(E)),g=e.options.parseRequestParams&&f.length>0,y={bindings:[et.namespace],from:wb(e.options)},S=Rt({resolver:e,tag:r,zodSchemas:d.filter(ne),zodSchemasAsTypes:Ve(l.map(E=>E.zodSchema).filter(ne))});return ae(e,"endpoints")({appRestClientImport:i,hasAxiosImport:a,axiosImport:c,hasZodImport:m,zodImport:Sr,hasZodExtendedImport:g,zodExtendedImport:y,modelsImports:S,includeNamespace:e.options.tsNamespaces,namespace:V({type:"endpoints",tag:r,options:e.options}),restClientName:qo,hasAxiosRequestConfig:s,axiosRequestConfigName:_r,axiosRequestConfigType:At,endpoints:n,generateParse:u})}o(PP,"generateEndpoints");function OP({resolver:e,data:t,tag:r}){var u;let n=(u=t.get(r))==null?void 0:u.zodSchemas;if(!n||Object.keys(n).length===0)return;let i=Object.keys(n).reduce((l,f)=>[...l,...Hb(e,f)],[]).filter(l=>!n[l]),s=Rt({resolver:e,tag:r,zodSchemas:i}),a=Object.entries(n).reduce((l,[f,p])=>{let d=e.getZodSchemaObj(f),m={code:p,isEnum:db(p),schemaObj:d};return{...l,[f]:m}},{});return ae(e,"models")({zodImport:Sr,modelsImports:s,includeNamespace:e.options.tsNamespaces,namespace:V({type:"models",tag:r,options:e.options}),tag:r,zodSchemasData:a})}o(OP,"generateModels");function $P({resolver:e,data:t,tag:r}){var Q;let n=(Q=t.get(r))==null?void 0:Q.endpoints;if(!n||n.length===0)return;let i=e.options.axiosRequestConfig,s=n.some(({mediaUpload:j})=>j),a=i||s,c={defaultImport:s?$f:void 0,bindings:i?[At]:[],from:Ea.from},u=n.filter(Le),l=u.filter(j=>Ei(j,e.options)),f=n.filter(Nt),p={bindings:[...u.length>0?[gt.query]:[],...e.options.infiniteQueries&&l.length>0?[gt.infiniteQuery]:[],...f.length>0?[gt.mutation]:[]],from:mP.from},d=e.options.mutationEffects,m={bindings:[Lf],from:$b(e.options)},g=d&&f.length>0,y={bindings:[...f.length>0?[yi.optionsType,yi.hookName]:[]],from:xb(e.options)},S=n.filter(j=>j.acl),v=e.options.checkAcl&&S.length>0,b={bindings:[wr],from:Ab(e.options)},E={bindings:[...u.length>0?[Ca.query]:[],...e.options.infiniteQueries&&l.length>0?[Ca.infiniteQuery]:[],...f.length>0?[Ca.mutation]:[]],from:e.options.queryTypesImportPath},P=n.reduce((j,A)=>[...j,...A.parameters],[]),_=Rt({resolver:e,tag:r,zodSchemasAsTypes:Ve(P.map(j=>j.zodSchema).filter(ne))}),w=vb({tag:r,endpoints:n,options:e.options}),I=La({tag:r,endpoints:S,options:e.options});return ae(e,"queries")({hasAxiosImport:a,axiosImport:c,queryImport:p,hasMutationEffects:d,queryModulesImport:m,hasMutationEffectsImport:g,mutationEffectsImport:y,hasAclCheck:v,aclCheckImport:b,queryTypesImport:E,modelsImports:_,endpointsImports:w,aclImports:I,includeNamespace:e.options.tsNamespaces,tag:r,namespace:V({type:"queries",tag:r,options:e.options}),queriesModuleName:us,queryModuleEnum:Lf,endpoints:n,queryEndpoints:u})}o($P,"generateQueries");function xP(e){return ae(e,"acl-check")({abilityContextImport:lb,appAbilitiesImport:{bindings:[jo],from:Ib(e.options)},errorHandlingImport:Ra,abilityContext:Df,appAbilities:jo,errorHandler:Ir.ErrorHandler,sharedErrorHandler:Ir.SharedErrorHandler,aclCheckHook:wr,hasGenericAppAbilities:e.options.abilityContextGenericAppAbilities})}o(xP,"generateAclCheck");function AP(e){return ae(e,"app-rest-client")({appRestClientName:qo,baseUrl:e.getBaseUrl(),packageImportPath:on})}o(AP,"generateAppRestClient");function wP({resolver:e,data:t}){let r=[];return t.forEach((i,s)=>{var c;let a=(c=t.get(s))==null?void 0:c.endpoints;!a||a.length===0||r.push({tag:s,namespace:V({type:"queries",tag:s,options:e.options})})}),ae(e,"query-modules")({modules:r})}o(wP,"generateQueryModules");function IP(e){return ae(e,"zod-extended")({zodImport:Sr,zodExtendedNamespace:et.namespace,parse:et.exports.parse,sortExp:et.exports.sortExp,errorHandler:Ir.ErrorHandler,sharedErrorHandler:Ir.SharedErrorHandler,errorHandlingImport:Ra})}o(IP,"generateZodExtended");function TP(e,t){return t.options.acl?[{fileName:er({output:t.options.output,fileName:hn(wa)}),content:vP({resolver:t,data:e})},...t.options.checkAcl?[{fileName:er({output:t.options.output,fileName:hn(Ia)}),content:xP(t)}]:[]]:[]}o(TP,"getAclFiles");function CP(e,t){return t.options.mutationEffects?[...cM([ka],t),{fileName:er({output:t.options.output,fileName:hn(Na)}),content:wP({resolver:t,data:e})}]:[]}o(CP,"getMutationEffectsFiles");function RP(e,t){return t.options.parseRequestParams?[{fileName:er({output:t.options.output,fileName:hn(ja)}),content:IP(t)}]:[]}o(RP,"getZodExtendedFiles");function NP(e){return e.options.restClientImportPath!==sn.restClientImportPath?[]:[{fileName:er({output:e.options.output,fileName:hn(Ta)}),content:AP(e)}]}o(NP,"getAppRestClientFiles");function cM(e,t){return e.reduce((r,n)=>[...r,uM(n,t)],[])}o(cM,"getAssetFiles");function uM(e,t){let r=hn(e);return{fileName:er({output:t.options.output,fileName:r}),content:cP(r)}}o(uM,"getAssetFile");function kP(e,t){let{resolver:r,data:n}=Za(e,t),i=[],s=[],a=["models","endpoints","queries",...r.options.acl?["acl"]:[],...r.options.builderConfigs?["configs"]:[]],c={models:OP,endpoints:PP,queries:$P,acl:SP,configs:EP};return n.forEach((u,l)=>{a.forEach(f=>{let p=c[f]({resolver:r,data:n,tag:l});if(p){let d=er({output:t.output,fileName:Pb({tag:l,type:f,options:t})});i.push({fileName:d,content:p}),f==="acl"&&s.push(l)}})}),i.push(...TP(n,r),...CP(n,r),...RP(n,r),...NP(r)),i}o(kP,"generateCodeFromOpenAPIDoc");async function lM({input:e,options:t}){let r={...sn,...t},n=await Kd.default.bundle(e);return await h_(n,r)}o(lM,"getGenerateMetadata");async function pM({input:e,options:t}){let r={...sn,...t},n=await Kd.default.bundle(e);return kP(n,r)}o(pM,"getGenerateFilesData");0&&(module.exports={getGenerateFilesData,getGenerateMetadata});
77
+ *`))}o(_q,"registerAddAsteriskAfterNewLineHelper");function Eq(){xn.default.registerHelper("jsonStringify",e=>JSON.stringify(e,null,2))}o(Eq,"registerJsonStringifyHelper");function Pq(){xn.default.registerHelper("capitalize",B)}o(Pq,"registerCapitalizeHelper");var qr=Re(Xt());function pP(e){Oq(),$q(e.options),wq(e),xq(),Aq(),Iq(e),Tq()}o(pP,"registerEndpointsHbsHelpers");function Oq(){qr.default.registerHelper("endpointName",Go)}o(Oq,"registerEndpointNameHelper");function $q(e){qr.default.registerHelper("importedEndpointName",t=>Nb(t,e))}o($q,"registerImportedEndpointNameHelper");function xq(){qr.default.registerHelper("endpointPath",qb)}o(xq,"registerEndpointPathHelper");function Aq(){qr.default.registerHelper("endpointBody",Rr)}o(Aq,"registerEndpointBodyHelper");function wq(e){qr.default.registerHelper("endpointParams",(t,r)=>Nr(e,t,r.hash))}o(wq,"registerEndpointParamsHelper");function Iq(e){qr.default.registerHelper("endpointArgs",(t,r)=>Nr(e,t,r.hash).map(n=>n.name).join(", "))}o(Iq,"registerEndpointArgsHelper");function Tq(){qr.default.registerHelper("endpointParamDescription",e=>{var s,a,c,u,l;let t=[`${e.paramType} parameter`],r=((s=e.parameterObject)==null?void 0:s.description)||((a=e.bodyObject)==null?void 0:a.description);r&&t.push(r);let n,i;if((c=e.parameterObject)!=null&&c.schema&&he(e.parameterObject.schema)&&(n=(u=e.parameterObject)==null?void 0:u.schema),(l=e.bodyObject)!=null&&l.content){let p=Object.keys(e.bodyObject.content??{}).find(Xe);p&&(i=e.bodyObject.content[p],i.schema&&he(i.schema)&&(n=i.schema))}if(n){let f=Vo(n);t.push(...f)}return i!=null&&i.example&&t.push(`Example: \`${i.example}\``),t.join(". ")})}o(Tq,"registerEndpointParamDescriptionHelper");var fP=Re(Xt());function dP(){Cq()}o(dP,"registerImportsHbsHelpers");function Cq(){fP.default.registerHelper("importNames",(e,t)=>[...t?[t]:[],...e?[`{ ${e.join(", ")} }`]:[]].join(", "))}o(Cq,"registerBindingsHelper");var pe=Re(Xt());var gt={query:"useQuery",infiniteQuery:"useInfiniteQuery",mutation:"useMutation"},mP={bindings:[gt.query,gt.infiniteQuery,gt.mutation],from:"@tanstack/react-query"},us="moduleName";function hP(e){Rq(),Nq(),kq(),jq(e),qq(e),Mq(),Dq(e),Lq(e),Fq(e),Hq(e),Vq(e),Bq(),Gq(),Uq(),Zq(),zq(),Kq()}o(hP,"registerPartialsHbsHelpers");function Rq(){pe.default.registerHelper("genModelJsDocs",(e,t,r)=>Se("model-js-docs")({name:e,zodSchema:t,tag:r}))}o(Rq,"registerGenerateModelJsDocsHelper");function Nq(){pe.default.registerHelper("genImport",e=>Se("import")({import:e}))}o(Nq,"registerImportHelper");function kq(){pe.default.registerHelper("genEndpointParams",(e,t)=>Se("endpoint-params")({endpoint:e,options:t}))}o(kq,"registerGenerateEndpointParamsHelper");function jq(e){pe.default.registerHelper("hasUndefinedEndpointBody",t=>kb(t)&&!Rr(t)&&jb(t,e))}o(jq,"registerHasUndefinedEndpointBodyHelper");function qq(e){pe.default.registerHelper("genEndpointConfig",t=>{let r=Gf(t),n=e.options.axiosRequestConfig;return Object.keys(r).length===0?n?_r:"":Se("endpoint-config")({endpointConfig:r,hasAxiosRequestConfig:n,hasBlobResponse:t.response===ga,hasFileDownload:t.mediaDownload,axiosRequestConfigName:_r,generateParse:e.options.parseRequestParams})})}o(qq,"registerGenerateEndpointConfigHelper");function Mq(){pe.default.registerHelper("genEndpointParamParse",(e,t)=>{var r;return Se("endpoint-param-parse")({param:e,paramName:t,isQuery:e.type==="Query",zodExtendedNamespace:et.namespace,parse:et.exports.parse,sortExp:et.exports.sortExp,addOptional:!((r=e.parameterObject??e.bodyObject)!=null&&r.required)&&(e.parameterSortingEnumSchemaName||ne(e.zodSchema))})})}o(Mq,"registerGenerateEndpointParamParseHelper");function Dq(e){pe.default.registerHelper("genQueryKeys",t=>t.length===0?"":Se("query-keys")({queryEndpoints:t,queriesModuleName:us,generateInfiniteQueries:e.options.infiniteQueries}))}o(Dq,"registerGenerateQueryKeysHelper");function Lq(e){pe.default.registerHelper("genQuery",t=>{if(!Le(t))return;let r=e.options.axiosRequestConfig,n=e.options.checkAcl&&t.acl;return Se("query-use-query")({endpoint:t,queryHook:gt.query,hasQueryFn:Nr(e,t).length>0||r||n,hasQueryFnBody:n,hasAxiosRequestConfig:r,axiosRequestConfigName:_r,axiosRequestConfigType:At,hasAclCheck:n,aclCheckHook:wr})})}o(Lq,"registerGenerateQueryHelper");function Fq(e){pe.default.registerHelper("genMutation",(t,r)=>{if(!Nt(t))return;let n=Mb(t,r),i=Db(e,t,n),s=e.options.checkAcl&&t.acl;return Se("query-use-mutation")({endpoint:t,queryHook:gt.mutation,queriesModuleName:us,hasAxiosRequestConfig:e.options.axiosRequestConfig,hasMutationFnBody:t.mediaUpload||s,axiosRequestConfigName:_r,axiosRequestConfigType:At,hasMutationEffects:e.options.mutationEffects,mutationEffectsType:yi.optionsType,updateQueryEndpoints:n,destructuredVariables:i,hasAclCheck:s,aclCheckHook:wr})})}o(Fq,"registerGenerateMutationHelper");function Hq(e){pe.default.registerHelper("genInfiniteQuery",t=>{if(!e.options.infiniteQueries||!Ei(t,e.options))return;let r=e.options.checkAcl&&t.acl;return Se("query-use-infinite-query")({endpoint:t,infiniteQueryHook:gt.infiniteQuery,hasQueryFnBody:r,pageParamName:e.options.infiniteQueryResponseParamNames.page,totalItemsName:e.options.infiniteQueryResponseParamNames.totalItems,limitParamName:e.options.infiniteQueryResponseParamNames.limit,hasAxiosRequestConfig:e.options.axiosRequestConfig,axiosRequestConfigName:_r,axiosRequestConfigType:At,hasAclCheck:r,aclCheckHook:wr})})}o(Hq,"registerGenerateInfiniteQueryHelper");function Vq(e){pe.default.registerHelper("genQueryJsDocs",(t,r)=>Se("query-js-docs")({endpoint:t,query:r.hash.query,mutation:r.hash.mutation,infiniteQuery:r.hash.infiniteQuery,hasMutationEffects:e.options.mutationEffects,mutationEffectsType:yi.optionsType}))}o(Vq,"registerGenerateQueryJsDocsHelper");function Bq(){pe.default.registerHelper("genCaslAbilityType",e=>Se("casl-ability-type")({endpoint:e,abilityTuple:ge.abilityTuple}))}o(Bq,"registerGenerateCaslAbilityTypeHelper");function Gq(){pe.default.registerHelper("genCaslAbilityFunction",e=>Se("casl-ability-function")({endpoint:e}))}o(Gq,"registerGenerateCaslAbilityFunctionHelper");function Uq(){pe.default.registerHelper("genCaslAbilityQuery",e=>Se("casl-ability-query")({endpoint:e}))}o(Uq,"registerGenerateCaslAbilityQueryHelper");function Zq(){pe.default.registerHelper("genAclCheckCall",e=>{var i;let t=(i=Si(e))==null?void 0:i.map(s=>s.name),r=e.parameters.map(s=>s.name),n=t==null?void 0:t.every(s=>r.includes(s));return Se("acl-check-call")({endpoint:e,generateAclCheckParams:Lo(e)&&n})})}o(Zq,"registerGenerateAclCheckCallHelper");function zq(){pe.default.registerHelper("genInputsConfig",e=>Se("inputs-config")({inputsConfig:e}))}o(zq,"registerGenerateInputsConfigHelper");function Kq(){pe.default.registerHelper("genColumnsConfig",e=>Se("columns-config")({columnsConfig:e}))}o(Kq,"registerGenerateColumnsConfigHelper");var ji=Re(Xt());function gP(e){Qq(),Yq(),Jq(),Wq(),Xq(e)}o(gP,"registerQueryHbsHelpers");function Qq(){ji.default.registerHelper("queryName",(e,t)=>mn(e,t.hash.mutation))}o(Qq,"registerQueryNameHelper");function Wq(){ji.default.registerHelper("infiniteQueryName",Uo)}o(Wq,"registerInfiniteQueryNameHelper");function Yq(){ji.default.registerHelper("isQuery",Le)}o(Yq,"registerIsQueryHelper");function Jq(){ji.default.registerHelper("isMutation",Nt)}o(Jq,"registerIsMutationHelper");function Xq(e){ji.default.registerHelper("isInfiniteQuery",t=>Ei(t,e.options))}o(Xq,"registerIsInfiniteQueryHelper");var An=Re(Xt());function yP(e){eM(e.options),tM(e),rM(e),nM(),iM(),oM(e)}o(yP,"registerZodHbsHelpers");function eM(e){An.default.registerHelper("zodInferedType",t=>Bo(t,e))}o(eM,"registerInferedTypeHelper");function tM(e){An.default.registerHelper("importedZodSchemaName",t=>dn(e,t))}o(tM,"registerImportedZodSchemaNameHelper");function rM(e){An.default.registerHelper("importedZodSchemaInferedType",t=>Tr(e,t))}o(rM,"registerImportedZodSchemaInferedTypeHelper");function nM(){An.default.registerHelper("zodSchemaType",e=>hb(e))}o(nM,"registerZodSchemaTypeHelper");function iM(){An.default.registerHelper("zodSchemaDescription",e=>gb(e))}o(iM,"registerZodSchemaDescriptionHelper");function oM(e){An.default.registerHelper("zodSchemaPropertyDescriptions",(t,r)=>Sb(e,t,r))}o(oM,"registerZodSchemaPropertyDescriptionsHelper");function ae(e,t){let r=Ud(t);return lP(),dP(),yP(e),pP(e),gP(e),uP(e),hP(e),Zd.default.compile(r)}o(ae,"getHbsTemplateDelegate");function Se(e){let t=Ud(`partials/${e}`);return Zd.default.compile(t)}o(Se,"getHbsPartialTemplateDelegate");function SP({resolver:e,data:t,tag:r}){let n=Bf({resolver:e,data:t,tag:r});if(!n)return;let{hasAdditionalAbilityImports:i,modelsImports:s,endpoints:a}=n,c={bindings:[ge.abilityTuple,...i?[ge.forcedSubject,ge.subject]:[]],from:qf.from};return ae(e,"acl")({caslAbilityTupleImport:c,modelsImports:s,includeNamespace:e.options.tsNamespaces,namespace:V({type:"acl",tag:r,options:e.options}),endpoints:a})}o(SP,"generateAcl");function vP({resolver:e,data:t}){let{appAbilitiesType:r,hasAdditionalAbilityImports:n,modelsImports:i}=fb({resolver:e,data:t}),s={bindings:[ge.pureAbility,ge.abilityTuple,...r?[]:[ge.subjectType],...n?[ge.forcedSubject]:[]],from:qf.from};return ae(e,"app-acl")({caslAbilityTupleImport:s,modelsImports:i,appAbilitiesType:r,appAbilities:jo,abilityTuple:ge.abilityTuple,subjectType:ge.subjectType})}o(vP,"generateAppAcl");var zd="config";function bP({data:e,tag:t,resolver:r}){var S;let n=(S=e.get(t))==null?void 0:S.endpoints;if(!n||n.length===0)return{configs:[]};let i=n.map(v=>({...v,pathSegments:Kv(v.path)})),s=i.filter(v=>Vv(v,r.options)),a=sM(s),c=!1,u=[],l=[],f=[],p=Object.entries(a).map(([v,b])=>{let E=aM(r,b);if(!E)return;l.push(b),f.push(b),E.zodSchema&&(ne(E.zodSchema)?u.push(E.zodSchema):c=!0),E.sortableEnumSchemaName&&u.push(E.sortableEnumSchemaName);let P=b.parameters.find(A=>A.name===r.options.filterParamName);P&&u.push(P.zodSchema);let _={name:v,title:B(Sa(v.replace(/config$/i,""))),readAll:{acl:qi(b,r.options),paginated:yn(b,r.options),infinite:r.options.infiniteQueries?Lb(b,r.options):void 0,filters:Ic(r,P),columns:E.columns}},w=i.find(A=>Bv(A,b));if(w){l.push(w);let A=w.response;ne(A)?(u.push(A),A=dn(r,A)):c=!0,_.read={acl:qi(w,r.options),schema:A,query:yn(w,r.options)}}let I=i.find(A=>Gv(A,b));if(I){l.push(I);let A=Rr(I);A&&u.push(A.zodSchema),_.create={acl:qi(I,r.options),mutation:yn(I,r.options),inputDefs:Ic(r,A)}}let Y=i.find(A=>Uv(A,b));if(Y){l.push(Y);let A=Rr(Y);A&&u.push(A.zodSchema),_.update={acl:qi(Y,r.options),mutation:yn(Y,r.options),inputDefs:Ic(r,A)}}let Q=i.find(A=>Zv(A,b));Q&&(l.push(Q),_.delete={acl:qi(Q,r.options),mutation:yn(Q,r.options)});let j=i.find(A=>zv(A,b));if(j){l.push(j);let A=Rr(j);A&&u.push(A.zodSchema),_.bulkDelete={acl:qi(j,r.options),mutation:yn(j,r.options),inputDefs:Ic(r,A)}}return _}),d=Rt({resolver:r,tag:t,zodSchemas:u}),m=bb({tag:t,endpoints:l,options:r.options}),g=r.options.infiniteQueries?_b({tag:t,endpoints:f,options:r.options}):[],y=La({tag:t,endpoints:l.filter(v=>v.acl),options:r.options});return{configs:p.filter(Boolean),hasZodImport:c,modelsImports:d,queriesImports:Fo(r.options,m,g),aclImports:y}}o(bP,"getBuilderConfigs");function sM(e){let t=e.map(n=>({...n,namePathSegments:n.pathSegments.filter(i=>!di(i))})).sort((n,i)=>n.namePathSegments.length-i.namePathSegments.length),r={};for(let n of t){let i=n.namePathSegments,s=i.length>0?`${Co(i.pop())}${B(zd)}`:zd;for(;r[s];){if(i.length===0)throw new Error(`Can't uniquely resolve builder config name: ${s}`);s=`${Co(i.pop())}${B(s)}`}r[s]=n}return r}o(sM,"resolveBuilderConfigNames");function qi(e,t){return t.acl&&e.acl?qa(e,t):void 0}o(qi,"getAclConfig");function Ic(e,t){var s,a,c;if(!t)return;let r;if(t.type==="Body"?r=(a=(s=t.bodyObject)==null?void 0:s.content[an])==null?void 0:a.schema:r=(c=t.parameterObject)==null?void 0:c.schema,!r)return;let n=e.resolveObject(r),i=Object.keys((n==null?void 0:n.properties)??{}).reduce((u,l)=>({...u,[l]:!0}),{});return{schema:dn(e,t.zodSchema),options:{inputs:i}}}o(Ic,"getInputsConfig");function aM(e,t){var m,g,y;let r=t.responseObject;if(!r)return;let n=(g=(m=r.content)==null?void 0:m[an])==null?void 0:g.schema;if(!n)return;let i=_P(e,n),s=Object.keys(i).filter(S=>e.resolveObject(i[S]).type==="array");s.sort((S,v)=>{let b=e.options.dataResponseParamNames.indexOf(S),E=e.options.dataResponseParamNames.indexOf(v);return b!==-1&&E!==-1?b-E:b!==-1?-1:E!==-1?1:S.localeCompare(v)});let a=s[0];if(!a)return;let c=e.resolveObject(i[a]);if(!c||c.type!=="array")return;let u=c.items,l=e.resolveObject(u);if(!l)return;let f=L(u)?e.getZodSchemaNameByRef(u.$ref):fi,p=Object.keys((l==null?void 0:l.properties)??{}).reduce((S,v)=>({...S,[v]:!0}),{}),d=(y=t.parameters.find(S=>S.parameterObject&&Aa(S.parameterObject)))==null?void 0:y.parameterSortingEnumSchemaName;return{columns:{schema:dn(e,f),options:{columns:p,sortable:d?dn(e,d):void 0}},zodSchema:f,sortableEnumSchemaName:d}}o(aM,"getColumnsConfig");function _P(e,t){let r=e.resolveObject(t);return r.properties?r.properties:"allOf"in r&&r.allOf?r.allOf.reduce((n,i)=>({...n,..._P(e,i)}),{}):{}}o(_P,"getSchemaProperties");function EP(e){let{configs:t,hasZodImport:r,modelsImports:n,queriesImports:i,aclImports:s}=bP(e);if(t.length===0)return;let{resolver:a,tag:c}=e,u=t.some(m=>{var g,y;return m.readAll.filters||((g=m.create)==null?void 0:g.inputDefs)||((y=m.update)==null?void 0:y.inputDefs)}),l={bindings:[Mo.dynamicInputs],from:a.options.dynamicInputsImportPath},f=t.some(m=>m.readAll.columns),p={bindings:[Mo.dynamicColumns],from:a.options.dynamicColumnsImportPath};return ae(a,"configs")({hasZodImport:r,zodImport:Sr,hasDynamicInputsImport:u,dynamicInputsImport:l,hasDynamicColumnsImport:f,dynamicColumnsImport:p,modelsImports:n,queriesImports:i,aclImports:s,includeNamespace:a.options.tsNamespaces,namespace:V({type:"configs",tag:c,options:a.options}),configs:t,dynamicInputs:Mo.dynamicInputs,dynamicColumns:Mo.dynamicColumns})}o(EP,"generateConfigs");function PP({resolver:e,data:t,tag:r}){var b;let n=(b=t.get(r))==null?void 0:b.endpoints;if(!n||n.length===0)return;let i={bindings:[qo],from:Ob(e.options)},s=e.options.axiosRequestConfig,a=s,c={bindings:s?[At]:[],from:Ea.from},u=e.options.parseRequestParams,l=n.reduce((E,P)=>[...E,...P.parameters],[]),f=l.filter(E=>!["Path","Header"].includes(E.type)).map(E=>E.parameterSortingEnumSchemaName??E.zodSchema),p=n.map(E=>E.response),d=Ve([...p,...u?f:[]]),m=d.some(E=>!ne(E)),g=e.options.parseRequestParams&&f.length>0,y={bindings:[et.namespace],from:wb(e.options)},S=Rt({resolver:e,tag:r,zodSchemas:d.filter(ne),zodSchemasAsTypes:Ve(l.map(E=>E.zodSchema).filter(ne))});return ae(e,"endpoints")({appRestClientImport:i,hasAxiosImport:a,axiosImport:c,hasZodImport:m,zodImport:Sr,hasZodExtendedImport:g,zodExtendedImport:y,modelsImports:S,includeNamespace:e.options.tsNamespaces,namespace:V({type:"endpoints",tag:r,options:e.options}),restClientName:qo,hasAxiosRequestConfig:s,axiosRequestConfigName:_r,axiosRequestConfigType:At,endpoints:n,generateParse:u})}o(PP,"generateEndpoints");function OP({resolver:e,data:t,tag:r}){var u;let n=(u=t.get(r))==null?void 0:u.zodSchemas;if(!n||Object.keys(n).length===0)return;let i=Object.keys(n).reduce((l,f)=>[...l,...Hb(e,f)],[]).filter(l=>!n[l]),s=Rt({resolver:e,tag:r,zodSchemas:i}),a=Object.entries(n).reduce((l,[f,p])=>{let d=e.getZodSchemaObj(f),m={code:p,isEnum:db(p),schemaObj:d};return{...l,[f]:m}},{});return ae(e,"models")({zodImport:Sr,modelsImports:s,includeNamespace:e.options.tsNamespaces,namespace:V({type:"models",tag:r,options:e.options}),tag:r,zodSchemasData:a})}o(OP,"generateModels");function $P({resolver:e,data:t,tag:r}){var Q;let n=(Q=t.get(r))==null?void 0:Q.endpoints;if(!n||n.length===0)return;let i=e.options.axiosRequestConfig,s=n.some(({mediaUpload:j})=>j),a=i||s,c={defaultImport:s?$f:void 0,bindings:i?[At]:[],from:Ea.from},u=n.filter(Le),l=u.filter(j=>Ei(j,e.options)),f=n.filter(Nt),p={bindings:[...u.length>0?[gt.query]:[],...e.options.infiniteQueries&&l.length>0?[gt.infiniteQuery]:[],...f.length>0?[gt.mutation]:[]],from:mP.from},d=e.options.mutationEffects,m={bindings:[Lf],from:$b(e.options)},g=d&&f.length>0,y={bindings:[...f.length>0?[yi.optionsType,yi.hookName]:[]],from:xb(e.options)},S=n.filter(j=>j.acl),v=e.options.checkAcl&&S.length>0,b={bindings:[wr],from:Ab(e.options)},E={bindings:[...u.length>0?[Ca.query]:[],...e.options.infiniteQueries&&l.length>0?[Ca.infiniteQuery]:[],...f.length>0?[Ca.mutation]:[]],from:e.options.queryTypesImportPath},P=n.reduce((j,A)=>[...j,...A.parameters],[]),_=Rt({resolver:e,tag:r,zodSchemasAsTypes:Ve(P.map(j=>j.zodSchema).filter(ne))}),w=vb({tag:r,endpoints:n,options:e.options}),I=La({tag:r,endpoints:S,options:e.options});return ae(e,"queries")({hasAxiosImport:a,axiosImport:c,queryImport:p,hasMutationEffects:d,queryModulesImport:m,hasMutationEffectsImport:g,mutationEffectsImport:y,hasAclCheck:v,aclCheckImport:b,queryTypesImport:E,modelsImports:_,endpointsImports:w,aclImports:I,includeNamespace:e.options.tsNamespaces,tag:r,namespace:V({type:"queries",tag:r,options:e.options}),queriesModuleName:us,queryModuleEnum:Lf,endpoints:n,queryEndpoints:u})}o($P,"generateQueries");function xP(e){return ae(e,"acl-check")({abilityContextImport:lb,appAbilitiesImport:{bindings:[jo],from:Ib(e.options)},errorHandlingImport:Ra,abilityContext:Df,appAbilities:jo,errorHandler:Ir.ErrorHandler,sharedErrorHandler:Ir.SharedErrorHandler,aclCheckHook:wr,hasGenericAppAbilities:e.options.abilityContextGenericAppAbilities})}o(xP,"generateAclCheck");function AP(e){return ae(e,"app-rest-client")({appRestClientName:qo,baseUrl:e.getBaseUrl(),restClientImportPath:on})}o(AP,"generateAppRestClient");function wP({resolver:e,data:t}){let r=[];return t.forEach((i,s)=>{var c;let a=(c=t.get(s))==null?void 0:c.endpoints;!a||a.length===0||r.push({tag:s,namespace:V({type:"queries",tag:s,options:e.options})})}),ae(e,"query-modules")({modules:r})}o(wP,"generateQueryModules");function IP(e){return ae(e,"zod-extended")({zodImport:Sr,zodExtendedNamespace:et.namespace,parse:et.exports.parse,sortExp:et.exports.sortExp,errorHandler:Ir.ErrorHandler,sharedErrorHandler:Ir.SharedErrorHandler,errorHandlingImport:Ra})}o(IP,"generateZodExtended");function TP(e,t){return t.options.acl?[{fileName:er({output:t.options.output,fileName:hn(wa)}),content:vP({resolver:t,data:e})},...t.options.checkAcl?[{fileName:er({output:t.options.output,fileName:hn(Ia)}),content:xP(t)}]:[]]:[]}o(TP,"getAclFiles");function CP(e,t){return t.options.mutationEffects?[...cM([ka],t),{fileName:er({output:t.options.output,fileName:hn(Na)}),content:wP({resolver:t,data:e})}]:[]}o(CP,"getMutationEffectsFiles");function RP(e,t){return t.options.parseRequestParams?[{fileName:er({output:t.options.output,fileName:hn(ja)}),content:IP(t)}]:[]}o(RP,"getZodExtendedFiles");function NP(e){return e.options.restClientImportPath!==sn.restClientImportPath?[]:[{fileName:er({output:e.options.output,fileName:hn(Ta)}),content:AP(e)}]}o(NP,"getAppRestClientFiles");function cM(e,t){return e.reduce((r,n)=>[...r,uM(n,t)],[])}o(cM,"getAssetFiles");function uM(e,t){let r=hn(e);return{fileName:er({output:t.options.output,fileName:r}),content:cP(r)}}o(uM,"getAssetFile");function kP(e,t){let{resolver:r,data:n}=Za(e,t),i=[],s=[],a=["models","endpoints","queries",...r.options.acl?["acl"]:[],...r.options.builderConfigs?["configs"]:[]],c={models:OP,endpoints:PP,queries:$P,acl:SP,configs:EP};return n.forEach((u,l)=>{a.forEach(f=>{let p=c[f]({resolver:r,data:n,tag:l});if(p){let d=er({output:t.output,fileName:Pb({tag:l,type:f,options:t})});i.push({fileName:d,content:p}),f==="acl"&&s.push(l)}})}),i.push(...TP(n,r),...CP(n,r),...RP(n,r),...NP(r)),i}o(kP,"generateCodeFromOpenAPIDoc");async function lM({input:e,options:t}){let r={...sn,...t},n=await Kd.default.bundle(e);return await h_(n,r)}o(lM,"getGenerateMetadata");async function pM({input:e,options:t}){let r={...sn,...t},n=await Kd.default.bundle(e);return kP(n,r)}o(pM,"getGenerateFilesData");0&&(module.exports={getGenerateFilesData,getGenerateMetadata});
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export type { RequestInfo, RequestConfig, Response, RestClient as IRestClient }
6
6
  export { RestInterceptor } from "./lib/rest/rest-interceptor";
7
7
  export { RestUtils } from "./lib/rest/rest.utils";
8
8
  export { ApplicationException, ErrorHandler, SharedErrorHandler } from "./lib/rest/error-handling";
9
- export type { GeneralErrorCodes } from "./lib/rest/error-handling";
9
+ export type { GeneralErrorCodes, ErrorHandlerOptions, ErrorEntry } from "./lib/rest/error-handling";
10
10
  export type { AppQueryOptions, AppMutationOptions, AppInfiniteQueryOptions } from "./lib/react-query.types";
11
11
  export { OpenApiRouter } from "./lib/config/router.context";
12
12
  export { OpenApiQueryConfig } from "./lib/config/queryConfig.context";
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- var M=Object.defineProperty;var W=(a,e,t)=>e in a?M(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var n=(a,e)=>M(a,"name",{value:e,configurable:!0});var u=(a,e,t)=>W(a,typeof e!="symbol"?e+"":e,t);import H from"axios";import{z as L}from"zod";import g from"axios";import{z as _}from"zod";import G from"axios";import{z as Z}from"zod";var m;(r=>(r.extractServerResponseCode=n(s=>{if(s instanceof Z.ZodError)return"validation-exception";if(!G.isAxiosError(s)||!s.response)return null;let i=s.response.data;return typeof i?.code=="string"?i.code:null},"extractServerResponseCode"),r.doesServerErrorMessageContain=n((s,i)=>{let p=(0,r.extractServerErrorMessage)(s);return p==null?!1:p.toLowerCase().includes(i.toLowerCase())},"doesServerErrorMessageContain"),r.extractServerErrorMessage=n(s=>{if(s instanceof Z.ZodError)return s.message;if(!G.isAxiosError(s)||!s.response)return null;let i=s.response.data;return typeof i?.message=="string"?i.message:null},"extractServerErrorMessage"),r.extractContentDispositionFilename=n(s=>{let i=s["content-disposition"];return i?/filename=["']?([^"';]+)/i.exec(i)?.[1]:void 0},"extractContentDispositionFilename")))(m||(m={}));var I=class I extends Error{constructor(t,o,r){super(t);u(this,"code");u(this,"serverMessage",null);this.code=o,this.serverMessage=r}};n(I,"ApplicationException");var c=I,T=class T{constructor(e){u(this,"entries",[]);let t={code:"DATA_VALIDATION_ERROR",condition:n(p=>p instanceof _.ZodError,"condition"),getMessage:n(()=>"An error occurred while validating the data","getMessage")},o={code:"INTERNAL_ERROR",condition:n(p=>g.isAxiosError(p)?p.response?.status!=null&&p.response.status>=500&&p.response.status<600:!1,"condition"),getMessage:n(()=>"An internal error occurred. This is most likely a bug on our end. Please try again later.","getMessage")},r={code:"NETWORK_ERROR",condition:n(p=>g.isAxiosError(p)?p.code==="ERR_NETWORK":!1,"condition"),getMessage:n(()=>"A network error occurred. Are you connected to the internet?","getMessage")},s={code:"CANCELED_ERROR",condition:n(p=>!!(g.isCancel(p)||g.isAxiosError(p)&&p.code==="ECONNABORTED"),"condition"),getMessage:n(()=>"The request was canceled.","getMessage")},i={code:"UNKNOWN_ERROR",condition:n(()=>!0,"condition"),getMessage:n(()=>"An unknown error occurred. Please try again later.","getMessage")};this.entries=[...e,t,o,r,s,i]}rethrowError(e){let t=this.entries.find(r=>r.condition(e??{})),o=m.extractServerErrorMessage(e);throw new c(t.getMessage(e),t.code,o)}getError(e){return e instanceof c?e:null}getErrorCode(e){return e instanceof c?e.code:null}static getErrorMessage(e,t=!0){return typeof e=="string"?e:e instanceof Error||e instanceof c?e.message:t?"An unknown error occurred. Please try again later.":null}};n(T,"ErrorHandler");var E=T,h=new E([]);var w=class w{constructor({config:e,interceptors:t}={}){u(this,"client");this.client=H.create(e),this.attachInterceptors(t)}attachInterceptors(e,...t){e?.forEach(o=>this.attachInterceptor(o,...t))}attachInterceptor(e,...t){e.addInterceptor(this.client,...t)}ejectInterceptor(e){e.removeInterceptor(this.client)}async get(e,t,o){return this.makeRequest(e,{...o,method:"get",url:t})}async post(e,t,o,r){return this.makeRequest(e,{...r,method:"post",url:t,data:o})}async patch(e,t,o,r){return this.makeRequest(e,{...r,method:"patch",url:t,data:o})}async put(e,t,o,r){return this.makeRequest(e,{...r,method:"put",url:t,data:o})}async delete(e,t,o,r){return this.makeRequest(e,{...r,method:"delete",url:t,data:o})}async makeRequest(e,t){let o=new Error().stack;try{let{rawResponse:r,...s}=t,i=await this.client(s),p=e.resSchema.parse(i.data);return r?{...i,data:p}:p}catch(r){throw r instanceof L.ZodError&&(r.name="BE Response schema mismatch - ZodError",r.stack=[r.stack,...o?.split(`
1
+ var G=Object.defineProperty;var S=(a,e,r)=>e in a?G(a,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[e]=r;var n=(a,e)=>G(a,"name",{value:e,configurable:!0});var l=(a,e,r)=>S(a,typeof e!="symbol"?e+"":e,r);import _ from"axios";import{z as L}from"zod";import y from"axios";import{z as W}from"zod";import M from"axios";import{z as Z}from"zod";var m;(t=>(t.extractServerResponseCode=n(s=>{if(s instanceof Z.ZodError)return"validation-exception";if(!M.isAxiosError(s)||!s.response)return null;let i=s.response.data;return typeof i?.code=="string"?i.code:null},"extractServerResponseCode"),t.doesServerErrorMessageContain=n((s,i)=>{let u=(0,t.extractServerErrorMessage)(s);return u==null?!1:u.toLowerCase().includes(i.toLowerCase())},"doesServerErrorMessageContain"),t.extractServerErrorMessage=n(s=>{if(s instanceof Z.ZodError)return s.message;if(!M.isAxiosError(s)||!s.response)return null;let i=s.response.data;return typeof i?.message=="string"?i.message:null},"extractServerErrorMessage"),t.extractContentDispositionFilename=n(s=>{let i=s["content-disposition"];return i?/filename=["']?([^"';]+)/i.exec(i)?.[1]:void 0},"extractContentDispositionFilename")))(m||(m={}));var I=class I extends Error{constructor(r,o,t){super(r);l(this,"code");l(this,"serverMessage",null);this.code=o,this.serverMessage=t}};n(I,"ApplicationException");var d=I,T=class T{constructor({entries:e,onRethrowError:r}){l(this,"entries",[]);l(this,"onRethrowError");this.onRethrowError=r;let o={code:"DATA_VALIDATION_ERROR",condition:n(p=>p instanceof W.ZodError,"condition"),getMessage:n(()=>"An error occurred while validating the data","getMessage")},t={code:"INTERNAL_ERROR",condition:n(p=>y.isAxiosError(p)?p.response?.status!=null&&p.response.status>=500&&p.response.status<600:!1,"condition"),getMessage:n(()=>"An internal error occurred. This is most likely a bug on our end. Please try again later.","getMessage")},s={code:"NETWORK_ERROR",condition:n(p=>y.isAxiosError(p)?p.code==="ERR_NETWORK":!1,"condition"),getMessage:n(()=>"A network error occurred. Are you connected to the internet?","getMessage")},i={code:"CANCELED_ERROR",condition:n(p=>!!(y.isCancel(p)||y.isAxiosError(p)&&p.code==="ECONNABORTED"),"condition"),getMessage:n(()=>"The request was canceled.","getMessage")},u={code:"UNKNOWN_ERROR",condition:n(()=>!0,"condition"),getMessage:n(()=>"An unknown error occurred. Please try again later.","getMessage")};this.entries=[...e,o,t,s,i,u]}rethrowError(e){let r=this.entries.find(s=>s.condition(e??{})),o=m.extractServerErrorMessage(e),t=new d(r.getMessage(e),r.code,o);throw this.onRethrowError?.(e,t),t}getError(e){return e instanceof d?e:null}getErrorCode(e){return e instanceof d?e.code:null}static getErrorMessage(e,r=!0){return typeof e=="string"?e:e instanceof Error||e instanceof d?e.message:r?"An unknown error occurred. Please try again later.":null}};n(T,"ErrorHandler");var h=T,b=new h({entries:[]});var w=class w{constructor({config:e,interceptors:r,errorHandler:o}={}){l(this,"client");l(this,"errorHandler");this.client=_.create(e),this.errorHandler=o??b,this.attachInterceptors(r)}attachInterceptors(e,...r){e?.forEach(o=>this.attachInterceptor(o,...r))}attachInterceptor(e,...r){e.addInterceptor(this.client,...r)}ejectInterceptor(e){e.removeInterceptor(this.client)}async get(e,r,o){return this.makeRequest(e,{...o,method:"get",url:r})}async post(e,r,o,t){return this.makeRequest(e,{...t,method:"post",url:r,data:o})}async patch(e,r,o,t){return this.makeRequest(e,{...t,method:"patch",url:r,data:o})}async put(e,r,o,t){return this.makeRequest(e,{...t,method:"put",url:r,data:o})}async delete(e,r,o,t){return this.makeRequest(e,{...t,method:"delete",url:r,data:o})}async makeRequest(e,r){let o=new Error().stack;try{let{rawResponse:t,...s}=r,i=await this.client(s),u=e.resSchema.parse(i.data);return t?{...i,data:u}:u}catch(t){throw t instanceof L.ZodError&&(t.name="BE Response schema mismatch - ZodError",t.stack=[t.stack,...o?.split(`
2
2
  `).slice(2)??[]].join(`
3
- `)),(e.errorHandler??h).rethrowError(r),r}}};n(w,"RestClient");var P=w;var O=class O{constructor(e){this.applyInterceptor=e;u(this,"interceptorIdMap",[])}addInterceptor(e,...t){this.removeInterceptor(e);let o=this.applyInterceptor(e,...t);this.interceptorIdMap.push({client:e,interceptorId:o})}removeInterceptor(e){let t=this.interceptorIdMap.find(o=>o.client===e)?.interceptorId;t!=null&&(e.interceptors.request.eject(t),this.interceptorIdMap=this.interceptorIdMap.filter(o=>o.client!==e))}};n(O,"RestInterceptor");var v=O;import{createContext as U,use as B,useMemo as K}from"react";import{jsx as V}from"react/jsx-runtime";var d;(o=>{let a=U(null);o.Provider=n(({children:r,replace:s})=>{let i=K(()=>({replace:s}),[s]);return V(a,{value:i,children:r})},"Provider"),o.useRouter=n(()=>{let r=B(a);if(!r)throw new Error("useRouter must be used within an OpenApiRouter.Provider");return r},"useRouter")})(d||(d={}));import{createContext as z,use as F,useMemo as j}from"react";import{jsx as Q}from"react/jsx-runtime";var k;(o=>{let a=z({});o.Provider=n(({preferUpdate:r=!0,children:s})=>{let i=j(()=>({preferUpdate:r}),[r]);return Q(a.Provider,{value:i,children:s})},"Provider"),o.useConfig=n(()=>F(a)??{},"useConfig")})(k||(k={}));import{createContext as J,use as X,useMemo as Y}from"react";import{jsx as $}from"react/jsx-runtime";var f;(o=>{let a=J({});o.Provider=n(({isAuthenticated:r,isInitializing:s,logout:i,updateTokens:p,accessToken:A,user:x,userPromise:l,routes:C,loadingState:y,children:b})=>{let q=Y(()=>({isAuthenticated:r,isInitializing:s,logout:i,updateTokens:p,accessToken:A,user:x,userPromise:l,routes:C,loadingState:y}),[r,s,i,p,A,x,l,C,y]);return $(a.Provider,{value:q,children:b})},"Provider"),o.useAuth=n(()=>X(a),"useAuth")})(f||(f={}));import{useEffect as ee,useState as te}from"react";var re=n(({type:a,redirectTo:e,children:t})=>{let{isAuthenticated:o,routes:r,loadingState:s}=f.useAuth(),{replace:i}=d.useRouter(),[p,A]=te(!1);return ee(()=>{A(!0)},[]),p?a==="private"&&!o?(i(e||r?.unauthenticated||"/"),null):a==="public-only"&&o?(i(e||r?.authenticated||"/"),null):t:s},"AuthGuard");import{AbilityBuilder as oe,createMongoAbility as ne}from"@casl/ability";import{unpackRules as se}from"@casl/ability/extra";import{useAbility as ie}from"@casl/react";import{createContext as ae,useEffect as pe,useState as ue}from"react";import{jsx as le}from"react/jsx-runtime";var R;(i=>{let a=n(()=>new oe(ne),"createAppAbilityBuilder"),e=a().build(),t=ae({});({Consumer:i.Consumer}=t),i.Provider=n(({children:p})=>{let[A,x]=ue(e),{user:l}=f.useAuth();return pe(()=>{if(!l||!("aclRules"in l))return;let{can:C,build:y}=a(),b=l.aclRules;se(b).forEach(({action:N,subject:D,conditions:S})=>{C(N,D,S)}),x(y())},[l]),le(t.Provider,{value:A,children:p})},"Provider"),i.useAbility=n(()=>ie(t),"useAbility")})(R||(R={}));var ce=n(()=>({canUse:a,redirectTo:e="/",children:t})=>{let o=R.useAbility(),{replace:r}=d.useRouter();return o.can(a[0],a[1])?t:(r(e),null)},"createAclGuard");import{createContextualCan as de}from"@casl/react";import{jsx as Ae}from"react/jsx-runtime";var fe=de(R.Consumer),Re=n(({use:a,...e})=>{let[t,o]=a;return Ae(fe,{...e,do:t,on:o})},"Can");export{R as AbilityContext,c as ApplicationException,f as AuthContext,re as AuthGuard,Re as Can,E as ErrorHandler,k as OpenApiQueryConfig,d as OpenApiRouter,P as RestClient,v as RestInterceptor,m as RestUtils,h as SharedErrorHandler,ce as createAclGuard};
3
+ `)),(e.errorHandler??this.errorHandler).rethrowError(t),t}}};n(w,"RestClient");var P=w;var O=class O{constructor(e){this.applyInterceptor=e;l(this,"interceptorIdMap",[])}addInterceptor(e,...r){this.removeInterceptor(e);let o=this.applyInterceptor(e,...r);this.interceptorIdMap.push({client:e,interceptorId:o})}removeInterceptor(e){let r=this.interceptorIdMap.find(o=>o.client===e)?.interceptorId;r!=null&&(e.interceptors.request.eject(r),this.interceptorIdMap=this.interceptorIdMap.filter(o=>o.client!==e))}};n(O,"RestInterceptor");var v=O;import{createContext as U,use as B,useMemo as K}from"react";import{jsx as V}from"react/jsx-runtime";var f;(o=>{let a=U(null);o.Provider=n(({children:t,replace:s})=>{let i=K(()=>({replace:s}),[s]);return V(a,{value:i,children:t})},"Provider"),o.useRouter=n(()=>{let t=B(a);if(!t)throw new Error("useRouter must be used within an OpenApiRouter.Provider");return t},"useRouter")})(f||(f={}));import{createContext as z,use as F,useMemo as j}from"react";import{jsx as Q}from"react/jsx-runtime";var k;(o=>{let a=z({});o.Provider=n(({preferUpdate:t=!0,children:s})=>{let i=j(()=>({preferUpdate:t}),[t]);return Q(a.Provider,{value:i,children:s})},"Provider"),o.useConfig=n(()=>F(a)??{},"useConfig")})(k||(k={}));import{createContext as J,use as X,useMemo as Y}from"react";import{jsx as $}from"react/jsx-runtime";var R;(o=>{let a=J({});o.Provider=n(({isAuthenticated:t,isInitializing:s,logout:i,updateTokens:u,accessToken:p,user:x,userPromise:c,routes:C,loadingState:E,children:g})=>{let q=Y(()=>({isAuthenticated:t,isInitializing:s,logout:i,updateTokens:u,accessToken:p,user:x,userPromise:c,routes:C,loadingState:E}),[t,s,i,u,p,x,c,C,E]);return $(a.Provider,{value:q,children:g})},"Provider"),o.useAuth=n(()=>X(a),"useAuth")})(R||(R={}));import{useEffect as ee,useState as re}from"react";var te=n(({type:a,redirectTo:e,children:r})=>{let{isAuthenticated:o,routes:t,loadingState:s}=R.useAuth(),{replace:i}=f.useRouter(),[u,p]=re(!1);return ee(()=>{p(!0)},[]),u?a==="private"&&!o?(i(e||t?.unauthenticated||"/"),null):a==="public-only"&&o?(i(e||t?.authenticated||"/"),null):r:s},"AuthGuard");import{AbilityBuilder as oe,createMongoAbility as ne}from"@casl/ability";import{unpackRules as se}from"@casl/ability/extra";import{useAbility as ie}from"@casl/react";import{createContext as ae,useEffect as pe,useState as ue}from"react";import{jsx as le}from"react/jsx-runtime";var A;(i=>{let a=n(()=>new oe(ne),"createAppAbilityBuilder"),e=a().build(),r=ae({});({Consumer:i.Consumer}=r),i.Provider=n(({children:u})=>{let[p,x]=ue(e),{user:c}=R.useAuth();return pe(()=>{if(!c||!("aclRules"in c))return;let{can:C,build:E}=a(),g=c.aclRules;se(g).forEach(({action:N,subject:H,conditions:D})=>{C(N,H,D)}),x(E())},[c]),le(r.Provider,{value:p,children:u})},"Provider"),i.useAbility=n(()=>ie(r),"useAbility")})(A||(A={}));var ce=n(()=>({canUse:a,redirectTo:e="/",children:r})=>{let o=A.useAbility(),{replace:t}=f.useRouter();return o.can(a[0],a[1])?r:(t(e),null)},"createAclGuard");import{createContextualCan as de}from"@casl/react";import{jsx as Ae}from"react/jsx-runtime";var fe=de(A.Consumer),Re=n(({use:a,...e})=>{let[r,o]=a;return Ae(fe,{...e,do:r,on:o})},"Can");export{A as AbilityContext,d as ApplicationException,R as AuthContext,te as AuthGuard,Re as Can,h as ErrorHandler,k as OpenApiQueryConfig,f as OpenApiRouter,P as RestClient,v as RestInterceptor,m as RestUtils,b as SharedErrorHandler,ce as createAclGuard};
@@ -9,9 +9,14 @@ export interface ErrorEntry<CodeT> {
9
9
  condition: (error: unknown) => boolean;
10
10
  getMessage: (error: unknown) => string;
11
11
  }
12
+ export interface ErrorHandlerOptions<CodeT extends string> {
13
+ entries: ErrorEntry<CodeT>[];
14
+ onRethrowError?: (error: unknown, exception: ApplicationException<CodeT | GeneralErrorCodes>) => void;
15
+ }
12
16
  export declare class ErrorHandler<CodeT extends string> {
13
17
  entries: ErrorEntry<CodeT | GeneralErrorCodes>[];
14
- constructor(entries: ErrorEntry<CodeT>[]);
18
+ private onRethrowError?;
19
+ constructor({ entries, onRethrowError }: ErrorHandlerOptions<CodeT>);
15
20
  rethrowError(error: unknown): ApplicationException<CodeT | GeneralErrorCodes>;
16
21
  getError(error: unknown): ApplicationException<CodeT | GeneralErrorCodes> | null;
17
22
  getErrorCode(error: unknown): CodeT | GeneralErrorCodes | null;
@@ -1,12 +1,14 @@
1
1
  import { AxiosRequestConfig, CreateAxiosDefaults } from "axios";
2
- import { GeneralErrorCodes } from "./error-handling";
2
+ import { ErrorHandler, GeneralErrorCodes } from "./error-handling";
3
3
  import { RestInterceptor } from "./rest-interceptor";
4
4
  import { RestClient as IRestClient, RequestConfig, RequestInfo, Response } from "./rest-client.types";
5
5
  export declare class RestClient implements IRestClient {
6
6
  private readonly client;
7
- constructor({ config, interceptors, }?: {
7
+ private readonly errorHandler;
8
+ constructor({ config, interceptors, errorHandler, }?: {
8
9
  config?: CreateAxiosDefaults;
9
10
  interceptors?: RestInterceptor<any[]>[];
11
+ errorHandler?: ErrorHandler<any>;
10
12
  });
11
13
  attachInterceptors<T extends any[]>(interceptors?: RestInterceptor<T>[], ...args: T): void;
12
14
  attachInterceptor<T extends any[]>(interceptor: RestInterceptor<T>, ...args: T): void;