giime 0.6.45 → 0.7.1

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.
Files changed (91) hide show
  1. package/dist/index.css +2 -2
  2. package/es/api/gstore/request.mjs +2 -1
  3. package/es/api/gstore/request.mjs.map +1 -1
  4. package/es/api/guardBasic/request.mjs +5 -9
  5. package/es/api/guardBasic/request.mjs.map +1 -1
  6. package/es/api/materialApi/request.mjs +5 -8
  7. package/es/api/materialApi/request.mjs.map +1 -1
  8. package/es/api/productCenter/request.mjs +5 -5
  9. package/es/api/productCenter/request.mjs.map +1 -1
  10. package/es/api/resource/request.mjs +5 -9
  11. package/es/api/resource/request.mjs.map +1 -1
  12. package/es/api/shopAdmin/request.mjs +4 -3
  13. package/es/api/shopAdmin/request.mjs.map +1 -1
  14. package/es/api/utils/createModes.d.ts +17 -0
  15. package/es/api/utils/createModes.mjs +20 -0
  16. package/es/api/utils/createModes.mjs.map +1 -0
  17. package/es/api/utils/index.d.ts +1 -0
  18. package/es/api/utils/index.mjs +1 -0
  19. package/es/api/utils/index.mjs.map +1 -1
  20. package/es/api/utils/resetAxiosBaseUrl.mjs.map +1 -1
  21. package/es/components/src/base/row/Row.vue.d.ts +6 -6
  22. package/es/components/src/base/row/index.d.ts +16 -16
  23. package/es/components/src/base/row/row.d.ts +1 -1
  24. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +7 -5
  25. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
  26. package/es/components/src/business/uploadPro/UploadPro.vue.d.ts +35 -35
  27. package/es/components/src/business/uploadPro/UploadPro.vue.mjs +1 -1
  28. package/es/components/src/business/uploadPro/UploadPro.vue2.mjs +1 -1
  29. package/es/components/src/business/uploadPro/UploadPro.vue2.mjs.map +1 -1
  30. package/es/components/src/business/uploadPro/index.d.ts +10 -10
  31. package/es/giime/index.mjs +1 -1
  32. package/es/giime/version.d.ts +1 -1
  33. package/es/giime/version.mjs +1 -1
  34. package/es/giime/version.mjs.map +1 -1
  35. package/es/index.css +2 -2
  36. package/es/utils/__tests__/http/url.test.d.ts +1 -0
  37. package/es/utils/index.mjs +1 -1
  38. package/es/utils/src/http/index.mjs +1 -1
  39. package/es/utils/src/http/url.d.ts +10 -0
  40. package/es/utils/src/http/url.mjs +26 -5
  41. package/es/utils/src/http/url.mjs.map +1 -1
  42. package/es/utils/src/vue/resolver.d.ts +4 -1
  43. package/es/utils/src/vue/resolver.mjs +4 -1
  44. package/es/utils/src/vue/resolver.mjs.map +1 -1
  45. package/lib/api/gstore/request.js +2 -1
  46. package/lib/api/gstore/request.js.map +1 -1
  47. package/lib/api/guardBasic/request.js +5 -9
  48. package/lib/api/guardBasic/request.js.map +1 -1
  49. package/lib/api/materialApi/request.js +5 -8
  50. package/lib/api/materialApi/request.js.map +1 -1
  51. package/lib/api/productCenter/request.js +5 -5
  52. package/lib/api/productCenter/request.js.map +1 -1
  53. package/lib/api/resource/request.js +5 -9
  54. package/lib/api/resource/request.js.map +1 -1
  55. package/lib/api/shopAdmin/request.js +4 -3
  56. package/lib/api/shopAdmin/request.js.map +1 -1
  57. package/lib/api/utils/createModes.d.ts +17 -0
  58. package/lib/api/utils/createModes.js +22 -0
  59. package/lib/api/utils/createModes.js.map +1 -0
  60. package/lib/api/utils/index.d.ts +1 -0
  61. package/lib/api/utils/index.js +2 -0
  62. package/lib/api/utils/index.js.map +1 -1
  63. package/lib/api/utils/resetAxiosBaseUrl.js.map +1 -1
  64. package/lib/components/src/base/row/Row.vue.d.ts +6 -6
  65. package/lib/components/src/base/row/index.d.ts +16 -16
  66. package/lib/components/src/base/row/row.d.ts +1 -1
  67. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +7 -5
  68. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
  69. package/lib/components/src/business/uploadPro/UploadPro.vue.d.ts +35 -35
  70. package/lib/components/src/business/uploadPro/UploadPro.vue.js +1 -1
  71. package/lib/components/src/business/uploadPro/UploadPro.vue2.js +1 -1
  72. package/lib/components/src/business/uploadPro/UploadPro.vue2.js.map +1 -1
  73. package/lib/components/src/business/uploadPro/index.d.ts +10 -10
  74. package/lib/giime/index.js +1 -0
  75. package/lib/giime/index.js.map +1 -1
  76. package/lib/giime/version.d.ts +1 -1
  77. package/lib/giime/version.js +1 -1
  78. package/lib/giime/version.js.map +1 -1
  79. package/lib/index.css +2 -2
  80. package/lib/utils/__tests__/http/url.test.d.ts +1 -0
  81. package/lib/utils/index.js +1 -0
  82. package/lib/utils/index.js.map +1 -1
  83. package/lib/utils/src/http/index.js +1 -0
  84. package/lib/utils/src/http/index.js.map +1 -1
  85. package/lib/utils/src/http/url.d.ts +10 -0
  86. package/lib/utils/src/http/url.js +26 -4
  87. package/lib/utils/src/http/url.js.map +1 -1
  88. package/lib/utils/src/vue/resolver.d.ts +4 -1
  89. package/lib/utils/src/vue/resolver.js +4 -1
  90. package/lib/utils/src/vue/resolver.js.map +1 -1
  91. package/package.json +1 -1
