@orval/axios 8.5.3 → 8.6.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.d.mts +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +19 -9
package/dist/index.d.mts
CHANGED
|
@@ -13,9 +13,9 @@ declare const generateAxios: (verbOptions: GeneratorVerbOptions, options: Genera
|
|
|
13
13
|
};
|
|
14
14
|
declare const generateAxiosFactory: ClientBuilder;
|
|
15
15
|
declare const generateAxiosFunctions: ClientBuilder;
|
|
16
|
-
|
|
16
|
+
interface AxiosBuilderOptions {
|
|
17
17
|
type?: 'axios' | 'axios-functions';
|
|
18
|
-
}
|
|
18
|
+
}
|
|
19
19
|
declare const builder: ({
|
|
20
20
|
type
|
|
21
21
|
}?: AxiosBuilderOptions) => () => ClientGeneratorsBuilder;
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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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"}
|
|
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 interface 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,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orval/axios",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.6.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.mts",
|
|
7
7
|
"exports": {
|
|
8
|
-
".":
|
|
8
|
+
".": {
|
|
9
|
+
"development": "./src/index.ts",
|
|
10
|
+
"default": "./dist/index.mjs"
|
|
11
|
+
},
|
|
9
12
|
"./package.json": "./package.json"
|
|
10
13
|
},
|
|
11
14
|
"files": [
|
|
@@ -18,17 +21,24 @@
|
|
|
18
21
|
"dev": "tsdown --config-loader unrun --watch src",
|
|
19
22
|
"lint": "eslint .",
|
|
20
23
|
"test": "vitest",
|
|
24
|
+
"typecheck": "tsc --noEmit",
|
|
21
25
|
"clean": "rimraf .turbo dist",
|
|
22
26
|
"nuke": "rimraf .turbo dist node_modules"
|
|
23
27
|
},
|
|
24
28
|
"dependencies": {
|
|
25
|
-
"@orval/core": "
|
|
29
|
+
"@orval/core": "workspace:*"
|
|
26
30
|
},
|
|
27
31
|
"devDependencies": {
|
|
28
|
-
"eslint": "
|
|
29
|
-
"rimraf": "
|
|
30
|
-
"tsdown": "
|
|
31
|
-
"typescript": "
|
|
32
|
-
"vitest": "
|
|
32
|
+
"eslint": "catalog:",
|
|
33
|
+
"rimraf": "catalog:",
|
|
34
|
+
"tsdown": "catalog:",
|
|
35
|
+
"typescript": "catalog:",
|
|
36
|
+
"vitest": "catalog:"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"exports": {
|
|
40
|
+
".": "./dist/index.mjs",
|
|
41
|
+
"./package.json": "./package.json"
|
|
42
|
+
}
|
|
33
43
|
}
|
|
34
|
-
}
|
|
44
|
+
}
|