@ruan-cat/utils 1.7.0 → 3.0.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/node.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/node.ts","../src/simple-promise-tools.ts","../src/vueuse/useAxios.ts","../src/ruan-cat-pkg-info.ts"],"sourcesContent":["/**\n * 一些node环境下的工具函数\n */\n\nimport { normalize } from \"node:path\";\nimport { spawnSync } from \"node:child_process\";\n\nimport { generateSimpleAsyncTask } from \"@ruan-cat/utils\";\n// import gradient from \"gradient-string\";\nimport consola from \"consola\";\n// import { normalizePath } from \"vite\";\n\n/**\n * 路径转换工具\n */\nexport function pathChange(path: string) {\n\treturn path.replace(/\\\\/g, \"/\");\n\t// FIXME: 无法有效地实现解析路径 测试用例不通过\n\t// return normalize(path);\n\t// FIXME: tsup打包时,无法处理好vite的依赖 会导致打包失败 不知道怎么单独使用并打包该函数\n\t// return normalizePath(path);\n}\n\nexport interface SpawnSyncSimpleParams {\n\tcommand: string;\n\tparameters: string[];\n\t/**\n\t * 是否流式输出内容\n\t * @description 默认输出的命令数据全部以流式的方式输出\n\t * @default true\n\t */\n\tisFlow?: boolean;\n\n\t/**\n\t * 是否显示命令?\n\t * @description\n\t * 是否打印目前正在执行的命令?\n\t * @default true\n\t */\n\tisShowCommand?: boolean;\n\n\t/** 打印当前运行的命令 */\n\tprintCurrentCommand?: (params: Pick<SpawnSyncSimpleParams, \"command\" | \"parameters\">) => void;\n}\n\n/**\n * 默认的打印当前运行命令 函数\n */\nexport const defPrintCurrentCommand: SpawnSyncSimpleParams[\"printCurrentCommand\"] = function (params) {\n\tconst { command, parameters } = params;\n\tconsola.info(` 当前运行的命令为: ${command} ${parameters.join(\" \")} \\n`);\n};\n\n/**\n * 生成简单的执行命令函数\n * @description\n * 对 spawnSync 做简单的包装\n *\n * 之前封装的是 execa 函数\n * @version 2\n */\nexport function generateSpawnSync(spawnSyncSimpleParams: SpawnSyncSimpleParams) {\n\tconst {\n\t\tcommand,\n\t\tparameters,\n\t\tisFlow = true,\n\t\tisShowCommand = true,\n\t\tprintCurrentCommand = defPrintCurrentCommand,\n\t} = spawnSyncSimpleParams;\n\n\tif (isShowCommand) {\n\t\tprintCurrentCommand?.({ command, parameters });\n\t}\n\n\treturn generateSimpleAsyncTask(() => {\n\t\tconst result = spawnSync(command, parameters, {\n\t\t\t/**\n\t\t\t * 是否流式输出?\n\t\t\t * 是流式输出就是继承父进程的流式输出\n\t\t\t * 否则就使用默认值\n\t\t\t * @see https://nodejs.org/api/child_process.html#optionsstdio\n\t\t\t */\n\t\t\tstdio: isFlow ? \"inherit\" : \"pipe\",\n\t\t\tshell: true,\n\t\t});\n\n\t\t// 如果不是流式输出 就直接返回返回值即可\n\t\tif (!isFlow) {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (result.error) {\n\t\t\tthrow result.error;\n\t\t}\n\n\t\treturn result;\n\t});\n}\n","// import { uniqueId } from \"lodash-es\";\n// const getCounter = () => uniqueId();\n\n/** 创建简单的异步任务 */\nexport function generateSimpleAsyncTask<T extends (...args: any) => any>(func: T) {\n\t// const taskId = getCounter();\n\n\treturn function (...args: any) {\n\t\t// consola.info(` 这是第 ${taskId} 个异步任务 `);\n\t\t// consola.start(\" 这里是新创建的异步函数 检查参数: \", ...args);\n\n\t\treturn new Promise<ReturnType<T>>((resolve, reject) => {\n\t\t\t// consola.start(\" 内部promise 检查参数: \", ...args);\n\t\t\tresolve(func(...args));\n\t\t});\n\t};\n}\n\nexport type SimpleAsyncTask = ReturnType<typeof generateSimpleAsyncTask>;\n\nexport const initFlag = <const>\"initFlag\";\n\n/**\n * 以队列串行的形式 串行运行异步函数\n * @see https://github.com/ascoders/weekly/blob/master/前沿技术/77.精读《用%20Reduce%20实现%20Promise%20串行执行》.md\n * @version 1\n */\nasync function runPromiseByQueueV1<T>(promises: ((...args: any) => Promise<T>)[]) {\n\tpromises.reduce(\n\t\tasync function (previousPromise, nextPromise, currentIndex) {\n\t\t\tconst response = await previousPromise;\n\t\t\t// consola.log(` reduce串行函数 currentIndex= ${currentIndex} res =`, response);\n\t\t\treturn await nextPromise(response);\n\t\t},\n\t\tPromise.resolve(initFlag) as Promise<any>,\n\t);\n}\n\n/**\n * 以队列串行的形式 串行运行异步函数\n * @version 2\n */\nexport async function runPromiseByQueue<T>(promises: ((...args: any) => Promise<T>)[]) {\n\tlet response: typeof initFlag | Awaited<T> = initFlag;\n\tfor await (const promise of promises) {\n\t\tresponse = await promise(response);\n\t}\n}\n\n/**\n * 以并行的形式 并发运行异步函数\n */\nexport async function runPromiseByConcurrency<T>(promises: ((...args: any) => Promise<T>)[]) {\n\tawait Promise.all(promises.map((promise) => promise()));\n}\n","import type { RequiredPick } from \"type-plus\";\nimport type { AxiosRequestConfig, AxiosResponse, AxiosInstance } from \"axios\";\nimport type { UseAxiosOptions, UseAxiosReturn } from \"@vueuse/integrations/useAxios\";\nimport { useAxios } from \"@vueuse/integrations/useAxios\";\n\n/** 在封装函数时 需要使用该类型 */\nexport { UseAxiosOptions };\n\n/** 拓展的类型参数 用于约束必填的字段 */\nexport type KeyAxiosRequestConfig<D = any> = keyof AxiosRequestConfig<D>;\n\n/** 填写key值的帮助类型 */\nexport type KeyHelper<K extends KeyAxiosRequestConfig> = K;\n\nexport type RemoveUrl<T extends KeyAxiosRequestConfig> = Exclude<T, \"url\">;\n\n/**\n * 创建 AxiosRequestConfig 的各种变种类型\n * @description\n * 目前需要给 AxiosRequestConfig 添加必填属性\n *\n * 故需要本工具创建各种变种类型\n *\n * @example CreateAxiosRequestConfig<\"url\", D>\n */\nexport type CreateAxiosRequestConfig<K extends keyof Target, D = any, Target = AxiosRequestConfig<D>> = RequiredPick<\n\tTarget,\n\tK\n>;\n\n/** 拓展K泛型后的类型 */\nexport interface StrictUseAxiosReturn<\n\tT,\n\t/**\n\t * 拓展的类型参数 用于约束必填的字段\n\t * @description\n\t * 这里不需要提供默认的取值\n\t */\n\tK extends KeyAxiosRequestConfig<D>,\n\tR,\n\tD,\n> extends UseAxiosReturn<T, R, D> {\n\t/**\n\t * Manually call the axios request\n\t */\n\texecute: (\n\t\turl?: string | CreateAxiosRequestConfig<K, D>,\n\t\tconfig?: CreateAxiosRequestConfig<K, D>,\n\t) => Promise<StrictUseAxiosReturn<T, K, R, D>>;\n}\n\ndeclare module \"@vueuse/integrations/useAxios\" {\n\t/**\n\t * 拓展类型参数后的 useAxios 函数\n\t * @description\n\t * 在我们的封装中 使用本类型\n\t */\n\tfunction useAxios<\n\t\tT = any,\n\t\t/** 拓展的类型参数 用于约束必填的字段 */\n\t\tK extends KeyAxiosRequestConfig<D> = \"url\",\n\t\tR = AxiosResponse<T>,\n\t\tD = any,\n\t>(\n\t\turl: string,\n\t\tconfig: AxiosRequestConfig<D>,\n\t\tinstance: AxiosInstance,\n\t\toptions?: UseAxiosOptions,\n\t): StrictUseAxiosReturn<T, K, R, D> & Promise<StrictUseAxiosReturn<T, K, R, D>>;\n}\n\n/** 包装器的参数 */\nexport interface UseAxiosWrapperParams<\n\t/**\n\t * 业务数据类型\n\t * @description\n\t * 必须先填写业务类型\n\t */\n\tT = any,\n\t/**\n\t * AxiosRequestConfig 默认必填的字段\n\t * @description\n\t * 用于约束其他类型的字段\n\t *\n\t * 然后才能填写必传的参数类型\n\t *\n\t * 默认为 必填url请求地址的 config 请求配置\n\t */\n\tK extends KeyAxiosRequestConfig<D> = \"url\",\n\t/**\n\t * UseAxiosOptions 的派生类型\n\t */\n\tUseAxiosOptionsLike extends UseAxiosOptions = UseAxiosOptions,\n\t/**\n\t * AxiosRequestConfig 用的类型\n\t * @description\n\t * 最后才可以传递此类型\n\t */\n\tD = any,\n> {\n\t/**\n\t * axios的配置类型\n\t * @description\n\t * 默认为 必填url请求地址的 config 请求配置\n\t */\n\tconfig: CreateAxiosRequestConfig<K, D>;\n\n\t/**\n\t * axios实例\n\t * @description\n\t * 对于包装器函数而言 必须传递有意义的请求实例\n\t */\n\tinstance: AxiosInstance;\n\n\t/** useAxios 的选项配置 */\n\toptions: UseAxiosOptionsLike;\n}\n\n/**\n * useAxios 的包装函数\n * @description\n * 其本质是对 useAxios 函数的封装,仅仅是包装了参数层\n *\n * 预期设计成一个万能的 通用的请求函数\n */\nexport function useAxiosWrapper<T, K extends KeyAxiosRequestConfig, D = any>(params: UseAxiosWrapperParams) {\n\tconst {\n\t\tconfig: { url },\n\t\tconfig,\n\t\tinstance,\n\t\toptions,\n\t} = params;\n\t// 跳转到 vueuse 内的函数声明\n\t// return useAxios<T, AxiosResponse<T>, D>(url, config, instance, options);\n\n\t// 跳转到我们拓展的函数声明\n\treturn useAxios<T, K, AxiosResponse<T>, D>(url, config, instance, options);\n}\n","import { spawnSync } from \"node:child_process\";\n\n/** 包的信息 */\nexport interface PackageInfo {\n\t/** 包名 */\n\tname: string;\n\t/** 包的描述 */\n\tdescription: string;\n\t/** 带有包名的官方镜像源地址 */\n\turl: `https://npm.im/${string}`;\n}\n\n/**\n * 获得阮喵喵全部的包信息\n * @description\n * 这是一个node环境下的函数,用于获取阮喵喵的所有包的信息。\n *\n * 使用的是node的child_process模块,调用pnpm命令获取包信息。\n *\n * - 默认仅考虑pnpm包\n * - 在node环境下运行\n */\nexport async function getRuanCatPkgInfo() {\n\treturn new Promise<PackageInfo[]>((resolve, reject) => {\n\t\t/**\n\t\t * pnpm s @ruan-cat/* --registry https://registry.npmmirror.com/ --json\n\t\t * 仅查询淘宝源的数据\n\t\t */\n\t\tconst result = spawnSync(\"pnpm\", [\"s\", \"@ruan-cat/*\", \"--registry\", \"https://registry.npmmirror.com/\", \"--json\"], {\n\t\t\tencoding: \"utf-8\",\n\t\t});\n\n\t\tif (result.error) {\n\t\t\tconsole.error(`Error executing command: ${result.error.message}`);\n\t\t\treject(result.error);\n\t\t\treturn;\n\t\t}\n\t\tif (result.stderr) {\n\t\t\tconsole.error(`Error in output: ${result.stderr}`);\n\t\t\treject(new Error(result.stderr));\n\t\t\treturn;\n\t\t}\n\n\t\tconst packages = <unknown[]>JSON.parse(result.stdout);\n\t\tconst res = packages.map(\n\t\t\t(pkg: any) =>\n\t\t\t\t({\n\t\t\t\t\tname: pkg.name,\n\t\t\t\t\tdescription: pkg.description,\n\t\t\t\t\turl: `https://npm.im/${pkg.name}`,\n\t\t\t\t}) satisfies PackageInfo,\n\t\t);\n\t\t// const res = packages;\n\t\tresolve(res);\n\t});\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,IAAAA,6BAA0B;;;ACDnB,SAAS,wBAAyD,MAAS;AAGjF,SAAO,YAAa,MAAW;AAI9B,WAAO,IAAI,QAAuB,CAAC,SAAS,WAAW;AAEtD,cAAQ,KAAK,GAAG,IAAI,CAAC;AAAA,IACtB,CAAC;AAAA,EACF;AACD;;;ACbA,sBAAyB;;;ACHzB,gCAA0B;;;AHS1B,qBAAoB;AAMb,SAAS,WAAW,MAAc;AACxC,SAAO,KAAK,QAAQ,OAAO,GAAG;AAK/B;AA2BO,IAAM,yBAAuE,SAAU,QAAQ;AACrG,QAAM,EAAE,SAAS,WAAW,IAAI;AAChC,iBAAAC,QAAQ,KAAK,2DAAc,OAAO,IAAI,WAAW,KAAK,GAAG,CAAC;AAAA,CAAK;AAChE;AAUO,SAAS,kBAAkB,uBAA8C;AAC/E,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EACvB,IAAI;AAEJ,MAAI,eAAe;AAClB,0BAAsB,EAAE,SAAS,WAAW,CAAC;AAAA,EAC9C;AAEA,SAAO,wBAAwB,MAAM;AACpC,UAAM,aAAS,sCAAU,SAAS,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAO7C,OAAO,SAAS,YAAY;AAAA,MAC5B,OAAO;AAAA,IACR,CAAC;AAGD,QAAI,CAAC,QAAQ;AACZ,aAAO;AAAA,IACR;AAEA,QAAI,OAAO,OAAO;AACjB,YAAM,OAAO;AAAA,IACd;AAEA,WAAO;AAAA,EACR,CAAC;AACF;","names":["import_node_child_process","consola"]}
package/dist/node.d.ts DELETED
@@ -1,43 +0,0 @@
1
- import * as child_process from 'child_process';
2
-
3
- /**
4
- * 一些node环境下的工具函数
5
- */
6
- /**
7
- * 路径转换工具
8
- */
9
- declare function pathChange(path: string): string;
10
- interface SpawnSyncSimpleParams {
11
- command: string;
12
- parameters: string[];
13
- /**
14
- * 是否流式输出内容
15
- * @description 默认输出的命令数据全部以流式的方式输出
16
- * @default true
17
- */
18
- isFlow?: boolean;
19
- /**
20
- * 是否显示命令?
21
- * @description
22
- * 是否打印目前正在执行的命令?
23
- * @default true
24
- */
25
- isShowCommand?: boolean;
26
- /** 打印当前运行的命令 */
27
- printCurrentCommand?: (params: Pick<SpawnSyncSimpleParams, "command" | "parameters">) => void;
28
- }
29
- /**
30
- * 默认的打印当前运行命令 函数
31
- */
32
- declare const defPrintCurrentCommand: SpawnSyncSimpleParams["printCurrentCommand"];
33
- /**
34
- * 生成简单的执行命令函数
35
- * @description
36
- * 对 spawnSync 做简单的包装
37
- *
38
- * 之前封装的是 execa 函数
39
- * @version 2
40
- */
41
- declare function generateSpawnSync(spawnSyncSimpleParams: SpawnSyncSimpleParams): (...args: any) => Promise<child_process.SpawnSyncReturns<Buffer<ArrayBufferLike>>>;
42
-
43
- export { type SpawnSyncSimpleParams, defPrintCurrentCommand, generateSpawnSync, pathChange };
package/dist/node.js DELETED
@@ -1,62 +0,0 @@
1
- // src/node.ts
2
- import { spawnSync } from "node:child_process";
3
-
4
- // src/simple-promise-tools.ts
5
- function generateSimpleAsyncTask(func) {
6
- return function(...args) {
7
- return new Promise((resolve, reject) => {
8
- resolve(func(...args));
9
- });
10
- };
11
- }
12
-
13
- // src/vueuse/useAxios.ts
14
- import { useAxios } from "@vueuse/integrations/useAxios";
15
-
16
- // src/node.ts
17
- import consola from "consola";
18
- function pathChange(path) {
19
- return path.replace(/\\/g, "/");
20
- }
21
- var defPrintCurrentCommand = function(params) {
22
- const { command, parameters } = params;
23
- consola.info(` \u5F53\u524D\u8FD0\u884C\u7684\u547D\u4EE4\u4E3A\uFF1A ${command} ${parameters.join(" ")}
24
- `);
25
- };
26
- function generateSpawnSync(spawnSyncSimpleParams) {
27
- const {
28
- command,
29
- parameters,
30
- isFlow = true,
31
- isShowCommand = true,
32
- printCurrentCommand = defPrintCurrentCommand
33
- } = spawnSyncSimpleParams;
34
- if (isShowCommand) {
35
- printCurrentCommand?.({ command, parameters });
36
- }
37
- return generateSimpleAsyncTask(() => {
38
- const result = spawnSync(command, parameters, {
39
- /**
40
- * 是否流式输出?
41
- * 是流式输出就是继承父进程的流式输出
42
- * 否则就使用默认值
43
- * @see https://nodejs.org/api/child_process.html#optionsstdio
44
- */
45
- stdio: isFlow ? "inherit" : "pipe",
46
- shell: true
47
- });
48
- if (!isFlow) {
49
- return result;
50
- }
51
- if (result.error) {
52
- throw result.error;
53
- }
54
- return result;
55
- });
56
- }
57
- export {
58
- defPrintCurrentCommand,
59
- generateSpawnSync,
60
- pathChange
61
- };
62
- //# sourceMappingURL=node.js.map
package/dist/node.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/node.ts","../src/simple-promise-tools.ts","../src/vueuse/useAxios.ts"],"sourcesContent":["/**\n * 一些node环境下的工具函数\n */\n\nimport { normalize } from \"node:path\";\nimport { spawnSync } from \"node:child_process\";\n\nimport { generateSimpleAsyncTask } from \"@ruan-cat/utils\";\n// import gradient from \"gradient-string\";\nimport consola from \"consola\";\n// import { normalizePath } from \"vite\";\n\n/**\n * 路径转换工具\n */\nexport function pathChange(path: string) {\n\treturn path.replace(/\\\\/g, \"/\");\n\t// FIXME: 无法有效地实现解析路径 测试用例不通过\n\t// return normalize(path);\n\t// FIXME: tsup打包时,无法处理好vite的依赖 会导致打包失败 不知道怎么单独使用并打包该函数\n\t// return normalizePath(path);\n}\n\nexport interface SpawnSyncSimpleParams {\n\tcommand: string;\n\tparameters: string[];\n\t/**\n\t * 是否流式输出内容\n\t * @description 默认输出的命令数据全部以流式的方式输出\n\t * @default true\n\t */\n\tisFlow?: boolean;\n\n\t/**\n\t * 是否显示命令?\n\t * @description\n\t * 是否打印目前正在执行的命令?\n\t * @default true\n\t */\n\tisShowCommand?: boolean;\n\n\t/** 打印当前运行的命令 */\n\tprintCurrentCommand?: (params: Pick<SpawnSyncSimpleParams, \"command\" | \"parameters\">) => void;\n}\n\n/**\n * 默认的打印当前运行命令 函数\n */\nexport const defPrintCurrentCommand: SpawnSyncSimpleParams[\"printCurrentCommand\"] = function (params) {\n\tconst { command, parameters } = params;\n\tconsola.info(` 当前运行的命令为: ${command} ${parameters.join(\" \")} \\n`);\n};\n\n/**\n * 生成简单的执行命令函数\n * @description\n * 对 spawnSync 做简单的包装\n *\n * 之前封装的是 execa 函数\n * @version 2\n */\nexport function generateSpawnSync(spawnSyncSimpleParams: SpawnSyncSimpleParams) {\n\tconst {\n\t\tcommand,\n\t\tparameters,\n\t\tisFlow = true,\n\t\tisShowCommand = true,\n\t\tprintCurrentCommand = defPrintCurrentCommand,\n\t} = spawnSyncSimpleParams;\n\n\tif (isShowCommand) {\n\t\tprintCurrentCommand?.({ command, parameters });\n\t}\n\n\treturn generateSimpleAsyncTask(() => {\n\t\tconst result = spawnSync(command, parameters, {\n\t\t\t/**\n\t\t\t * 是否流式输出?\n\t\t\t * 是流式输出就是继承父进程的流式输出\n\t\t\t * 否则就使用默认值\n\t\t\t * @see https://nodejs.org/api/child_process.html#optionsstdio\n\t\t\t */\n\t\t\tstdio: isFlow ? \"inherit\" : \"pipe\",\n\t\t\tshell: true,\n\t\t});\n\n\t\t// 如果不是流式输出 就直接返回返回值即可\n\t\tif (!isFlow) {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (result.error) {\n\t\t\tthrow result.error;\n\t\t}\n\n\t\treturn result;\n\t});\n}\n","// import { uniqueId } from \"lodash-es\";\n// const getCounter = () => uniqueId();\n\n/** 创建简单的异步任务 */\nexport function generateSimpleAsyncTask<T extends (...args: any) => any>(func: T) {\n\t// const taskId = getCounter();\n\n\treturn function (...args: any) {\n\t\t// consola.info(` 这是第 ${taskId} 个异步任务 `);\n\t\t// consola.start(\" 这里是新创建的异步函数 检查参数: \", ...args);\n\n\t\treturn new Promise<ReturnType<T>>((resolve, reject) => {\n\t\t\t// consola.start(\" 内部promise 检查参数: \", ...args);\n\t\t\tresolve(func(...args));\n\t\t});\n\t};\n}\n\nexport type SimpleAsyncTask = ReturnType<typeof generateSimpleAsyncTask>;\n\nexport const initFlag = <const>\"initFlag\";\n\n/**\n * 以队列串行的形式 串行运行异步函数\n * @see https://github.com/ascoders/weekly/blob/master/前沿技术/77.精读《用%20Reduce%20实现%20Promise%20串行执行》.md\n * @version 1\n */\nasync function runPromiseByQueueV1<T>(promises: ((...args: any) => Promise<T>)[]) {\n\tpromises.reduce(\n\t\tasync function (previousPromise, nextPromise, currentIndex) {\n\t\t\tconst response = await previousPromise;\n\t\t\t// consola.log(` reduce串行函数 currentIndex= ${currentIndex} res =`, response);\n\t\t\treturn await nextPromise(response);\n\t\t},\n\t\tPromise.resolve(initFlag) as Promise<any>,\n\t);\n}\n\n/**\n * 以队列串行的形式 串行运行异步函数\n * @version 2\n */\nexport async function runPromiseByQueue<T>(promises: ((...args: any) => Promise<T>)[]) {\n\tlet response: typeof initFlag | Awaited<T> = initFlag;\n\tfor await (const promise of promises) {\n\t\tresponse = await promise(response);\n\t}\n}\n\n/**\n * 以并行的形式 并发运行异步函数\n */\nexport async function runPromiseByConcurrency<T>(promises: ((...args: any) => Promise<T>)[]) {\n\tawait Promise.all(promises.map((promise) => promise()));\n}\n","import type { RequiredPick } from \"type-plus\";\nimport type { AxiosRequestConfig, AxiosResponse, AxiosInstance } from \"axios\";\nimport type { UseAxiosOptions, UseAxiosReturn } from \"@vueuse/integrations/useAxios\";\nimport { useAxios } from \"@vueuse/integrations/useAxios\";\n\n/** 在封装函数时 需要使用该类型 */\nexport { UseAxiosOptions };\n\n/** 拓展的类型参数 用于约束必填的字段 */\nexport type KeyAxiosRequestConfig<D = any> = keyof AxiosRequestConfig<D>;\n\n/** 填写key值的帮助类型 */\nexport type KeyHelper<K extends KeyAxiosRequestConfig> = K;\n\nexport type RemoveUrl<T extends KeyAxiosRequestConfig> = Exclude<T, \"url\">;\n\n/**\n * 创建 AxiosRequestConfig 的各种变种类型\n * @description\n * 目前需要给 AxiosRequestConfig 添加必填属性\n *\n * 故需要本工具创建各种变种类型\n *\n * @example CreateAxiosRequestConfig<\"url\", D>\n */\nexport type CreateAxiosRequestConfig<K extends keyof Target, D = any, Target = AxiosRequestConfig<D>> = RequiredPick<\n\tTarget,\n\tK\n>;\n\n/** 拓展K泛型后的类型 */\nexport interface StrictUseAxiosReturn<\n\tT,\n\t/**\n\t * 拓展的类型参数 用于约束必填的字段\n\t * @description\n\t * 这里不需要提供默认的取值\n\t */\n\tK extends KeyAxiosRequestConfig<D>,\n\tR,\n\tD,\n> extends UseAxiosReturn<T, R, D> {\n\t/**\n\t * Manually call the axios request\n\t */\n\texecute: (\n\t\turl?: string | CreateAxiosRequestConfig<K, D>,\n\t\tconfig?: CreateAxiosRequestConfig<K, D>,\n\t) => Promise<StrictUseAxiosReturn<T, K, R, D>>;\n}\n\ndeclare module \"@vueuse/integrations/useAxios\" {\n\t/**\n\t * 拓展类型参数后的 useAxios 函数\n\t * @description\n\t * 在我们的封装中 使用本类型\n\t */\n\tfunction useAxios<\n\t\tT = any,\n\t\t/** 拓展的类型参数 用于约束必填的字段 */\n\t\tK extends KeyAxiosRequestConfig<D> = \"url\",\n\t\tR = AxiosResponse<T>,\n\t\tD = any,\n\t>(\n\t\turl: string,\n\t\tconfig: AxiosRequestConfig<D>,\n\t\tinstance: AxiosInstance,\n\t\toptions?: UseAxiosOptions,\n\t): StrictUseAxiosReturn<T, K, R, D> & Promise<StrictUseAxiosReturn<T, K, R, D>>;\n}\n\n/** 包装器的参数 */\nexport interface UseAxiosWrapperParams<\n\t/**\n\t * 业务数据类型\n\t * @description\n\t * 必须先填写业务类型\n\t */\n\tT = any,\n\t/**\n\t * AxiosRequestConfig 默认必填的字段\n\t * @description\n\t * 用于约束其他类型的字段\n\t *\n\t * 然后才能填写必传的参数类型\n\t *\n\t * 默认为 必填url请求地址的 config 请求配置\n\t */\n\tK extends KeyAxiosRequestConfig<D> = \"url\",\n\t/**\n\t * UseAxiosOptions 的派生类型\n\t */\n\tUseAxiosOptionsLike extends UseAxiosOptions = UseAxiosOptions,\n\t/**\n\t * AxiosRequestConfig 用的类型\n\t * @description\n\t * 最后才可以传递此类型\n\t */\n\tD = any,\n> {\n\t/**\n\t * axios的配置类型\n\t * @description\n\t * 默认为 必填url请求地址的 config 请求配置\n\t */\n\tconfig: CreateAxiosRequestConfig<K, D>;\n\n\t/**\n\t * axios实例\n\t * @description\n\t * 对于包装器函数而言 必须传递有意义的请求实例\n\t */\n\tinstance: AxiosInstance;\n\n\t/** useAxios 的选项配置 */\n\toptions: UseAxiosOptionsLike;\n}\n\n/**\n * useAxios 的包装函数\n * @description\n * 其本质是对 useAxios 函数的封装,仅仅是包装了参数层\n *\n * 预期设计成一个万能的 通用的请求函数\n */\nexport function useAxiosWrapper<T, K extends KeyAxiosRequestConfig, D = any>(params: UseAxiosWrapperParams) {\n\tconst {\n\t\tconfig: { url },\n\t\tconfig,\n\t\tinstance,\n\t\toptions,\n\t} = params;\n\t// 跳转到 vueuse 内的函数声明\n\t// return useAxios<T, AxiosResponse<T>, D>(url, config, instance, options);\n\n\t// 跳转到我们拓展的函数声明\n\treturn useAxios<T, K, AxiosResponse<T>, D>(url, config, instance, options);\n}\n"],"mappings":";AAKA,SAAS,iBAAiB;;;ACDnB,SAAS,wBAAyD,MAAS;AAGjF,SAAO,YAAa,MAAW;AAI9B,WAAO,IAAI,QAAuB,CAAC,SAAS,WAAW;AAEtD,cAAQ,KAAK,GAAG,IAAI,CAAC;AAAA,IACtB,CAAC;AAAA,EACF;AACD;;;ACbA,SAAS,gBAAgB;;;AFMzB,OAAO,aAAa;AAMb,SAAS,WAAW,MAAc;AACxC,SAAO,KAAK,QAAQ,OAAO,GAAG;AAK/B;AA2BO,IAAM,yBAAuE,SAAU,QAAQ;AACrG,QAAM,EAAE,SAAS,WAAW,IAAI;AAChC,UAAQ,KAAK,2DAAc,OAAO,IAAI,WAAW,KAAK,GAAG,CAAC;AAAA,CAAK;AAChE;AAUO,SAAS,kBAAkB,uBAA8C;AAC/E,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EACvB,IAAI;AAEJ,MAAI,eAAe;AAClB,0BAAsB,EAAE,SAAS,WAAW,CAAC;AAAA,EAC9C;AAEA,SAAO,wBAAwB,MAAM;AACpC,UAAM,SAAS,UAAU,SAAS,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAO7C,OAAO,SAAS,YAAY;AAAA,MAC5B,OAAO;AAAA,IACR,CAAC;AAGD,QAAI,CAAC,QAAQ;AACZ,aAAO;AAAA,IACR;AAEA,QAAI,OAAO,OAAO;AACjB,YAAM,OAAO;AAAA,IACd;AAEA,WAAO;AAAA,EACR,CAAC;AACF;","names":[]}
File without changes