@@ -1,5 +1,15 @@
1
1
  /**
2
2
  * 获取当前页面的域
3
3
  * @example https://www.baidu.com/s?wd=hello&ie=utf-8 => .baidu.com
4
+ * @example https://127.0.0.1:5000/dashboard => 127.0.0.1
5
+ * @example http://localhost:3000/test => localhost
4
6
  */
5
7
  export declare function getDomain(): string | undefined;
8
+ /**
9
+ * 拼接 url 路径,自动处理多余的 /
10
+ * @param {...string[]} parts 路径片段
11
+ * @returns {string}
12
+ * @example urlJoin('https://www.baidu.com', 's', 'wd=hello') => https://www.baidu.com/s/wd=hello
13
+ * @example urlJoin('/', 'ai/copywriting/gen') => /ai/copywriting/gen
14
+ */
15
+ export declare function urlJoin(...parts: string[]): string;
@@ -6,18 +6,40 @@ function getDomain() {
6
6
  const match = url.match(domainPattern);
7
7
  if (match) {
8
8
  const domain = match[1];
9
- if (/^(localhost|(\d{1,3}\.){3}\d{1,3})$/.test(domain)) {
10
- return void 0;
9
+ const domainWithoutPort = domain.split(":")[0];
10
+ if (/^(\d{1,3}\.){3}\d{1,3}$/.test(domainWithoutPort)) {
11
+ return domainWithoutPort;
11
12
  }
12
- const domainParts = domain.split(".");
13
+ if (domainWithoutPort === "localhost") {
14
+ return "localhost";
15
+ }
16
+ const domainParts = domainWithoutPort.split(".");
13
17
  if (domainParts.length > 2) {
14
18
  return `.${domainParts.slice(-2).join(".")}`;
15
19
  } else {
16
- return `.${domain}`;
20
+ return `.${domainWithoutPort}`;
17
21
  }
18
22
  }
19
23
  return void 0;
20
24
  }
25
+ function urlJoin(...parts) {
26
+ if (parts.length === 0)
27
+ return "";
28
+ if (parts.length === 1)
29
+ return parts[0];
30
+ const result = parts.map((part, i) => {
31
+ if (i === 0) {
32
+ if (part === "/")
33
+ return "";
34
+ return part.replace(/\/+$/, "");
35
+ }
36
+ if (i === parts.length - 1)
37
+ return part.replace(/^\/+/, "");
38
+ return part.replace(/^\/+|\/+$/g, "");
39
+ }).filter(Boolean).join("/");
40
+ return parts[0] === "/" ? "/" + result : result;
41
+ }
21
42
 
22
43
  exports.getDomain = getDomain;
44
+ exports.urlJoin = urlJoin;
23
45
  //# sourceMappingURL=url.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","sources":["../../../../../../packages/utils/src/http/url.ts"],"sourcesContent":["/**\n * 获取当前页面的域\n * @example https://www.baidu.com/s?wd=hello&ie=utf-8 => .baidu.com\n */\nexport function getDomain() {\n const url = window.location.href;\n // eslint-disable-next-line no-useless-escape\n const domainPattern = /https?:\\/\\/([^\\/]+)/;\n const match = url.match(domainPattern);\n\n if (match) {\n const domain = match[1];\n // 检查是否是IP地址或localhost\n if (/^(localhost|(\\d{1,3}\\.){3}\\d{1,3})$/.test(domain)) {\n return undefined;\n }\n\n // 提取主域名部分\n const domainParts = domain.split('.');\n if (domainParts.length > 2) {\n return `.${domainParts.slice(-2).join('.')}`;\n } else {\n return `.${domain}`;\n }\n }\n\n return undefined;\n}\n\n// // 使用示例\n// console.log(getDomain());\n"],"names":[],"mappings":";;AAIO,SAAS,SAAY,GAAA;AAC1B,EAAM,MAAA,GAAA,GAAM,OAAO,QAAS,CAAA,IAAA,CAAA;AAE5B,EAAA,MAAM,aAAgB,GAAA,qBAAA,CAAA;AACtB,EAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,KAAA,CAAM,aAAa,CAAA,CAAA;AAErC,EAAA,IAAI,KAAO,EAAA;AACT,IAAM,MAAA,MAAA,GAAS,MAAM,CAAC,CAAA,CAAA;AAEtB,IAAI,IAAA,qCAAA,CAAsC,IAAK,CAAA,MAAM,CAAG,EAAA;AACtD,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACT;AAGA,IAAM,MAAA,WAAA,GAAc,MAAO,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AACpC,IAAI,IAAA,WAAA,CAAY,SAAS,CAAG,EAAA;AAC1B,MAAA,OAAO,IAAI,WAAY,CAAA,KAAA,CAAM,EAAE,CAAE,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,KACrC,MAAA;AACL,MAAA,OAAO,IAAI,MAAM,CAAA,CAAA,CAAA;AAAA,KACnB;AAAA,GACF;AAEA,EAAO,OAAA,KAAA,CAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"url.js","sources":["../../../../../../packages/utils/src/http/url.ts"],"sourcesContent":["/**\n * 获取当前页面的域\n * @example https://www.baidu.com/s?wd=hello&ie=utf-8 => .baidu.com\n * @example https://127.0.0.1:5000/dashboard => 127.0.0.1\n * @example http://localhost:3000/test => localhost\n */\nexport function getDomain() {\n const url = window.location.href;\n // eslint-disable-next-line no-useless-escape\n const domainPattern = /https?:\\/\\/([^\\/]+)/;\n const match = url.match(domainPattern);\n\n if (match) {\n const domain = match[1];\n // 去除端口号,只保留域名或IP部分\n const domainWithoutPort = domain.split(':')[0];\n\n // 检查是否是IP地址,如果是则直接返回IP\n if (/^(\\d{1,3}\\.){3}\\d{1,3}$/.test(domainWithoutPort)) {\n return domainWithoutPort;\n }\n\n // 检查是否是localhost,如果是则直接返回localhost\n if (domainWithoutPort === 'localhost') {\n return 'localhost';\n }\n\n // 提取主域名部分(对于真实域名,返回 .domain.com 格式)\n const domainParts = domainWithoutPort.split('.');\n if (domainParts.length > 2) {\n return `.${domainParts.slice(-2).join('.')}`;\n } else {\n return `.${domainWithoutPort}`;\n }\n }\n\n return undefined;\n}\n\n// // 使用示例\n// console.log(getDomain());\n/**\n * 拼接 url 路径,自动处理多余的 /\n * @param {...string[]} parts 路径片段\n * @returns {string}\n * @example urlJoin('https://www.baidu.com', 's', 'wd=hello') => https://www.baidu.com/s/wd=hello\n * @example urlJoin('/', 'ai/copywriting/gen') => /ai/copywriting/gen\n */\nexport function urlJoin(...parts: string[]): string {\n if (parts.length === 0) return '';\n if (parts.length === 1) return parts[0];\n\n const result = parts\n .map((part, i) => {\n if (i === 0) {\n // 对于第一个参数,如果只是 '/',保留为空但记住它\n if (part === '/') return '';\n return part.replace(/\\/+$/, ''); // 否则去掉结尾/\n }\n if (i === parts.length - 1) return part.replace(/^\\/+/, ''); // 最后一个去掉开头/\n\n return part.replace(/^\\/+|\\/+$/g, ''); // 中间的去掉头尾/\n })\n .filter(Boolean)\n .join('/');\n\n // 如果第一个参数是 '/',在结果前加上 '/'\n return parts[0] === '/' ? '/' + result : result;\n}\n"],"names":[],"mappings":";;AAMO,SAAS,SAAY,GAAA;AAC1B,EAAM,MAAA,GAAA,GAAM,OAAO,QAAS,CAAA,IAAA,CAAA;AAE5B,EAAA,MAAM,aAAgB,GAAA,qBAAA,CAAA;AACtB,EAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,KAAA,CAAM,aAAa,CAAA,CAAA;AAErC,EAAA,IAAI,KAAO,EAAA;AACT,IAAM,MAAA,MAAA,GAAS,MAAM,CAAC,CAAA,CAAA;AAEtB,IAAA,MAAM,iBAAoB,GAAA,MAAA,CAAO,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA,CAAA;AAG7C,IAAI,IAAA,yBAAA,CAA0B,IAAK,CAAA,iBAAiB,CAAG,EAAA;AACrD,MAAO,OAAA,iBAAA,CAAA;AAAA,KACT;AAGA,IAAA,IAAI,sBAAsB,WAAa,EAAA;AACrC,MAAO,OAAA,WAAA,CAAA;AAAA,KACT;AAGA,IAAM,MAAA,WAAA,GAAc,iBAAkB,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC/C,IAAI,IAAA,WAAA,CAAY,SAAS,CAAG,EAAA;AAC1B,MAAA,OAAO,IAAI,WAAY,CAAA,KAAA,CAAM,EAAE,CAAE,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,KACrC,MAAA;AACL,MAAA,OAAO,IAAI,iBAAiB,CAAA,CAAA,CAAA;AAAA,KAC9B;AAAA,GACF;AAEA,EAAO,OAAA,KAAA,CAAA,CAAA;AACT,CAAA;AAWO,SAAS,WAAW,KAAyB,EAAA;AAClD,EAAA,IAAI,MAAM,MAAW,KAAA,CAAA;AAAG,IAAO,OAAA,EAAA,CAAA;AAC/B,EAAA,IAAI,MAAM,MAAW,KAAA,CAAA;AAAG,IAAA,OAAO,MAAM,CAAC,CAAA,CAAA;AAEtC,EAAA,MAAM,MAAS,GAAA,KAAA,CACZ,GAAI,CAAA,CAAC,MAAM,CAAM,KAAA;AAChB,IAAA,IAAI,MAAM,CAAG,EAAA;AAEX,MAAA,IAAI,IAAS,KAAA,GAAA;AAAK,QAAO,OAAA,EAAA,CAAA;AACzB,MAAO,OAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,EAAQ,EAAE,CAAA,CAAA;AAAA,KAChC;AACA,IAAI,IAAA,CAAA,KAAM,MAAM,MAAS,GAAA,CAAA;AAAG,MAAO,OAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,EAAQ,EAAE,CAAA,CAAA;AAE1D,IAAO,OAAA,IAAA,CAAK,OAAQ,CAAA,YAAA,EAAc,EAAE,CAAA,CAAA;AAAA,GACrC,CACA,CAAA,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA,CAAA;AAGX,EAAA,OAAO,KAAM,CAAA,CAAC,CAAM,KAAA,GAAA,GAAM,MAAM,MAAS,GAAA,MAAA,CAAA;AAC3C;;;;;"}
@@ -4,7 +4,10 @@ import type { ProxyOptions } from 'vite';
4
4
  import * as http from 'node:http';
5
5
  export declare function kebabCase(key: string): string;
6
6
  export declare const GiimeResolver: () => ComponentResolver[];
7
+ export interface GiimeBypassOptions {
8
+ showLog?: boolean;
9
+ }
7
10
  /**
8
11
  * webpack-dev-server style bypass function
9
12
  */
10
- export declare const bypass: (req: http.IncomingMessage, res: http.ServerResponse | undefined, options: ProxyOptions) => void;
13
+ export declare const bypass: (req: http.IncomingMessage, res: http.ServerResponse | undefined, options: ProxyOptions, giimeOptions?: GiimeBypassOptions) => void;
@@ -22,11 +22,14 @@ const GiimeResolver = () => {
22
22
  }
23
23
  ];
