@qxs-bns/utils 0.0.16 → 0.0.18

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 (132) hide show
  1. package/es/index.js +11 -0
  2. package/es/index.js.map +1 -0
  3. package/es/src/argo-log.js +78 -0
  4. package/es/src/argo-log.js.map +1 -0
  5. package/es/src/date-transfer.js +34 -0
  6. package/es/src/date-transfer.js.map +1 -0
  7. package/es/src/device.js +23 -0
  8. package/es/src/device.js.map +1 -0
  9. package/es/src/file-operations.js +105 -0
  10. package/es/src/file-operations.js.map +1 -0
  11. package/es/src/json.js +67 -0
  12. package/es/src/json.js.map +1 -0
  13. package/es/src/oss-uploader.js +115 -0
  14. package/es/src/oss-uploader.js.map +1 -0
  15. package/es/src/storage.js +113 -0
  16. package/es/src/storage.js.map +1 -0
  17. package/es/src/types.js +38 -0
  18. package/es/src/types.js.map +1 -0
  19. package/es/src/use-api.js +65 -0
  20. package/es/src/use-api.js.map +1 -0
  21. package/es/src/watermark.js +209 -0
  22. package/es/src/watermark.js.map +1 -0
  23. package/lib/index.js +40 -1
  24. package/lib/index.js.map +1 -1
  25. package/lib/src/argo-log.js +79 -1
  26. package/lib/src/argo-log.js.map +1 -1
  27. package/lib/src/date-transfer.js +35 -1
  28. package/lib/src/date-transfer.js.map +1 -1
  29. package/lib/src/device.js +27 -1
  30. package/lib/src/device.js.map +1 -1
  31. package/lib/src/file-operations.js +107 -1
  32. package/lib/src/file-operations.js.map +1 -1
  33. package/lib/src/json.js +69 -1
  34. package/lib/src/json.js.map +1 -1
  35. package/lib/src/oss-uploader.js +119 -1
  36. package/lib/src/oss-uploader.js.map +1 -1
  37. package/lib/src/storage.js +114 -1
  38. package/lib/src/storage.js.map +1 -1
  39. package/lib/src/types.js +46 -1
  40. package/lib/src/types.js.map +1 -1
  41. package/lib/src/use-api.js +66 -1
  42. package/lib/src/use-api.js.map +1 -1
  43. package/lib/src/watermark.js +192 -13
  44. package/lib/src/watermark.js.map +1 -1
  45. package/package.json +26 -27
  46. package/{es → types}/index.d.ts +1 -0
  47. package/types/index.d.ts.map +1 -0
  48. package/{es → types}/src/argo-log.d.ts +1 -0
  49. package/types/src/argo-log.d.ts.map +1 -0
  50. package/types/src/date-transfer.d.ts +12 -0
  51. package/types/src/date-transfer.d.ts.map +1 -0
  52. package/types/src/device.d.ts +18 -0
  53. package/types/src/device.d.ts.map +1 -0
  54. package/{es → types}/src/file-operations.d.ts +1 -0
  55. package/types/src/file-operations.d.ts.map +1 -0
  56. package/{lib → types}/src/json.d.ts +1 -0
  57. package/types/src/json.d.ts.map +1 -0
  58. package/{es → types}/src/oss-uploader.d.ts +2 -2
  59. package/types/src/oss-uploader.d.ts.map +1 -0
  60. package/{es → types}/src/storage.d.ts +1 -0
  61. package/types/src/storage.d.ts.map +1 -0
  62. package/{lib → types}/src/types.d.ts +1 -0
  63. package/types/src/types.d.ts.map +1 -0
  64. package/{lib → types}/src/use-api.d.ts +3 -4
  65. package/types/src/use-api.d.ts.map +1 -0
  66. package/{es → types}/src/watermark.d.ts +1 -0
  67. package/types/src/watermark.d.ts.map +1 -0
  68. package/types/tsconfig.tsbuildinfo +1 -0
  69. package/README.md +0 -65
  70. package/es/_virtual/_commonjs-dynamic-modules.mjs +0 -7
  71. package/es/_virtual/_commonjs-dynamic-modules.mjs.map +0 -1
  72. package/es/_virtual/_commonjsHelpers.mjs +0 -7
  73. package/es/_virtual/_commonjsHelpers.mjs.map +0 -1
  74. package/es/_virtual/ali-oss/dist/aliyun-oss-sdk.mjs +0 -20195
  75. package/es/_virtual/ali-oss/dist/aliyun-oss-sdk.mjs.map +0 -1
  76. package/es/_virtual/aliyun-oss-sdk.mjs +0 -8
  77. package/es/_virtual/aliyun-oss-sdk.mjs.map +0 -1
  78. package/es/_virtual/aliyun-oss-sdk2.mjs +0 -5
  79. package/es/_virtual/aliyun-oss-sdk2.mjs.map +0 -1
  80. package/es/_virtual/ans-javascript-sdk/sdk/AnalysysAgent_JS_SDK.es6.min.mjs +0 -2142
  81. package/es/_virtual/ans-javascript-sdk/sdk/AnalysysAgent_JS_SDK.es6.min.mjs.map +0 -1
  82. package/es/_virtual/xlsx/xlsx.mjs +0 -24583
  83. package/es/_virtual/xlsx/xlsx.mjs.map +0 -1
  84. package/es/index.mjs +0 -35
  85. package/es/index.mjs.map +0 -1
  86. package/es/src/argo-log.mjs +0 -68
  87. package/es/src/argo-log.mjs.map +0 -1
  88. package/es/src/date-transfer.d.ts +0 -20
  89. package/es/src/date-transfer.mjs +0 -62
  90. package/es/src/date-transfer.mjs.map +0 -1
  91. package/es/src/device.d.ts +0 -4
  92. package/es/src/device.mjs +0 -24
  93. package/es/src/device.mjs.map +0 -1
  94. package/es/src/file-operations.mjs +0 -79
  95. package/es/src/file-operations.mjs.map +0 -1
  96. package/es/src/json.d.ts +0 -15
  97. package/es/src/json.mjs +0 -45
  98. package/es/src/json.mjs.map +0 -1
  99. package/es/src/oss-uploader.mjs +0 -89
  100. package/es/src/oss-uploader.mjs.map +0 -1
  101. package/es/src/storage.mjs +0 -81
  102. package/es/src/storage.mjs.map +0 -1
  103. package/es/src/types.d.ts +0 -26
  104. package/es/src/types.mjs +0 -37
  105. package/es/src/types.mjs.map +0 -1
  106. package/es/src/use-api.d.ts +0 -47
  107. package/es/src/use-api.mjs +0 -44
  108. package/es/src/use-api.mjs.map +0 -1
  109. package/es/src/watermark.mjs +0 -147
  110. package/es/src/watermark.mjs.map +0 -1
  111. package/lib/_virtual/_commonjs-dynamic-modules.js +0 -2
  112. package/lib/_virtual/_commonjs-dynamic-modules.js.map +0 -1
  113. package/lib/_virtual/_commonjsHelpers.js +0 -2
  114. package/lib/_virtual/_commonjsHelpers.js.map +0 -1
  115. package/lib/_virtual/ali-oss/dist/aliyun-oss-sdk.js +0 -85
  116. package/lib/_virtual/ali-oss/dist/aliyun-oss-sdk.js.map +0 -1
  117. package/lib/_virtual/aliyun-oss-sdk.js +0 -2
  118. package/lib/_virtual/aliyun-oss-sdk.js.map +0 -1
  119. package/lib/_virtual/aliyun-oss-sdk2.js +0 -2
  120. package/lib/_virtual/aliyun-oss-sdk2.js.map +0 -1
  121. package/lib/_virtual/ans-javascript-sdk/sdk/AnalysysAgent_JS_SDK.es6.min.js +0 -30
  122. package/lib/_virtual/ans-javascript-sdk/sdk/AnalysysAgent_JS_SDK.es6.min.js.map +0 -1
  123. package/lib/_virtual/xlsx/xlsx.js +0 -105
  124. package/lib/_virtual/xlsx/xlsx.js.map +0 -1
  125. package/lib/index.d.ts +0 -10
  126. package/lib/src/argo-log.d.ts +0 -32
  127. package/lib/src/date-transfer.d.ts +0 -20
  128. package/lib/src/device.d.ts +0 -4
  129. package/lib/src/file-operations.d.ts +0 -42
  130. package/lib/src/oss-uploader.d.ts +0 -43
  131. package/lib/src/storage.d.ts +0 -26
  132. package/lib/src/watermark.d.ts +0 -47
