@povio/openapi-codegen-cli 2.0.8-rc.1 → 2.0.8-rc.10
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 +63 -0
- package/dist/acl.d.mts +48 -0
- package/dist/acl.mjs +62 -7
- package/dist/auth.context-DKjzWiaA.mjs +59 -0
- package/dist/config-Cu_GYfai.d.mts +6 -0
- package/dist/generate.runner-CHLAT44S.mjs +98 -0
- package/dist/generateCodeFromOpenAPIDoc-CQZ2OLwB.mjs +4522 -0
- package/dist/generator.d.mts +65 -0
- package/dist/generator.mjs +144 -0
- package/dist/index.d.mts +246 -0
- package/dist/index.mjs +365 -22
- package/dist/options-DBz5YE3s.d.mts +90 -0
- package/dist/sh.d.mts +1 -0
- package/dist/sh.mjs +439 -0
- package/dist/vite.d.mts +8 -0
- package/dist/vite.mjs +50 -0
- package/package.json +56 -51
- package/src/assets/useMutationEffects.ts +38 -23
- package/src/generators/templates/endpoints.hbs +0 -1
- package/src/generators/templates/partials/query-use-mutation.hbs +1 -1
- package/src/generators/templates/query-modules.hbs +1 -1
- package/dist/acl.d.ts +0 -4
- package/dist/commands/check.command.d.ts +0 -2
- package/dist/commands/check.d.ts +0 -7
- package/dist/commands/generate.command.d.ts +0 -2
- package/dist/commands/generate.d.ts +0 -8
- package/dist/generator.d.ts +0 -3
- package/dist/generator.js +0 -77
- package/dist/generators/checkOpenAPIDoc.d.ts +0 -3
- package/dist/generators/const/acl.const.d.ts +0 -13
- package/dist/generators/const/buildConfigs.const.d.ts +0 -1
- package/dist/generators/const/deps.const.d.ts +0 -38
- package/dist/generators/const/endpoints.const.d.ts +0 -11
- package/dist/generators/const/js.const.d.ts +0 -1
- package/dist/generators/const/openapi.const.d.ts +0 -7
- package/dist/generators/const/options.const.d.ts +0 -2
- package/dist/generators/const/package.const.d.ts +0 -2
- package/dist/generators/const/queries.const.d.ts +0 -8
- package/dist/generators/const/validation.const.d.ts +0 -53
- package/dist/generators/const/zod.const.d.ts +0 -19
- package/dist/generators/core/SchemaResolver.class.d.ts +0 -71
- package/dist/generators/core/endpoints/getEndpointAcl.d.ts +0 -8
- package/dist/generators/core/endpoints/getEndpointBody.d.ts +0 -13
- package/dist/generators/core/endpoints/getEndpointParameter.d.ts +0 -11
- package/dist/generators/core/endpoints/getEndpointsFromOpenAPIDoc.d.ts +0 -3
- package/dist/generators/core/endpoints/getEndpointsFromOpenAPIDoc.test.d.ts +0 -1
- package/dist/generators/core/getDataFromOpenAPIDoc.d.ts +0 -8
- package/dist/generators/core/getMetadataFromOpenAPIDoc.d.ts +0 -4
- package/dist/generators/core/getMetadataFromOpenAPIDoc.test.d.ts +0 -1
- package/dist/generators/core/openapi/getOpenAPISchemaComplexity.d.ts +0 -2
- package/dist/generators/core/openapi/getOpenAPISchemaComplexity.test.d.ts +0 -1
- package/dist/generators/core/openapi/getOpenAPISchemaDependencyGraph.d.ts +0 -6
- package/dist/generators/core/openapi/getOpenAPISchemaDependencyGraph.test.d.ts +0 -1
- package/dist/generators/core/openapi/getSchemaRefObjs.d.ts +0 -4
- package/dist/generators/core/openapi/iterateSchema.d.ts +0 -22
- package/dist/generators/core/resolveConfig.d.ts +0 -7
- package/dist/generators/core/zod/ZodSchema.class.d.ts +0 -26
- package/dist/generators/core/zod/enumExtraction/resolveExtractedEnumZodSchemaNames.d.ts +0 -2
- package/dist/generators/core/zod/enumExtraction/resolveExtractedEnumZodSchemaTags.d.ts +0 -2
- package/dist/generators/core/zod/enumExtraction/updateExtractedEnumZodSchemaData.d.ts +0 -17
- package/dist/generators/core/zod/getZodChain.d.ts +0 -8
- package/dist/generators/core/zod/getZodSchema.d.ts +0 -17
- package/dist/generators/core/zod/getZodSchema.test.d.ts +0 -1
- package/dist/generators/core/zod/getZodSchemaRefs.d.ts +0 -6
- package/dist/generators/core/zod/getZodSchemasFromOpenAPIDoc.d.ts +0 -6
- package/dist/generators/core/zod/resolveZodSchemaName.d.ts +0 -10
- package/dist/generators/core/zod/sortZodSchemasByTopology.d.ts +0 -4
- package/dist/generators/generate/generateAcl.d.ts +0 -3
- package/dist/generators/generate/generateAclCheck.d.ts +0 -2
- package/dist/generators/generate/generateAppRestClient.d.ts +0 -2
- package/dist/generators/generate/generateConfigs.d.ts +0 -2
- package/dist/generators/generate/generateEndpoints.d.ts +0 -2
- package/dist/generators/generate/generateModels.d.ts +0 -2
- package/dist/generators/generate/generateQueries.d.ts +0 -2
- package/dist/generators/generate/generateQueryModules.d.ts +0 -2
- package/dist/generators/generate/generateZodExtended.d.ts +0 -2
- package/dist/generators/generateCodeFromOpenAPIDoc.d.ts +0 -4
- package/dist/generators/types/builder-config.d.ts +0 -48
- package/dist/generators/types/common.d.ts +0 -27
- package/dist/generators/types/config.d.ts +0 -2
- package/dist/generators/types/endpoint.d.ts +0 -50
- package/dist/generators/types/generate.d.ts +0 -39
- package/dist/generators/types/metadata.d.ts +0 -51
- package/dist/generators/types/openapi.d.ts +0 -22
- package/dist/generators/types/options.d.ts +0 -66
- package/dist/generators/types/validation.d.ts +0 -5
- package/dist/generators/utils/array.utils.d.ts +0 -1
- package/dist/generators/utils/endpoint.utils.d.ts +0 -12
- package/dist/generators/utils/endpoint.utils.test.d.ts +0 -1
- package/dist/generators/utils/file.utils.d.ts +0 -8
- package/dist/generators/utils/generate/generate.acl.utils.d.ts +0 -23
- package/dist/generators/utils/generate/generate.configs.utils.d.ts +0 -15
- package/dist/generators/utils/generate/generate.endpoints.utils.d.ts +0 -39
- package/dist/generators/utils/generate/generate.imports.utils.d.ts +0 -39
- package/dist/generators/utils/generate/generate.imports.utils.test.d.ts +0 -1
- package/dist/generators/utils/generate/generate.openapi.utils.d.ts +0 -2
- package/dist/generators/utils/generate/generate.query.utils.d.ts +0 -6
- package/dist/generators/utils/generate/generate.utils.d.ts +0 -18
- package/dist/generators/utils/generate/generate.zod.utils.d.ts +0 -13
- package/dist/generators/utils/generate-files.utils.d.ts +0 -6
- package/dist/generators/utils/hbs/hbs-template.utils.d.ts +0 -3
- package/dist/generators/utils/hbs/hbs.acl.utils.d.ts +0 -2
- package/dist/generators/utils/hbs/hbs.common.utils.d.ts +0 -1
- package/dist/generators/utils/hbs/hbs.endpoints.utils.d.ts +0 -2
- package/dist/generators/utils/hbs/hbs.imports.utils.d.ts +0 -1
- package/dist/generators/utils/hbs/hbs.partials.utils.d.ts +0 -2
- package/dist/generators/utils/hbs/hbs.query.utils.d.ts +0 -2
- package/dist/generators/utils/hbs/hbs.zod.utils.d.ts +0 -2
- package/dist/generators/utils/js.utils.d.ts +0 -2
- package/dist/generators/utils/js.utils.test.d.ts +0 -1
- package/dist/generators/utils/math.utils.d.ts +0 -1
- package/dist/generators/utils/namespace.utils.d.ts +0 -7
- package/dist/generators/utils/object.utils.d.ts +0 -13
- package/dist/generators/utils/object.utils.test.d.ts +0 -1
- package/dist/generators/utils/openapi-schema.utils.d.ts +0 -15
- package/dist/generators/utils/openapi.utils.d.ts +0 -23
- package/dist/generators/utils/openapi.utils.test.d.ts +0 -1
- package/dist/generators/utils/operation.utils.d.ts +0 -22
- package/dist/generators/utils/operation.utils.test.d.ts +0 -1
- package/dist/generators/utils/query.utils.d.ts +0 -7
- package/dist/generators/utils/sort.utils.d.ts +0 -7
- package/dist/generators/utils/string.utils.d.ts +0 -14
- package/dist/generators/utils/string.utils.test.d.ts +0 -1
- package/dist/generators/utils/tag.utils.d.ts +0 -7
- package/dist/generators/utils/ts.utils.d.ts +0 -16
- package/dist/generators/utils/validation.utils.d.ts +0 -17
- package/dist/generators/utils/zod-schema.utils.d.ts +0 -15
- package/dist/helpers/cli.helper.d.ts +0 -22
- package/dist/helpers/config.helper.d.ts +0 -3
- package/dist/helpers/version.helper.d.ts +0 -4
- package/dist/helpers/yargs.helper.d.ts +0 -10
- package/dist/index.d.ts +0 -14
- package/dist/lib/acl/AclGuard.d.ts +0 -8
- package/dist/lib/acl/AclGuard.mjs +0 -14
- package/dist/lib/acl/Can.d.ts +0 -9
- package/dist/lib/acl/Can.mjs +0 -11
- package/dist/lib/acl/ability.context.d.ts +0 -15
- package/dist/lib/acl/ability.context.mjs +0 -37
- package/dist/lib/acl/appAbility.types.d.ts +0 -3
- package/dist/lib/assets/locales/en/translation.json.mjs +0 -8
- package/dist/lib/assets/locales/sl/translation.json.mjs +0 -8
- package/dist/lib/auth/AuthGuard.d.ts +0 -6
- package/dist/lib/auth/AuthGuard.mjs +0 -26
- package/dist/lib/auth/auth.context.d.ts +0 -22
- package/dist/lib/auth/auth.context.mjs +0 -41
- package/dist/lib/config/i18n.d.ts +0 -32
- package/dist/lib/config/i18n.mjs +0 -31
- package/dist/lib/config/queryConfig.context.d.ts +0 -14
- package/dist/lib/config/queryConfig.context.mjs +0 -23
- package/dist/lib/config/router.context.d.ts +0 -9
- package/dist/lib/config/router.context.mjs +0 -20
- package/dist/lib/react-query.types.d.ts +0 -10
- package/dist/lib/rest/error-handling.d.ts +0 -30
- package/dist/lib/rest/error-handling.mjs +0 -132
- package/dist/lib/rest/rest-client.d.ts +0 -22
- package/dist/lib/rest/rest-client.mjs +0 -62
- package/dist/lib/rest/rest-client.types.d.ts +0 -23
- package/dist/lib/rest/rest-interceptor.d.ts +0 -8
- package/dist/lib/rest/rest-interceptor.mjs +0 -21
- package/dist/lib/rest/rest.utils.d.ts +0 -7
- package/dist/lib/rest/rest.utils.mjs +0 -51
- package/dist/sh.d.ts +0 -2
- package/dist/sh.js +0 -652
package/dist/index.mjs
CHANGED
|
@@ -1,23 +1,366 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
import { n as OpenApiRouter, t as AuthContext } from "./auth.context-DKjzWiaA.mjs";
|
|
2
|
+
import axios, { isAxiosError, isCancel } from "axios";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import i18next from "i18next";
|
|
5
|
+
import { createContext, use, useEffect, useMemo, useState } from "react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
|
|
8
|
+
//#region src/lib/assets/locales/en/translation.json
|
|
9
|
+
var translation_default$1 = { openapi: { "sharedErrors": {
|
|
10
|
+
"dataValidation": "An error occurred while validating the data",
|
|
11
|
+
"internalError": "An internal error occurred. This is most likely a bug on our end. Please try again later.",
|
|
12
|
+
"networkError": "A network error occurred. Are you connected to the internet?",
|
|
13
|
+
"canceledError": "The request was canceled.",
|
|
14
|
+
"unknownError": "An unknown error occurred. Please try again later.",
|
|
15
|
+
"unknownErrorWithCode": "An unknown error occurred. Error code: \"{{code}}\""
|
|
16
|
+
} } };
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region src/lib/assets/locales/sl/translation.json
|
|
20
|
+
var translation_default = { openapi: { "sharedErrors": {
|
|
21
|
+
"dataValidation": "Pri preverjanju podatkov je prišlo do napake",
|
|
22
|
+
"internalError": "Prišlo je do notranje napake.",
|
|
23
|
+
"networkError": "Prišlo je do napake v omrežju.",
|
|
24
|
+
"canceledError": "Zahteva je bila preklicana.",
|
|
25
|
+
"unknownError": "Prišlo je do neznane napake.",
|
|
26
|
+
"unknownErrorWithCode": "Prišlo je do neznane napake. Koda napake: \"{{code}}\""
|
|
27
|
+
} } };
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/lib/config/i18n.ts
|
|
31
|
+
const ns = "openapi";
|
|
32
|
+
const resources = {
|
|
33
|
+
en: { [ns]: translation_default$1 },
|
|
34
|
+
sl: { [ns]: translation_default }
|
|
23
35
|
};
|
|
36
|
+
const defaultLanguage = "en";
|
|
37
|
+
const i18n = i18next.createInstance();
|
|
38
|
+
i18n.init({
|
|
39
|
+
compatibilityJSON: "v4",
|
|
40
|
+
lng: defaultLanguage,
|
|
41
|
+
fallbackLng: defaultLanguage,
|
|
42
|
+
resources,
|
|
43
|
+
ns: Object.keys(resources.en),
|
|
44
|
+
defaultNS: ns,
|
|
45
|
+
interpolation: { escapeValue: false }
|
|
46
|
+
});
|
|
47
|
+
const defaultT = i18n.t.bind(i18n);
|
|
48
|
+
|
|
49
|
+
//#endregion
|
|
50
|
+
//#region src/lib/rest/rest.utils.ts
|
|
51
|
+
let RestUtils;
|
|
52
|
+
(function(_RestUtils) {
|
|
53
|
+
_RestUtils.extractServerResponseCode = (e) => {
|
|
54
|
+
if (e instanceof z.ZodError) return "validation-exception";
|
|
55
|
+
if (!isAxiosError(e)) return null;
|
|
56
|
+
if (!e.response) return null;
|
|
57
|
+
const data = e.response.data;
|
|
58
|
+
if (typeof data?.code === "string") return data.code;
|
|
59
|
+
return null;
|
|
60
|
+
};
|
|
61
|
+
_RestUtils.doesServerErrorMessageContain = (e, text) => {
|
|
62
|
+
const message = extractServerErrorMessage(e);
|
|
63
|
+
if (message === null || message === void 0) return false;
|
|
64
|
+
return message.toLowerCase().includes(text.toLowerCase());
|
|
65
|
+
};
|
|
66
|
+
const extractServerErrorMessage = _RestUtils.extractServerErrorMessage = (e) => {
|
|
67
|
+
if (e instanceof z.ZodError) return e.message;
|
|
68
|
+
if (!isAxiosError(e)) return null;
|
|
69
|
+
if (!e.response) return null;
|
|
70
|
+
const data = e.response.data;
|
|
71
|
+
if (typeof data?.message === "string") return data.message;
|
|
72
|
+
return null;
|
|
73
|
+
};
|
|
74
|
+
_RestUtils.extractContentDispositionFilename = (headers) => {
|
|
75
|
+
const contentDisposition = headers["content-disposition"];
|
|
76
|
+
return contentDisposition ? /filename=["']?([^"';]+)/i.exec(contentDisposition)?.[1] : void 0;
|
|
77
|
+
};
|
|
78
|
+
})(RestUtils || (RestUtils = {}));
|
|
79
|
+
|
|
80
|
+
//#endregion
|
|
81
|
+
//#region src/lib/rest/error-handling.ts
|
|
82
|
+
var ApplicationException = class extends Error {
|
|
83
|
+
code;
|
|
84
|
+
serverMessage = null;
|
|
85
|
+
constructor(message, code, serverMessage) {
|
|
86
|
+
super(message);
|
|
87
|
+
this.code = code;
|
|
88
|
+
this.serverMessage = serverMessage;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
var ErrorHandler = class {
|
|
92
|
+
entries = [];
|
|
93
|
+
t;
|
|
94
|
+
onRethrowError;
|
|
95
|
+
constructor({ entries, t = defaultT, onRethrowError }) {
|
|
96
|
+
this.t = t;
|
|
97
|
+
this.onRethrowError = onRethrowError;
|
|
98
|
+
const dataValidationError = {
|
|
99
|
+
code: "DATA_VALIDATION_ERROR",
|
|
100
|
+
condition: (e) => {
|
|
101
|
+
return e instanceof z.ZodError;
|
|
102
|
+
},
|
|
103
|
+
getMessage: () => this.t("openapi.sharedErrors.dataValidation")
|
|
104
|
+
};
|
|
105
|
+
const internalError = {
|
|
106
|
+
code: "INTERNAL_ERROR",
|
|
107
|
+
condition: (e) => {
|
|
108
|
+
if (isAxiosError(e)) return e.response?.status != null && e.response.status >= 500 && e.response.status < 600;
|
|
109
|
+
return false;
|
|
110
|
+
},
|
|
111
|
+
getMessage: () => this.t("openapi.sharedErrors.internalError")
|
|
112
|
+
};
|
|
113
|
+
const networkError = {
|
|
114
|
+
code: "NETWORK_ERROR",
|
|
115
|
+
condition: (e) => {
|
|
116
|
+
if (isAxiosError(e)) return e.code === "ERR_NETWORK";
|
|
117
|
+
return false;
|
|
118
|
+
},
|
|
119
|
+
getMessage: () => this.t("openapi.sharedErrors.networkError")
|
|
120
|
+
};
|
|
121
|
+
const canceledError = {
|
|
122
|
+
code: "CANCELED_ERROR",
|
|
123
|
+
condition: (e) => {
|
|
124
|
+
if (isCancel(e)) return true;
|
|
125
|
+
if (isAxiosError(e) && e.code === "ECONNABORTED") return true;
|
|
126
|
+
return false;
|
|
127
|
+
},
|
|
128
|
+
getMessage: () => this.t("openapi.sharedErrors.canceledError")
|
|
129
|
+
};
|
|
130
|
+
const unknownError = {
|
|
131
|
+
code: "UNKNOWN_ERROR",
|
|
132
|
+
condition: () => true,
|
|
133
|
+
getMessage: (_, e) => {
|
|
134
|
+
const code = RestUtils.extractServerResponseCode(e);
|
|
135
|
+
const serverMessage = RestUtils.extractServerErrorMessage(e);
|
|
136
|
+
if (code) {
|
|
137
|
+
let message = `Unknown error, message from server: ${code}`;
|
|
138
|
+
if (serverMessage) message += ` ${serverMessage}`;
|
|
139
|
+
return message;
|
|
140
|
+
}
|
|
141
|
+
return this.t("openapi.sharedErrors.unknownError");
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
this.entries = [
|
|
145
|
+
...entries,
|
|
146
|
+
dataValidationError,
|
|
147
|
+
internalError,
|
|
148
|
+
networkError,
|
|
149
|
+
canceledError,
|
|
150
|
+
unknownError
|
|
151
|
+
];
|
|
152
|
+
}
|
|
153
|
+
matchesEntry(error, entry, code) {
|
|
154
|
+
if (entry.condition) return entry.condition(error);
|
|
155
|
+
return code === entry.code;
|
|
156
|
+
}
|
|
157
|
+
setTranslateFunction(t) {
|
|
158
|
+
this.t = t;
|
|
159
|
+
}
|
|
160
|
+
rethrowError(error) {
|
|
161
|
+
const code = RestUtils.extractServerResponseCode(error);
|
|
162
|
+
const errorEntry = this.entries.find((entry) => this.matchesEntry(error, entry, code));
|
|
163
|
+
const serverMessage = RestUtils.extractServerErrorMessage(error);
|
|
164
|
+
const exception = new ApplicationException(errorEntry.getMessage(this.t, error), errorEntry.code, serverMessage);
|
|
165
|
+
this.onRethrowError?.(error, exception);
|
|
166
|
+
throw exception;
|
|
167
|
+
}
|
|
168
|
+
getError(error) {
|
|
169
|
+
if (error instanceof ApplicationException) return error;
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
getErrorCode(error) {
|
|
173
|
+
if (error instanceof ApplicationException) return error.code;
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
static getErrorMessage(error, fallbackToUnknown = true) {
|
|
177
|
+
if (typeof error === "string") return error;
|
|
178
|
+
if (error instanceof Error) return error.message;
|
|
179
|
+
if (error instanceof ApplicationException) {
|
|
180
|
+
if (error.serverMessage != null) return error.serverMessage;
|
|
181
|
+
return error.message;
|
|
182
|
+
}
|
|
183
|
+
if (fallbackToUnknown) return defaultT("openapi.sharedErrors.unknownError");
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
const SharedErrorHandler = new ErrorHandler({ entries: [] });
|
|
188
|
+
|
|
189
|
+
//#endregion
|
|
190
|
+
//#region src/lib/rest/rest-client.ts
|
|
191
|
+
var RestClient = class {
|
|
192
|
+
client;
|
|
193
|
+
errorHandler;
|
|
194
|
+
constructor({ config, interceptors, errorHandler } = {}) {
|
|
195
|
+
this.client = axios.create(config);
|
|
196
|
+
this.errorHandler = errorHandler ?? SharedErrorHandler;
|
|
197
|
+
this.attachInterceptors(interceptors);
|
|
198
|
+
}
|
|
199
|
+
attachInterceptors(interceptors, ...args) {
|
|
200
|
+
if (interceptors != null) interceptors.forEach((interceptor) => this.attachInterceptor(interceptor, ...args));
|
|
201
|
+
}
|
|
202
|
+
attachInterceptor(interceptor, ...args) {
|
|
203
|
+
interceptor.addInterceptor(this.client, ...args);
|
|
204
|
+
}
|
|
205
|
+
ejectInterceptor(interceptor) {
|
|
206
|
+
interceptor.removeInterceptor(this.client);
|
|
207
|
+
}
|
|
208
|
+
async get(requestInfo, url, requestConfig) {
|
|
209
|
+
return this.makeRequest(requestInfo, {
|
|
210
|
+
...requestConfig,
|
|
211
|
+
method: "get",
|
|
212
|
+
url
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
async post(requestInfo, url, data, requestConfig) {
|
|
216
|
+
return this.makeRequest(requestInfo, {
|
|
217
|
+
...requestConfig,
|
|
218
|
+
method: "post",
|
|
219
|
+
url,
|
|
220
|
+
data
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
async patch(requestInfo, url, data, requestConfig) {
|
|
224
|
+
return this.makeRequest(requestInfo, {
|
|
225
|
+
...requestConfig,
|
|
226
|
+
method: "patch",
|
|
227
|
+
url,
|
|
228
|
+
data
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
async put(requestInfo, url, data, requestConfig) {
|
|
232
|
+
return this.makeRequest(requestInfo, {
|
|
233
|
+
...requestConfig,
|
|
234
|
+
method: "put",
|
|
235
|
+
url,
|
|
236
|
+
data
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
async delete(requestInfo, url, data, requestConfig) {
|
|
240
|
+
return this.makeRequest(requestInfo, {
|
|
241
|
+
...requestConfig,
|
|
242
|
+
method: "delete",
|
|
243
|
+
url,
|
|
244
|
+
data
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
async makeRequest(requestInfo, requestConfig) {
|
|
248
|
+
const errorStack = (/* @__PURE__ */ new Error()).stack;
|
|
249
|
+
try {
|
|
250
|
+
const { rawResponse, ...config } = requestConfig;
|
|
251
|
+
const res = await this.client(config);
|
|
252
|
+
const resData = requestInfo.resSchema.parse(res.data);
|
|
253
|
+
return rawResponse ? {
|
|
254
|
+
...res,
|
|
255
|
+
data: resData
|
|
256
|
+
} : resData;
|
|
257
|
+
} catch (error) {
|
|
258
|
+
if (error instanceof z.ZodError) {
|
|
259
|
+
error.name = "BE Response schema mismatch - ZodError";
|
|
260
|
+
error.stack = [error.stack, ...errorStack?.split("\n").slice(2) ?? []].join("\n");
|
|
261
|
+
}
|
|
262
|
+
(requestInfo.errorHandler ?? this.errorHandler).rethrowError(error);
|
|
263
|
+
throw error;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
//#endregion
|
|
269
|
+
//#region src/lib/rest/rest-interceptor.ts
|
|
270
|
+
var RestInterceptor = class {
|
|
271
|
+
interceptorIdMap = [];
|
|
272
|
+
constructor(applyInterceptor) {
|
|
273
|
+
this.applyInterceptor = applyInterceptor;
|
|
274
|
+
}
|
|
275
|
+
addInterceptor(client, ...args) {
|
|
276
|
+
this.removeInterceptor(client);
|
|
277
|
+
const interceptorId = this.applyInterceptor(client, ...args);
|
|
278
|
+
this.interceptorIdMap.push({
|
|
279
|
+
client,
|
|
280
|
+
interceptorId
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
removeInterceptor(client) {
|
|
284
|
+
const interceptorId = this.interceptorIdMap.find((i) => i.client === client)?.interceptorId;
|
|
285
|
+
if (interceptorId != null) {
|
|
286
|
+
client.interceptors.request.eject(interceptorId);
|
|
287
|
+
this.interceptorIdMap = this.interceptorIdMap.filter((i) => i.client !== client);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
//#endregion
|
|
293
|
+
//#region src/lib/config/queryConfig.context.tsx
|
|
294
|
+
let OpenApiQueryConfig;
|
|
295
|
+
(function(_OpenApiQueryConfig) {
|
|
296
|
+
const Context = createContext({});
|
|
297
|
+
_OpenApiQueryConfig.Provider = ({ preferUpdate, invalidateCurrentModule, invalidationMap, crossTabInvalidation, onError, children }) => {
|
|
298
|
+
const value = useMemo(() => ({
|
|
299
|
+
preferUpdate,
|
|
300
|
+
invalidateCurrentModule,
|
|
301
|
+
invalidationMap,
|
|
302
|
+
crossTabInvalidation,
|
|
303
|
+
onError
|
|
304
|
+
}), [
|
|
305
|
+
preferUpdate,
|
|
306
|
+
invalidateCurrentModule,
|
|
307
|
+
invalidationMap,
|
|
308
|
+
crossTabInvalidation,
|
|
309
|
+
onError
|
|
310
|
+
]);
|
|
311
|
+
return /* @__PURE__ */ jsx(Context.Provider, {
|
|
312
|
+
value,
|
|
313
|
+
children
|
|
314
|
+
});
|
|
315
|
+
};
|
|
316
|
+
_OpenApiQueryConfig.useConfig = () => {
|
|
317
|
+
return use(Context) ?? {};
|
|
318
|
+
};
|
|
319
|
+
})(OpenApiQueryConfig || (OpenApiQueryConfig = {}));
|
|
320
|
+
|
|
321
|
+
//#endregion
|
|
322
|
+
//#region src/lib/config/workspace.context.tsx
|
|
323
|
+
let OpenApiWorkspaceContext;
|
|
324
|
+
(function(_OpenApiWorkspaceContext) {
|
|
325
|
+
const Context = createContext({});
|
|
326
|
+
_OpenApiWorkspaceContext.Provider = ({ values, children }) => {
|
|
327
|
+
const contextValues = useMemo(() => values ?? {}, [values]);
|
|
328
|
+
return /* @__PURE__ */ jsx(Context.Provider, {
|
|
329
|
+
value: contextValues,
|
|
330
|
+
children
|
|
331
|
+
});
|
|
332
|
+
};
|
|
333
|
+
_OpenApiWorkspaceContext.useContext = () => {
|
|
334
|
+
return use(Context);
|
|
335
|
+
};
|
|
336
|
+
_OpenApiWorkspaceContext.resolveParam = (context, name, value) => {
|
|
337
|
+
if (value != null) return value;
|
|
338
|
+
const workspaceValue = context[name];
|
|
339
|
+
if (workspaceValue == null) throw new Error(`Missing workspace context param "${name}"`);
|
|
340
|
+
return workspaceValue;
|
|
341
|
+
};
|
|
342
|
+
})(OpenApiWorkspaceContext || (OpenApiWorkspaceContext = {}));
|
|
343
|
+
|
|
344
|
+
//#endregion
|
|
345
|
+
//#region src/lib/auth/AuthGuard.tsx
|
|
346
|
+
const AuthGuard = ({ type, redirectTo, children }) => {
|
|
347
|
+
const { isAuthenticated, routes, loadingState } = AuthContext.useAuth();
|
|
348
|
+
const { replace } = OpenApiRouter.useRouter();
|
|
349
|
+
const [hasMounted, setHasMounted] = useState(false);
|
|
350
|
+
useEffect(() => {
|
|
351
|
+
setHasMounted(true);
|
|
352
|
+
}, []);
|
|
353
|
+
if (!hasMounted) return loadingState;
|
|
354
|
+
if (type === "private" && !isAuthenticated) {
|
|
355
|
+
replace(redirectTo || routes?.unauthenticated || "/");
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
358
|
+
if (type === "public-only" && isAuthenticated) {
|
|
359
|
+
replace(redirectTo || routes?.authenticated || "/");
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
return children;
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
//#endregion
|
|
366
|
+
export { ApplicationException, AuthContext, AuthGuard, ErrorHandler, OpenApiQueryConfig, OpenApiRouter, OpenApiWorkspaceContext, RestClient, RestInterceptor, RestUtils, SharedErrorHandler, ns, resources };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { OpenAPIV3 } from "openapi-types";
|
|
2
|
+
|
|
3
|
+
//#region src/generators/types/generate.d.ts
|
|
4
|
+
declare enum GenerateType {
|
|
5
|
+
Models = "models",
|
|
6
|
+
Endpoints = "endpoints",
|
|
7
|
+
Queries = "queries",
|
|
8
|
+
Acl = "acl",
|
|
9
|
+
Configs = "configs"
|
|
10
|
+
}
|
|
11
|
+
interface GenerateFileData {
|
|
12
|
+
fileName: string;
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
//#region src/generators/types/options.d.ts
|
|
17
|
+
interface ZodGenerateOptions {
|
|
18
|
+
schemaSuffix: string;
|
|
19
|
+
enumSuffix: string;
|
|
20
|
+
modelsInCommon?: boolean;
|
|
21
|
+
withImplicitRequiredProps?: boolean;
|
|
22
|
+
withDefaultValues?: boolean;
|
|
23
|
+
withDescription?: boolean;
|
|
24
|
+
allReadonly?: boolean;
|
|
25
|
+
extractEnums?: boolean;
|
|
26
|
+
replaceOptionalWithNullish?: boolean;
|
|
27
|
+
}
|
|
28
|
+
interface EndpointsGenerateOptions {
|
|
29
|
+
restClientImportPath: string;
|
|
30
|
+
errorHandlingImportPath?: string;
|
|
31
|
+
withDeprecatedEndpoints?: boolean;
|
|
32
|
+
removeOperationPrefixEndingWith?: string;
|
|
33
|
+
parseRequestParams?: boolean;
|
|
34
|
+
inlineEndpoints?: boolean;
|
|
35
|
+
inlineEndpointsExcludeModules?: string[];
|
|
36
|
+
}
|
|
37
|
+
interface QueriesGenerateOptions {
|
|
38
|
+
queryTypesImportPath: string;
|
|
39
|
+
axiosRequestConfig?: boolean;
|
|
40
|
+
mutationEffects?: boolean;
|
|
41
|
+
workspaceContext?: boolean;
|
|
42
|
+
}
|
|
43
|
+
interface InfiniteQueriesGenerateOptions {
|
|
44
|
+
infiniteQueries?: boolean;
|
|
45
|
+
infiniteQueryParamNames: {
|
|
46
|
+
page: string;
|
|
47
|
+
};
|
|
48
|
+
infiniteQueryResponseParamNames: {
|
|
49
|
+
page: string;
|
|
50
|
+
totalItems: string;
|
|
51
|
+
limit: string;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
interface ACLGenerateOptions {
|
|
55
|
+
acl: boolean;
|
|
56
|
+
checkAcl?: boolean;
|
|
57
|
+
abilityContextGenericAppAbilities: boolean;
|
|
58
|
+
abilityContextImportPath?: string;
|
|
59
|
+
}
|
|
60
|
+
interface BuilderConfigsGenerateOptions {
|
|
61
|
+
builderConfigs?: boolean;
|
|
62
|
+
filterParamName: string;
|
|
63
|
+
dataResponseParamNames: string[];
|
|
64
|
+
dynamicInputsImportPath: string;
|
|
65
|
+
dynamicColumnsImportPath: string;
|
|
66
|
+
}
|
|
67
|
+
interface GenerateConfig {
|
|
68
|
+
outputFileNameSuffix: string;
|
|
69
|
+
namespaceSuffix: string;
|
|
70
|
+
}
|
|
71
|
+
interface BaseGenerateOptions {
|
|
72
|
+
input: string;
|
|
73
|
+
output: string;
|
|
74
|
+
incremental?: boolean;
|
|
75
|
+
splitByTags: boolean;
|
|
76
|
+
defaultTag: string;
|
|
77
|
+
excludeTags: string[];
|
|
78
|
+
excludePathRegex: string;
|
|
79
|
+
excludeRedundantZodSchemas: boolean;
|
|
80
|
+
tsNamespaces: boolean;
|
|
81
|
+
tsPath: string;
|
|
82
|
+
importPath: "ts" | "relative" | "absolute";
|
|
83
|
+
configs: Record<GenerateType, GenerateConfig>;
|
|
84
|
+
baseUrl: string;
|
|
85
|
+
modelsOnly?: boolean;
|
|
86
|
+
standalone?: boolean;
|
|
87
|
+
}
|
|
88
|
+
interface GenerateOptions extends BaseGenerateOptions, ZodGenerateOptions, EndpointsGenerateOptions, QueriesGenerateOptions, InfiniteQueriesGenerateOptions, ACLGenerateOptions, BuilderConfigsGenerateOptions {}
|
|
89
|
+
//#endregion
|
|
90
|
+
export { GenerateFileData as n, GenerateOptions as t };
|
package/dist/sh.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|