giime 0.8.13 → 0.9.0-beta.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 (98) hide show
  1. package/dist/index.css +133 -133
  2. package/es/api/gstore/request.mjs +4 -8
  3. package/es/api/gstore/request.mjs.map +1 -1
  4. package/es/api/guardBasic/request.mjs +4 -7
  5. package/es/api/guardBasic/request.mjs.map +1 -1
  6. package/es/api/materialApi/request.mjs +4 -7
  7. package/es/api/materialApi/request.mjs.map +1 -1
  8. package/es/api/productCenter/request.mjs +4 -7
  9. package/es/api/productCenter/request.mjs.map +1 -1
  10. package/es/api/resource/request.mjs +4 -7
  11. package/es/api/resource/request.mjs.map +1 -1
  12. package/es/api/shopAdmin/request.mjs +4 -10
  13. package/es/api/shopAdmin/request.mjs.map +1 -1
  14. package/es/api/utils/createModes.mjs +1 -1
  15. package/es/api/utils/index.mjs +1 -1
  16. package/es/api/utils/resetAxiosBaseUrl.d.ts +2 -4
  17. package/es/api/utils/resetAxiosBaseUrl.mjs +10 -6
  18. package/es/api/utils/resetAxiosBaseUrl.mjs.map +1 -1
  19. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +15 -18
  20. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
  21. package/es/giime/index.mjs +4 -2
  22. package/es/giime/index.mjs.map +1 -1
  23. package/es/giime/version.d.ts +1 -1
  24. package/es/giime/version.mjs +1 -1
  25. package/es/giime/version.mjs.map +1 -1
  26. package/es/hooks/base/index.mjs +1 -1
  27. package/es/hooks/base/useDownload/index.d.ts +20 -0
  28. package/es/hooks/base/useDownload/index.mjs +1 -1
  29. package/es/hooks/base/useDownload/index.mjs.map +1 -1
  30. package/es/hooks/index.mjs +1 -1
  31. package/es/index.css +133 -133
  32. package/es/utils/__tests__/http/devProxy.test.d.ts +1 -0
  33. package/es/utils/index.d.ts +1 -0
  34. package/es/utils/index.mjs +3 -1
  35. package/es/utils/index.mjs.map +1 -1
  36. package/es/utils/src/http/createModes.d.ts +23 -0
  37. package/es/utils/src/http/createModes.mjs +26 -13
  38. package/es/utils/src/http/createModes.mjs.map +1 -1
  39. package/es/utils/src/http/devProxy.d.ts +67 -2
  40. package/es/utils/src/http/devProxy.mjs +47 -52
  41. package/es/utils/src/http/devProxy.mjs.map +1 -1
  42. package/es/utils/src/http/index.d.ts +1 -0
  43. package/es/utils/src/http/index.mjs +2 -1
  44. package/es/utils/src/http/index.mjs.map +1 -1
  45. package/es/utils/src/tenant.d.ts +19 -0
  46. package/es/utils/src/tenant.mjs +22 -0
  47. package/es/utils/src/tenant.mjs.map +1 -0
  48. package/lib/api/gstore/request.js +4 -8
  49. package/lib/api/gstore/request.js.map +1 -1
  50. package/lib/api/guardBasic/request.js +4 -7
  51. package/lib/api/guardBasic/request.js.map +1 -1
  52. package/lib/api/materialApi/request.js +4 -7
  53. package/lib/api/materialApi/request.js.map +1 -1
  54. package/lib/api/productCenter/request.js +4 -7
  55. package/lib/api/productCenter/request.js.map +1 -1
  56. package/lib/api/resource/request.js +4 -7
  57. package/lib/api/resource/request.js.map +1 -1
  58. package/lib/api/shopAdmin/request.js +4 -10
  59. package/lib/api/shopAdmin/request.js.map +1 -1
  60. package/lib/api/utils/createModes.js +2 -0
  61. package/lib/api/utils/createModes.js.map +1 -1
  62. package/lib/api/utils/index.js +2 -0
  63. package/lib/api/utils/index.js.map +1 -1
  64. package/lib/api/utils/resetAxiosBaseUrl.d.ts +2 -4
  65. package/lib/api/utils/resetAxiosBaseUrl.js +10 -6
  66. package/lib/api/utils/resetAxiosBaseUrl.js.map +1 -1
  67. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +14 -17
  68. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
  69. package/lib/giime/index.js +11 -0
  70. package/lib/giime/index.js.map +1 -1
  71. package/lib/giime/version.d.ts +1 -1
  72. package/lib/giime/version.js +1 -1
  73. package/lib/giime/version.js.map +1 -1
  74. package/lib/hooks/base/index.js +3 -0
  75. package/lib/hooks/base/index.js.map +1 -1
  76. package/lib/hooks/base/useDownload/index.d.ts +20 -0
  77. package/lib/hooks/base/useDownload/index.js +3 -0
  78. package/lib/hooks/base/useDownload/index.js.map +1 -1
  79. package/lib/hooks/index.js +3 -0
  80. package/lib/hooks/index.js.map +1 -1
  81. package/lib/index.css +133 -133
  82. package/lib/utils/__tests__/http/devProxy.test.d.ts +1 -0
  83. package/lib/utils/index.d.ts +1 -0
  84. package/lib/utils/index.js +8 -0
  85. package/lib/utils/index.js.map +1 -1
  86. package/lib/utils/src/http/createModes.d.ts +23 -0
  87. package/lib/utils/src/http/createModes.js +27 -12
  88. package/lib/utils/src/http/createModes.js.map +1 -1
  89. package/lib/utils/src/http/devProxy.d.ts +67 -2
  90. package/lib/utils/src/http/devProxy.js +46 -50
  91. package/lib/utils/src/http/devProxy.js.map +1 -1
  92. package/lib/utils/src/http/index.d.ts +1 -0
  93. package/lib/utils/src/http/index.js +4 -0
  94. package/lib/utils/src/http/index.js.map +1 -1
  95. package/lib/utils/src/tenant.d.ts +19 -0
  96. package/lib/utils/src/tenant.js +26 -0
  97. package/lib/utils/src/tenant.js.map +1 -0
  98. package/package.json +1 -1