24
24
  };
25
- const bypass = (req, res, options) => {
25
+ const bypass = (req, res, options, giimeOptions) => {
26
26
  const targetPath = new URL(options.target?.toString() ?? "").pathname.replace(/\/$/, "");
27
27
  const rewrittenPath = options.rewrite?.(req.url) ?? "";
28
28
  const fullPath = `${targetPath}${rewrittenPath}`;
29
29
  const proxyUrl = new URL(fullPath, options.target?.toString());
30
+ if (giimeOptions?.showLog) {
31
+ console.log("proxyUrl", proxyUrl.toString());
32
+ }
30
33
  res?.setHeader("x-giime-proxy-url", proxyUrl.toString());
31
34
  };
32
35
 
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sources":["../../../../../../packages/utils/src/vue/resolver.ts"],"sourcesContent":["import type { ComponentResolver } from 'unplugin-vue-components';\nimport type { ProxyOptions } from 'vite';\nimport * as http from 'node:http';\n\nexport function kebabCase(key: string) {\n const result = key.replace(/([A-Z])/g, ' $1').trim();\n return result.split(' ').join('-').toLowerCase();\n}\nexport const GiimeResolver = (): ComponentResolver[] => {\n return [\n {\n type: 'component',\n resolve: async (name: string) => {\n if (!name.match(/^Gm[A-Z]/)) return;\n // const partialName = kebabCase(name.slice(2));\n // where `componentName` is always CapitalCase\n return { name, from: 'giime' };\n },\n },\n {\n type: 'directive',\n resolve: async () => {\n return;\n },\n },\n ];\n};\n/**\n * webpack-dev-server style bypass function\n */\nexport const bypass = (\n req: http.IncomingMessage,\n /** undefined for WebSocket upgrade requests */\n res: http.ServerResponse | undefined,\n options: ProxyOptions,\n) => {\n // 获取请求路径,处理后缀斜杠的问题\n const targetPath = new URL(options.target?.toString() ?? '').pathname.replace(/\\/$/, '');\n // 使用 rewrite 函数处理请求路径,并处理后缀斜杠的问题\n const rewrittenPath = options.rewrite?.(req.url!) ?? '';\n // 合并路径\n const fullPath = `${targetPath}${rewrittenPath}`;\n\n // 构造完整的代理 URL\n const proxyUrl = new URL(fullPath, options.target?.toString());\n\n // 设置响应头\n res?.setHeader('x-giime-proxy-url', proxyUrl.toString());\n};\n"],"names":[],"mappings":";;AAIO,SAAS,UAAU,GAAa,EAAA;AACrC,EAAA,MAAM,SAAS,GAAI,CAAA,OAAA,CAAQ,UAAY,EAAA,KAAK,EAAE,IAAK,EAAA,CAAA;AACnD,EAAA,OAAO,OAAO,KAAM,CAAA,GAAG,EAAE,IAAK,CAAA,GAAG,EAAE,WAAY,EAAA,CAAA;AACjD,CAAA;AACO,MAAM,gBAAgB,MAA2B;AACtD,EAAO,OAAA;AAAA,IACL;AAAA,MACE,IAAM,EAAA,WAAA;AAAA,MACN,OAAA,EAAS,OAAO,IAAiB,KAAA;AAC/B,QAAI,IAAA,CAAC,IAAK,CAAA,KAAA,CAAM,UAAU,CAAA;AAAG,UAAA,OAAA;AAG7B,QAAO,OAAA,EAAE,IAAM,EAAA,IAAA,EAAM,OAAQ,EAAA,CAAA;AAAA,OAC/B;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAM,EAAA,WAAA;AAAA,MACN,SAAS,YAAY;AACnB,QAAA,OAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF,CAAA;AACF,EAAA;AAIO,MAAM,MAAS,GAAA,CACpB,GAEA,EAAA,GAAA,EACA,OACG,KAAA;AAEH,EAAA,MAAM,UAAa,GAAA,IAAI,GAAI,CAAA,OAAA,CAAQ,MAAQ,EAAA,QAAA,EAAc,IAAA,EAAE,CAAE,CAAA,QAAA,CAAS,OAAQ,CAAA,KAAA,EAAO,EAAE,CAAA,CAAA;AAEvF,EAAA,MAAM,aAAgB,GAAA,OAAA,CAAQ,OAAU,GAAA,GAAA,CAAI,GAAI,CAAK,IAAA,EAAA,CAAA;AAErD,EAAA,MAAM,QAAW,GAAA,CAAA,EAAG,UAAU,CAAA,EAAG,aAAa,CAAA,CAAA,CAAA;AAG9C,EAAA,MAAM,WAAW,IAAI,GAAA,CAAI,UAAU,OAAQ,CAAA,MAAA,EAAQ,UAAU,CAAA,CAAA;AAG7D,EAAA,GAAA,EAAK,SAAU,CAAA,mBAAA,EAAqB,QAAS,CAAA,QAAA,EAAU,CAAA,CAAA;AACzD;;;;;;"}
1
+ {"version":3,"file":"resolver.js","sources":["../../../../../../packages/utils/src/vue/resolver.ts"],"sourcesContent":["import type { ComponentResolver } from 'unplugin-vue-components';\nimport type { ProxyOptions } from 'vite';\nimport * as http from 'node:http';\n\nexport function kebabCase(key: string) {\n const result = key.replace(/([A-Z])/g, ' $1').trim();\n return result.split(' ').join('-').toLowerCase();\n}\nexport const GiimeResolver = (): ComponentResolver[] => {\n return [\n {\n type: 'component',\n resolve: async (name: string) => {\n if (!name.match(/^Gm[A-Z]/)) return;\n // const partialName = kebabCase(name.slice(2));\n // where `componentName` is always CapitalCase\n return { name, from: 'giime' };\n },\n },\n {\n type: 'directive',\n resolve: async () => {\n return;\n },\n },\n ];\n};\nexport interface GiimeBypassOptions {\n showLog?: boolean;\n}\n\n/**\n * webpack-dev-server style bypass function\n */\nexport const bypass = (\n req: http.IncomingMessage,\n /** undefined for WebSocket upgrade requests */\n res: http.ServerResponse | undefined,\n options: ProxyOptions,\n giimeOptions?: GiimeBypassOptions,\n) => {\n // 获取请求路径,处理后缀斜杠的问题\n const targetPath = new URL(options.target?.toString() ?? '').pathname.replace(/\\/$/, '');\n // 使用 rewrite 函数处理请求路径,并处理后缀斜杠的问题\n const rewrittenPath = options.rewrite?.(req.url!) ?? '';\n // 合并路径\n const fullPath = `${targetPath}${rewrittenPath}`;\n\n // 构造完整的代理 URL\n const proxyUrl = new URL(fullPath, options.target?.toString());\n\n if (giimeOptions?.showLog) {\n console.log('proxyUrl', proxyUrl.toString());\n }\n // 设置响应头\n res?.setHeader('x-giime-proxy-url', proxyUrl.toString());\n};\n"],"names":[],"mappings":";;AAIO,SAAS,UAAU,GAAa,EAAA;AACrC,EAAA,MAAM,SAAS,GAAI,CAAA,OAAA,CAAQ,UAAY,EAAA,KAAK,EAAE,IAAK,EAAA,CAAA;AACnD,EAAA,OAAO,OAAO,KAAM,CAAA,GAAG,EAAE,IAAK,CAAA,GAAG,EAAE,WAAY,EAAA,CAAA;AACjD,CAAA;AACO,MAAM,gBAAgB,MAA2B;AACtD,EAAO,OAAA;AAAA,IACL;AAAA,MACE,IAAM,EAAA,WAAA;AAAA,MACN,OAAA,EAAS,OAAO,IAAiB,KAAA;AAC/B,QAAI,IAAA,CAAC,IAAK,CAAA,KAAA,CAAM,UAAU,CAAA;AAAG,UAAA,OAAA;AAG7B,QAAO,OAAA,EAAE,IAAM,EAAA,IAAA,EAAM,OAAQ,EAAA,CAAA;AAAA,OAC/B;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAM,EAAA,WAAA;AAAA,MACN,SAAS,YAAY;AACnB,QAAA,OAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF,CAAA;AACF,EAAA;AAQO,MAAM,MAAS,GAAA,CACpB,GAEA,EAAA,GAAA,EACA,SACA,YACG,KAAA;AAEH,EAAA,MAAM,UAAa,GAAA,IAAI,GAAI,CAAA,OAAA,CAAQ,MAAQ,EAAA,QAAA,EAAc,IAAA,EAAE,CAAE,CAAA,QAAA,CAAS,OAAQ,CAAA,KAAA,EAAO,EAAE,CAAA,CAAA;AAEvF,EAAA,MAAM,aAAgB,GAAA,OAAA,CAAQ,OAAU,GAAA,GAAA,CAAI,GAAI,CAAK,IAAA,EAAA,CAAA;AAErD,EAAA,MAAM,QAAW,GAAA,CAAA,EAAG,UAAU,CAAA,EAAG,aAAa,CAAA,CAAA,CAAA;AAG9C,EAAA,MAAM,WAAW,IAAI,GAAA,CAAI,UAAU,OAAQ,CAAA,MAAA,EAAQ,UAAU,CAAA,CAAA;AAE7D,EAAA,IAAI,cAAc,OAAS,EAAA;AACzB,IAAA,OAAA,CAAQ,GAAI,CAAA,UAAA,EAAY,QAAS,CAAA,QAAA,EAAU,CAAA,CAAA;AAAA,GAC7C;AAEA,EAAA,GAAA,EAAK,SAAU,CAAA,mBAAA,EAAqB,QAAS,CAAA,QAAA,EAAU,CAAA,CAAA;AACzD;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "giime",
3
- "version": "0.6.45",
3
+ "version": "0.7.1",
4
4
  "description": "A Component Library for Vue 3",
5
5
  "keywords": [
6
6
  "giime",