package/es/index.mjs DELETED
@@ -1,35 +0,0 @@
1
- import { ArgoLog as r } from "./src/argo-log.mjs";
2
- import { formatTime as t } from "./src/date-transfer.mjs";
3
- import { isMobile as p } from "./src/device.mjs";
4
- import { createVideoUploader as a, downloadFile as l } from "./src/file-operations.mjs";
5
- import { JsonToExcel as n, excelToJson as x } from "./src/json.mjs";
6
- import { OssError as g, OssUploader as c, generateSignedUrl as S, uploadFile as O } from "./src/oss-uploader.mjs";
7
- import { Storage as U } from "./src/storage.mjs";
8
- import { isBoolean as w, isElement as E, isImageByMimeType as J, isJSONString as u, isNumber as y, isPlainObject as A, isUndefined as B, isWindow as F } from "./src/types.mjs";
9
- import { ApiService as N } from "./src/use-api.mjs";
10
- import { watermark as k } from "./src/watermark.mjs";
11
- export {
12
- N as ApiService,
13
- r as ArgoLog,
14
- n as JsonToExcel,
15
- g as OssError,
16
- c as OssUploader,
17
- U as Storage,
18
- a as createVideoUploader,
19
- l as downloadFile,
20
- x as excelToJson,
21
- t as formatTime,
22
- S as generateSignedUrl,
23
- w as isBoolean,
24
- E as isElement,
25
- J as isImageByMimeType,
26
- u as isJSONString,
27
- p as isMobile,
28
- y as isNumber,
29
- A as isPlainObject,
30
- B as isUndefined,
31
- F as isWindow,
32
- O as uploadFile,
33
- k as watermark
34
- };
35
- //# sourceMappingURL=index.mjs.map
package/es/index.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1,68 +0,0 @@
1
- var c = Object.defineProperty;
2
- var l = (s, r, e) => r in s ? c(s, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[r] = e;
3
- var t = (s, r, e) => l(s, typeof r != "symbol" ? r + "" : r, e);
4
- const n = class n {
5
- constructor(r) {
6
- t(this, "AnalysysAgent", null);
7
- t(this, "track", (r, e) => {
8
- try {
9
- if (!this.AnalysysAgent) {
10
- console.warn("[ArgoLog] SDK 未初始化");
11
- return;
12
- }
13
- if (!r) {
14
- console.warn("[ArgoLog] track: name is required");
15
- return;
16
- }
17
- this.AnalysysAgent.track(r, e);
18
- } catch (o) {
19
- console.warn("[ArgoLog] track failed:", o);
20
- }
21
- });
22
- t(this, "setProfile", (r) => {
23
- try {
24
- if (!r) {
25
- console.warn("[ArgoLog] setProfile: info is required");
26
- return;
27
- }
28
- this.AnalysysAgent.profileSet(r);
29
- } catch (e) {
30
- console.warn("[ArgoLog] setProfile failed:", e);
31
- }
32
- });
33
- t(this, "setAlias", (r) => {
34
- try {
35
- if (!r) {
36
- console.warn("[ArgoLog] setAlias: code is required");
37
- return;
38
- }
39
- this.AnalysysAgent.alias(r);
40
- } catch (e) {
41
- console.warn("[ArgoLog] setAlias failed:", e);
42
- }
43
- });
44
- try {
45
- if (typeof window > "u")
46
- return console.warn("[ArgoLog] 仅支持浏览器环境"), this;
47
- const e = JSON.stringify(r), o = n.instances.get(e);
48
- if (o)
49
- return o;
50
- if (!r)
51
- return console.error("envConfig is required"), this;
52
- import("../_virtual/ans-javascript-sdk/sdk/AnalysysAgent_JS_SDK.es6.min.mjs").then((i) => {
53
- this.AnalysysAgent = i.default, this.AnalysysAgent.init(r), n.instances.set(e, this);
54
- }).catch((i) => {
55
- console.warn("[ArgoLog] SDK 加载失败:", i);
56
- });
57
- } catch (e) {
58
- console.warn("[ArgoLog] Init failed:", e);
59
- }
60
- return this;
61
- }
62
- };
63
- t(n, "instances", /* @__PURE__ */ new Map());
64
- let a = n;
65
- export {
66
- a as ArgoLog
67
- };
68
- //# sourceMappingURL=argo-log.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"argo-log.mjs","sources":["../../../../packages/utils/src/argo-log.ts"],"sourcesContent":["// 定义配置项的类型别名\nexport interface EnvironmentConfig {\n encryptType?: number\n debugMode?: number\n appkey: string\n uploadURL: string\n autoProfile?: boolean\n autoTrack?: boolean\n}\n\n/**\n * ArgoLog 类 - 用于处理埋点统计的工具类\n *\n * @class ArgoLog\n * @description 基于 AnalysysAgent SDK 封装的埋点工具类,提供了埋点追踪、用户画像设置和用户别名设置等功能\n * @example\n * ```typescript\n * const argoLog = new ArgoLog({\n * appkey: 'your-app-key',\n * uploadURL: 'your-upload-url'\n * });\n *\n * // 追踪事件\n * argoLog.track('event_name', { key: 'value' });\n * ```\n */\nexport class ArgoLog<T = EnvironmentConfig> {\n private static instances = new Map<string, ArgoLog<any>>()\n private AnalysysAgent: any | null = null\n\n constructor(envConfig: T) {\n try {\n // 检查是否为浏览器环境\n if (typeof window === 'undefined') {\n console.warn('[ArgoLog] 仅支持浏览器环境')\n return this\n }\n\n const configKey = JSON.stringify(envConfig)\n const existingInstance = ArgoLog.instances.get(configKey)\n\n if (existingInstance) {\n return existingInstance\n }\n\n if (!envConfig) {\n console.error('envConfig is required')\n return this\n }\n\n // 动态导入 SDK\n import('ans-javascript-sdk').then((module) => {\n this.AnalysysAgent = module.default\n this.AnalysysAgent.init(envConfig)\n ArgoLog.instances.set(configKey, this)\n }).catch((error) => {\n console.warn('[ArgoLog] SDK 加载失败:', error)\n })\n }\n catch (error) {\n console.warn('[ArgoLog] Init failed:', error)\n }\n\n return this\n }\n\n track = (name: string, opt?: Record<string, any>): void => {\n try {\n if (!this.AnalysysAgent) {\n console.warn('[ArgoLog] SDK 未初始化')\n return\n }\n if (!name) {\n console.warn('[ArgoLog] track: name is required')\n return\n }\n this.AnalysysAgent.track(name, opt)\n }\n catch (error) {\n console.warn('[ArgoLog] track failed:', error)\n }\n }\n\n setProfile = (info: Record<string, any>): void => {\n try {\n if (!info) {\n console.warn('[ArgoLog] setProfile: info is required')\n return\n }\n this.AnalysysAgent.profileSet(info)\n }\n catch (error) {\n console.warn('[ArgoLog] setProfile failed:', error)\n }\n }\n\n setAlias = (code: string): void => {\n try {\n if (!code) {\n console.warn('[ArgoLog] setAlias: code is required')\n return\n }\n this.AnalysysAgent.alias(code)\n }\n catch (error) {\n console.warn('[ArgoLog] setAlias failed:', error)\n }\n }\n}\n"],"names":["_ArgoLog","envConfig","__publicField","name","opt","error","info","code","configKey","existingInstance","module","ArgoLog"],"mappings":";;;AA0BO,MAAMA,IAAN,MAAMA,EAA+B;AAAA,EAI1C,YAAYC,GAAc;AAFlB,IAAAC,EAAA,uBAA4B;AAsCpC,IAAAA,EAAA,eAAQ,CAACC,GAAcC,MAAoC;AACrD,UAAA;AACE,YAAA,CAAC,KAAK,eAAe;AACvB,kBAAQ,KAAK,oBAAoB;AACjC;AAAA,QAAA;AAEF,YAAI,CAACD,GAAM;AACT,kBAAQ,KAAK,mCAAmC;AAChD;AAAA,QAAA;AAEG,aAAA,cAAc,MAAMA,GAAMC,CAAG;AAAA,eAE7BC,GAAO;AACJ,gBAAA,KAAK,2BAA2BA,CAAK;AAAA,MAAA;AAAA,IAEjD;AAEA,IAAAH,EAAA,oBAAa,CAACI,MAAoC;AAC5C,UAAA;AACF,YAAI,CAACA,GAAM;AACT,kBAAQ,KAAK,wCAAwC;AACrD;AAAA,QAAA;AAEG,aAAA,cAAc,WAAWA,CAAI;AAAA,eAE7BD,GAAO;AACJ,gBAAA,KAAK,gCAAgCA,CAAK;AAAA,MAAA;AAAA,IAEtD;AAEA,IAAAH,EAAA,kBAAW,CAACK,MAAuB;AAC7B,UAAA;AACF,YAAI,CAACA,GAAM;AACT,kBAAQ,KAAK,sCAAsC;AACnD;AAAA,QAAA;AAEG,aAAA,cAAc,MAAMA,CAAI;AAAA,eAExBF,GAAO;AACJ,gBAAA,KAAK,8BAA8BA,CAAK;AAAA,MAAA;AAAA,IAEpD;AA5EM,QAAA;AAEE,UAAA,OAAO,SAAW;AACpB,uBAAQ,KAAK,oBAAoB,GAC1B;AAGH,YAAAG,IAAY,KAAK,UAAUP,CAAS,GACpCQ,IAAmBT,EAAQ,UAAU,IAAIQ,CAAS;AAExD,UAAIC;AACK,eAAAA;AAGT,UAAI,CAACR;AACH,uBAAQ,MAAM,uBAAuB,GAC9B;AAIT,aAAO,qEAAoB,EAAE,KAAK,CAACS,MAAW;AAC5C,aAAK,gBAAgBA,EAAO,SACvB,KAAA,cAAc,KAAKT,CAAS,GACzBD,EAAA,UAAU,IAAIQ,GAAW,IAAI;AAAA,MAAA,CACtC,EAAE,MAAM,CAACH,MAAU;AACV,gBAAA,KAAK,uBAAuBA,CAAK;AAAA,MAAA,CAC1C;AAAA,aAEIA,GAAO;AACJ,cAAA,KAAK,0BAA0BA,CAAK;AAAA,IAAA;AAGvC,WAAA;AAAA,EAAA;AA6CX;AAjFEH,EADWF,GACI,aAAY,oBAAI,IAA0B;AADpD,IAAMW,IAANX;"}
@@ -1,20 +0,0 @@
1
- /**
2
- * 统一的时间转换函数
3
- * @param {number|string|Date} time - 输入时间(时间戳、日期字符串或Date对象)
4
- * @param {object} options - 配置选项
5
- * @param {boolean} options.isMs - 输入是否为毫秒,默认false(秒)
6
- * @param {string} options.format - 输出格式:'duration'(持续时间)| 'relative'(相对时间),默认'duration'
7
- * @param {string} options.separator - 时间分隔符,默认':'
8
- * @param {boolean} options.complete - 是否显示完整时间格式,默认false
9
- * @param {boolean} options.showDate - 是否显示日期部分,默认true
10
- * @param {boolean} options.showTime - 是否显示时间部分,默认true
11
- * @returns {string} 格式化后的时间字符串
12
- */
13
- export declare function formatTime(time: number | string | Date, { isMs, format, separator, complete, showDate, showTime, }?: {
14
- isMs?: boolean | undefined;
15
- format?: string | undefined;
16
- separator?: string | undefined;
17
- complete?: boolean | undefined;
18
- showDate?: boolean | undefined;
19
- showTime?: boolean | undefined;
20
- }): string;
@@ -1,62 +0,0 @@
1
- const c = {
2
- thresholds: {
3
- second: 1e3,
4
- minute: 6e4,
5
- hour: 36e5,
6
- day: 864e5,
7
- month: 2592e6,
8
- year: 31536e6
9
- },
10
- units: {
11
- year: 31536e6,
12
- month: 2592e6,
13
- day: 864e5,
14
- hour: 36e5,
15
- minute: 6e4,
16
- second: 1e3
17
- },
18
- labels: {
19
- relative: {
20
- justNow: "刚刚",
21
- seconds: "几秒前",
22
- minutes: "分钟前",
23
- hours: "小时前",
24
- days: "天前",
25
- months: "个月前",
26
- years: "年前"
27
- }
28
- }
29
- };
30
- function b(u, {
31
- isMs: m = !1,
32
- format: $ = "duration",
33
- separator: d = ":",
34
- complete: y = !1,
35
- showDate: M = !0,
36
- showTime: w = !0
37
- } = {}) {
38
- let e;
39
- if (typeof u == "number")
40
- e = m ? u : u * 1e3;
41
- else {
42
- const r = Date.now(), t = new Date(u).getTime();
43
- e = $ === "relative" ? r - t : t;
44
- }
45
- if (Number.isNaN(e) || e < 0)
46
- throw new Error("无效的时间输入");
47
- if ($ === "relative") {
48
- const { justNow: r, seconds: t, minutes: f, hours: N, days: p, months: S, years: T } = c.labels.relative, o = c.thresholds;
49
- return e < o.second ? r : e < o.minute ? t : e < o.hour ? `${Math.floor(e / o.minute)}${f}` : e < o.day ? `${Math.floor(e / o.hour)}${N}` : e < o.month ? `${Math.floor(e / o.day)}${p}` : e < o.year ? `${Math.floor(e / o.month)}${S}` : `${Math.floor(e / o.year)}${T}`;
50
- }
51
- const h = [], i = Math.floor(e / 1e3), l = Math.floor(i / (24 * 3600)), a = Math.floor(i % (24 * 3600) / 3600), s = Math.floor(i % 3600 / 60), n = i % 60;
52
- if (M && l > 0 && h.push(`${l}天`), w) {
53
- const r = (f) => String(f).padStart(2, "0");
54
- let t = "";
55
- y ? t = `${r(a)}${d}${r(s)}${d}${r(n)}` : l > 0 ? (t = a > 0 ? `${a}小时` : "", t += s > 0 ? `${s}分钟` : "") : a > 0 ? (t = `${a}小时`, t += s > 0 ? `${s}分钟` : "", t += n > 0 ? `${n}秒` : "") : s > 0 ? (t = `${s}分钟`, t += n > 0 ? `${n}秒` : "") : t = `${n}秒`, t && h.push(t);
56
- }
57
- return h.join(" ");
58
- }
59
- export {
60
- b as formatTime
61
- };
62
- //# sourceMappingURL=date-transfer.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-transfer.mjs","sources":["../../../../packages/utils/src/date-transfer.ts"],"sourcesContent":["// 将阈值和时间单位合并为一个常量对象\nconst TIME_CONSTANTS = {\n thresholds: {\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 86400000,\n month: 2592000000,\n year: 31536000000,\n },\n units: {\n year: 31536000000,\n month: 2592000000,\n day: 86400000,\n hour: 3600000,\n minute: 60000,\n second: 1000,\n },\n labels: {\n relative: {\n justNow: '刚刚',\n seconds: '几秒前',\n minutes: '分钟前',\n hours: '小时前',\n days: '天前',\n months: '个月前',\n years: '年前',\n },\n },\n}\n\n/**\n * 统一的时间转换函数\n * @param {number|string|Date} time - 输入时间(时间戳、日期字符串或Date对象)\n * @param {object} options - 配置选项\n * @param {boolean} options.isMs - 输入是否为毫秒,默认false(秒)\n * @param {string} options.format - 输出格式:'duration'(持续时间)| 'relative'(相对时间),默认'duration'\n * @param {string} options.separator - 时间分隔符,默认':'\n * @param {boolean} options.complete - 是否显示完整时间格式,默认false\n * @param {boolean} options.showDate - 是否显示日期部分,默认true\n * @param {boolean} options.showTime - 是否显示时间部分,默认true\n * @returns {string} 格式化后的时间字符串\n */\nexport function formatTime(\n time: number | string | Date,\n {\n isMs = false,\n format = 'duration',\n separator = ':',\n complete = false,\n showDate = true,\n showTime = true,\n } = {},\n) {\n // 处理输入时间\n let ms: number\n\n if (typeof time === 'number') {\n ms = isMs ? time : time * 1000\n }\n else {\n const now = Date.now()\n const timestamp = new Date(time).getTime()\n ms = format === 'relative' ? now - timestamp : timestamp\n }\n\n // 验证输入\n if (Number.isNaN(ms) || ms < 0) {\n throw new Error('无效的时间输入')\n }\n\n // 相对时间格式\n if (format === 'relative') {\n const { justNow, seconds, minutes, hours, days, months, years }\n = TIME_CONSTANTS.labels.relative\n const thresholds = TIME_CONSTANTS.thresholds\n\n if (ms < thresholds.second) {\n return justNow\n }\n if (ms < thresholds.minute) {\n return seconds\n }\n if (ms < thresholds.hour) {\n return `${Math.floor(ms / thresholds.minute)}${minutes}`\n }\n if (ms < thresholds.day) {\n return `${Math.floor(ms / thresholds.hour)}${hours}`\n }\n if (ms < thresholds.month) {\n return `${Math.floor(ms / thresholds.day)}${days}`\n }\n if (ms < thresholds.year) {\n return `${Math.floor(ms / thresholds.month)}${months}`\n }\n return `${Math.floor(ms / thresholds.year)}${years}`\n }\n\n // 持续时间格式\n const result = []\n const totalSeconds = Math.floor(ms / 1000)\n const days = Math.floor(totalSeconds / (24 * 3600))\n const hours = Math.floor((totalSeconds % (24 * 3600)) / 3600)\n const minutes = Math.floor((totalSeconds % 3600) / 60)\n const seconds = totalSeconds % 60\n\n // 处理日期部分\n if (showDate && days > 0) {\n result.push(`${days}天`)\n }\n\n // 处理时间部分\n if (showTime) {\n const pad = (num: number): string => String(num).padStart(2, '0')\n let timeStr = ''\n\n if (complete) {\n timeStr = `${pad(hours)}${separator}${pad(minutes)}${separator}${pad(seconds)}`\n }\n else {\n if (days > 0) {\n timeStr = hours > 0 ? `${hours}小时` : ''\n timeStr += minutes > 0 ? `${minutes}分钟` : ''\n }\n else if (hours > 0) {\n timeStr = `${hours}小时`\n timeStr += minutes > 0 ? `${minutes}分钟` : ''\n timeStr += seconds > 0 ? `${seconds}秒` : ''\n }\n else if (minutes > 0) {\n timeStr = `${minutes}分钟`\n timeStr += seconds > 0 ? `${seconds}秒` : ''\n }\n else {\n timeStr = `${seconds}秒`\n }\n }\n if (timeStr) {\n result.push(timeStr)\n }\n }\n\n return result.join(' ')\n}\n"],"names":["TIME_CONSTANTS","formatTime","time","isMs","format","separator","complete","showDate","showTime","ms","now","timestamp","justNow","seconds","minutes","hours","days","months","years","thresholds","result","totalSeconds","pad","num","timeStr"],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- /**
2
- * 判断是移动端还是pc端
3
- */
4
- export declare function isMobile(): boolean | "确保在浏览器环境中";
package/es/src/device.mjs DELETED
@@ -1,24 +0,0 @@
1
- function o() {
2
- if (typeof navigator < "u") {
3
- const i = navigator.userAgent, n = [
4
- "Android",
5
- "iPhone",
6
- "SymbianOS",
7
- "Windows Phone",
8
- "iPad",
9
- "iPod"
10
- ];
11
- let t = !1;
12
- for (let e = 0; e < n.length; e++)
13
- if (i.indexOf(n[e]) > 0) {
14
- t = !0;
15
- break;
16
- }
17
- return t;
18
- }
19
- return "确保在浏览器环境中";
20
- }
21
- export {
22
- o as isMobile
23
- };
24
- //# sourceMappingURL=device.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"device.mjs","sources":["../../../../packages/utils/src/device.ts"],"sourcesContent":["/**\n * 判断是移动端还是pc端\n */\nexport function isMobile() {\n if (typeof navigator !== 'undefined') {\n const userAgentInfo = navigator.userAgent\n const Agents = ['Android', 'iPhone',\n 'SymbianOS', 'Windows Phone',\n 'iPad', 'iPod']\n let flag = false\n for (let v = 0; v < Agents.length; v++) {\n if (userAgentInfo.indexOf(Agents[v]) > 0) {\n flag = true\n break\n }\n }\n return flag\n }\n return '确保在浏览器环境中'\n}\n"],"names":["isMobile","userAgentInfo","Agents","flag","v"],"mappings":"AAGO,SAASA,IAAW;AACrB,MAAA,OAAO,YAAc,KAAa;AACpC,UAAMC,IAAgB,UAAU,WAC1BC,IAAS;AAAA,MAAC;AAAA,MAAW;AAAA,MACzB;AAAA,MAAa;AAAA,MACb;AAAA,MAAQ;AAAA,IAAM;AAChB,QAAIC,IAAO;AACX,aAASC,IAAI,GAAGA,IAAIF,EAAO,QAAQE;AACjC,UAAIH,EAAc,QAAQC,EAAOE,CAAC,CAAC,IAAI,GAAG;AACjC,QAAAD,IAAA;AACP;AAAA,MAAA;AAGG,WAAAA;AAAA,EAAA;AAEF,SAAA;AACT;"}
@@ -1,79 +0,0 @@
1
- async function c(r) {
2
- return new Promise((e, o) => {
3
- try {
4
- const n = document.createElement("script");
5
- n.src = r, n.onload = () => {
6
- e();
7
- }, n.onerror = () => {
8
- o(new Error(`Failed to load script from ${r}`));
9
- }, document.head.appendChild(n);
10
- } catch (n) {
11
- console.error("loadScript error:", n), o(n);
12
- }
13
- });
14
- }
15
- async function s() {
16
- try {
17
- if (await c("https://gosspublic.alicdn.com/aliyun-oss-sdk.min.js"), await c("https://cdnfile.yaomaitong.cn/cdn/js/aliyun-upload-sdk1.3.1.min.js"), !window.AliyunUpload)
18
- throw new Error("SDK 加载成功但未找到 AliyunUpload 对象");
19
- } catch (r) {
20
- throw console.error("无法加载阿里云上传SDK:", r), r;
21
- }
22
- }
23
- async function u(r) {
24
- if (typeof window > "u")
25
- throw new TypeError("VideoUploader 只能在浏览器环境中使用");
26
- window.AliyunUpload || await s();
27
- let e = null, o = null;
28
- const n = new window.AliyunUpload.Vod({
29
- // 上传进度回调
30
- onUploadProgress: r.onUploadProgress,
31
- // 上传凭证过期回调
32
- onUploadTokenExpired: r.onUploadTokenExpired || (() => {
33
- }),
34
- // 开始上传回调,用于设置上传凭证和地址
35
- onUploadstarted: async (a) => {
36
- var l;
37
- try {
38
- const { uploadAuth: d, uploadAddress: t, videoId: i } = await ((l = r.onUploadstarted) == null ? void 0 : l.call(r, a)) || {};
39
- d && t && i && n.setUploadAuthAndAddress(a, d, t, i);
40
- } catch (d) {
41
- throw console.error("onUploadstarted error: ", d), d;
42
- }
43
- },
44
- // 上传成功回调
45
- onUploadSucceed: (a) => {
46
- e == null || e(a);
47
- },
48
- // 上传失败回调
49
- onUploadFailed: (a, l, d) => {
50
- console.log("info: ", a), o == null || o(new Error(`${d} ${l}`));
51
- }
52
- });
53
- return {
54
- uploader: n,
55
- upload: async (a) => new Promise((l, d) => {
56
- e = l, o = d;
57
- const t = JSON.stringify({
58
- Vod: {
59
- UserData: {
60
- IsShowWaterMark: "false",
61
- // 不显示水印
62
- Priority: "7"
63
- // 上传优先级
64
- }
65
- }
66
- });
67
- n.addFile(a, null, null, null, t), n.startUpload();
68
- })
69
- };
70
- }
71
- function w(r, e) {
72
- const o = document.createElement("a");
73
- o.download = e, o.style.display = "none", o.href = r, document.body.appendChild(o), o.click(), document.body.removeChild(o);
74
- }
75
- export {
76
- u as createVideoUploader,
77
- w as downloadFile
78
- };
79
- //# sourceMappingURL=file-operations.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-operations.mjs","sources":["../../../../packages/utils/src/file-operations.ts"],"sourcesContent":["/// <reference types=\"vite/client\" />\n\ndeclare global {\n interface Window {\n AliyunUpload: any\n OSS: any\n }\n}\n\nasync function loadScript(src: string): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const script = document.createElement('script')\n script.src = src\n script.onload = () => {\n resolve()\n }\n script.onerror = () => {\n reject(new Error(`Failed to load script from ${src}`))\n }\n document.head.appendChild(script)\n }\n catch (error) {\n console.error('loadScript error:', error)\n reject(error)\n }\n })\n}\nasync function initAliyunSDK() {\n try {\n await loadScript('https://gosspublic.alicdn.com/aliyun-oss-sdk.min.js')\n await loadScript('https://cdnfile.yaomaitong.cn/cdn/js/aliyun-upload-sdk1.3.1.min.js')\n\n if (!window.AliyunUpload) {\n throw new Error('SDK 加载成功但未找到 AliyunUpload 对象')\n }\n }\n catch (error) {\n console.error('无法加载阿里云上传SDK:', error)\n throw error\n }\n}\n\nexport interface UploadInfo {\n file: File\n videoId?: string\n}\n\ninterface VideoUploadOptions {\n onUploadFailed?: (uploadInfo: any, code: string, message: string) => void\n onUploadSucceed?: (uploadInfo: any) => void\n onUploadProgress?: (uploadInfo: UploadInfo, totalSize: number, percent: number) => void\n onUploadTokenExpired?: (response: any) => void\n onUploadstarted?: (uploadInfo: UploadInfo) => Promise<{ uploadAuth: string, uploadAddress: string, videoId: string }>\n}\n\ninterface VideoUploadResult {\n videoId: string\n uploadInfo: any\n}\nexport interface IVideoUploader {\n uploader: any\n upload: (file: File) => Promise<VideoUploadResult>\n}\n\n/**\n * 创建阿里云视频上传器实例\n * @param options - 上传配置选项,包含各种回调函数\n * @returns 返回一个包含上传器实例和上传方法的对象\n */\nexport async function createVideoUploader(options: VideoUploadOptions): Promise<IVideoUploader> {\n // 检查是否在浏览器环境中运行\n if (typeof window === 'undefined') {\n throw new TypeError('VideoUploader 只能在浏览器环境中使用')\n }\n\n // 如果阿里云SDK未加载,则初始化SDK\n if (!window.AliyunUpload) {\n await initAliyunSDK()\n }\n\n // 声明Promise的resolve和reject函数,用于控制上传过程\n let currentResolve: ((value: VideoUploadResult) => void) | null = null\n let currentReject: ((reason: any) => void) | null = null\n\n // 创建阿里云上传实例\n const uploader = new window.AliyunUpload.Vod({\n // 上传进度回调\n onUploadProgress: options.onUploadProgress,\n // 上传凭证过期回调\n onUploadTokenExpired: options.onUploadTokenExpired || (() => {}),\n // 开始上传回调,用于设置上传凭证和地址\n onUploadstarted: async (uploadInfo: UploadInfo) => {\n try {\n const { uploadAuth, uploadAddress, videoId } = await options.onUploadstarted?.(uploadInfo) || {}\n if (uploadAuth && uploadAddress && videoId) {\n uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress, videoId)\n }\n }\n catch (error) {\n console.error('onUploadstarted error: ', error)\n throw error\n }\n },\n // 上传成功回调\n onUploadSucceed: (uploadInfo: any) => {\n currentResolve?.(uploadInfo)\n },\n // 上传失败回调\n onUploadFailed: (info: any, code: string, message: string) => {\n console.log('info: ', info)\n currentReject?.(new Error(`${message} ${code}`))\n },\n })\n\n /**\n * 上传文件方法\n * @param file - 要上传的文件对象\n * @returns Promise,解析为上传结果\n */\n const upload = async (file: File): Promise<VideoUploadResult> => {\n return new Promise((resolve, reject) => {\n currentResolve = resolve\n currentReject = reject\n\n // 设置上传的用户自定义数据\n const userData = JSON.stringify({\n Vod: {\n UserData: {\n IsShowWaterMark: 'false', // 不显示水印\n Priority: '7', // 上传优先级\n },\n },\n })\n\n // 添加文件到上传队列并开始上传\n uploader.addFile(file, null, null, null, userData)\n uploader.startUpload()\n })\n }\n\n // 返回上传器实例和上传方法\n return {\n uploader,\n upload,\n }\n}\n\n/**\n * 下载文件,创建一个隐藏的链接元素,设置下载属性并触发点击事件,然后移除该链接元素\n * @param url - 文件的URL\n * @param fileName - 文件的名称\n */\nexport function downloadFile(url: string, fileName: string) {\n const link = document.createElement('a')\n link.download = fileName\n link.style.display = 'none'\n link.href = url\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n}\n"],"names":["loadScript","src","resolve","reject","script","error","initAliyunSDK","createVideoUploader","options","currentResolve","currentReject","uploader","uploadInfo","_a","uploadAuth","uploadAddress","videoId","info","code","message","file","userData","downloadFile","url","fileName","link"],"mappings":"AASA,eAAeA,EAAWC,GAA4B;AACpD,SAAO,IAAI,QAAQ,CAACC,GAASC,MAAW;AAClC,QAAA;AACI,YAAAC,IAAS,SAAS,cAAc,QAAQ;AAC9C,MAAAA,EAAO,MAAMH,GACbG,EAAO,SAAS,MAAM;AACZ,QAAAF,EAAA;AAAA,MACV,GACAE,EAAO,UAAU,MAAM;AACrB,QAAAD,EAAO,IAAI,MAAM,8BAA8BF,CAAG,EAAE,CAAC;AAAA,MACvD,GACS,SAAA,KAAK,YAAYG,CAAM;AAAA,aAE3BC,GAAO;AACJ,cAAA,MAAM,qBAAqBA,CAAK,GACxCF,EAAOE,CAAK;AAAA,IAAA;AAAA,EACd,CACD;AACH;AACA,eAAeC,IAAgB;AACzB,MAAA;AAIE,QAHJ,MAAMN,EAAW,qDAAqD,GACtE,MAAMA,EAAW,oEAAoE,GAEjF,CAAC,OAAO;AACJ,YAAA,IAAI,MAAM,8BAA8B;AAAA,WAG3CK,GAAO;AACJ,kBAAA,MAAM,iBAAiBA,CAAK,GAC9BA;AAAA,EAAA;AAEV;AA6BA,eAAsBE,EAAoBC,GAAsD;AAE1F,MAAA,OAAO,SAAW;AACd,UAAA,IAAI,UAAU,2BAA2B;AAI7C,EAAC,OAAO,gBACV,MAAMF,EAAc;AAItB,MAAIG,IAA8D,MAC9DC,IAAgD;AAGpD,QAAMC,IAAW,IAAI,OAAO,aAAa,IAAI;AAAA;AAAA,IAE3C,kBAAkBH,EAAQ;AAAA;AAAA,IAE1B,sBAAsBA,EAAQ,yBAAyB,MAAM;AAAA,IAAA;AAAA;AAAA,IAE7D,iBAAiB,OAAOI,MAA2B;AAnFvD,UAAAC;AAoFU,UAAA;AACI,cAAA,EAAE,YAAAC,GAAY,eAAAC,GAAe,SAAAC,EAAQ,IAAI,QAAMH,IAAAL,EAAQ,oBAAR,gBAAAK,EAAA,KAAAL,GAA0BI,OAAe,CAAC;AAC3F,QAAAE,KAAcC,KAAiBC,KACjCL,EAAS,wBAAwBC,GAAYE,GAAYC,GAAeC,CAAO;AAAA,eAG5EX,GAAO;AACJ,sBAAA,MAAM,2BAA2BA,CAAK,GACxCA;AAAA,MAAA;AAAA,IAEV;AAAA;AAAA,IAEA,iBAAiB,CAACO,MAAoB;AACpC,MAAAH,KAAA,QAAAA,EAAiBG;AAAA,IACnB;AAAA;AAAA,IAEA,gBAAgB,CAACK,GAAWC,GAAcC,MAAoB;AACpD,cAAA,IAAI,UAAUF,CAAI,GAC1BP,KAAA,QAAAA,EAAgB,IAAI,MAAM,GAAGS,CAAO,IAAID,CAAI,EAAE;AAAA,IAAC;AAAA,EACjD,CACD;AA6BM,SAAA;AAAA,IACL,UAAAP;AAAA,IACA,QAxBa,OAAOS,MACb,IAAI,QAAQ,CAAClB,GAASC,MAAW;AACrB,MAAAM,IAAAP,GACDQ,IAAAP;AAGV,YAAAkB,IAAW,KAAK,UAAU;AAAA,QAC9B,KAAK;AAAA,UACH,UAAU;AAAA,YACR,iBAAiB;AAAA;AAAA,YACjB,UAAU;AAAA;AAAA,UAAA;AAAA,QACZ;AAAA,MACF,CACD;AAGD,MAAAV,EAAS,QAAQS,GAAM,MAAM,MAAM,MAAMC,CAAQ,GACjDV,EAAS,YAAY;AAAA,IAAA,CACtB;AAAA,EAOH;AACF;AAOgB,SAAAW,EAAaC,GAAaC,GAAkB;AACpD,QAAAC,IAAO,SAAS,cAAc,GAAG;AACvC,EAAAA,EAAK,WAAWD,GAChBC,EAAK,MAAM,UAAU,QACrBA,EAAK,OAAOF,GACH,SAAA,KAAK,YAAYE,CAAI,GAC9BA,EAAK,MAAM,GACF,SAAA,KAAK,YAAYA,CAAI;AAChC;"}
package/es/src/json.d.ts DELETED
@@ -1,15 +0,0 @@
1
- /**
2
- * 将JSON数据导出为Excel文件
3
- * @param title - Excel文件的标题
4
- * @param json - JSON数据
5
- * @param merge - 合并单元格的配置
6
- * @returns 如果JSON数据为空,则返回undefined,否则返回Excel文件的名称
7
- */
8
- export declare function JsonToExcel(title?: string, json?: (string | number)[][], merge?: any): Error | undefined;
9
- /**
10
- * 将Excel数据转换为JSON
11
- * @param file - Excel文件
12
- * @param cb - 转换完成后的回调函数
13
- * @param start - 开始行号
14
- */
15
- export declare function excelToJson(file: File, cb: (json: any[]) => void, start: number): Promise<any[]>;
package/es/src/json.mjs DELETED
@@ -1,45 +0,0 @@
1
- import { utils as c, writeFile as m, read as A } from "../_virtual/xlsx/xlsx.mjs";
2
- function E(a = "", o = [], t) {
3
- try {
4
- if (!o.length)
5
- return;
6
- const e = c.aoa_to_sheet(o);
7
- t && (e["!merges"] = t);
8
- const n = c.book_new();
9
- c.book_append_sheet(n, e, ""), m(n, `${a}.xlsx`);
10
- } catch (e) {
11
- return console.log("e: ", e), new Error("数据导出失败");
12
- }
13
- }
14
- function F(a, o, t) {
15
- return new Promise((e, n) => {
16
- const i = new FileReader();
17
- i.readAsArrayBuffer(a), i.onload = (l) => {
18
- var p;
19
- const w = (p = l.target) == null ? void 0 : p.result, s = A(w, { type: "binary" }), h = [];
20
- for (const f in s.Sheets)
21
- if (Object.prototype.hasOwnProperty.call(s.Sheets, f)) {
22
- let r = [];
23
- const d = s.Sheets[f]["!ref"] || "", y = d.split(":"), k = t + y[1].toString();
24
- r = r.concat(c.sheet_to_json(s.Sheets[f], { header: 1, range: t ? k : d }));
25
- const S = r[0];
26
- r.shift();
27
- const _ = r.map((b) => {
28
- const u = {};
29
- return S.forEach((x, g) => {
30
- u[x] = b[g];
31
- }), u;
32
- });
33
- h.push(..._);
34
- }
35
- o && o(h), e(h);
36
- }, i.onerror = (l) => {
37
- n(l);
38
- };
39
- });
40
- }
41
- export {
42
- E as JsonToExcel,
43
- F as excelToJson
44
- };
45
- //# sourceMappingURL=json.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.mjs","sources":["../../../../packages/utils/src/json.ts"],"sourcesContent":["import { read, utils, writeFile } from 'xlsx'\n\n/**\n * 将JSON数据导出为Excel文件\n * @param title - Excel文件的标题\n * @param json - JSON数据\n * @param merge - 合并单元格的配置\n * @returns 如果JSON数据为空,则返回undefined,否则返回Excel文件的名称\n */\nexport function JsonToExcel(title = '', json: (string | number)[][] = [], merge?: any) {\n try {\n if (!json.length) {\n return\n }\n // 创建worksheet\n const worksheet = utils.aoa_to_sheet(json)\n if (merge) {\n worksheet['!merges'] = merge\n }\n // 新建空workbook,加入worksheet\n const workbook = utils.book_new()\n utils.book_append_sheet(workbook, worksheet, '')\n writeFile(workbook, `${title}.xlsx`)\n }\n catch (e) {\n console.log('e: ', e)\n return new Error('数据导出失败')\n }\n}\n\n/**\n * 将Excel数据转换为JSON\n * @param file - Excel文件\n * @param cb - 转换完成后的回调函数\n * @param start - 开始行号\n */\nexport function excelToJson(file: File, cb: (json: any[]) => void, start: number): Promise<any[]> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.readAsArrayBuffer(file)\n reader.onload = (e) => {\n const data = e.target?.result\n const workbook = read(data, { type: 'binary' })\n // 遍历每张表读取\n const json = []\n for (const sheet in workbook.Sheets) {\n if (Object.prototype.hasOwnProperty.call(workbook.Sheets, sheet)) {\n let arr: string[][] = []\n const fromTo = workbook.Sheets[sheet]['!ref'] || ''\n const end = fromTo.split(':')\n const space = start + end[1].toString()\n arr = arr.concat(utils.sheet_to_json(workbook.Sheets[sheet], { header: 1, range: start ? space : fromTo }))\n const titleArr = arr[0]\n arr.shift()\n const excelJsonArr = arr.map((item) => {\n const obj: {\n [key: string]: any\n } = {}\n titleArr.forEach((titleItem: string, index: number) => {\n obj[titleItem] = item[index]\n })\n return obj\n })\n json.push(...excelJsonArr)\n }\n }\n if (cb) {\n cb(json)\n }\n resolve(json)\n }\n reader.onerror = (e) => {\n reject(e)\n }\n })\n}\n"],"names":["JsonToExcel","title","json","merge","worksheet","utils","workbook","writeFile","excelToJson","file","cb","start","resolve","reject","reader","e","data","_a","read","sheet","arr","fromTo","end","space","titleArr","excelJsonArr","item","obj","titleItem","index"],"mappings":";AASO,SAASA,EAAYC,IAAQ,IAAIC,IAA8B,CAAA,GAAIC,GAAa;AACjF,MAAA;AACE,QAAA,CAACD,EAAK;AACR;AAGI,UAAAE,IAAYC,EAAM,aAAaH,CAAI;AACzC,IAAIC,MACFC,EAAU,SAAS,IAAID;AAGnB,UAAAG,IAAWD,EAAM,SAAS;AAC1B,IAAAA,EAAA,kBAAkBC,GAAUF,GAAW,EAAE,GACrCG,EAAAD,GAAU,GAAGL,CAAK,OAAO;AAAA,WAE9B,GAAG;AACA,mBAAA,IAAI,OAAO,CAAC,GACb,IAAI,MAAM,QAAQ;AAAA,EAAA;AAE7B;AAQgB,SAAAO,EAAYC,GAAYC,GAA2BC,GAA+B;AAChG,SAAO,IAAI,QAAQ,CAACC,GAASC,MAAW;AAChC,UAAAC,IAAS,IAAI,WAAW;AAC9B,IAAAA,EAAO,kBAAkBL,CAAI,GACtBK,EAAA,SAAS,CAACC,MAAM;;AACf,YAAAC,KAAOC,IAAAF,EAAE,WAAF,gBAAAE,EAAU,QACjBX,IAAWY,EAAKF,GAAM,EAAE,MAAM,UAAU,GAExCd,IAAO,CAAC;AACH,iBAAAiB,KAASb,EAAS;AAC3B,YAAI,OAAO,UAAU,eAAe,KAAKA,EAAS,QAAQa,CAAK,GAAG;AAChE,cAAIC,IAAkB,CAAC;AACvB,gBAAMC,IAASf,EAAS,OAAOa,CAAK,EAAE,MAAM,KAAK,IAC3CG,IAAMD,EAAO,MAAM,GAAG,GACtBE,IAAQZ,IAAQW,EAAI,CAAC,EAAE,SAAS;AACtC,UAAAF,IAAMA,EAAI,OAAOf,EAAM,cAAcC,EAAS,OAAOa,CAAK,GAAG,EAAE,QAAQ,GAAG,OAAOR,IAAQY,IAAQF,EAAA,CAAQ,CAAC;AACpG,gBAAAG,IAAWJ,EAAI,CAAC;AACtB,UAAAA,EAAI,MAAM;AACV,gBAAMK,IAAeL,EAAI,IAAI,CAACM,MAAS;AACrC,kBAAMC,IAEF,CAAC;AACI,mBAAAH,EAAA,QAAQ,CAACI,GAAmBC,MAAkB;AACjD,cAAAF,EAAAC,CAAS,IAAIF,EAAKG,CAAK;AAAA,YAAA,CAC5B,GACMF;AAAA,UAAA,CACR;AACI,UAAAzB,EAAA,KAAK,GAAGuB,CAAY;AAAA,QAAA;AAG7B,MAAIf,KACFA,EAAGR,CAAI,GAETU,EAAQV,CAAI;AAAA,IACd,GACOY,EAAA,UAAU,CAACC,MAAM;AACtB,MAAAF,EAAOE,CAAC;AAAA,IACV;AAAA,EAAA,CACD;AACH;"}
@@ -1,89 +0,0 @@
1
- var g = Object.defineProperty;
2
- var y = (r, e, t) => e in r ? g(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
3
- var a = (r, e, t) => y(r, typeof e != "symbol" ? e + "" : e, t);
4
- import w from "../_virtual/aliyun-oss-sdk.mjs";
5
- class o extends Error {
6
- constructor(e) {
7
- super(e), this.name = "OssError";
8
- }
9
- }
10
- const d = {
11
- accessKeyId: "",
12
- accessKeySecret: "",
13
- stsToken: "",
14
- secure: !0,
15
- bucket: "yao-file-daily",
16
- region: "oss-cn-hangzhou",
17
- cors: !0,
18
- useFetch: !1,
19
- timeout: 6e4,
20
- headers: {
21
- "Access-Control-Allow-Origin": "*",
22
- "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE",
23
- "Access-Control-Allow-Headers": "*"
24
- }
25
- };
26
- class n {
27
- // 获取凭证
28
- static async getOssCredentials(e) {
29
- const t = await e();
30
- if (!t)
31
- throw new o("获取凭证失败");
32
- return {
33
- accessKeyId: t.accessKeyId,
34
- accessKeySecret: t.accessKeySecret,
35
- securityToken: t.securityToken
36
- };
37
- }
38
- // 修改初始化方法
39
- static async initOssClient(e, t) {
40
- const i = Date.now() - this.createTokenTime;
41
- if (!d.accessKeyId || i > this.expireTime)
42
- try {
43
- const { accessKeyId: s, accessKeySecret: l, securityToken: h } = await this.getOssCredentials(e);
44
- Object.assign(d, {
45
- accessKeyId: s,
46
- accessKeySecret: l,
47
- stsToken: h,
48
- ...t,
49
- refreshSTSToken: async () => await this.getOssCredentials(e),
50
- refreshSTSTokenInterval: 3e5
51
- }), this.createTokenTime = Date.now(), this.client = new w(d);
52
- } catch (s) {
53
- throw new o(s instanceof Error ? s.message : String(s));
54
- }
55
- }
56
- // 修改上传方法
57
- static async uploadFile(e) {
58
- const { file: t, onProgress: i = () => {
59
- }, path: s = "ksh/pdf", getCredentials: l, ...h } = e;
60
- await this.initOssClient(l, h);
61
- try {
62
- return await this.client.multipartUpload(`${s}/${t.name}`, t, {
63
- progress(u) {
64
- i({ percent: Math.round(u * 100) });
65
- }
66
- });
67
- } catch (c) {
68
- throw new o(c instanceof Error ? c.message : String(c));
69
- }
70
- }
71
- // 修改生成签名URL方法
72
- static async generateSignedUrl(e, t, i) {
73
- await this.initOssClient(t, i);
74
- try {
75
- return await this.client.signatureUrl(e, { expires: 60 * 60 });
76
- } catch (s) {
77
- throw new o(s instanceof Error ? s.message : String(s));
78
- }
79
- }
80
- }
81
- a(n, "client"), a(n, "createTokenTime", 0), a(n, "expireTime", 15 * 60 * 1e3);
82
- const f = n.uploadFile.bind(n), m = n.generateSignedUrl.bind(n);
83
- export {
84
- o as OssError,
85
- n as OssUploader,
86
- m as generateSignedUrl,
87
- f as uploadFile
88
- };
89
- //# sourceMappingURL=oss-uploader.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oss-uploader.mjs","sources":["../../../../packages/utils/src/oss-uploader.ts"],"sourcesContent":["import OSS from 'ali-oss'\n\nexport interface OssCredentials {\n accessKeyId: string\n accessKeySecret: string\n securityToken: string\n}\n\nexport interface OssConfig extends Partial<Omit<OssClientConfig, 'accessKeyId' | 'accessKeySecret' | 'stsToken'>> {\n file: File\n onProgress?: (p: { percent: number }) => void\n path?: string\n getCredentials: () => Promise<OssCredentials | null>\n}\n\nexport interface OssClientConfig {\n accessKeyId: string\n accessKeySecret: string\n stsToken: string\n secure: boolean\n bucket: string\n region: string\n cors: boolean\n useFetch: boolean\n timeout: number\n headers: Record<string, string>\n}\n\n// 定义错误类型\nexport class OssError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'OssError'\n }\n}\n\nconst ossConfig: OssClientConfig = {\n accessKeyId: '',\n accessKeySecret: '',\n stsToken: '',\n secure: true,\n bucket: 'yao-file-daily',\n region: 'oss-cn-hangzhou',\n cors: true,\n useFetch: false,\n timeout: 60000,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE',\n 'Access-Control-Allow-Headers': '*',\n },\n}\n\nexport class OssUploader {\n private static client: OSS\n private static createTokenTime: number = 0\n private static readonly expireTime = 15 * 60 * 1000\n\n // 获取凭证\n private static async getOssCredentials(getCredentials: OssConfig['getCredentials']): Promise<Required<OssCredentials>> {\n const credentials = await getCredentials()\n if (!credentials) {\n throw new OssError('获取凭证失败')\n }\n return {\n accessKeyId: credentials.accessKeyId,\n accessKeySecret: credentials.accessKeySecret,\n securityToken: credentials.securityToken,\n }\n }\n\n // 修改初始化方法\n public static async initOssClient(getCredentials: OssConfig['getCredentials'], args?: Partial<OssConfig>): Promise<void> {\n const diff = Date.now() - this.createTokenTime\n if (!ossConfig.accessKeyId || diff > this.expireTime) {\n try {\n const { accessKeyId, accessKeySecret, securityToken: stsToken } = await this.getOssCredentials(getCredentials)\n Object.assign(ossConfig, {\n accessKeyId,\n accessKeySecret,\n stsToken,\n ...args,\n refreshSTSToken: async () => {\n return await this.getOssCredentials(getCredentials)\n },\n refreshSTSTokenInterval: 300000,\n })\n this.createTokenTime = Date.now()\n this.client = new OSS(ossConfig)\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n }\n\n // 修改上传方法\n public static async uploadFile(opts: OssConfig & { getCredentials: OssConfig['getCredentials'] }): Promise<OSS.MultipartUploadResult> {\n const { file, onProgress = () => {}, path = 'ksh/pdf', getCredentials, ...rest } = opts\n\n await this.initOssClient(getCredentials, rest)\n\n try {\n const result = await this.client.multipartUpload(`${path}/${file.name}`, file, {\n progress(p: number) {\n onProgress({ percent: Math.round(p * 100) })\n },\n })\n return result\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 修改生成签名URL方法\n public static async generateSignedUrl(\n objectKey: string,\n getCredentials: OssConfig['getCredentials'],\n args?: Partial<OssConfig>,\n ): Promise<string> {\n await this.initOssClient(getCredentials, args)\n try {\n return await this.client.signatureUrl(objectKey, { expires: 60 * 60 })\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n}\n\n// 导出便捷方法\nexport const uploadFile = OssUploader.uploadFile.bind(OssUploader)\nexport const generateSignedUrl = OssUploader.generateSignedUrl.bind(OssUploader)\n"],"names":["OssError","message","ossConfig","OssUploader","getCredentials","credentials","args","diff","accessKeyId","accessKeySecret","stsToken","OSS","error","opts","file","onProgress","path","rest","p","objectKey","__publicField","uploadFile","generateSignedUrl"],"mappings":";;;;AA6BO,MAAMA,UAAiB,MAAM;AAAA,EAClC,YAAYC,GAAiB;AAC3B,UAAMA,CAAO,GACb,KAAK,OAAO;AAAA,EAAA;AAEhB;AAEA,MAAMC,IAA6B;AAAA,EACjC,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,IACP,+BAA+B;AAAA,IAC/B,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,EAAA;AAEpC;AAEO,MAAMC,EAAY;AAAA;AAAA,EAMvB,aAAqB,kBAAkBC,GAAgF;AAC/G,UAAAC,IAAc,MAAMD,EAAe;AACzC,QAAI,CAACC;AACG,YAAA,IAAIL,EAAS,QAAQ;AAEtB,WAAA;AAAA,MACL,aAAaK,EAAY;AAAA,MACzB,iBAAiBA,EAAY;AAAA,MAC7B,eAAeA,EAAY;AAAA,IAC7B;AAAA,EAAA;AAAA;AAAA,EAIF,aAAoB,cAAcD,GAA6CE,GAA0C;AACvH,UAAMC,IAAO,KAAK,IAAI,IAAI,KAAK;AAC/B,QAAI,CAACL,EAAU,eAAeK,IAAO,KAAK;AACpC,UAAA;AACI,cAAA,EAAE,aAAAC,GAAa,iBAAAC,GAAiB,eAAeC,MAAa,MAAM,KAAK,kBAAkBN,CAAc;AAC7G,eAAO,OAAOF,GAAW;AAAA,UACvB,aAAAM;AAAA,UACA,iBAAAC;AAAA,UACA,UAAAC;AAAA,UACA,GAAGJ;AAAA,UACH,iBAAiB,YACR,MAAM,KAAK,kBAAkBF,CAAc;AAAA,UAEpD,yBAAyB;AAAA,QAAA,CAC1B,GACI,KAAA,kBAAkB,KAAK,IAAI,GAC3B,KAAA,SAAS,IAAIO,EAAIT,CAAS;AAAA,eAE1BU,GAAO;AACN,cAAA,IAAIZ,EAASY,aAAiB,QAAQA,EAAM,UAAU,OAAOA,CAAK,CAAC;AAAA,MAAA;AAAA,EAE7E;AAAA;AAAA,EAIF,aAAoB,WAAWC,GAAuG;AAC9H,UAAA,EAAE,MAAAC,GAAM,YAAAC,IAAa,MAAM;AAAA,OAAI,MAAAC,IAAO,WAAW,gBAAAZ,GAAgB,GAAGa,EAAS,IAAAJ;AAE7E,UAAA,KAAK,cAAcT,GAAgBa,CAAI;AAEzC,QAAA;AAMK,aALQ,MAAM,KAAK,OAAO,gBAAgB,GAAGD,CAAI,IAAIF,EAAK,IAAI,IAAIA,GAAM;AAAA,QAC7E,SAASI,GAAW;AAClB,UAAAH,EAAW,EAAE,SAAS,KAAK,MAAMG,IAAI,GAAG,GAAG;AAAA,QAAA;AAAA,MAC7C,CACD;AAAA,aAGIN,GAAO;AACN,YAAA,IAAIZ,EAASY,aAAiB,QAAQA,EAAM,UAAU,OAAOA,CAAK,CAAC;AAAA,IAAA;AAAA,EAC3E;AAAA;AAAA,EAIF,aAAoB,kBAClBO,GACAf,GACAE,GACiB;AACX,UAAA,KAAK,cAAcF,GAAgBE,CAAI;AACzC,QAAA;AACK,aAAA,MAAM,KAAK,OAAO,aAAaa,GAAW,EAAE,SAAS,KAAK,IAAI;AAAA,aAEhEP,GAAO;AACN,YAAA,IAAIZ,EAASY,aAAiB,QAAQA,EAAM,UAAU,OAAOA,CAAK,CAAC;AAAA,IAAA;AAAA,EAC3E;AAEJ;AA3EEQ,EADWjB,GACI,WACfiB,EAFWjB,GAEI,mBAA0B,IACzCiB,EAHWjB,GAGa,cAAa,KAAK,KAAK;AA4E1C,MAAMkB,IAAalB,EAAY,WAAW,KAAKA,CAAW,GACpDmB,IAAoBnB,EAAY,kBAAkB,KAAKA,CAAW;"}
@@ -1,81 +0,0 @@
1
- var f = Object.defineProperty;
2
- var m = (s, e, t) => e in s ? f(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
3
- var n = (s, e, t) => m(s, typeof e != "symbol" ? e + "" : e, t);
4
- class u {
5
- constructor(e = "qxs_") {
6
- n(this, "prefix");
7
- n(this, "local", {
8
- has: (e, t = !0) => {
9
- const o = t ? `${this.prefix}${e}` : e;
10
- return Object.prototype.hasOwnProperty.call(localStorage, o);
11
- },
12
- get: (e, t = !0) => {
13
- const o = t ? `${this.prefix}${e}` : e;
14
- return localStorage.getItem(o);
15
- },
16
- set: (e, t, o = !0) => {
17
- const r = o ? `${this.prefix}${e}` : e;
18
- localStorage.setItem(r, t);
19
- },
20
- remove: (e, t = !0) => {
21
- const o = t ? `${this.prefix}${e}` : e;
22
- localStorage.removeItem(o);
23
- },
24
- clear: () => {
25
- localStorage.clear();
26
- }
27
- });
28
- n(this, "session", {
29
- has: (e, t = !0) => {
30
- const o = t ? `${this.prefix}${e}` : e;
31
- return Object.prototype.hasOwnProperty.call(sessionStorage, o);
32
- },
33
- get: (e, t = !0) => {
34
- const o = t ? `${this.prefix}${e}` : e;
35
- return sessionStorage.getItem(o);
36
- },
37
- set: (e, t, o = !0) => {
38
- const r = o ? `${this.prefix}${e}` : e;
39
- sessionStorage.setItem(r, t);
40
- },
41
- remove: (e, t = !0) => {
42
- const o = t ? `${this.prefix}${e}` : e;
43
- sessionStorage.removeItem(o);
44
- },
45
- clear: () => {
46
- sessionStorage.clear();
47
- }
48
- });
49
- n(this, "cookie", {
50
- has: (e, t = !0) => {
51
- const o = t ? `${this.prefix}${e}` : e;
52
- return new RegExp(`(^|;)\\s*${o}=`).test(document.cookie);
53
- },
54
- get: (e, t = !0) => {
55
- const o = t ? `${this.prefix}${e}` : e, r = document.cookie.match(new RegExp(`(^|;)\\s*${o}=([^;]*)`));
56
- return r ? decodeURIComponent(r[2]) : null;
57
- },
58
- set: (e, t, o = 1, r = "/", c = window.location.hostname, a = !0) => {
59
- const p = a ? `${this.prefix}${e}` : e, i = /* @__PURE__ */ new Date();
60
- i.setTime(i.getTime() + o * 24 * 60 * 60 * 1e3);
61
- const $ = `;expires=${i.toUTCString()}`, x = `;path=${r}`, h = c ? `;domain=${c}` : "";
62
- document.cookie = `${p}=${encodeURIComponent(t)}${$}${x}${h}`;
63
- },
64
- remove: (e, t = "/", o = window.location.hostname, r = !0) => {
65
- const c = r ? `${this.prefix}${e}` : e, a = `;expires=${(/* @__PURE__ */ new Date(0)).toUTCString()}`, p = `;path=${t}`, i = o ? `;domain=${o}` : "";
66
- document.cookie = `${c}=;${a}${p}${i}`;
67
- },
68
- clear: () => {
69
- const e = document.cookie.match(/[^ =;]+(?==)/g);
70
- e && e.forEach((t) => {
71
- document.cookie = `${t}=;expires=${(/* @__PURE__ */ new Date(0)).toUTCString()};path=/`;
72
- });
73
- }
74
- });
75
- this.prefix = e;
76
- }
77
- }
78
- export {
79
- u as Storage
80
- };
81
- //# sourceMappingURL=storage.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.mjs","sources":["../../../../packages/utils/src/storage.ts"],"sourcesContent":["// 使用单例模式\nclass Storage {\n private readonly prefix: string\n\n constructor(prefix = 'qxs_') {\n this.prefix = prefix\n }\n\n local = {\n has: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return Object.prototype.hasOwnProperty.call(localStorage, prefixedKey)\n },\n get: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return localStorage.getItem(prefixedKey)\n },\n set: (key: string, value: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n localStorage.setItem(prefixedKey, value)\n },\n remove: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n localStorage.removeItem(prefixedKey)\n },\n clear: () => {\n localStorage.clear()\n },\n }\n\n session = {\n has: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return Object.prototype.hasOwnProperty.call(sessionStorage, prefixedKey)\n },\n get: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return sessionStorage.getItem(prefixedKey)\n },\n set: (key: string, value: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n sessionStorage.setItem(prefixedKey, value)\n },\n remove: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n sessionStorage.removeItem(prefixedKey)\n },\n clear: () => {\n sessionStorage.clear()\n },\n }\n\n cookie = {\n has: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return new RegExp(`(^|;)\\\\s*${prefixedKey}=`).test(document.cookie)\n },\n get: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n const match = document.cookie.match(new RegExp(`(^|;)\\\\s*${prefixedKey}=([^;]*)`))\n return match ? decodeURIComponent(match[2]) : null\n },\n set: (key: string, value: string, expires = 1, path = '/', domain = window.location.hostname, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n const expiresDate = new Date()\n expiresDate.setTime(expiresDate.getTime() + expires * 24 * 60 * 60 * 1000)\n const expiresStr = `;expires=${expiresDate.toUTCString()}`\n const pathStr = `;path=${path}`\n const domainStr = domain ? `;domain=${domain}` : ''\n\n document.cookie = `${prefixedKey}=${encodeURIComponent(value)}${expiresStr}${pathStr}${domainStr}`\n },\n remove: (key: string, path = '/', domain = window.location.hostname, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n const expiresStr = `;expires=${new Date(0).toUTCString()}`\n const pathStr = `;path=${path}`\n const domainStr = domain ? `;domain=${domain}` : ''\n\n document.cookie = `${prefixedKey}=;${expiresStr}${pathStr}${domainStr}`\n },\n clear: () => {\n const keys = document.cookie.match(/[^ =;]+(?==)/g)\n if (keys) {\n keys.forEach((key) => {\n document.cookie = `${key}=;expires=${new Date(0).toUTCString()};path=/`\n })\n }\n },\n }\n}\n\n// 直接导出 Storage 类\nexport { Storage }\n"],"names":["Storage","prefix","__publicField","key","usePrefix","prefixedKey","value","match","expires","path","domain","expiresDate","expiresStr","pathStr","domainStr","keys"],"mappings":";;;AACA,MAAMA,EAAQ;AAAA,EAGZ,YAAYC,IAAS,QAAQ;AAFZ,IAAAC,EAAA;AAMjB,IAAAA,EAAA,eAAQ;AAAA,MACN,KAAK,CAACC,GAAaC,IAAqB,OAAS;AAC/C,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA;AACzD,eAAO,OAAO,UAAU,eAAe,KAAK,cAAcE,CAAW;AAAA,MACvE;AAAA,MACA,KAAK,CAACF,GAAaC,IAAqB,OAAS;AAC/C,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA;AAClD,eAAA,aAAa,QAAQE,CAAW;AAAA,MACzC;AAAA,MACA,KAAK,CAACF,GAAaG,GAAeF,IAAqB,OAAS;AAC9D,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA;AAC5C,qBAAA,QAAQE,GAAaC,CAAK;AAAA,MACzC;AAAA,MACA,QAAQ,CAACH,GAAaC,IAAqB,OAAS;AAClD,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA;AACzD,qBAAa,WAAWE,CAAW;AAAA,MACrC;AAAA,MACA,OAAO,MAAM;AACX,qBAAa,MAAM;AAAA,MAAA;AAAA,IAEvB;AAEA,IAAAH,EAAA,iBAAU;AAAA,MACR,KAAK,CAACC,GAAaC,IAAqB,OAAS;AAC/C,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA;AACzD,eAAO,OAAO,UAAU,eAAe,KAAK,gBAAgBE,CAAW;AAAA,MACzE;AAAA,MACA,KAAK,CAACF,GAAaC,IAAqB,OAAS;AAC/C,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA;AAClD,eAAA,eAAe,QAAQE,CAAW;AAAA,MAC3C;AAAA,MACA,KAAK,CAACF,GAAaG,GAAeF,IAAqB,OAAS;AAC9D,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA;AAC1C,uBAAA,QAAQE,GAAaC,CAAK;AAAA,MAC3C;AAAA,MACA,QAAQ,CAACH,GAAaC,IAAqB,OAAS;AAClD,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA;AACzD,uBAAe,WAAWE,CAAW;AAAA,MACvC;AAAA,MACA,OAAO,MAAM;AACX,uBAAe,MAAM;AAAA,MAAA;AAAA,IAEzB;AAEA,IAAAH,EAAA,gBAAS;AAAA,MACP,KAAK,CAACC,GAAaC,IAAqB,OAAS;AAC/C,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA;AAClD,eAAA,IAAI,OAAO,YAAYE,CAAW,GAAG,EAAE,KAAK,SAAS,MAAM;AAAA,MACpE;AAAA,MACA,KAAK,CAACF,GAAaC,IAAqB,OAAS;AAC/C,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA,GACnDI,IAAQ,SAAS,OAAO,MAAM,IAAI,OAAO,YAAYF,CAAW,UAAU,CAAC;AACjF,eAAOE,IAAQ,mBAAmBA,EAAM,CAAC,CAAC,IAAI;AAAA,MAChD;AAAA,MACA,KAAK,CAACJ,GAAaG,GAAeE,IAAU,GAAGC,IAAO,KAAKC,IAAS,OAAO,SAAS,UAAUN,IAAqB,OAAS;AAC1H,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA,GACnDQ,wBAAkB,KAAK;AACjB,QAAAA,EAAA,QAAQA,EAAY,QAAQ,IAAIH,IAAU,KAAK,KAAK,KAAK,GAAI;AACzE,cAAMI,IAAa,YAAYD,EAAY,YAAa,CAAA,IAClDE,IAAU,SAASJ,CAAI,IACvBK,IAAYJ,IAAS,WAAWA,CAAM,KAAK;AAEjD,iBAAS,SAAS,GAAGL,CAAW,IAAI,mBAAmBC,CAAK,CAAC,GAAGM,CAAU,GAAGC,CAAO,GAAGC,CAAS;AAAA,MAClG;AAAA,MACA,QAAQ,CAACX,GAAaM,IAAO,KAAKC,IAAS,OAAO,SAAS,UAAUN,IAAqB,OAAS;AACjG,cAAMC,IAAcD,IAAY,GAAG,KAAK,MAAM,GAAGD,CAAG,KAAKA,GACnDS,IAAa,aAAY,oBAAI,KAAK,CAAC,GAAE,aAAa,IAClDC,IAAU,SAASJ,CAAI,IACvBK,IAAYJ,IAAS,WAAWA,CAAM,KAAK;AAExC,iBAAA,SAAS,GAAGL,CAAW,KAAKO,CAAU,GAAGC,CAAO,GAAGC,CAAS;AAAA,MACvE;AAAA,MACA,OAAO,MAAM;AACX,cAAMC,IAAO,SAAS,OAAO,MAAM,eAAe;AAClD,QAAIA,KACGA,EAAA,QAAQ,CAACZ,MAAQ;AACX,mBAAA,SAAS,GAAGA,CAAG,kCAAiB,KAAK,CAAC,GAAE,YAAA,CAAa;AAAA,QAAA,CAC/D;AAAA,MACH;AAAA,IAEJ;AAnFE,SAAK,SAASF;AAAA,EAAA;AAoFlB;"}