@@ -1,12 +1,77 @@
1
1
  import type { ProxyOptions } from 'vite';
2
+ /**
3
+ * 自动代理配置选项
4
+ */
5
+ export interface AutoProxyOptions {
6
+ /** 需要排除的环境变量名称数组 */
7
+ excludeKeys?: string[];
8
+ /** 是否禁用本地开发环境代理(禁用后不会代理到 localhost) */
9
+ disableLocal?: boolean;
10
+ }
2
11
  /**
3
12
  * 默认开发代理配置
4
13
  * https://cn.vitejs.dev/config/#server-proxy
5
14
  */
6
15
  export declare const giimeDevProxy: Record<string, string | ProxyOptions>;
7
16
  /**
8
- * 根据环境动态生成代理配置
17
+ * 自动生成代理配置(通过扫描环境变量)
18
+ * - 自动读取环境变量中以斜杠开头的 VITE_ 变量
19
+ * - 根据 VITE_GIIME_MODE 自动确定代理目标服务器
20
+ * - 支持排除特定环境变量
21
+ * - 支持禁用本地开发环境代理
22
+ *
23
+ * @param env 环境变量对象
24
+ * @param options 配置选项
25
+ * @param options.excludeKeys 需要排除的环境变量名称数组
26
+ * @param options.disableLocal 是否禁用本地开发环境代理
27
+ * @returns 代理配置对象
28
+ *
29
+ * @example
30
+ * // 基础用法 - 自动扫描环境变量
31
+ * export default defineConfig({
32
+ * server: {
33
+ * proxy: autoGenerateProxy(process.env)
34
+ * }
35
+ * })
36
+ *
37
+ * @example
38
+ * // 排除特定环境变量并禁用本地代理
39
+ * export default defineConfig({
40
+ * server: {
41
+ * proxy: autoGenerateProxy(process.env, {
42
+ * excludeKeys: ['VITE_APP_TITLE', 'VITE_PUBLIC_PATH'],
43
+ * disableLocal: true
44
+ * })
45
+ * }
46
+ * })
47
+ */
48
+ export declare const autoGenerateProxy: (env: Record<string, string>, options?: AutoProxyOptions) => Record<string, string | ProxyOptions>;
49
+ /**
50
+ * 根据环境动态生成代理配置(融合版)
51
+ * - 包含预定义的 API 服务类型代理配置
52
+ * - 包含自动扫描环境变量的代理配置
53
+ *
9
54
  * @param env 环境变量对象
55
+ * @param options 自动代理配置选项
10
56
  * @returns 代理配置对象
57
+ *
58
+ * @example
59
+ * // 基础用法
60
+ * export default defineConfig({
61
+ * server: {
62
+ * proxy: giimeDevProxyFn(process.env)
63
+ * }
64
+ * })
65
+ *
66
+ * @example
67
+ * // 带选项
68
+ * export default defineConfig({
69
+ * server: {
70
+ * proxy: giimeDevProxyFn(process.env, {
71
+ * excludeKeys: ['VITE_APP_TITLE'],
72
+ * disableLocal: true
73
+ * })
74
+ * }
75
+ * })
11
76
  */
