@orval/axios 8.4.2 → 8.5.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.mjs +1 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -7
package/dist/index.mjs
CHANGED
|
@@ -162,8 +162,7 @@ const builder = ({ type = "axios-functions" } = {}) => () => {
|
|
|
162
162
|
if (type === "axios-functions") return axiosFunctionsClientBuilder;
|
|
163
163
|
return axiosClientBuilder;
|
|
164
164
|
};
|
|
165
|
-
var src_default = builder;
|
|
166
165
|
|
|
167
166
|
//#endregion
|
|
168
|
-
export { builder,
|
|
167
|
+
export { builder, builder as default, generateAxios, generateAxiosFactory, generateAxiosFooter, generateAxiosFunctions, generateAxiosHeader, generateAxiosTitle, getAxiosDependencies, getAxiosFactoryDependencies };
|
|
169
168
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["AXIOS_DEPENDENCIES: GeneratorDependency[]","PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[]","getAxiosDependencies: ClientDependenciesBuilder","getAxiosFactoryDependencies: ClientDependenciesBuilder","generateAxiosTitle: ClientTitleBuilder","generateAxiosHeader: ClientHeaderBuilder","generateAxiosFooter: ClientFooterBuilder","generateAxiosFactory: ClientBuilder","generateAxiosFunctions: ClientBuilder","axiosClientBuilder: ClientGeneratorsBuilder","axiosFunctionsClientBuilder: ClientGeneratorsBuilder"],"sources":["../src/index.ts"],"sourcesContent":["import {\n type ClientBuilder,\n type ClientDependenciesBuilder,\n type ClientFooterBuilder,\n type ClientGeneratorsBuilder,\n type ClientHeaderBuilder,\n type ClientTitleBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateMutatorConfig,\n generateMutatorRequestOptions,\n generateOptions,\n generateVerbImports,\n type GeneratorDependency,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n isSyntheticDefaultImportsAllow,\n pascal,\n sanitize,\n toObjectString,\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 ],\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 returnTypesToWrite = new Map<string, (title?: string) => string>();\n\nexport const getAxiosDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions: boolean,\n) => [\n ...(hasGlobalMutator ? [] : AXIOS_DEPENDENCIES),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n];\n\n// Factory mode needs axios default import (for optional parameter default value)\n// plus AxiosInstance type for the parameter type\n// When using mutator, AxiosInstance is not needed as the mutator handles the axios instance\nexport const getAxiosFactoryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions: boolean,\n _packageJson,\n _httpClient,\n hasTagsMutator,\n) => [\n {\n exports: [\n {\n name: 'axios',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n // Only include AxiosInstance if we're not using a mutator (global or tags)\n ...(!hasGlobalMutator && !hasTagsMutator\n ? [{ name: 'AxiosInstance' }]\n : []),\n ...(hasGlobalMutator\n ? []\n : [{ name: 'AxiosRequestConfig' }, { name: 'AxiosResponse' }]),\n ],\n dependency: 'axios',\n },\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n];\n\nconst generateAxiosImplementation = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n override,\n formData,\n formUrlEncoded,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route, context }: GeneratorOptions,\n isFactoryMode = false,\n) => {\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\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 isExactOptionalPropertyTypes,\n });\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n returnTypesToWrite.set(\n operationName,\n (title?: string) =>\n `export type ${pascal(\n operationName,\n )}Result = NonNullable<Awaited<ReturnType<${\n title\n ? `ReturnType<typeof ${title}>['${operationName}']`\n : `typeof ${operationName}`\n }>>>`,\n );\n\n const propsImplementation =\n mutator.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(String.raw`(\\w*):\\s?${body.definition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n return `const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}<${response.definition.success || 'unknown'}>>,`\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 returnTypesToWrite.set(\n operationName,\n () =>\n `export type ${pascal(operationName)}Result = AxiosResponse<${\n response.definition.success || 'unknown'\n }>`,\n );\n\n // In factory mode, use the axiosInstance parameter\n // In functions mode with global import, .default may be needed based on tsconfig\n const axiosRef = isFactoryMode\n ? 'axiosInstance'\n : `axios${isSyntheticDefaultImportsAllowed ? '' : '.default'}`;\n\n return `const ${operationName} = (\\n ${toObjectString(props, 'implementation')} ${\n isRequestOptions\n ? `options${context.output.optionsParamRequired ? '' : '?'}: AxiosRequestConfig\\n`\n : ''\n } ): Promise<AxiosResponse<${response.definition.success || 'unknown'}>> => {${bodyForm}\n return ${axiosRef}.${verb}(${options});\n }\n`;\n};\n\nexport const generateAxiosTitle: ClientTitleBuilder = (title) => {\n const sanTitle = sanitize(title);\n return `get${pascal(sanTitle)}`;\n};\n\n// Header for factory mode - axios is optional parameter with default value\n// When using mutator (global or tags-level), axiosInstance parameter is not needed\nexport const generateAxiosHeader: ClientHeaderBuilder = ({\n title,\n isRequestOptions,\n isMutator,\n isGlobalMutator,\n noFunction,\n output,\n verbOptions,\n}) => {\n const isSyntheticDefaultImportsAllowed = isSyntheticDefaultImportsAllow(\n output.tsconfig,\n );\n const axiosDefault = isSyntheticDefaultImportsAllowed\n ? 'axios'\n : 'axios.default';\n\n // Check if any operation uses a mutator (either global or tags-level)\n const hasAnyMutator =\n isGlobalMutator ||\n Object.values(verbOptions).some((verbOption) => !!verbOption.mutator);\n\n return `\n${\n isRequestOptions && isMutator\n ? `type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\\n\\n`\n : ''\n}\n ${noFunction ? '' : hasAnyMutator ? `export const ${title} = () => {\\n` : `export const ${title} = (axiosInstance: AxiosInstance = ${axiosDefault}) => {\\n`}`;\n};\n\nexport const generateAxiosFooter: ClientFooterBuilder = ({\n operationNames,\n title,\n noFunction,\n hasMutator,\n hasAwaitedType,\n}) => {\n let footer = '';\n\n if (!noFunction) {\n footer += `return {${operationNames.join(',')}}};\\n`;\n }\n\n if (hasMutator && !hasAwaitedType) {\n footer += `\\ntype AwaitedInput<T> = PromiseLike<T> | T;\\n\n type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;\n\\n`;\n }\n\n for (const operationName of operationNames) {\n if (returnTypesToWrite.has(operationName)) {\n // Map.has ensures Map.get will not return undefined, but TS still complains\n // bug https://github.com/microsoft/TypeScript/issues/13086\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const func = returnTypesToWrite.get(operationName)!;\n footer += func(noFunction ? undefined : title) + '\\n';\n }\n }\n\n return footer;\n};\n\nexport const generateAxios = (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n isFactoryMode = false,\n) => {\n const imports = generateVerbImports(verbOptions);\n const implementation = generateAxiosImplementation(\n verbOptions,\n options,\n isFactoryMode,\n );\n\n return { implementation, imports };\n};\n\n// Factory mode generator - axios is optional parameter\nexport const generateAxiosFactory: ClientBuilder = (verbOptions, options) => {\n const { implementation, imports } = generateAxios(verbOptions, options, true);\n return { implementation, imports };\n};\n\nexport const generateAxiosFunctions: ClientBuilder = (verbOptions, options) => {\n const { implementation, imports } = generateAxios(verbOptions, options);\n\n return {\n implementation: 'export ' + implementation,\n imports,\n };\n};\n\n// axios client with factory pattern (axios as optional parameter)\nconst axiosClientBuilder: ClientGeneratorsBuilder = {\n client: generateAxiosFactory,\n header: generateAxiosHeader,\n dependencies: getAxiosFactoryDependencies,\n footer: generateAxiosFooter,\n title: generateAxiosTitle,\n};\n\nconst axiosFunctionsClientBuilder: ClientGeneratorsBuilder = {\n client: generateAxiosFunctions,\n header: (options) => generateAxiosHeader({ ...options, noFunction: true }),\n dependencies: getAxiosDependencies,\n footer: (options) => generateAxiosFooter({ ...options, noFunction: true }),\n title: generateAxiosTitle,\n};\n\nexport type AxiosBuilderOptions = {\n type?: 'axios' | 'axios-functions';\n};\n\nexport const builder =\n ({ type = 'axios-functions' }: AxiosBuilderOptions = {}) =>\n () => {\n if (type === 'axios-functions') {\n return axiosFunctionsClientBuilder;\n }\n return axiosClientBuilder;\n };\n\nexport default builder;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import {\n type ClientBuilder,\n type ClientDependenciesBuilder,\n type ClientFooterBuilder,\n type ClientGeneratorsBuilder,\n type ClientHeaderBuilder,\n type ClientTitleBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateMutatorConfig,\n generateMutatorRequestOptions,\n generateOptions,\n generateVerbImports,\n type GeneratorDependency,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n isSyntheticDefaultImportsAllow,\n pascal,\n sanitize,\n toObjectString,\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 ],\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 returnTypesToWrite = new Map<string, (title?: string) => string>();\n\nexport const getAxiosDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions: boolean,\n) => [\n ...(hasGlobalMutator ? [] : AXIOS_DEPENDENCIES),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n];\n\n// Factory mode needs axios default import (for optional parameter default value)\n// plus AxiosInstance type for the parameter type\n// When using mutator, AxiosInstance is not needed as the mutator handles the axios instance\nexport const getAxiosFactoryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions: boolean,\n _packageJson,\n _httpClient,\n hasTagsMutator,\n) => [\n {\n exports: [\n {\n name: 'axios',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n // Only include AxiosInstance if we're not using a mutator (global or tags)\n ...(!hasGlobalMutator && !hasTagsMutator\n ? [{ name: 'AxiosInstance' }]\n : []),\n ...(hasGlobalMutator\n ? []\n : [{ name: 'AxiosRequestConfig' }, { name: 'AxiosResponse' }]),\n ],\n dependency: 'axios',\n },\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n];\n\nconst generateAxiosImplementation = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n override,\n formData,\n formUrlEncoded,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route, context }: GeneratorOptions,\n isFactoryMode = false,\n) => {\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\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 isExactOptionalPropertyTypes,\n });\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n returnTypesToWrite.set(\n operationName,\n (title?: string) =>\n `export type ${pascal(\n operationName,\n )}Result = NonNullable<Awaited<ReturnType<${\n title\n ? `ReturnType<typeof ${title}>['${operationName}']`\n : `typeof ${operationName}`\n }>>>`,\n );\n\n const propsImplementation =\n mutator.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(String.raw`(\\w*):\\s?${body.definition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n return `const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}<${response.definition.success || 'unknown'}>>,`\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 returnTypesToWrite.set(\n operationName,\n () =>\n `export type ${pascal(operationName)}Result = AxiosResponse<${\n response.definition.success || 'unknown'\n }>`,\n );\n\n // In factory mode, use the axiosInstance parameter\n // In functions mode with global import, .default may be needed based on tsconfig\n const axiosRef = isFactoryMode\n ? 'axiosInstance'\n : `axios${isSyntheticDefaultImportsAllowed ? '' : '.default'}`;\n\n return `const ${operationName} = (\\n ${toObjectString(props, 'implementation')} ${\n isRequestOptions\n ? `options${context.output.optionsParamRequired ? '' : '?'}: AxiosRequestConfig\\n`\n : ''\n } ): Promise<AxiosResponse<${response.definition.success || 'unknown'}>> => {${bodyForm}\n return ${axiosRef}.${verb}(${options});\n }\n`;\n};\n\nexport const generateAxiosTitle: ClientTitleBuilder = (title) => {\n const sanTitle = sanitize(title);\n return `get${pascal(sanTitle)}`;\n};\n\n// Header for factory mode - axios is optional parameter with default value\n// When using mutator (global or tags-level), axiosInstance parameter is not needed\nexport const generateAxiosHeader: ClientHeaderBuilder = ({\n title,\n isRequestOptions,\n isMutator,\n isGlobalMutator,\n noFunction,\n output,\n verbOptions,\n}) => {\n const isSyntheticDefaultImportsAllowed = isSyntheticDefaultImportsAllow(\n output.tsconfig,\n );\n const axiosDefault = isSyntheticDefaultImportsAllowed\n ? 'axios'\n : 'axios.default';\n\n // Check if any operation uses a mutator (either global or tags-level)\n const hasAnyMutator =\n isGlobalMutator ||\n Object.values(verbOptions).some((verbOption) => !!verbOption.mutator);\n\n return `\n${\n isRequestOptions && isMutator\n ? `type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\\n\\n`\n : ''\n}\n ${noFunction ? '' : hasAnyMutator ? `export const ${title} = () => {\\n` : `export const ${title} = (axiosInstance: AxiosInstance = ${axiosDefault}) => {\\n`}`;\n};\n\nexport const generateAxiosFooter: ClientFooterBuilder = ({\n operationNames,\n title,\n noFunction,\n hasMutator,\n hasAwaitedType,\n}) => {\n let footer = '';\n\n if (!noFunction) {\n footer += `return {${operationNames.join(',')}}};\\n`;\n }\n\n if (hasMutator && !hasAwaitedType) {\n footer += `\\ntype AwaitedInput<T> = PromiseLike<T> | T;\\n\n type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;\n\\n`;\n }\n\n for (const operationName of operationNames) {\n if (returnTypesToWrite.has(operationName)) {\n // Map.has ensures Map.get will not return undefined, but TS still complains\n // bug https://github.com/microsoft/TypeScript/issues/13086\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const func = returnTypesToWrite.get(operationName)!;\n footer += func(noFunction ? undefined : title) + '\\n';\n }\n }\n\n return footer;\n};\n\nexport const generateAxios = (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n isFactoryMode = false,\n) => {\n const imports = generateVerbImports(verbOptions);\n const implementation = generateAxiosImplementation(\n verbOptions,\n options,\n isFactoryMode,\n );\n\n return { implementation, imports };\n};\n\n// Factory mode generator - axios is optional parameter\nexport const generateAxiosFactory: ClientBuilder = (verbOptions, options) => {\n const { implementation, imports } = generateAxios(verbOptions, options, true);\n return { implementation, imports };\n};\n\nexport const generateAxiosFunctions: ClientBuilder = (verbOptions, options) => {\n const { implementation, imports } = generateAxios(verbOptions, options);\n\n return {\n implementation: 'export ' + implementation,\n imports,\n };\n};\n\n// axios client with factory pattern (axios as optional parameter)\nconst axiosClientBuilder: ClientGeneratorsBuilder = {\n client: generateAxiosFactory,\n header: generateAxiosHeader,\n dependencies: getAxiosFactoryDependencies,\n footer: generateAxiosFooter,\n title: generateAxiosTitle,\n};\n\nconst axiosFunctionsClientBuilder: ClientGeneratorsBuilder = {\n client: generateAxiosFunctions,\n header: (options) => generateAxiosHeader({ ...options, noFunction: true }),\n dependencies: getAxiosDependencies,\n footer: (options) => generateAxiosFooter({ ...options, noFunction: true }),\n title: generateAxiosTitle,\n};\n\nexport type AxiosBuilderOptions = {\n type?: 'axios' | 'axios-functions';\n};\n\nexport const builder =\n ({ type = 'axios-functions' }: AxiosBuilderOptions = {}) =>\n () => {\n if (type === 'axios-functions') {\n return axiosFunctionsClientBuilder;\n }\n return axiosClientBuilder;\n };\n\nexport default builder;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orval/axios",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.5.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"types": "./dist/index.d.mts",
|
|
6
7
|
"exports": {
|
|
7
8
|
".": "./dist/index.mjs",
|
|
8
9
|
"./package.json": "./package.json"
|
|
@@ -21,16 +22,13 @@
|
|
|
21
22
|
"nuke": "rimraf .turbo dist node_modules"
|
|
22
23
|
},
|
|
23
24
|
"dependencies": {
|
|
24
|
-
"@orval/core": "8.
|
|
25
|
+
"@orval/core": "8.5.0"
|
|
25
26
|
},
|
|
26
27
|
"devDependencies": {
|
|
27
28
|
"eslint": "9.39.2",
|
|
28
29
|
"rimraf": "6.1.2",
|
|
29
|
-
"tsdown": "0.
|
|
30
|
+
"tsdown": "0.20.3",
|
|
30
31
|
"typescript": "5.9.3",
|
|
31
32
|
"vitest": "4.0.18"
|
|
32
|
-
}
|
|
33
|
-
"main": "./dist/index.mjs",
|
|
34
|
-
"module": "./dist/index.mjs",
|
|
35
|
-
"types": "./dist/index.d.mts"
|
|
33
|
+
}
|
|
36
34
|
}
|