@povio/openapi-codegen-cli 2.0.8-rc.3 → 2.0.8-rc.31
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 +70 -0
- package/dist/acl.d.mts +59 -0
- package/dist/acl.mjs +73 -7
- package/dist/auth.context-Bu5KW2sI.mjs +59 -0
- package/dist/config-KffSntOs.d.mts +6 -0
- package/dist/error-handling-CXeVTk1T.d.mts +38 -0
- package/dist/error-handling-DkPY7Asf.mjs +187 -0
- package/dist/generate.runner-CXsHkwM7.mjs +87 -0
- package/dist/generateCodeFromOpenAPIDoc-DkNqNy-S.mjs +4627 -0
- package/dist/generator.d.mts +65 -0
- package/dist/generator.mjs +144 -0
- package/dist/index.d.mts +230 -0
- package/dist/index.mjs +251 -24
- package/dist/options-D9TC-n26.d.mts +94 -0
- package/dist/sh.d.mts +1 -0
- package/dist/sh.mjs +448 -0
- package/dist/vite.d.mts +11 -0
- package/dist/vite.mjs +51 -0
- package/dist/zod.d.mts +20 -0
- package/dist/zod.mjs +33 -0
- package/package.json +54 -47
- package/dist/acl.d.ts +0 -4
- package/dist/assets/useCrossTabQueryInvalidation.mjs +0 -23
- package/dist/assets/useMutationEffects.mjs +0 -56
- 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 -16
- 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 -17
- package/dist/lib/config/queryConfig.context.mjs +0 -26
- 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 -634
- package/src/assets/useCrossTabQueryInvalidation.ts +0 -40
- package/src/assets/useMutationEffects.ts +0 -89
- package/src/generators/templates/acl-check.hbs +0 -29
- package/src/generators/templates/acl.hbs +0 -19
- package/src/generators/templates/app-acl.hbs +0 -17
- package/src/generators/templates/app-rest-client.hbs +0 -7
- package/src/generators/templates/configs.hbs +0 -80
- package/src/generators/templates/endpoints.hbs +0 -44
- package/src/generators/templates/models.hbs +0 -23
- package/src/generators/templates/partials/acl-check-call.hbs +0 -1
- package/src/generators/templates/partials/casl-ability-function.hbs +0 -12
- package/src/generators/templates/partials/casl-ability-query.hbs +0 -1
- package/src/generators/templates/partials/casl-ability-type.hbs +0 -1
- package/src/generators/templates/partials/columns-config.hbs +0 -11
- package/src/generators/templates/partials/endpoint-config.hbs +0 -31
- package/src/generators/templates/partials/endpoint-param-parse.hbs +0 -1
- package/src/generators/templates/partials/endpoint-params.hbs +0 -1
- package/src/generators/templates/partials/import.hbs +0 -1
- package/src/generators/templates/partials/inputs-config.hbs +0 -10
- package/src/generators/templates/partials/model-js-docs.hbs +0 -6
- package/src/generators/templates/partials/query-js-docs.hbs +0 -31
- package/src/generators/templates/partials/query-keys.hbs +0 -11
- package/src/generators/templates/partials/query-use-infinite-query.hbs +0 -21
- package/src/generators/templates/partials/query-use-mutation.hbs +0 -54
- package/src/generators/templates/partials/query-use-query.hbs +0 -16
- package/src/generators/templates/queries.hbs +0 -54
- package/src/generators/templates/query-modules.hbs +0 -9
- package/src/generators/templates/zod-extended.hbs +0 -49
package/dist/index.mjs
CHANGED
|
@@ -1,25 +1,252 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
1
|
+
import { a as ns, i as RestUtils, n as ErrorHandler, o as resources, r as SharedErrorHandler, t as ApplicationException } from "./error-handling-DkPY7Asf.mjs";
|
|
2
|
+
import { n as OpenApiRouter, t as AuthContext } from "./auth.context-Bu5KW2sI.mjs";
|
|
3
|
+
import axios from "axios";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { createContext, use, useCallback, useEffect, useMemo, useState } from "react";
|
|
6
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
|
|
9
|
+
//#region src/lib/rest/rest-client.ts
|
|
10
|
+
var RestClient = class {
|
|
11
|
+
client;
|
|
12
|
+
errorHandler;
|
|
13
|
+
constructor({ config, interceptors, errorHandler } = {}) {
|
|
14
|
+
this.client = axios.create(config);
|
|
15
|
+
this.errorHandler = errorHandler ?? SharedErrorHandler;
|
|
16
|
+
this.attachInterceptors(interceptors);
|
|
17
|
+
}
|
|
18
|
+
attachInterceptors(interceptors, ...args) {
|
|
19
|
+
if (interceptors != null) interceptors.forEach((interceptor) => this.attachInterceptor(interceptor, ...args));
|
|
20
|
+
}
|
|
21
|
+
attachInterceptor(interceptor, ...args) {
|
|
22
|
+
interceptor.addInterceptor(this.client, ...args);
|
|
23
|
+
}
|
|
24
|
+
ejectInterceptor(interceptor) {
|
|
25
|
+
interceptor.removeInterceptor(this.client);
|
|
26
|
+
}
|
|
27
|
+
async get(requestInfo, url, requestConfig) {
|
|
28
|
+
return this.makeRequest(requestInfo, {
|
|
29
|
+
...requestConfig,
|
|
30
|
+
method: "get",
|
|
31
|
+
url
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async post(requestInfo, url, data, requestConfig) {
|
|
35
|
+
return this.makeRequest(requestInfo, {
|
|
36
|
+
...requestConfig,
|
|
37
|
+
method: "post",
|
|
38
|
+
url,
|
|
39
|
+
data
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async patch(requestInfo, url, data, requestConfig) {
|
|
43
|
+
return this.makeRequest(requestInfo, {
|
|
44
|
+
...requestConfig,
|
|
45
|
+
method: "patch",
|
|
46
|
+
url,
|
|
47
|
+
data
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async put(requestInfo, url, data, requestConfig) {
|
|
51
|
+
return this.makeRequest(requestInfo, {
|
|
52
|
+
...requestConfig,
|
|
53
|
+
method: "put",
|
|
54
|
+
url,
|
|
55
|
+
data
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async delete(requestInfo, url, data, requestConfig) {
|
|
59
|
+
return this.makeRequest(requestInfo, {
|
|
60
|
+
...requestConfig,
|
|
61
|
+
method: "delete",
|
|
62
|
+
url,
|
|
63
|
+
data
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async makeRequest(requestInfo, requestConfig) {
|
|
67
|
+
const errorStack = (/* @__PURE__ */ new Error()).stack;
|
|
68
|
+
try {
|
|
69
|
+
const { rawResponse, ...config } = requestConfig;
|
|
70
|
+
const res = await this.client(config);
|
|
71
|
+
const resData = requestInfo.resSchema.parse(res.data);
|
|
72
|
+
return rawResponse ? {
|
|
73
|
+
...res,
|
|
74
|
+
data: resData
|
|
75
|
+
} : resData;
|
|
76
|
+
} catch (error) {
|
|
77
|
+
if (error instanceof z.ZodError) {
|
|
78
|
+
error.name = "BE Response schema mismatch - ZodError";
|
|
79
|
+
error.stack = [error.stack, ...errorStack?.split("\n").slice(2) ?? []].join("\n");
|
|
80
|
+
}
|
|
81
|
+
(requestInfo.errorHandler ?? this.errorHandler).rethrowError(error);
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
25
85
|
};
|
|
86
|
+
|
|
87
|
+
//#endregion
|
|
88
|
+
//#region src/lib/rest/rest-interceptor.ts
|
|
89
|
+
var RestInterceptor = class {
|
|
90
|
+
interceptorIdMap = [];
|
|
91
|
+
constructor(applyInterceptor) {
|
|
92
|
+
this.applyInterceptor = applyInterceptor;
|
|
93
|
+
}
|
|
94
|
+
addInterceptor(client, ...args) {
|
|
95
|
+
this.removeInterceptor(client);
|
|
96
|
+
const interceptorId = this.applyInterceptor(client, ...args);
|
|
97
|
+
this.interceptorIdMap.push({
|
|
98
|
+
client,
|
|
99
|
+
interceptorId
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
removeInterceptor(client) {
|
|
103
|
+
const interceptorId = this.interceptorIdMap.find((i) => i.client === client)?.interceptorId;
|
|
104
|
+
if (interceptorId != null) {
|
|
105
|
+
client.interceptors.request.eject(interceptorId);
|
|
106
|
+
this.interceptorIdMap = this.interceptorIdMap.filter((i) => i.client !== client);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
//#endregion
|
|
112
|
+
//#region src/lib/config/queryConfig.context.tsx
|
|
113
|
+
let OpenApiQueryConfig;
|
|
114
|
+
(function(_OpenApiQueryConfig) {
|
|
115
|
+
const Context = createContext({});
|
|
116
|
+
function Provider({ preferUpdate, invalidateCurrentModule, invalidationMap, crossTabInvalidation, onError, children }) {
|
|
117
|
+
const value = useMemo(() => ({
|
|
118
|
+
preferUpdate,
|
|
119
|
+
invalidateCurrentModule,
|
|
120
|
+
invalidationMap,
|
|
121
|
+
crossTabInvalidation,
|
|
122
|
+
onError
|
|
123
|
+
}), [
|
|
124
|
+
preferUpdate,
|
|
125
|
+
invalidateCurrentModule,
|
|
126
|
+
invalidationMap,
|
|
127
|
+
crossTabInvalidation,
|
|
128
|
+
onError
|
|
129
|
+
]);
|
|
130
|
+
return /* @__PURE__ */ jsx(Context.Provider, {
|
|
131
|
+
value,
|
|
132
|
+
children
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
_OpenApiQueryConfig.Provider = Provider;
|
|
136
|
+
_OpenApiQueryConfig.useConfig = () => {
|
|
137
|
+
return use(Context) ?? {};
|
|
138
|
+
};
|
|
139
|
+
})(OpenApiQueryConfig || (OpenApiQueryConfig = {}));
|
|
140
|
+
|
|
141
|
+
//#endregion
|
|
142
|
+
//#region src/lib/react-query/cross-tab-invalidation.ts
|
|
143
|
+
const CROSS_TAB_INVALIDATE_KEY = "__rq_invalidate__";
|
|
144
|
+
const broadcastQueryInvalidation = (queryKeys) => {
|
|
145
|
+
localStorage.setItem(CROSS_TAB_INVALIDATE_KEY, JSON.stringify({
|
|
146
|
+
keys: queryKeys,
|
|
147
|
+
timestamp: Date.now()
|
|
148
|
+
}));
|
|
149
|
+
};
|
|
150
|
+
let isListenerSetUp = false;
|
|
151
|
+
const setupCrossTabListener = (queryClient) => {
|
|
152
|
+
if (isListenerSetUp) return;
|
|
153
|
+
isListenerSetUp = true;
|
|
154
|
+
window.addEventListener("storage", (e) => {
|
|
155
|
+
if (e.key !== CROSS_TAB_INVALIDATE_KEY || !e.newValue) return;
|
|
156
|
+
try {
|
|
157
|
+
const { keys } = JSON.parse(e.newValue);
|
|
158
|
+
for (const queryKey of keys) queryClient.invalidateQueries({ queryKey });
|
|
159
|
+
} catch {}
|
|
160
|
+
});
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
//#endregion
|
|
164
|
+
//#region src/lib/react-query/useMutationEffects.ts
|
|
165
|
+
function useMutationEffects({ currentModule }) {
|
|
166
|
+
const queryClient = useQueryClient();
|
|
167
|
+
const config = OpenApiQueryConfig.useConfig();
|
|
168
|
+
useEffect(() => {
|
|
169
|
+
if (!config.crossTabInvalidation) return;
|
|
170
|
+
setupCrossTabListener(queryClient);
|
|
171
|
+
}, [queryClient, config.crossTabInvalidation]);
|
|
172
|
+
return { runMutationEffects: useCallback(async (data, variables, options = {}, updateKeys) => {
|
|
173
|
+
const { invalidateCurrentModule, invalidationMap, invalidateModules, invalidateKeys, preferUpdate } = options;
|
|
174
|
+
const shouldUpdate = preferUpdate ?? config.preferUpdate ?? false;
|
|
175
|
+
const shouldInvalidateCurrentModule = invalidateCurrentModule ?? config.invalidateCurrentModule ?? true;
|
|
176
|
+
const isQueryKeyEqual = (keyA, keyB) => keyA.length === keyB.length && keyA.every((item, index) => item === keyB[index]);
|
|
177
|
+
const isQueryKeyPrefix = (queryKey, prefixKey) => prefixKey.length <= queryKey.length && prefixKey.every((item, index) => item === queryKey[index]);
|
|
178
|
+
const mappedInvalidationKeys = invalidationMap?.[currentModule]?.(data, variables) ?? config.invalidationMap?.[currentModule]?.(data, variables);
|
|
179
|
+
const shouldInvalidateQuery = (queryKey) => {
|
|
180
|
+
const isUpdateKey = updateKeys?.some((key) => isQueryKeyEqual(queryKey, key));
|
|
181
|
+
if (shouldUpdate && isUpdateKey) return false;
|
|
182
|
+
const isCurrentModule = shouldInvalidateCurrentModule && queryKey[0] === currentModule;
|
|
183
|
+
const isInvalidateModule = !!invalidateModules && invalidateModules.some((module) => queryKey[0] === module);
|
|
184
|
+
const isInvalidateKey = !!invalidateKeys && invalidateKeys.some((key) => isQueryKeyPrefix(queryKey, key));
|
|
185
|
+
const isMappedKey = !!mappedInvalidationKeys && mappedInvalidationKeys.some((key) => isQueryKeyPrefix(queryKey, key));
|
|
186
|
+
return isCurrentModule || isInvalidateModule || isInvalidateKey || isMappedKey;
|
|
187
|
+
};
|
|
188
|
+
const invalidatedQueryKeys = [];
|
|
189
|
+
const shouldBroadcast = options.crossTabInvalidation ?? config.crossTabInvalidation;
|
|
190
|
+
queryClient.invalidateQueries({ predicate: ({ queryKey }) => {
|
|
191
|
+
const shouldInvalidate = shouldInvalidateQuery(queryKey);
|
|
192
|
+
if (shouldInvalidate && shouldBroadcast) invalidatedQueryKeys.push([...queryKey]);
|
|
193
|
+
return shouldInvalidate;
|
|
194
|
+
} });
|
|
195
|
+
if (shouldBroadcast && invalidatedQueryKeys.length > 0) broadcastQueryInvalidation(invalidatedQueryKeys);
|
|
196
|
+
if (shouldUpdate && updateKeys) updateKeys.map((queryKey) => queryClient.setQueryData(queryKey, data));
|
|
197
|
+
}, [
|
|
198
|
+
queryClient,
|
|
199
|
+
currentModule,
|
|
200
|
+
config.preferUpdate,
|
|
201
|
+
config.invalidateCurrentModule,
|
|
202
|
+
config.invalidationMap,
|
|
203
|
+
config.crossTabInvalidation
|
|
204
|
+
]) };
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
//#endregion
|
|
208
|
+
//#region src/lib/config/workspace.context.tsx
|
|
209
|
+
let OpenApiWorkspaceContext;
|
|
210
|
+
(function(_OpenApiWorkspaceContext) {
|
|
211
|
+
const Context = createContext({});
|
|
212
|
+
_OpenApiWorkspaceContext.Provider = ({ values, children }) => {
|
|
213
|
+
const contextValues = useMemo(() => values ?? {}, [values]);
|
|
214
|
+
return /* @__PURE__ */ jsx(Context.Provider, {
|
|
215
|
+
value: contextValues,
|
|
216
|
+
children
|
|
217
|
+
});
|
|
218
|
+
};
|
|
219
|
+
_OpenApiWorkspaceContext.useContext = () => {
|
|
220
|
+
return use(Context);
|
|
221
|
+
};
|
|
222
|
+
_OpenApiWorkspaceContext.resolveParam = (context, name, value) => {
|
|
223
|
+
if (value != null) return value;
|
|
224
|
+
const workspaceValue = context[name];
|
|
225
|
+
if (workspaceValue == null) throw new Error(`Missing workspace context param "${name}"`);
|
|
226
|
+
return workspaceValue;
|
|
227
|
+
};
|
|
228
|
+
})(OpenApiWorkspaceContext || (OpenApiWorkspaceContext = {}));
|
|
229
|
+
|
|
230
|
+
//#endregion
|
|
231
|
+
//#region src/lib/auth/AuthGuard.tsx
|
|
232
|
+
const AuthGuard = ({ type, redirectTo, children }) => {
|
|
233
|
+
const { isAuthenticated, routes, loadingState } = AuthContext.useAuth();
|
|
234
|
+
const { replace } = OpenApiRouter.useRouter();
|
|
235
|
+
const [hasMounted, setHasMounted] = useState(false);
|
|
236
|
+
useEffect(() => {
|
|
237
|
+
setHasMounted(true);
|
|
238
|
+
}, []);
|
|
239
|
+
if (!hasMounted) return loadingState;
|
|
240
|
+
if (type === "private" && !isAuthenticated) {
|
|
241
|
+
replace(redirectTo || routes?.unauthenticated || "/");
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
if (type === "public-only" && isAuthenticated) {
|
|
245
|
+
replace(redirectTo || routes?.authenticated || "/");
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
return children;
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
//#endregion
|
|
252
|
+
export { ApplicationException, AuthContext, AuthGuard, ErrorHandler, OpenApiQueryConfig, OpenApiRouter, OpenApiWorkspaceContext, RestClient, RestInterceptor, RestUtils, SharedErrorHandler, ns, resources, useMutationEffects };
|
|
@@ -0,0 +1,94 @@
|
|
|
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
|
+
type GenerateFileFormatter = (file: GenerateFileData) => string | Promise<string>;
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/generators/types/options.d.ts
|
|
18
|
+
interface ZodGenerateOptions {
|
|
19
|
+
schemaSuffix: string;
|
|
20
|
+
enumSuffix: string;
|
|
21
|
+
modelsInCommon?: boolean;
|
|
22
|
+
withImplicitRequiredProps?: boolean;
|
|
23
|
+
withDefaultValues?: boolean;
|
|
24
|
+
withDescription?: boolean;
|
|
25
|
+
allReadonly?: boolean;
|
|
26
|
+
extractEnums?: boolean;
|
|
27
|
+
replaceOptionalWithNullish?: boolean;
|
|
28
|
+
}
|
|
29
|
+
interface EndpointsGenerateOptions {
|
|
30
|
+
restClientImportPath: string;
|
|
31
|
+
errorHandlingImportPath?: string;
|
|
32
|
+
withDeprecatedEndpoints?: boolean;
|
|
33
|
+
removeOperationPrefixEndingWith?: string;
|
|
34
|
+
parseRequestParams?: boolean;
|
|
35
|
+
inlineEndpoints?: boolean;
|
|
36
|
+
inlineEndpointsExcludeModules?: string[];
|
|
37
|
+
}
|
|
38
|
+
interface QueriesGenerateOptions {
|
|
39
|
+
queryTypesImportPath: string;
|
|
40
|
+
axiosRequestConfig?: boolean;
|
|
41
|
+
mutationEffects?: boolean;
|
|
42
|
+
workspaceContext?: boolean;
|
|
43
|
+
prefetchQueries?: boolean;
|
|
44
|
+
}
|
|
45
|
+
interface InfiniteQueriesGenerateOptions {
|
|
46
|
+
infiniteQueries?: boolean;
|
|
47
|
+
infiniteQueryParamNames: {
|
|
48
|
+
page: string;
|
|
49
|
+
};
|
|
50
|
+
infiniteQueryResponseParamNames: {
|
|
51
|
+
page: string;
|
|
52
|
+
totalItems: string;
|
|
53
|
+
limit: string;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
interface ACLGenerateOptions {
|
|
57
|
+
acl: boolean;
|
|
58
|
+
checkAcl?: boolean;
|
|
59
|
+
abilityContextGenericAppAbilities: boolean;
|
|
60
|
+
abilityContextImportPath?: string;
|
|
61
|
+
}
|
|
62
|
+
interface BuilderConfigsGenerateOptions {
|
|
63
|
+
builderConfigs?: boolean;
|
|
64
|
+
filterParamName: string;
|
|
65
|
+
dataResponseParamNames: string[];
|
|
66
|
+
dynamicInputsImportPath: string;
|
|
67
|
+
dynamicColumnsImportPath: string;
|
|
68
|
+
}
|
|
69
|
+
interface GenerateConfig {
|
|
70
|
+
outputFileNameSuffix: string;
|
|
71
|
+
namespaceSuffix: string;
|
|
72
|
+
}
|
|
73
|
+
interface BaseGenerateOptions {
|
|
74
|
+
input: string;
|
|
75
|
+
output: string;
|
|
76
|
+
clearOutput?: boolean;
|
|
77
|
+
incremental?: boolean;
|
|
78
|
+
splitByTags: boolean;
|
|
79
|
+
defaultTag: string;
|
|
80
|
+
includeTags: string[];
|
|
81
|
+
excludeTags: string[];
|
|
82
|
+
excludePathRegex: string;
|
|
83
|
+
excludeRedundantZodSchemas: boolean;
|
|
84
|
+
tsNamespaces: boolean;
|
|
85
|
+
tsPath: string;
|
|
86
|
+
importPath: "ts" | "relative" | "absolute";
|
|
87
|
+
configs: Record<GenerateType, GenerateConfig>;
|
|
88
|
+
baseUrl: string;
|
|
89
|
+
modelsOnly?: boolean;
|
|
90
|
+
standalone?: boolean;
|
|
91
|
+
}
|
|
92
|
+
interface GenerateOptions extends BaseGenerateOptions, ZodGenerateOptions, EndpointsGenerateOptions, QueriesGenerateOptions, InfiniteQueriesGenerateOptions, ACLGenerateOptions, BuilderConfigsGenerateOptions {}
|
|
93
|
+
//#endregion
|
|
94
|
+
export { GenerateFileData as n, GenerateFileFormatter as r, GenerateOptions as t };
|
package/dist/sh.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|