@orval/swr 6.22.1 → 6.24.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/dist/index.js +266 -58
- package/dist/index.js.map +1 -0
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -62,15 +62,38 @@ var SWR_DEPENDENCIES = [
|
|
|
62
62
|
exports: [
|
|
63
63
|
{ name: "useSwr", values: true, default: true },
|
|
64
64
|
{ name: "SWRConfiguration" },
|
|
65
|
-
{ name: "Key" }
|
|
65
|
+
{ name: "Key" },
|
|
66
|
+
{ name: "Arguments" }
|
|
66
67
|
],
|
|
67
68
|
dependency: "swr"
|
|
68
69
|
}
|
|
69
70
|
];
|
|
71
|
+
var SWR_INFINITE_DEPENDENCIES = [
|
|
72
|
+
{
|
|
73
|
+
exports: [
|
|
74
|
+
{ name: "useSWRInfinite", values: true, default: true },
|
|
75
|
+
{ name: "SWRInfiniteConfiguration" },
|
|
76
|
+
{ name: "SWRInfiniteKeyLoader" }
|
|
77
|
+
],
|
|
78
|
+
dependency: "swr/infinite"
|
|
79
|
+
}
|
|
80
|
+
];
|
|
81
|
+
var SWR_MUTATION_DEPENDENCIES = [
|
|
82
|
+
{
|
|
83
|
+
exports: [
|
|
84
|
+
{ name: "useSWRMutation", values: true, default: true },
|
|
85
|
+
{ name: "SWRMutationConfiguration" },
|
|
86
|
+
{ name: "SWRMutationKey" }
|
|
87
|
+
],
|
|
88
|
+
dependency: "swr/mutation"
|
|
89
|
+
}
|
|
90
|
+
];
|
|
70
91
|
var getSwrDependencies = (hasGlobalMutator, hasParamsSerializerOptions) => [
|
|
71
92
|
...!hasGlobalMutator ? AXIOS_DEPENDENCIES : [],
|
|
72
93
|
...hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : [],
|
|
73
|
-
...SWR_DEPENDENCIES
|
|
94
|
+
...SWR_DEPENDENCIES,
|
|
95
|
+
...SWR_INFINITE_DEPENDENCIES,
|
|
96
|
+
...SWR_MUTATION_DEPENDENCIES
|
|
74
97
|
];
|
|
75
98
|
var generateSwrRequestFunction = ({
|
|
76
99
|
headers,
|
|
@@ -90,10 +113,10 @@ var generateSwrRequestFunction = ({
|
|
|
90
113
|
const isRequestOptions = (override == null ? void 0 : override.requestOptions) !== false;
|
|
91
114
|
const isFormData = (override == null ? void 0 : override.formData) !== false;
|
|
92
115
|
const isFormUrlEncoded = (override == null ? void 0 : override.formUrlEncoded) !== false;
|
|
93
|
-
const isExactOptionalPropertyTypes = !!((_b = (_a = context.tsconfig) == null ? void 0 : _a.compilerOptions) == null ? void 0 : _b.exactOptionalPropertyTypes);
|
|
116
|
+
const isExactOptionalPropertyTypes = !!((_b = (_a = context.output.tsconfig) == null ? void 0 : _a.compilerOptions) == null ? void 0 : _b.exactOptionalPropertyTypes);
|
|
94
117
|
const isBodyVerb = import_core.VERBS_WITH_BODY.includes(verb);
|
|
95
118
|
const isSyntheticDefaultImportsAllowed = (0, import_core.isSyntheticDefaultImportsAllow)(
|
|
96
|
-
context.tsconfig
|
|
119
|
+
context.output.tsconfig
|
|
97
120
|
);
|
|
98
121
|
const bodyForm = (0, import_core.generateFormDataAndUrlEncodedFunction)({
|
|
99
122
|
formData,
|
|
@@ -161,9 +184,24 @@ var generateSwrRequestFunction = ({
|
|
|
161
184
|
var generateSwrArguments = ({
|
|
162
185
|
operationName,
|
|
163
186
|
mutator,
|
|
164
|
-
isRequestOptions
|
|
187
|
+
isRequestOptions,
|
|
188
|
+
isInfinite
|
|
189
|
+
}) => {
|
|
190
|
+
const configType = isInfinite ? "SWRInfiniteConfiguration" : "SWRConfiguration";
|
|
191
|
+
const optionsType = isInfinite ? "{ swrKeyLoader?: SWRInfiniteKeyLoader, enabled?: boolean }" : "{ swrKey?: Key, enabled?: boolean }";
|
|
192
|
+
const definition = `${configType}<Awaited<ReturnType<typeof ${operationName}>>, TError> & ${optionsType}`;
|
|
193
|
+
if (!isRequestOptions) {
|
|
194
|
+
return `swrOptions?: ${definition}`;
|
|
195
|
+
}
|
|
196
|
+
return `options?: { swr?:${definition}, ${!mutator ? `axios?: AxiosRequestConfig` : (mutator == null ? void 0 : mutator.hasSecondArg) ? `request?: SecondParameter<typeof ${mutator.name}>` : ""} }
|
|
197
|
+
`;
|
|
198
|
+
};
|
|
199
|
+
var generateSwrMutationArguments = ({
|
|
200
|
+
operationName,
|
|
201
|
+
isRequestOptions,
|
|
202
|
+
mutator
|
|
165
203
|
}) => {
|
|
166
|
-
const definition = `
|
|
204
|
+
const definition = `SWRMutationConfiguration<Awaited<ReturnType<typeof ${operationName}>>, TError, string, Arguments, Awaited<ReturnType<typeof ${operationName}>>> & { swrKey?: string }`;
|
|
167
205
|
if (!isRequestOptions) {
|
|
168
206
|
return `swrOptions?: ${definition}`;
|
|
169
207
|
}
|
|
@@ -173,6 +211,7 @@ var generateSwrArguments = ({
|
|
|
173
211
|
var generateSwrImplementation = ({
|
|
174
212
|
operationName,
|
|
175
213
|
swrKeyFnName,
|
|
214
|
+
swrKeyLoaderFnName,
|
|
176
215
|
swrProperties,
|
|
177
216
|
swrKeyProperties,
|
|
178
217
|
params,
|
|
@@ -183,47 +222,138 @@ var generateSwrImplementation = ({
|
|
|
183
222
|
props,
|
|
184
223
|
doc
|
|
185
224
|
}) => {
|
|
186
|
-
var _a;
|
|
225
|
+
var _a, _b;
|
|
187
226
|
const swrProps = (0, import_core.toObjectString)(props, "implementation");
|
|
227
|
+
const hasParamReservedWord = props.some(
|
|
228
|
+
(prop) => prop.name === "query"
|
|
229
|
+
);
|
|
230
|
+
const queryResultVarName = hasParamReservedWord ? "_query" : "query";
|
|
188
231
|
const httpFunctionProps = swrProperties;
|
|
189
|
-
const
|
|
190
|
-
|
|
232
|
+
const enabledImplementation = `const isEnabled = swrOptions?.enabled !== false${params.length ? ` && !!(${params.map(({ name }) => name).join(" && ")})` : ""}`;
|
|
233
|
+
const swrKeyImplementation = `const swrKey = swrOptions?.swrKey ?? (() => isEnabled ? ${swrKeyFnName}(${swrKeyProperties}) : null);`;
|
|
234
|
+
const swrKeyLoaderImplementation = `const swrKeyLoader = swrOptions?.swrKeyLoader ?? (() => isEnabled ? ${swrKeyLoaderFnName}(${swrKeyProperties}) : null);`;
|
|
191
235
|
let errorType = `AxiosError<${response.definition.errors || "unknown"}>`;
|
|
192
236
|
if (mutator) {
|
|
193
237
|
errorType = mutator.hasErrorType ? `ErrorType<${response.definition.errors || "unknown"}>` : response.definition.errors || "unknown";
|
|
194
238
|
}
|
|
195
|
-
|
|
239
|
+
const useSWRInfiniteImplementation = swrOptions.useInfinite ? `
|
|
196
240
|
export type ${(0, import_core.pascal)(
|
|
197
241
|
operationName
|
|
198
|
-
)}
|
|
199
|
-
export type ${(0, import_core.pascal)(operationName)}
|
|
242
|
+
)}InfiniteQueryResult = NonNullable<Awaited<ReturnType<typeof ${operationName}>>>
|
|
243
|
+
export type ${(0, import_core.pascal)(operationName)}InfiniteError = ${errorType}
|
|
200
244
|
|
|
201
245
|
${doc}export const ${(0, import_core.camel)(
|
|
202
|
-
`use-${operationName}`
|
|
246
|
+
`use-${operationName}-infinite`
|
|
203
247
|
)} = <TError = ${errorType}>(
|
|
204
|
-
|
|
248
|
+
${swrProps} ${generateSwrArguments({
|
|
205
249
|
operationName,
|
|
206
250
|
mutator,
|
|
207
|
-
isRequestOptions
|
|
208
|
-
|
|
209
|
-
) => {
|
|
251
|
+
isRequestOptions,
|
|
252
|
+
isInfinite: true
|
|
253
|
+
})}) => {
|
|
254
|
+
${isRequestOptions ? `const {swr: swrOptions${!mutator ? `, axios: axiosOptions` : (mutator == null ? void 0 : mutator.hasSecondArg) ? ", request: requestOptions" : ""}} = options ?? {}` : ""}
|
|
255
|
+
|
|
256
|
+
${enabledImplementation}
|
|
257
|
+
${swrKeyLoaderImplementation}
|
|
258
|
+
const swrFn = () => ${operationName}(${httpFunctionProps}${httpFunctionProps ? ", " : ""}${isRequestOptions ? !mutator ? `axiosOptions` : (mutator == null ? void 0 : mutator.hasSecondArg) ? "requestOptions" : "" : ""});
|
|
259
|
+
|
|
260
|
+
const ${queryResultVarName} = useSWRInfinite<Awaited<ReturnType<typeof swrFn>>, TError>(swrKeyLoader, swrFn, ${swrOptions.options ? `{
|
|
261
|
+
${(_a = (0, import_core.stringify)(swrOptions.options)) == null ? void 0 : _a.slice(1, -1)}
|
|
262
|
+
...swrOptions
|
|
263
|
+
}` : "swrOptions"})
|
|
210
264
|
|
|
265
|
+
return {
|
|
266
|
+
swrKeyLoader,
|
|
267
|
+
...${queryResultVarName}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
` : "";
|
|
271
|
+
const useSwrImplementation = `
|
|
272
|
+
export type ${(0, import_core.pascal)(
|
|
273
|
+
operationName
|
|
274
|
+
)}QueryResult = NonNullable<Awaited<ReturnType<typeof ${operationName}>>>
|
|
275
|
+
export type ${(0, import_core.pascal)(operationName)}QueryError = ${errorType}
|
|
276
|
+
|
|
277
|
+
${doc}export const ${(0, import_core.camel)(`use-${operationName}`)} = <TError = ${errorType}>(
|
|
278
|
+
${swrProps} ${generateSwrArguments({
|
|
279
|
+
operationName,
|
|
280
|
+
mutator,
|
|
281
|
+
isRequestOptions,
|
|
282
|
+
isInfinite: false
|
|
283
|
+
})}) => {
|
|
211
284
|
${isRequestOptions ? `const {swr: swrOptions${!mutator ? `, axios: axiosOptions` : (mutator == null ? void 0 : mutator.hasSecondArg) ? ", request: requestOptions" : ""}} = options ?? {}` : ""}
|
|
212
285
|
|
|
286
|
+
${enabledImplementation}
|
|
213
287
|
${swrKeyImplementation}
|
|
214
288
|
const swrFn = () => ${operationName}(${httpFunctionProps}${httpFunctionProps ? ", " : ""}${isRequestOptions ? !mutator ? `axiosOptions` : (mutator == null ? void 0 : mutator.hasSecondArg) ? "requestOptions" : "" : ""});
|
|
215
289
|
|
|
216
|
-
const
|
|
290
|
+
const ${queryResultVarName} = useSwr<Awaited<ReturnType<typeof swrFn>>, TError>(swrKey, swrFn, ${swrOptions.options ? `{
|
|
291
|
+
${(_b = (0, import_core.stringify)(swrOptions.options)) == null ? void 0 : _b.slice(1, -1)}
|
|
292
|
+
...swrOptions
|
|
293
|
+
}` : "swrOptions"})
|
|
294
|
+
|
|
295
|
+
return {
|
|
296
|
+
swrKey,
|
|
297
|
+
...${queryResultVarName}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
`;
|
|
301
|
+
return useSWRInfiniteImplementation + useSwrImplementation;
|
|
302
|
+
};
|
|
303
|
+
var generateSwrMutationImplementation = ({
|
|
304
|
+
isRequestOptions,
|
|
305
|
+
operationName,
|
|
306
|
+
swrKeyFnName,
|
|
307
|
+
swrMutationFetcherName,
|
|
308
|
+
swrKeyProperties,
|
|
309
|
+
swrMutationFetcherProperties,
|
|
310
|
+
swrProps,
|
|
311
|
+
props,
|
|
312
|
+
response,
|
|
313
|
+
mutator,
|
|
314
|
+
swrOptions,
|
|
315
|
+
doc
|
|
316
|
+
}) => {
|
|
317
|
+
var _a;
|
|
318
|
+
const hasParamReservedWord = props.some(
|
|
319
|
+
(prop) => prop.name === "query"
|
|
320
|
+
);
|
|
321
|
+
const queryResultVarName = hasParamReservedWord ? "_query" : "query";
|
|
322
|
+
const swrKeyImplementation = `const swrKey = swrOptions?.swrKey ?? ${swrKeyFnName}(${swrKeyProperties});`;
|
|
323
|
+
let errorType = `AxiosError<${response.definition.errors || "unknown"}>`;
|
|
324
|
+
if (mutator) {
|
|
325
|
+
errorType = mutator.hasErrorType ? `ErrorType<${response.definition.errors || "unknown"}>` : response.definition.errors || "unknown";
|
|
326
|
+
}
|
|
327
|
+
const useSwrImplementation = `
|
|
328
|
+
export type ${(0, import_core.pascal)(
|
|
329
|
+
operationName
|
|
330
|
+
)}MutationResult = NonNullable<Awaited<ReturnType<typeof ${operationName}>>>
|
|
331
|
+
export type ${(0, import_core.pascal)(operationName)}MutationError = ${errorType}
|
|
332
|
+
|
|
333
|
+
${doc}export const ${(0, import_core.camel)(`use-${operationName}`)} = <TError = ${errorType}>(
|
|
334
|
+
${swrProps} ${generateSwrMutationArguments({
|
|
335
|
+
operationName,
|
|
336
|
+
isRequestOptions,
|
|
337
|
+
mutator
|
|
338
|
+
})}) => {
|
|
339
|
+
|
|
340
|
+
${isRequestOptions ? `const {swr: swrOptions${!mutator ? `, axios: axiosOptions` : (mutator == null ? void 0 : mutator.hasSecondArg) ? ", request: requestOptions" : ""}} = options ?? {}` : ""}
|
|
341
|
+
|
|
342
|
+
${swrKeyImplementation}
|
|
343
|
+
const swrFn = ${swrMutationFetcherName}(${swrMutationFetcherProperties}${swrMutationFetcherProperties && isRequestOptions ? "," : ""}${isRequestOptions ? !mutator ? `axiosOptions` : (mutator == null ? void 0 : mutator.hasSecondArg) ? "requestOptions" : "" : ""});
|
|
344
|
+
|
|
345
|
+
const ${queryResultVarName} = useSWRMutation(swrKey, swrFn, ${swrOptions.options ? `{
|
|
217
346
|
${(_a = (0, import_core.stringify)(swrOptions.options)) == null ? void 0 : _a.slice(1, -1)}
|
|
218
347
|
...swrOptions
|
|
219
348
|
}` : "swrOptions"})
|
|
220
349
|
|
|
221
350
|
return {
|
|
222
351
|
swrKey,
|
|
223
|
-
|
|
352
|
+
...${queryResultVarName}
|
|
224
353
|
}
|
|
225
354
|
}
|
|
226
355
|
`;
|
|
356
|
+
return useSwrImplementation;
|
|
227
357
|
};
|
|
228
358
|
var generateSwrHook = ({
|
|
229
359
|
queryParams,
|
|
@@ -239,41 +369,124 @@ var generateSwrHook = ({
|
|
|
239
369
|
deprecated
|
|
240
370
|
}, { route }) => {
|
|
241
371
|
const isRequestOptions = (override == null ? void 0 : override.requestOptions) !== false;
|
|
242
|
-
if (verb !== import_core.Verbs.GET) {
|
|
243
|
-
return "";
|
|
244
|
-
}
|
|
245
|
-
const swrProperties = props.map((param) => {
|
|
246
|
-
if (param.type === import_core.GetterPropType.NAMED_PATH_PARAMS)
|
|
247
|
-
return param.destructured;
|
|
248
|
-
return param.type === import_core.GetterPropType.BODY ? body.implementation : param.name;
|
|
249
|
-
}).join(",");
|
|
250
|
-
const swrKeyProperties = props.filter((prop) => prop.type !== import_core.GetterPropType.HEADER).map((param) => {
|
|
251
|
-
if (param.type === import_core.GetterPropType.NAMED_PATH_PARAMS)
|
|
252
|
-
return param.destructured;
|
|
253
|
-
return param.type === import_core.GetterPropType.BODY ? body.implementation : param.name;
|
|
254
|
-
}).join(",");
|
|
255
|
-
const swrKeyFnName = (0, import_core.camel)(`get-${operationName}-key`);
|
|
256
|
-
const queryKeyProps = (0, import_core.toObjectString)(
|
|
257
|
-
props.filter((prop) => prop.type !== import_core.GetterPropType.HEADER),
|
|
258
|
-
"implementation"
|
|
259
|
-
);
|
|
260
372
|
const doc = (0, import_core.jsDoc)({ summary, deprecated });
|
|
261
|
-
|
|
373
|
+
if (verb === import_core.Verbs.GET) {
|
|
374
|
+
const swrKeyProperties = props.filter((prop) => prop.type !== import_core.GetterPropType.HEADER).map((param) => {
|
|
375
|
+
if (param.type === import_core.GetterPropType.NAMED_PATH_PARAMS)
|
|
376
|
+
return param.destructured;
|
|
377
|
+
return param.type === import_core.GetterPropType.BODY ? body.implementation : param.name;
|
|
378
|
+
}).join(",");
|
|
379
|
+
const swrProperties = props.map((param) => {
|
|
380
|
+
if (param.type === import_core.GetterPropType.NAMED_PATH_PARAMS)
|
|
381
|
+
return param.destructured;
|
|
382
|
+
return param.type === import_core.GetterPropType.BODY ? body.implementation : param.name;
|
|
383
|
+
}).join(",");
|
|
384
|
+
const queryKeyProps = (0, import_core.toObjectString)(
|
|
385
|
+
props.filter((prop) => prop.type !== import_core.GetterPropType.HEADER),
|
|
386
|
+
"implementation"
|
|
387
|
+
);
|
|
388
|
+
const swrKeyFnName = (0, import_core.camel)(`get-${operationName}-key`);
|
|
389
|
+
const swrKeyFn = `
|
|
390
|
+
export const ${swrKeyFnName} = (${queryKeyProps}) => [\`${route}\`${queryParams ? ", ...(params ? [params]: [])" : ""}${body.implementation ? `, ${body.implementation}` : ""}] as const;
|
|
262
391
|
|
|
263
|
-
${generateSwrImplementation({
|
|
264
|
-
operationName,
|
|
265
|
-
swrKeyFnName,
|
|
266
|
-
swrProperties,
|
|
267
|
-
swrKeyProperties,
|
|
268
|
-
params,
|
|
269
|
-
props,
|
|
270
|
-
mutator,
|
|
271
|
-
isRequestOptions,
|
|
272
|
-
response,
|
|
273
|
-
swrOptions: override.swr,
|
|
274
|
-
doc
|
|
275
|
-
})}
|
|
276
392
|
`;
|
|
393
|
+
const swrKeyLoaderFnName = (0, import_core.camel)(
|
|
394
|
+
`get-${operationName}-infinite-key-loader`
|
|
395
|
+
);
|
|
396
|
+
const swrKeyLoader = override.swr.useInfinite ? `export const ${swrKeyLoaderFnName} = (${queryKeyProps}) => {
|
|
397
|
+
return (_: number, previousPageData: Awaited<ReturnType<typeof ${operationName}>>) => {
|
|
398
|
+
if (previousPageData && !previousPageData.data) return null
|
|
399
|
+
|
|
400
|
+
return [\`${route}\`${queryParams ? ", ...(params ? [params]: [])" : ""}${body.implementation ? `, ${body.implementation}` : ""}] as const;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
` : "";
|
|
404
|
+
const swrImplementation = generateSwrImplementation({
|
|
405
|
+
operationName,
|
|
406
|
+
swrKeyFnName,
|
|
407
|
+
swrKeyLoaderFnName,
|
|
408
|
+
swrProperties,
|
|
409
|
+
swrKeyProperties,
|
|
410
|
+
params,
|
|
411
|
+
props,
|
|
412
|
+
mutator,
|
|
413
|
+
isRequestOptions,
|
|
414
|
+
response,
|
|
415
|
+
swrOptions: override.swr,
|
|
416
|
+
doc
|
|
417
|
+
});
|
|
418
|
+
return swrKeyFn + swrKeyLoader + swrImplementation;
|
|
419
|
+
} else {
|
|
420
|
+
const queryKeyProps = (0, import_core.toObjectString)(
|
|
421
|
+
props.filter(
|
|
422
|
+
(prop) => prop.type === import_core.GetterPropType.PARAM || prop.type === import_core.GetterPropType.NAMED_PATH_PARAMS
|
|
423
|
+
),
|
|
424
|
+
"implementation"
|
|
425
|
+
);
|
|
426
|
+
const swrProps = (0, import_core.toObjectString)(
|
|
427
|
+
props.filter(
|
|
428
|
+
(prop) => prop.type === import_core.GetterPropType.PARAM || prop.type === import_core.GetterPropType.QUERY_PARAM || prop.type === import_core.GetterPropType.NAMED_PATH_PARAMS
|
|
429
|
+
),
|
|
430
|
+
"implementation"
|
|
431
|
+
);
|
|
432
|
+
const swrMutationFetcherProperties = props.filter(
|
|
433
|
+
(prop) => prop.type === import_core.GetterPropType.PARAM || prop.type === import_core.GetterPropType.QUERY_PARAM || prop.type === import_core.GetterPropType.NAMED_PATH_PARAMS
|
|
434
|
+
).map((param) => {
|
|
435
|
+
if (param.type === import_core.GetterPropType.NAMED_PATH_PARAMS) {
|
|
436
|
+
return param.destructured;
|
|
437
|
+
} else {
|
|
438
|
+
return param.name;
|
|
439
|
+
}
|
|
440
|
+
}).join(",");
|
|
441
|
+
const httpFnProperties = props.filter((prop) => prop.type !== import_core.GetterPropType.HEADER).map((prop) => {
|
|
442
|
+
if (prop.type === import_core.GetterPropType.NAMED_PATH_PARAMS) {
|
|
443
|
+
return prop.destructured;
|
|
444
|
+
} else if (prop.type === import_core.GetterPropType.BODY) {
|
|
445
|
+
return `arg as ${prop.implementation.split(": ")[1]}`;
|
|
446
|
+
} else {
|
|
447
|
+
return prop.name;
|
|
448
|
+
}
|
|
449
|
+
}).join(", ");
|
|
450
|
+
const swrKeyProperties = props.filter(
|
|
451
|
+
(prop) => prop.type === import_core.GetterPropType.PARAM || prop.type === import_core.GetterPropType.NAMED_PATH_PARAMS
|
|
452
|
+
).map((prop) => {
|
|
453
|
+
if (prop.type === import_core.GetterPropType.NAMED_PATH_PARAMS) {
|
|
454
|
+
return prop.destructured;
|
|
455
|
+
} else {
|
|
456
|
+
return prop.name;
|
|
457
|
+
}
|
|
458
|
+
}).join(",");
|
|
459
|
+
const swrKeyFnName = (0, import_core.camel)(`get-${operationName}-mutation-key`);
|
|
460
|
+
const swrMutationKeyFn = `export const ${swrKeyFnName} = (${queryKeyProps}) => \`${route}\` as const;
|
|
461
|
+
`;
|
|
462
|
+
const swrMutationFetcherName = (0, import_core.camel)(
|
|
463
|
+
`get-${operationName}-mutation-fetcher`
|
|
464
|
+
);
|
|
465
|
+
const swrMutationFetcherType = mutator ? `Promise<${response.definition.success || "unknown"}>` : `Promise<AxiosResponse<${response.definition.success || "unknown"}>>`;
|
|
466
|
+
const swrMutationFetcherOptions = !mutator && isRequestOptions ? "options?: AxiosRequestConfig" : "";
|
|
467
|
+
const swrMutationFetcherFn = `
|
|
468
|
+
export const ${swrMutationFetcherName} = (${swrProps} ${swrMutationFetcherOptions}) => {
|
|
469
|
+
return (_: string, { arg }: { arg: Arguments }): ${swrMutationFetcherType} => {
|
|
470
|
+
return ${operationName}(${httpFnProperties}${swrMutationFetcherOptions.length ? ", options" : ""});
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
`;
|
|
474
|
+
const swrImplementation = generateSwrMutationImplementation({
|
|
475
|
+
operationName,
|
|
476
|
+
swrKeyFnName,
|
|
477
|
+
swrMutationFetcherName,
|
|
478
|
+
swrKeyProperties,
|
|
479
|
+
swrMutationFetcherProperties,
|
|
480
|
+
swrProps,
|
|
481
|
+
props,
|
|
482
|
+
isRequestOptions,
|
|
483
|
+
response,
|
|
484
|
+
mutator,
|
|
485
|
+
swrOptions: override.swr,
|
|
486
|
+
doc
|
|
487
|
+
});
|
|
488
|
+
return swrMutationFetcherFn + swrMutationKeyFn + swrImplementation;
|
|
489
|
+
}
|
|
277
490
|
};
|
|
278
491
|
var generateSwrHeader = ({
|
|
279
492
|
isRequestOptions,
|
|
@@ -285,13 +498,7 @@ var generateSwrHeader = ({
|
|
|
285
498
|
type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;
|
|
286
499
|
|
|
287
500
|
` : ""}
|
|
288
|
-
${isRequestOptions && isMutator ?
|
|
289
|
-
type SecondParameter<T extends (...args: any) => any> = T extends (
|
|
290
|
-
config: any,
|
|
291
|
-
args: infer P,
|
|
292
|
-
) => any
|
|
293
|
-
? P
|
|
294
|
-
: never;
|
|
501
|
+
${isRequestOptions && isMutator ? `type SecondParameter<T extends (...args: any) => any> = Parameters<T>[1];
|
|
295
502
|
|
|
296
503
|
` : ""}`;
|
|
297
504
|
var generateSwr = (verbOptions, options) => {
|
|
@@ -322,3 +529,4 @@ var src_default = builder;
|
|
|
322
529
|
generateSwrHeader,
|
|
323
530
|
getSwrDependencies
|
|
324
531
|
});
|
|
532
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n camel,\n ClientBuilder,\n ClientDependenciesBuilder,\n ClientGeneratorsBuilder,\n ClientHeaderBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateMutatorConfig,\n generateMutatorRequestOptions,\n generateOptions,\n generateVerbImports,\n GeneratorDependency,\n GeneratorMutator,\n GeneratorOptions,\n GeneratorVerbOptions,\n GetterParams,\n GetterProp,\n GetterProps,\n GetterPropType,\n GetterResponse,\n isSyntheticDefaultImportsAllow,\n pascal,\n stringify,\n toObjectString,\n Verbs,\n VERBS_WITH_BODY,\n jsDoc,\n SwrOptions,\n} from '@orval/core';\n\nconst AXIOS_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'axios',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n { name: 'AxiosRequestConfig' },\n { name: 'AxiosResponse' },\n { name: 'AxiosError' },\n ],\n dependency: 'axios',\n },\n];\n\nconst PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'qs',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n ],\n dependency: 'qs',\n },\n];\n\nconst SWR_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useSwr', values: true, default: true },\n { name: 'SWRConfiguration' },\n { name: 'Key' },\n { name: 'Arguments' },\n ],\n dependency: 'swr',\n },\n];\n\nconst SWR_INFINITE_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useSWRInfinite', values: true, default: true },\n { name: 'SWRInfiniteConfiguration' },\n { name: 'SWRInfiniteKeyLoader' },\n ],\n dependency: 'swr/infinite',\n },\n];\n\nconst SWR_MUTATION_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useSWRMutation', values: true, default: true },\n { name: 'SWRMutationConfiguration' },\n { name: 'SWRMutationKey' },\n ],\n dependency: 'swr/mutation',\n },\n];\n\nexport const getSwrDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n) => [\n ...(!hasGlobalMutator ? AXIOS_DEPENDENCIES : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...SWR_DEPENDENCIES,\n ...SWR_INFINITE_DEPENDENCIES,\n ...SWR_MUTATION_DEPENDENCIES,\n];\n\nconst generateSwrRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n formData,\n formUrlEncoded,\n override,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route, context }: GeneratorOptions,\n) => {\n const isRequestOptions = override?.requestOptions !== false;\n const isFormData = override?.formData !== false;\n const isFormUrlEncoded = override?.formUrlEncoded !== false;\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n const isBodyVerb = VERBS_WITH_BODY.includes(verb);\n const isSyntheticDefaultImportsAllowed = isSyntheticDefaultImportsAllow(\n context.output.tsconfig,\n );\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n if (mutator) {\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal: false,\n isBodyVerb,\n isExactOptionalPropertyTypes,\n });\n\n const propsImplementation =\n mutator?.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(`(\\\\w*):\\\\s?${body.definition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override?.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n return `export const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options?: SecondParameter<typeof ${mutator.name}>`\n : ''\n }) => {${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n const options = generateOptions({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n requestOptions: override?.requestOptions,\n isFormData,\n isFormUrlEncoded,\n paramsSerializer,\n paramsSerializerOptions: override?.paramsSerializerOptions,\n isExactOptionalPropertyTypes,\n hasSignal: false,\n });\n\n return `export const ${operationName} = (\\n ${toObjectString(\n props,\n 'implementation',\n )} ${\n isRequestOptions ? `options?: AxiosRequestConfig\\n` : ''\n } ): Promise<AxiosResponse<${\n response.definition.success || 'unknown'\n }>> => {${bodyForm}\n return axios${\n !isSyntheticDefaultImportsAllowed ? '.default' : ''\n }.${verb}(${options});\n }\n`;\n};\n\nconst generateSwrArguments = ({\n operationName,\n mutator,\n isRequestOptions,\n isInfinite,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n isRequestOptions: boolean;\n isInfinite: boolean;\n}) => {\n const configType = isInfinite\n ? 'SWRInfiniteConfiguration'\n : 'SWRConfiguration';\n const optionsType = isInfinite\n ? '{ swrKeyLoader?: SWRInfiniteKeyLoader, enabled?: boolean }'\n : '{ swrKey?: Key, enabled?: boolean }';\n const definition = `${configType}<Awaited<ReturnType<typeof ${operationName}>>, TError> & ${optionsType}`;\n\n if (!isRequestOptions) {\n return `swrOptions?: ${definition}`;\n }\n\n return `options?: { swr?:${definition}, ${\n !mutator\n ? `axios?: AxiosRequestConfig`\n : mutator?.hasSecondArg\n ? `request?: SecondParameter<typeof ${mutator.name}>`\n : ''\n } }\\n`;\n};\n\nconst generateSwrMutationArguments = ({\n operationName,\n isRequestOptions,\n mutator,\n}: {\n operationName: string;\n isRequestOptions: boolean;\n mutator?: GeneratorMutator;\n}) => {\n const definition = `SWRMutationConfiguration<Awaited<ReturnType<typeof ${operationName}>>, TError, string, Arguments, Awaited<ReturnType<typeof ${operationName}>>> & { swrKey?: string }`;\n\n if (!isRequestOptions) {\n return `swrOptions?: ${definition}`;\n }\n\n return `options?: { swr?:${definition}, ${\n !mutator\n ? `axios?: AxiosRequestConfig`\n : mutator?.hasSecondArg\n ? `request?: SecondParameter<typeof ${mutator.name}>`\n : ''\n } }\\n`;\n};\n\nconst generateSwrImplementation = ({\n operationName,\n swrKeyFnName,\n swrKeyLoaderFnName,\n swrProperties,\n swrKeyProperties,\n params,\n mutator,\n isRequestOptions,\n response,\n swrOptions,\n props,\n doc,\n}: {\n isRequestOptions: boolean;\n operationName: string;\n swrKeyFnName: string;\n swrKeyLoaderFnName: string;\n swrProperties: string;\n swrKeyProperties: string;\n params: GetterParams;\n props: GetterProps;\n response: GetterResponse;\n mutator?: GeneratorMutator;\n swrOptions: SwrOptions;\n doc?: string;\n}) => {\n const swrProps = toObjectString(props, 'implementation');\n\n const hasParamReservedWord = props.some(\n (prop: GetterProp) => prop.name === 'query',\n );\n const queryResultVarName = hasParamReservedWord ? '_query' : 'query';\n\n const httpFunctionProps = swrProperties;\n\n const enabledImplementation = `const isEnabled = swrOptions?.enabled !== false${\n params.length\n ? ` && !!(${params.map(({ name }) => name).join(' && ')})`\n : ''\n }`;\n const swrKeyImplementation = `const swrKey = swrOptions?.swrKey ?? (() => isEnabled ? ${swrKeyFnName}(${swrKeyProperties}) : null);`;\n const swrKeyLoaderImplementation = `const swrKeyLoader = swrOptions?.swrKeyLoader ?? (() => isEnabled ? ${swrKeyLoaderFnName}(${swrKeyProperties}) : null);`;\n\n let errorType = `AxiosError<${response.definition.errors || 'unknown'}>`;\n\n if (mutator) {\n errorType = mutator.hasErrorType\n ? `ErrorType<${response.definition.errors || 'unknown'}>`\n : response.definition.errors || 'unknown';\n }\n\n const useSWRInfiniteImplementation = swrOptions.useInfinite\n ? `\nexport type ${pascal(\n operationName,\n )}InfiniteQueryResult = NonNullable<Awaited<ReturnType<typeof ${operationName}>>>\nexport type ${pascal(operationName)}InfiniteError = ${errorType}\n\n${doc}export const ${camel(\n `use-${operationName}-infinite`,\n )} = <TError = ${errorType}>(\n ${swrProps} ${generateSwrArguments({\n operationName,\n mutator,\n isRequestOptions,\n isInfinite: true,\n })}) => {\n ${\n isRequestOptions\n ? `const {swr: swrOptions${\n !mutator\n ? `, axios: axiosOptions`\n : mutator?.hasSecondArg\n ? ', request: requestOptions'\n : ''\n }} = options ?? {}`\n : ''\n }\n\n ${enabledImplementation}\n ${swrKeyLoaderImplementation}\n const swrFn = () => ${operationName}(${httpFunctionProps}${\n httpFunctionProps ? ', ' : ''\n }${\n isRequestOptions\n ? !mutator\n ? `axiosOptions`\n : mutator?.hasSecondArg\n ? 'requestOptions'\n : ''\n : ''\n });\n\n const ${queryResultVarName} = useSWRInfinite<Awaited<ReturnType<typeof swrFn>>, TError>(swrKeyLoader, swrFn, ${\n swrOptions.options\n ? `{\n ${stringify(swrOptions.options)?.slice(1, -1)}\n ...swrOptions\n }`\n : 'swrOptions'\n })\n\n return {\n swrKeyLoader,\n ...${queryResultVarName}\n }\n}\\n`\n : '';\n\n const useSwrImplementation = `\nexport type ${pascal(\n operationName,\n )}QueryResult = NonNullable<Awaited<ReturnType<typeof ${operationName}>>>\nexport type ${pascal(operationName)}QueryError = ${errorType}\n\n${doc}export const ${camel(`use-${operationName}`)} = <TError = ${errorType}>(\n ${swrProps} ${generateSwrArguments({\n operationName,\n mutator,\n isRequestOptions,\n isInfinite: false,\n })}) => {\n ${\n isRequestOptions\n ? `const {swr: swrOptions${\n !mutator\n ? `, axios: axiosOptions`\n : mutator?.hasSecondArg\n ? ', request: requestOptions'\n : ''\n }} = options ?? {}`\n : ''\n }\n\n ${enabledImplementation}\n ${swrKeyImplementation}\n const swrFn = () => ${operationName}(${httpFunctionProps}${\n httpFunctionProps ? ', ' : ''\n }${\n isRequestOptions\n ? !mutator\n ? `axiosOptions`\n : mutator?.hasSecondArg\n ? 'requestOptions'\n : ''\n : ''\n });\n\n const ${queryResultVarName} = useSwr<Awaited<ReturnType<typeof swrFn>>, TError>(swrKey, swrFn, ${\n swrOptions.options\n ? `{\n ${stringify(swrOptions.options)?.slice(1, -1)}\n ...swrOptions\n }`\n : 'swrOptions'\n })\n\n return {\n swrKey,\n ...${queryResultVarName}\n }\n}\\n`;\n\n return useSWRInfiniteImplementation + useSwrImplementation;\n};\n\nconst generateSwrMutationImplementation = ({\n isRequestOptions,\n operationName,\n swrKeyFnName,\n swrMutationFetcherName,\n swrKeyProperties,\n swrMutationFetcherProperties,\n swrProps,\n props,\n response,\n mutator,\n swrOptions,\n doc,\n}: {\n isRequestOptions: boolean;\n operationName: string;\n swrKeyFnName: string;\n swrMutationFetcherName: string;\n swrKeyProperties: string;\n swrMutationFetcherProperties: string;\n swrProps: string;\n props: GetterProps;\n response: GetterResponse;\n mutator?: GeneratorMutator;\n swrOptions: SwrOptions;\n doc?: string;\n}) => {\n const hasParamReservedWord = props.some(\n (prop: GetterProp) => prop.name === 'query',\n );\n const queryResultVarName = hasParamReservedWord ? '_query' : 'query';\n\n const swrKeyImplementation = `const swrKey = swrOptions?.swrKey ?? ${swrKeyFnName}(${swrKeyProperties});`;\n\n let errorType = `AxiosError<${response.definition.errors || 'unknown'}>`;\n\n if (mutator) {\n errorType = mutator.hasErrorType\n ? `ErrorType<${response.definition.errors || 'unknown'}>`\n : response.definition.errors || 'unknown';\n }\n\n const useSwrImplementation = `\nexport type ${pascal(\n operationName,\n )}MutationResult = NonNullable<Awaited<ReturnType<typeof ${operationName}>>>\nexport type ${pascal(operationName)}MutationError = ${errorType}\n\n${doc}export const ${camel(`use-${operationName}`)} = <TError = ${errorType}>(\n ${swrProps} ${generateSwrMutationArguments({\n operationName,\n isRequestOptions,\n mutator,\n })}) => {\n\n ${\n isRequestOptions\n ? `const {swr: swrOptions${\n !mutator\n ? `, axios: axiosOptions`\n : mutator?.hasSecondArg\n ? ', request: requestOptions'\n : ''\n }} = options ?? {}`\n : ''\n }\n\n ${swrKeyImplementation}\n const swrFn = ${swrMutationFetcherName}(${swrMutationFetcherProperties}${\n swrMutationFetcherProperties && isRequestOptions ? ',' : ''\n }${\n isRequestOptions\n ? !mutator\n ? `axiosOptions`\n : mutator?.hasSecondArg\n ? 'requestOptions'\n : ''\n : ''\n });\n\n const ${queryResultVarName} = useSWRMutation(swrKey, swrFn, ${\n swrOptions.options\n ? `{\n ${stringify(swrOptions.options)?.slice(1, -1)}\n ...swrOptions\n }`\n : 'swrOptions'\n })\n\n return {\n swrKey,\n ...${queryResultVarName}\n }\n}\\n`;\n\n return useSwrImplementation;\n};\n\nconst generateSwrHook = (\n {\n queryParams,\n operationName,\n body,\n props,\n verb,\n params,\n override,\n mutator,\n response,\n summary,\n deprecated,\n }: GeneratorVerbOptions,\n { route }: GeneratorOptions,\n) => {\n const isRequestOptions = override?.requestOptions !== false;\n const doc = jsDoc({ summary, deprecated });\n\n if (verb === Verbs.GET) {\n const swrKeyProperties = props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.type === GetterPropType.BODY\n ? body.implementation\n : param.name;\n })\n .join(',');\n\n const swrProperties = props\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.type === GetterPropType.BODY\n ? body.implementation\n : param.name;\n })\n .join(',');\n\n const queryKeyProps = toObjectString(\n props.filter((prop) => prop.type !== GetterPropType.HEADER),\n 'implementation',\n );\n\n const swrKeyFnName = camel(`get-${operationName}-key`);\n const swrKeyFn = `\nexport const ${swrKeyFnName} = (${queryKeyProps}) => [\\`${route}\\`${\n queryParams ? ', ...(params ? [params]: [])' : ''\n }${body.implementation ? `, ${body.implementation}` : ''}] as const;\n\\n`;\n\n const swrKeyLoaderFnName = camel(\n `get-${operationName}-infinite-key-loader`,\n );\n const swrKeyLoader = override.swr.useInfinite\n ? `export const ${swrKeyLoaderFnName} = (${queryKeyProps}) => {\n return (_: number, previousPageData: Awaited<ReturnType<typeof ${operationName}>>) => {\n if (previousPageData && !previousPageData.data) return null\n\n return [\\`${route}\\`${queryParams ? ', ...(params ? [params]: [])' : ''}${\n body.implementation ? `, ${body.implementation}` : ''\n }] as const;\n }\n}\\n`\n : '';\n\n const swrImplementation = generateSwrImplementation({\n operationName,\n swrKeyFnName,\n swrKeyLoaderFnName,\n swrProperties,\n swrKeyProperties,\n params,\n props,\n mutator,\n isRequestOptions,\n response,\n swrOptions: override.swr,\n doc,\n });\n\n return swrKeyFn + swrKeyLoader + swrImplementation;\n } else {\n const queryKeyProps = toObjectString(\n props.filter(\n (prop) =>\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS,\n ),\n 'implementation',\n );\n\n const swrProps = toObjectString(\n props.filter(\n (prop) =>\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.QUERY_PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS,\n ),\n 'implementation',\n );\n\n const swrMutationFetcherProperties = props\n .filter(\n (prop) =>\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.QUERY_PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS,\n )\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS) {\n return param.destructured;\n } else {\n return param.name;\n }\n })\n .join(',');\n\n const httpFnProperties = props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((prop) => {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS) {\n return prop.destructured;\n } else if (prop.type === GetterPropType.BODY) {\n return `arg as ${prop.implementation.split(': ')[1]}`;\n } else {\n return prop.name;\n }\n })\n .join(', ');\n\n const swrKeyProperties = props\n .filter(\n (prop) =>\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS,\n )\n .map((prop) => {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS) {\n return prop.destructured;\n } else {\n return prop.name;\n }\n })\n .join(',');\n\n const swrKeyFnName = camel(`get-${operationName}-mutation-key`);\n const swrMutationKeyFn = `export const ${swrKeyFnName} = (${queryKeyProps}) => \\`${route}\\` as const;\\n`;\n\n const swrMutationFetcherName = camel(\n `get-${operationName}-mutation-fetcher`,\n );\n const swrMutationFetcherType = mutator\n ? `Promise<${response.definition.success || 'unknown'}>`\n : `Promise<AxiosResponse<${response.definition.success || 'unknown'}>>`;\n const swrMutationFetcherOptions =\n !mutator && isRequestOptions ? 'options?: AxiosRequestConfig' : '';\n\n const swrMutationFetcherFn = `\nexport const ${swrMutationFetcherName} = (${swrProps} ${swrMutationFetcherOptions}) => {\n return (_: string, { arg }: { arg: Arguments }): ${swrMutationFetcherType} => {\n return ${operationName}(${httpFnProperties}${\n swrMutationFetcherOptions.length ? ', options' : ''\n });\n }\n}\\n`;\n\n const swrImplementation = generateSwrMutationImplementation({\n operationName,\n swrKeyFnName,\n swrMutationFetcherName,\n swrKeyProperties,\n swrMutationFetcherProperties,\n swrProps,\n props,\n isRequestOptions,\n response,\n mutator,\n swrOptions: override.swr,\n doc,\n });\n\n return swrMutationFetcherFn + swrMutationKeyFn + swrImplementation;\n }\n};\n\nexport const generateSwrHeader: ClientHeaderBuilder = ({\n isRequestOptions,\n isMutator,\n hasAwaitedType,\n}) =>\n `\n ${\n !hasAwaitedType\n ? `type AwaitedInput<T> = PromiseLike<T> | T;\\n\n type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;\\n\\n`\n : ''\n }\n ${\n isRequestOptions && isMutator\n ? `type SecondParameter<T extends (...args: any) => any> = Parameters<T>[1];\\n\\n`\n : ''\n }`;\n\nexport const generateSwr: ClientBuilder = (verbOptions, options) => {\n const imports = generateVerbImports(verbOptions);\n const functionImplementation = generateSwrRequestFunction(\n verbOptions,\n options,\n );\n const hookImplementation = generateSwrHook(verbOptions, options);\n\n return {\n implementation: `${functionImplementation}\\n\\n${hookImplementation}`,\n imports,\n };\n};\n\nconst swrClientBuilder: ClientGeneratorsBuilder = {\n client: generateSwr,\n header: generateSwrHeader,\n dependencies: getSwrDependencies,\n};\n\nexport const builder = () => () => swrClientBuilder;\n\nexport default builder;\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orval/swr",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.24.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
"dist"
|
|
9
9
|
],
|
|
10
10
|
"scripts": {
|
|
11
|
-
"build": "tsup ./src/index.ts --target node12 --clean --dts",
|
|
12
|
-
"dev": "tsup ./src/index.ts --target node12 --clean --watch src",
|
|
11
|
+
"build": "tsup ./src/index.ts --target node12 --clean --sourcemap --dts",
|
|
12
|
+
"dev": "tsup ./src/index.ts --target node12 --clean --sourcemap --watch src",
|
|
13
13
|
"lint": "eslint src/**/*.ts"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@orval/core": "6.
|
|
16
|
+
"@orval/core": "6.24.0"
|
|
17
17
|
}
|
|
18
18
|
}
|