12
- export declare const giimeDevProxyFn: (env: Record<string, string>) => Record<string, string | ProxyOptions>;
77
+ export declare const giimeDevProxyFn: (env: Record<string, string>, options?: AutoProxyOptions) => Record<string, string | ProxyOptions>;
@@ -4,66 +4,62 @@ var resolver = require('../vue/resolver.js');
4
4
  var key = require('../../../constants/key.js');
5
5
  var createModes = require('./createModes.js');
6
6
 
7
- const API_CONFIGS = [
8
- {
9
- path: "/gstore-api",
10
- defaultTarget: "https://third-ssl.giikin.cn/gstore/"
11
- },
12
- {
13
- path: "/material-api",
14
- defaultTarget: "https://manage-test.giikin.cn/middle",
15
- serviceType: "middle"
16
- },
17
- {
18
- path: "/shop-admin-api",
19
- defaultTarget: "https://shop-admin-api-ssl.giikin.cn"
20
- },
21
- {
22
- path: "/product-center-api",
23
- defaultTarget: "https://manage-dev.giikin.cn/product-center",
24
- serviceType: "product-center"
25
- },
26
- {
27
- path: "/guard-basic-api",
28
- defaultTarget: "https://manage-dev.giikin.cn/guard",
29
- serviceType: "guard"
30
- },
31
- {
32
- path: "/giime-guard-resource-api",
33
- defaultTarget: "https://manage-dev.giikin.cn/guard",
34
- serviceType: "guard"
35
- }
36
- ];
37
- const createProxyConfig = (path, target) => ({
38
- target,
39
- changeOrigin: true,
40
- rewrite: (p) => p.replace(new RegExp(`^${path}`), ""),
41
- bypass: resolver.bypass
42
- });
43
- const getTargetUrl = (config, mode) => {
44
- if (!config.serviceType || !mode) {
45
- return config.defaultTarget;
46
- }
47
- const modes = createModes.createModes({
48
- developmentPath: config.path,
49
- serviceType: config.serviceType
50
- });
51
- return modes.find((item) => item.mode === mode)?.url || `https://manage-dev.giikin.cn/${config.serviceType}`;
7
+ const API_SERVICE_TYPES = ["/third/gstore", "/third/am", "/guard", "fe/basic", "/middle", "/product-center"];
8
+ const resolveBaseUrl = (mode) => {
9
+ return createModes.getEnvConfig(mode).url;
52
10
  };
53
11
  const generateProxyConfig = (mode) => {
54
12
  const config = {};
55
- API_CONFIGS.forEach((apiConfig) => {
56
- const target = getTargetUrl(apiConfig, mode);
57
- config[apiConfig.path] = createProxyConfig(apiConfig.path, target);
13
+ const giimeMode = mode || "development";
14
+ const baseUrl = resolveBaseUrl(giimeMode);
15
+ API_SERVICE_TYPES.forEach((serviceType) => {
16
+ config[serviceType] = {
17
+ target: baseUrl,
18
+ changeOrigin: true,
19
+ rewrite: (p) => p.replace(new RegExp(`^${serviceType.replace(/\//g, "\\/")}`), serviceType),
20
+ bypass: resolver.bypass
21
+ };
58
22
  });
59
23
  return config;
60
24
  };
61
25
  const giimeDevProxy = generateProxyConfig();
62
- const giimeDevProxyFn = (env) => {
26
+ const autoGenerateProxy = (env, options) => {
27
+ const proxy = {};
28
+ const giimeMode = env.VITE_GIIME_MODE || "development";
29
+ const proxyTarget = resolveBaseUrl(giimeMode);
30
+ const processedPaths = /* @__PURE__ */ new Set();
31
+ const excludeKeys = options?.excludeKeys || [];
32
+ const disableLocal = options?.disableLocal || false;
33
+ for (const [key, value] of Object.entries(env)) {
34
+ if (!key.startsWith("VITE_")) continue;
35
+ if (excludeKeys.includes(key)) continue;
36
+ if (key === "VITE_BASE_URL") continue;
37
+ const cleanValue = value.replace(/['"]/g, "").trim();
38
+ if (!cleanValue.startsWith("/") || cleanValue === "/") continue;
39
+ if (disableLocal && giimeMode === "development") continue;
40
+ const normalizedPath = cleanValue.endsWith("/") ? cleanValue.slice(0, -1) : cleanValue;
41
+ if (processedPaths.has(normalizedPath)) continue;
42
+ proxy[normalizedPath] = {
43
+ target: proxyTarget,
44
+ changeOrigin: true,
45
+ rewrite: (p) => p.replace(new RegExp(`^${normalizedPath.replace(/\//g, "\\/")}`), normalizedPath),
46
+ bypass: resolver.bypass
47
+ };
48
+ processedPaths.add(normalizedPath);
49
+ }
50
+ return proxy;
51
+ };
52
+ const giimeDevProxyFn = (env, options) => {
63
53
  const mode = env[key.resetEnvMode];
64
- return generateProxyConfig(mode);
54
+ return {
55
+ ...generateProxyConfig(mode),
56
+ // 预定义的服务类型配置
57
+ ...autoGenerateProxy(env, options)
58
+ // 自动扫描的配置
59
+ };
65
60
  };
66
61
 
62
+ exports.autoGenerateProxy = autoGenerateProxy;
67
63
  exports.giimeDevProxy = giimeDevProxy;
68
64
  exports.giimeDevProxyFn = giimeDevProxyFn;
69
65
  //# sourceMappingURL=devProxy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"devProxy.js","sources":["../../../../../../packages/utils/src/http/devProxy.ts"],"sourcesContent":["import type { ProxyOptions } from 'vite';\nimport { bypass } from '../vue/resolver';\n// background引用,先必须使用../../\nimport { resetEnvMode } from '../../../constants/key';\nimport { createModes } from './createModes';\n\n/**\n * API代理配置接口\n */\ninterface ApiProxyConfig {\n /** API路径 */\n path: string;\n /** 默认目标地址 */\n defaultTarget: string;\n /** 服务类型(用于createModes,同时也是URL后缀) */\n serviceType?: string;\n}\n\n/**\n * 所有API的基础配置\n */\nconst API_CONFIGS: ApiProxyConfig[] = [\n {\n path: '/gstore-api',\n defaultTarget: 'https://third-ssl.giikin.cn/gstore/',\n },\n {\n path: '/material-api',\n defaultTarget: 'https://manage-test.giikin.cn/middle',\n serviceType: 'middle',\n },\n {\n path: '/shop-admin-api',\n defaultTarget: 'https://shop-admin-api-ssl.giikin.cn',\n },\n {\n path: '/product-center-api',\n defaultTarget: 'https://manage-dev.giikin.cn/product-center',\n serviceType: 'product-center',\n },\n {\n path: '/guard-basic-api',\n defaultTarget: 'https://manage-dev.giikin.cn/guard',\n serviceType: 'guard',\n },\n {\n path: '/giime-guard-resource-api',\n defaultTarget: 'https://manage-dev.giikin.cn/guard',\n serviceType: 'guard',\n },\n];\n\n/**\n * 创建代理配置项\n * @param path API路径\n * @param target 目标地址\n * @returns 代理配置\n */\nconst createProxyConfig = (path: string, target: string): ProxyOptions => ({\n target,\n changeOrigin: true,\n rewrite: p => p.replace(new RegExp(`^${path}`), ''),\n bypass,\n});\n\n/**\n * 根据模式获取目标URL\n * @param config API配置\n * @param mode 环境模式\n * @returns 目标URL\n */\nconst getTargetUrl = (config: ApiProxyConfig, mode?: string): string => {\n if (!config.serviceType || !mode) {\n return config.defaultTarget;\n }\n\n const modes = createModes({\n developmentPath: config.path,\n serviceType: config.serviceType,\n });\n\n return modes.find(item => item.mode === mode)?.url || `https://manage-dev.giikin.cn/${config.serviceType}`;\n};\n\n/**\n * 生成代理配置对象\n * @param mode 环境模式(可选)\n * @returns 代理配置对象\n */\nconst generateProxyConfig = (mode?: string): Record<string, string | ProxyOptions> => {\n const config: Record<string, string | ProxyOptions> = {};\n\n API_CONFIGS.forEach(apiConfig => {\n const target = getTargetUrl(apiConfig, mode);\n config[apiConfig.path] = createProxyConfig(apiConfig.path, target);\n });\n\n return config;\n};\n\n/**\n * 默认开发代理配置\n * https://cn.vitejs.dev/config/#server-proxy\n */\nexport const giimeDevProxy: Record<string, string | ProxyOptions> = generateProxyConfig();\n\n/**\n * 根据环境动态生成代理配置\n * @param env 环境变量对象\n * @returns 代理配置对象\n */\nexport const giimeDevProxyFn = (env: Record<string, string>): Record<string, string | ProxyOptions> => {\n const mode = env[resetEnvMode];\n return generateProxyConfig(mode);\n};\n"],"names":["bypass","createModes","resetEnvMode"],"mappings":";;;;;;AAqBA,MAAM,WAAA,GAAgC;AAAA,EACpC;AAAA,IACE,IAAA,EAAM,aAAA;AAAA,IACN,aAAA,EAAe;AAAA,GACjB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,eAAA;AAAA,IACN,aAAA,EAAe,sCAAA;AAAA,IACf,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,iBAAA;AAAA,IACN,aAAA,EAAe;AAAA,GACjB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,qBAAA;AAAA,IACN,aAAA,EAAe,6CAAA;AAAA,IACf,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,kBAAA;AAAA,IACN,aAAA,EAAe,oCAAA;AAAA,IACf,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,2BAAA;AAAA,IACN,aAAA,EAAe,oCAAA;AAAA,IACf,WAAA,EAAa;AAAA;AAEjB,CAAA;AAQA,MAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,MAAA,MAAkC;AAAA,EACzE,MAAA;AAAA,EACA,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,CAAA,CAAA,KAAK,CAAA,CAAE,OAAA,CAAQ,IAAI,OAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAA,EAAG,EAAE,CAAA;AAAA,UAClDA;AACF,CAAA,CAAA;AAQA,MAAM,YAAA,GAAe,CAAC,MAAA,EAAwB,IAAA,KAA0B;AACtE,EAAA,IAAI,CAAC,MAAA,CAAO,WAAA,IAAe,CAAC,IAAA,EAAM;AAChC,IAAA,OAAO,MAAA,CAAO,aAAA;AAAA,EAChB;AAEA,EAAA,MAAM,QAAQC,uBAAA,CAAY;AAAA,IACxB,iBAAiB,MAAA,CAAO,IAAA;AAAA,IACxB,aAAa,MAAA,CAAO;AAAA,GACrB,CAAA;AAED,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,IAAA,KAAS,IAAI,CAAA,EAAG,GAAA,IAAO,CAAA,6BAAA,EAAgC,MAAA,CAAO,WAAW,CAAA,CAAA;AAC1G,CAAA;AAOA,MAAM,mBAAA,GAAsB,CAAC,IAAA,KAAyD;AACpF,EAAA,MAAM,SAAgD,EAAC;AAEvD,EAAA,WAAA,CAAY,QAAQ,CAAA,SAAA,KAAa;AAC/B,IAAA,MAAM,MAAA,GAAS,YAAA,CAAa,SAAA,EAAW,IAAI,CAAA;AAC3C,IAAA,MAAA,CAAO,UAAU,IAAI,CAAA,GAAI,iBAAA,CAAkB,SAAA,CAAU,MAAM,MAAM,CAAA;AAAA,EACnE,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACT,CAAA;AAMO,MAAM,gBAAuD,mBAAA;AAO7D,MAAM,eAAA,GAAkB,CAAC,GAAA,KAAuE;AACrG,EAAA,MAAM,IAAA,GAAO,IAAIC,gBAAY,CAAA;AAC7B,EAAA,OAAO,oBAAoB,IAAI,CAAA;AACjC;;;;;"}
1
+ {"version":3,"file":"devProxy.js","sources":["../../../../../../packages/utils/src/http/devProxy.ts"],"sourcesContent":["import type { ProxyOptions } from 'vite';\nimport { bypass } from '../vue/resolver';\n// background引用,先必须使用../../\nimport { resetEnvMode } from '../../../constants/key';\nimport { getEnvConfig } from './createModes';\n\n/**\n * 自动代理配置选项\n */\nexport interface AutoProxyOptions {\n /** 需要排除的环境变量名称数组 */\n excludeKeys?: string[];\n /** 是否禁用本地开发环境代理(禁用后不会代理到 localhost) */\n disableLocal?: boolean;\n}\n\n/**\n * 预定义的 API 服务类型列表\n */\nconst API_SERVICE_TYPES = ['/third/gstore', '/third/am', '/guard', 'fe/basic', '/middle', '/product-center'];\n\n/**\n * 根据模式获取基础URL\n * @param mode 环境模式\n * @returns 基础URL\n */\nconst resolveBaseUrl = (mode?: string): string => {\n return getEnvConfig(mode).url;\n};\n\n/**\n * 生成代理配置对象\n * @param mode 环境模式(可选)\n * @returns 代理配置对象\n */\nconst generateProxyConfig = (mode?: string): Record<string, string | ProxyOptions> => {\n const config: Record<string, string | ProxyOptions> = {};\n // 使用 VITE_GIIME_MODE 确定代理目标,默认为 development\n const giimeMode = mode || 'development';\n const baseUrl = resolveBaseUrl(giimeMode);\n\n API_SERVICE_TYPES.forEach(serviceType => {\n config[serviceType] = {\n target: baseUrl,\n changeOrigin: true,\n rewrite: (p: string) => p.replace(new RegExp(`^${serviceType.replace(/\\//g, '\\\\/')}`), serviceType),\n bypass,\n };\n });\n\n return config;\n};\n\n/**\n * 默认开发代理配置\n * https://cn.vitejs.dev/config/#server-proxy\n */\nexport const giimeDevProxy: Record<string, string | ProxyOptions> = generateProxyConfig();\n\n/**\n * 自动生成代理配置(通过扫描环境变量)\n * - 自动读取环境变量中以斜杠开头的 VITE_ 变量\n * - 根据 VITE_GIIME_MODE 自动确定代理目标服务器\n * - 支持排除特定环境变量\n * - 支持禁用本地开发环境代理\n *\n * @param env 环境变量对象\n * @param options 配置选项\n * @param options.excludeKeys 需要排除的环境变量名称数组\n * @param options.disableLocal 是否禁用本地开发环境代理\n * @returns 代理配置对象\n *\n * @example\n * // 基础用法 - 自动扫描环境变量\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env)\n * }\n * })\n *\n * @example\n * // 排除特定环境变量并禁用本地代理\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env, {\n * excludeKeys: ['VITE_APP_TITLE', 'VITE_PUBLIC_PATH'],\n * disableLocal: true\n * })\n * }\n * })\n */\nexport const autoGenerateProxy = (env: Record<string, string>, options?: AutoProxyOptions): Record<string, string | ProxyOptions> => {\n const proxy: Record<string, string | ProxyOptions> = {};\n\n // 使用 VITE_GIIME_MODE 确定代理目标,默认为 development\n const giimeMode = env.VITE_GIIME_MODE || 'development';\n const proxyTarget = resolveBaseUrl(giimeMode);\n\n const processedPaths = new Set<string>();\n const excludeKeys = options?.excludeKeys || [];\n const disableLocal = options?.disableLocal || false;\n\n // 遍历所有环境变量\n for (const [key, value] of Object.entries(env)) {\n // 只处理 VITE_ 开头的变量\n if (!key.startsWith('VITE_')) continue;\n\n // 跳过被排除的环境变量\n if (excludeKeys.includes(key)) continue;\n\n // 跳过 VITE_BASE_URL\n if (key === 'VITE_BASE_URL') continue;\n\n // 移除引号并获取清理后的值\n const cleanValue = value.replace(/['\"]/g, '').trim();\n\n // 只处理以斜杠开头且后续有值的路径(排除单独的 '/')\n if (!cleanValue.startsWith('/') || cleanValue === '/') continue;\n\n // 如果禁用本地代理且当前模式是 development,跳过\n if (disableLocal && giimeMode === 'development') continue;\n\n // 标准化路径:移除尾部斜杠\n const normalizedPath = cleanValue.endsWith('/') ? cleanValue.slice(0, -1) : cleanValue;\n\n // 跳过已处理的路径(避免重复配置)\n if (processedPaths.has(normalizedPath)) continue;\n\n // 生成代理配置\n proxy[normalizedPath] = {\n target: proxyTarget,\n changeOrigin: true,\n rewrite: (p: string) => p.replace(new RegExp(`^${normalizedPath.replace(/\\//g, '\\\\/')}`), normalizedPath),\n bypass,\n };\n\n processedPaths.add(normalizedPath);\n }\n\n return proxy;\n};\n\n/**\n * 根据环境动态生成代理配置(融合版)\n * - 包含预定义的 API 服务类型代理配置\n * - 包含自动扫描环境变量的代理配置\n *\n * @param env 环境变量对象\n * @param options 自动代理配置选项\n * @returns 代理配置对象\n *\n * @example\n * // 基础用法\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env)\n * }\n * })\n *\n * @example\n * // 带选项\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env, {\n * excludeKeys: ['VITE_APP_TITLE'],\n * disableLocal: true\n * })\n * }\n * })\n */\nexport const giimeDevProxyFn = (env: Record<string, string>, options?: AutoProxyOptions): Record<string, string | ProxyOptions> => {\n const mode = env[resetEnvMode];\n\n // 融合两种代理配置\n return {\n ...generateProxyConfig(mode), // 预定义的服务类型配置\n ...autoGenerateProxy(env, options), // 自动扫描的配置\n };\n};\n"],"names":["getEnvConfig","bypass","resetEnvMode"],"mappings":"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"}
@@ -3,3 +3,4 @@ export * from './errorMessage';
3
3
  export * from './interceptors';
4
4
  export * from './devProxy';
5
5
  export * from './url';
6
+ export { envConfigs, getEnvConfig, type EnvConfig } from './createModes';
@@ -5,6 +5,7 @@ var errorMessage = require('./errorMessage.js');
5
5
  var interceptors = require('./interceptors.js');
6
6
  var devProxy = require('./devProxy.js');
7
7
  var url = require('./url.js');
8
+ var createModes = require('./createModes.js');
8
9
 
9
10
 
10
11
 
@@ -13,9 +14,12 @@ exports.errorMessage = errorMessage.errorMessage;
13
14
  exports.responseErrorMessage = errorMessage.responseErrorMessage;
14
15
  exports.req401Interceptors = interceptors.req401Interceptors;
15
16
  exports.res401Interceptors = interceptors.res401Interceptors;
17
+ exports.autoGenerateProxy = devProxy.autoGenerateProxy;
16
18
  exports.giimeDevProxy = devProxy.giimeDevProxy;
17
19
  exports.giimeDevProxyFn = devProxy.giimeDevProxyFn;
18
20
  exports.getDomain = url.getDomain;
19
21
  exports.getHeaderValue = url.getHeaderValue;
20
22
  exports.urlJoin = url.urlJoin;
23
+ exports.envConfigs = createModes.envConfigs;
24
+ exports.getEnvConfig = createModes.getEnvConfig;
21
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * 基于环境模式和域名的租户类型判断
3
+ * 优先根据环境模式获取租户类型,其次根据域名判断
4
+ */
5
+ /** 租户类型 */
6
+ export type TenantType = 'giikin' | 'giiktok' | 'giimall';
7
+ /**
8
+ * 根据环境模式或域名获取租户类型
9
+ * 优先级:环境模式 > 域名 > 默认值(giikin)
10
+ */
11
+ export declare const getTenantType: () => TenantType;
12
+ /**
13
+ * 判断是否为 giiktok 租户
14
+ */
15
+ export declare const isGiiktok: () => boolean;
16
+ /**
17
+ * 判断是否为 giikin
18
+ */
19
+ export declare const isGiikin: () => boolean;
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ var key = require('../../constants/key.js');
4
+ var index = require('../../hooks/base/useGlobalConfig/index.js');
5
+ var createModes = require('./http/createModes.js');
6
+
7
+ const getTenantType = () => {
8
+ const hostname = window.location.hostname;
9
+ const importMetaEnv = index.useGlobalConfig("env");
10
+ const mode = importMetaEnv.value[key.resetEnvMode];
11
+ if (mode && createModes.envConfigs[mode]) {
12
+ return createModes.envConfigs[mode].tenant;
13
+ }
14
+ const envConfig = Object.values(createModes.envConfigs).find((config) => config.domain === hostname);
15
+ if (envConfig) {
16
+ return envConfig.tenant;
17
+ }
18
+ return "giikin";
19
+ };
20
+ const isGiiktok = () => getTenantType() === "giiktok";
21
+ const isGiikin = () => getTenantType() === "giikin";
22
+
23
+ exports.getTenantType = getTenantType;
24
+ exports.isGiikin = isGiikin;
25
+ exports.isGiiktok = isGiiktok;
26
+ //# sourceMappingURL=tenant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.js","sources":["../../../../../packages/utils/src/tenant.ts"],"sourcesContent":["/**\n * 基于环境模式和域名的租户类型判断\n * 优先根据环境模式获取租户类型,其次根据域名判断\n */\n\nimport { resetEnvMode } from '@giime/constants/key';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\nimport { envConfigs } from './http/createModes';\n\n/** 租户类型 */\nexport type TenantType = 'giikin' | 'giiktok' | 'giimall';\n\n/**\n * 根据环境模式或域名获取租户类型\n * 优先级:环境模式 > 域名 > 默认值(giikin)\n */\nexport const getTenantType = (): TenantType => {\n const hostname = window.location.hostname;\n const importMetaEnv = useGlobalConfig('env');\n const mode = importMetaEnv.value[resetEnvMode];\n\n // 1. 优先根据 resetEnvMode 获取租户类型\n if (mode && envConfigs[mode]) {\n return envConfigs[mode].tenant;\n }\n\n // 2. 其次根据域名获取租户类型\n const envConfig = Object.values(envConfigs).find(config => config.domain === hostname);\n if (envConfig) {\n return envConfig.tenant;\n }\n\n // 3. 默认返回 giikin\n return 'giikin';\n};\n\n/**\n * 判断是否为 giiktok 租户\n */\nexport const isGiiktok = () => getTenantType() === 'giiktok';\n\n/**\n * 判断是否为 giikin\n */\nexport const isGiikin = () => getTenantType() === 'giikin';\n"],"names":["useGlobalConfig","resetEnvMode","envConfigs"],"mappings":";;;;;;AAgBO,MAAM,gBAAgB,MAAkB;AAC7C,EAAA,MAAM,QAAA,GAAW,OAAO,QAAA,CAAS,QAAA;AACjC,EAAA,MAAM,aAAA,GAAgBA,sBAAgB,KAAK,CAAA;AAC3C,EAAA,MAAM,IAAA,GAAO,aAAA,CAAc,KAAA,CAAMC,gBAAY,CAAA;AAG7C,EAAA,IAAI,IAAA,IAAQC,sBAAA,CAAW,IAAI,CAAA,EAAG;AAC5B,IAAA,OAAOA,sBAAA,CAAW,IAAI,CAAA,CAAE,MAAA;AAAA,EAC1B;AAGA,EAAA,MAAM,SAAA,GAAY,OAAO,MAAA,CAAOA,sBAAU,EAAE,IAAA,CAAK,CAAA,MAAA,KAAU,MAAA,CAAO,MAAA,KAAW,QAAQ,CAAA;AACrF,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,OAAO,SAAA,CAAU,MAAA;AAAA,EACnB;AAGA,EAAA,OAAO,QAAA;AACT;AAKO,MAAM,SAAA,GAAY,MAAM,aAAA,EAAc,KAAM;AAK5C,MAAM,QAAA,GAAW,MAAM,aAAA,EAAc,KAAM;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "giime",
3
- "version": "0.8.13",
3
+ "version": "0.9.0-beta.1",
4
4
  "description": "A Component Library for Vue 3",
5
5
  "keywords": [
6
6
  "giime",