sa2kit 3.0.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/AliyunOSSProvider-7IOT5U6M.js +15 -0
- package/dist/AliyunOSSProvider-7IOT5U6M.js.map +1 -0
- package/dist/AliyunOSSProvider-ZXZM7OQA.mjs +6 -0
- package/dist/AliyunOSSProvider-ZXZM7OQA.mjs.map +1 -0
- package/dist/LocalStorageProvider-KJKRCKBS.js +15 -0
- package/dist/LocalStorageProvider-KJKRCKBS.js.map +1 -0
- package/dist/LocalStorageProvider-O22465NY.mjs +6 -0
- package/dist/LocalStorageProvider-O22465NY.mjs.map +1 -0
- package/dist/chunk-2234T4A6.js +303 -0
- package/dist/chunk-2234T4A6.js.map +1 -0
- package/dist/chunk-36KGNXKW.js +16 -0
- package/dist/chunk-36KGNXKW.js.map +1 -0
- package/dist/chunk-375C7WL7.js +2695 -0
- package/dist/chunk-375C7WL7.js.map +1 -0
- package/dist/chunk-3J24Z4MB.js +991 -0
- package/dist/chunk-3J24Z4MB.js.map +1 -0
- package/dist/chunk-3QCATFQV.js +43 -0
- package/dist/chunk-3QCATFQV.js.map +1 -0
- package/dist/chunk-3R6JHA6D.js +120 -0
- package/dist/chunk-3R6JHA6D.js.map +1 -0
- package/dist/chunk-4OXKHV7J.js +43 -0
- package/dist/chunk-4OXKHV7J.js.map +1 -0
- package/dist/chunk-4PJM4752.js +4 -0
- package/dist/chunk-4PJM4752.js.map +1 -0
- package/dist/chunk-65JRVC3F.mjs +54 -0
- package/dist/chunk-65JRVC3F.mjs.map +1 -0
- package/dist/chunk-6HL54I2B.js +336 -0
- package/dist/chunk-6HL54I2B.js.map +1 -0
- package/dist/chunk-6V2MIQPF.mjs +77 -0
- package/dist/chunk-6V2MIQPF.mjs.map +1 -0
- package/dist/chunk-6YLCRWKM.mjs +8 -0
- package/dist/chunk-6YLCRWKM.mjs.map +1 -0
- package/dist/chunk-7CRU2Y5X.mjs +152 -0
- package/dist/chunk-7CRU2Y5X.mjs.map +1 -0
- package/dist/chunk-7PMT4L4I.js +324 -0
- package/dist/chunk-7PMT4L4I.js.map +1 -0
- package/dist/chunk-7VVZHFEM.js +88 -0
- package/dist/chunk-7VVZHFEM.js.map +1 -0
- package/dist/chunk-AWHGIKTQ.js +56 -0
- package/dist/chunk-AWHGIKTQ.js.map +1 -0
- package/dist/chunk-B3GYF6TY.js +37 -0
- package/dist/chunk-B3GYF6TY.js.map +1 -0
- package/dist/chunk-BDBJFOXM.mjs +14 -0
- package/dist/chunk-BDBJFOXM.mjs.map +1 -0
- package/dist/chunk-BTW3SWQN.mjs +25 -0
- package/dist/chunk-BTW3SWQN.mjs.map +1 -0
- package/dist/chunk-CHYSSZ4E.mjs +734 -0
- package/dist/chunk-CHYSSZ4E.mjs.map +1 -0
- package/dist/chunk-DO6QYAZV.mjs +298 -0
- package/dist/chunk-DO6QYAZV.mjs.map +1 -0
- package/dist/chunk-DTR53LQO.mjs +781 -0
- package/dist/chunk-DTR53LQO.mjs.map +1 -0
- package/dist/chunk-EI2S4XDG.mjs +89 -0
- package/dist/chunk-EI2S4XDG.mjs.map +1 -0
- package/dist/chunk-EOZHUI46.js +93 -0
- package/dist/chunk-EOZHUI46.js.map +1 -0
- package/dist/chunk-F2BZIU67.js +184 -0
- package/dist/chunk-F2BZIU67.js.map +1 -0
- package/dist/chunk-F2TEJSCP.js +756 -0
- package/dist/chunk-F2TEJSCP.js.map +1 -0
- package/dist/chunk-FCLS5R24.js +148 -0
- package/dist/chunk-FCLS5R24.js.map +1 -0
- package/dist/chunk-FUA6ZGMI.mjs +376 -0
- package/dist/chunk-FUA6ZGMI.mjs.map +1 -0
- package/dist/chunk-FY2X3LYR.mjs +3 -0
- package/dist/chunk-FY2X3LYR.mjs.map +1 -0
- package/dist/chunk-GS4SAW25.mjs +116 -0
- package/dist/chunk-GS4SAW25.mjs.map +1 -0
- package/dist/chunk-H56ICWUO.js +321 -0
- package/dist/chunk-H56ICWUO.js.map +1 -0
- package/dist/chunk-HG34SGMN.mjs +546 -0
- package/dist/chunk-HG34SGMN.mjs.map +1 -0
- package/dist/chunk-HL4H2HF6.js +279 -0
- package/dist/chunk-HL4H2HF6.js.map +1 -0
- package/dist/chunk-IJIQUMAK.mjs +272 -0
- package/dist/chunk-IJIQUMAK.mjs.map +1 -0
- package/dist/chunk-KEZFTDZT.mjs +559 -0
- package/dist/chunk-KEZFTDZT.mjs.map +1 -0
- package/dist/chunk-KHOVC2KL.js +144 -0
- package/dist/chunk-KHOVC2KL.js.map +1 -0
- package/dist/chunk-KRBSTLKC.js +6154 -0
- package/dist/chunk-KRBSTLKC.js.map +1 -0
- package/dist/chunk-KVYHCGRY.js +2011 -0
- package/dist/chunk-KVYHCGRY.js.map +1 -0
- package/dist/chunk-LZ5YTMMP.mjs +41 -0
- package/dist/chunk-LZ5YTMMP.mjs.map +1 -0
- package/dist/chunk-MJ6XJGAL.js +1551 -0
- package/dist/chunk-MJ6XJGAL.js.map +1 -0
- package/dist/chunk-MKLXCV4Z.mjs +1510 -0
- package/dist/chunk-MKLXCV4Z.mjs.map +1 -0
- package/dist/chunk-MMDSZIXD.mjs +286 -0
- package/dist/chunk-MMDSZIXD.mjs.map +1 -0
- package/dist/chunk-N2O3OX5Y.mjs +243 -0
- package/dist/chunk-N2O3OX5Y.mjs.map +1 -0
- package/dist/chunk-O6NNSPWD.mjs +35 -0
- package/dist/chunk-O6NNSPWD.mjs.map +1 -0
- package/dist/chunk-OIRZXSYM.js +80 -0
- package/dist/chunk-OIRZXSYM.js.map +1 -0
- package/dist/chunk-P7JQRNBJ.mjs +76 -0
- package/dist/chunk-P7JQRNBJ.mjs.map +1 -0
- package/dist/chunk-PA4ELVGI.js +20 -0
- package/dist/chunk-PA4ELVGI.js.map +1 -0
- package/dist/chunk-PLIG5257.mjs +2613 -0
- package/dist/chunk-PLIG5257.mjs.map +1 -0
- package/dist/chunk-QIF4MG5V.mjs +283 -0
- package/dist/chunk-QIF4MG5V.mjs.map +1 -0
- package/dist/chunk-RHECN4E2.mjs +6077 -0
- package/dist/chunk-RHECN4E2.mjs.map +1 -0
- package/dist/chunk-RHHTZTIN.mjs +314 -0
- package/dist/chunk-RHHTZTIN.mjs.map +1 -0
- package/dist/chunk-RRQ2X26Z.js +106 -0
- package/dist/chunk-RRQ2X26Z.js.map +1 -0
- package/dist/chunk-RST2T54Y.js +836 -0
- package/dist/chunk-RST2T54Y.js.map +1 -0
- package/dist/chunk-RVNQI6BI.js +249 -0
- package/dist/chunk-RVNQI6BI.js.map +1 -0
- package/dist/chunk-S3K4LTRI.mjs +226 -0
- package/dist/chunk-S3K4LTRI.mjs.map +1 -0
- package/dist/chunk-SWZ5XNF6.js +158 -0
- package/dist/chunk-SWZ5XNF6.js.map +1 -0
- package/dist/chunk-TNJ6LYX7.mjs +18 -0
- package/dist/chunk-TNJ6LYX7.mjs.map +1 -0
- package/dist/chunk-U7HNBCBS.js +207 -0
- package/dist/chunk-U7HNBCBS.js.map +1 -0
- package/dist/chunk-UJS3YSD3.mjs +37 -0
- package/dist/chunk-UJS3YSD3.mjs.map +1 -0
- package/dist/chunk-UJUWDF7M.mjs +336 -0
- package/dist/chunk-UJUWDF7M.mjs.map +1 -0
- package/dist/chunk-UR5NENGE.js +78 -0
- package/dist/chunk-UR5NENGE.js.map +1 -0
- package/dist/chunk-V7HGBDCB.mjs +135 -0
- package/dist/chunk-V7HGBDCB.mjs.map +1 -0
- package/dist/chunk-V7RLIZMN.js +90 -0
- package/dist/chunk-V7RLIZMN.js.map +1 -0
- package/dist/chunk-VCKXK6V5.js +345 -0
- package/dist/chunk-VCKXK6V5.js.map +1 -0
- package/dist/chunk-VIEXDTNF.mjs +100 -0
- package/dist/chunk-VIEXDTNF.mjs.map +1 -0
- package/dist/chunk-VN2DULIA.js +579 -0
- package/dist/chunk-VN2DULIA.js.map +1 -0
- package/dist/chunk-VNWMRUY6.js +168 -0
- package/dist/chunk-VNWMRUY6.js.map +1 -0
- package/dist/chunk-VYK4M2D6.mjs +177 -0
- package/dist/chunk-VYK4M2D6.mjs.map +1 -0
- package/dist/chunk-WB4H6ZUW.mjs +86 -0
- package/dist/chunk-WB4H6ZUW.mjs.map +1 -0
- package/dist/chunk-WM3AEJ2E.mjs +981 -0
- package/dist/chunk-WM3AEJ2E.mjs.map +1 -0
- package/dist/chunk-X5GINUGI.mjs +162 -0
- package/dist/chunk-X5GINUGI.mjs.map +1 -0
- package/dist/chunk-XB7GUEHZ.mjs +82 -0
- package/dist/chunk-XB7GUEHZ.mjs.map +1 -0
- package/dist/chunk-XE5RGZ3B.js +242 -0
- package/dist/chunk-XE5RGZ3B.js.map +1 -0
- package/dist/chunk-XNTIMVSL.mjs +193 -0
- package/dist/chunk-XNTIMVSL.mjs.map +1 -0
- package/dist/chunk-Y7WHUKJF.js +387 -0
- package/dist/chunk-Y7WHUKJF.js.map +1 -0
- package/dist/chunk-YIRPPMCN.mjs +1916 -0
- package/dist/chunk-YIRPPMCN.mjs.map +1 -0
- package/dist/chunk-YTGUIRRH.js +10 -0
- package/dist/chunk-YTGUIRRH.js.map +1 -0
- package/dist/chunk-Z2SNB5LJ.js +28 -0
- package/dist/chunk-Z2SNB5LJ.js.map +1 -0
- package/dist/chunk-ZOP7YIVX.js +552 -0
- package/dist/chunk-ZOP7YIVX.js.map +1 -0
- package/dist/chunk-ZUZLWHH5.mjs +146 -0
- package/dist/chunk-ZUZLWHH5.mjs.map +1 -0
- package/dist/common/ai/llm/core/index.d.mts +70 -0
- package/dist/common/ai/llm/core/index.d.ts +70 -0
- package/dist/common/ai/llm/core/index.js +54 -0
- package/dist/common/ai/llm/core/index.mjs +5 -0
- package/dist/common/ai/llm/electron/index.d.mts +6 -0
- package/dist/common/ai/llm/electron/index.d.ts +6 -0
- package/dist/common/ai/llm/electron/index.js +67 -0
- package/dist/common/ai/llm/electron/index.mjs +10 -0
- package/dist/common/ai/llm/index.d.mts +3 -0
- package/dist/common/ai/llm/index.d.ts +3 -0
- package/dist/common/ai/llm/index.js +54 -0
- package/dist/common/ai/llm/index.mjs +5 -0
- package/dist/common/ai/llm/miniapp/index.d.mts +6 -0
- package/dist/common/ai/llm/miniapp/index.d.ts +6 -0
- package/dist/common/ai/llm/miniapp/index.js +59 -0
- package/dist/common/ai/llm/miniapp/index.mjs +6 -0
- package/dist/common/ai/llm/rn/index.d.mts +6 -0
- package/dist/common/ai/llm/rn/index.d.ts +6 -0
- package/dist/common/ai/llm/rn/index.js +59 -0
- package/dist/common/ai/llm/rn/index.mjs +6 -0
- package/dist/common/ai/llm/ui/electron/index.d.mts +5 -0
- package/dist/common/ai/llm/ui/electron/index.d.ts +5 -0
- package/dist/common/ai/llm/ui/electron/index.js +22 -0
- package/dist/common/ai/llm/ui/electron/index.mjs +9 -0
- package/dist/common/ai/llm/ui/miniapp/index.d.mts +9 -0
- package/dist/common/ai/llm/ui/miniapp/index.d.ts +9 -0
- package/dist/common/ai/llm/ui/miniapp/index.js +14 -0
- package/dist/common/ai/llm/ui/miniapp/index.mjs +5 -0
- package/dist/common/ai/llm/ui/rn/index.d.mts +9 -0
- package/dist/common/ai/llm/ui/rn/index.d.ts +9 -0
- package/dist/common/ai/llm/ui/rn/index.js +14 -0
- package/dist/common/ai/llm/ui/rn/index.mjs +5 -0
- package/dist/common/ai/llm/ui/web/index.d.mts +15 -0
- package/dist/common/ai/llm/ui/web/index.d.ts +15 -0
- package/dist/common/ai/llm/ui/web/index.js +21 -0
- package/dist/common/ai/llm/ui/web/index.mjs +8 -0
- package/dist/common/ai/llm/web/index.d.mts +6 -0
- package/dist/common/ai/llm/web/index.d.ts +6 -0
- package/dist/common/ai/llm/web/index.js +66 -0
- package/dist/common/ai/llm/web/index.mjs +9 -0
- package/dist/common/analytics/index.d.mts +2 -0
- package/dist/common/analytics/index.d.ts +2 -0
- package/dist/common/analytics/index.js +314 -0
- package/dist/common/analytics/index.mjs +5 -0
- package/dist/common/analytics/server/index.js +529 -0
- package/dist/common/analytics/server/index.js.map +1 -0
- package/dist/common/analytics/server/index.mjs +525 -0
- package/dist/common/analytics/server/index.mjs.map +1 -0
- package/dist/common/api/index.d.mts +3 -0
- package/dist/common/api/index.d.ts +3 -0
- package/dist/common/api/index.js +21 -0
- package/dist/common/api/index.mjs +4 -0
- package/dist/common/auth/client/index.d.mts +1 -31
- package/dist/common/auth/client/index.d.ts +1 -31
- package/dist/common/auth/client/index.js +2 -15
- package/dist/common/auth/client/index.mjs +1 -2
- package/dist/common/auth/components/index.d.mts +5 -239
- package/dist/common/auth/components/index.d.ts +5 -239
- package/dist/common/auth/components/index.js +878 -49
- package/dist/common/auth/components/index.js.map +1 -1
- package/dist/common/auth/components/index.mjs +871 -5
- package/dist/common/auth/components/index.mjs.map +1 -1
- package/dist/common/auth/hooks/index.d.mts +2 -29
- package/dist/common/auth/hooks/index.d.ts +2 -29
- package/dist/common/auth/hooks/index.js +2 -11
- package/dist/common/auth/hooks/index.mjs +1 -2
- package/dist/common/auth/index.d.mts +5 -9
- package/dist/common/auth/index.d.ts +5 -9
- package/dist/common/auth/index.js +5 -26
- package/dist/common/auth/index.mjs +3 -4
- package/dist/common/auth/rn/index.d.mts +1 -17
- package/dist/common/auth/rn/index.d.ts +1 -17
- package/dist/common/auth/rn/index.js +2 -34
- package/dist/common/auth/rn/index.js.map +1 -1
- package/dist/common/auth/rn/index.mjs +2 -31
- package/dist/common/auth/rn/index.mjs.map +1 -1
- package/dist/common/auth/server/index.d.mts +81 -2
- package/dist/common/auth/server/index.d.ts +81 -2
- package/dist/common/auth/server/index.js +128 -37
- package/dist/common/auth/server/index.js.map +1 -1
- package/dist/common/auth/server/index.mjs +124 -1
- package/dist/common/auth/server/index.mjs.map +1 -1
- package/dist/common/auth/services/index.js +12 -9
- package/dist/common/auth/services/index.js.map +1 -1
- package/dist/common/auth/services/index.mjs +10 -1
- package/dist/common/auth/services/index.mjs.map +1 -1
- package/dist/common/components/index.d.mts +4 -0
- package/dist/common/components/index.d.ts +4 -0
- package/dist/common/components/index.js +414 -0
- package/dist/common/components/index.mjs +9 -0
- package/dist/common/config/index.d.mts +1 -0
- package/dist/common/config/index.d.ts +1 -0
- package/dist/common/config/index.js +21 -0
- package/dist/common/config/index.mjs +4 -0
- package/dist/common/config/server/index.js +1177 -0
- package/dist/common/config/server/index.js.map +1 -0
- package/dist/common/config/server/index.mjs +1138 -0
- package/dist/common/config/server/index.mjs.map +1 -0
- package/dist/common/export/index.d.mts +2 -2
- package/dist/common/export/index.d.ts +2 -2
- package/dist/common/export/index.js +67 -67
- package/dist/common/export/index.mjs +3 -3
- package/dist/common/export/server/index.d.mts +2 -2
- package/dist/common/export/server/index.d.ts +2 -2
- package/dist/common/export/server/index.js +76 -48
- package/dist/common/export/server/index.mjs +3 -3
- package/dist/common/file/index.d.mts +2 -2
- package/dist/common/file/index.d.ts +2 -2
- package/dist/common/file/index.js +27 -27
- package/dist/common/file/index.mjs +5 -5
- package/dist/common/file/server/index.d.mts +2 -2
- package/dist/common/file/server/index.d.ts +2 -2
- package/dist/common/file/server/index.js +58 -50
- package/dist/common/file/server/index.mjs +8 -8
- package/dist/common/i18n/index.d.mts +2 -0
- package/dist/common/i18n/index.d.ts +2 -0
- package/dist/common/i18n/index.js +73 -0
- package/dist/common/i18n/index.mjs +4 -0
- package/dist/common/imageCrop/index.d.mts +2 -0
- package/dist/common/imageCrop/index.d.ts +2 -0
- package/dist/common/imageCrop/index.js +61 -0
- package/dist/common/imageCrop/index.mjs +4 -0
- package/dist/common/index.d.mts +17 -20
- package/dist/common/index.d.ts +17 -20
- package/dist/common/index.js +76 -70
- package/dist/common/index.mjs +27 -29
- package/dist/common/logger/index.d.mts +1 -1
- package/dist/common/logger/index.d.ts +1 -1
- package/dist/common/logger/index.js +6 -7
- package/dist/common/logger/index.mjs +1 -2
- package/dist/common/ossFile/index.d.mts +61 -0
- package/dist/common/ossFile/index.d.ts +61 -0
- package/dist/common/ossFile/index.js +96 -0
- package/dist/common/ossFile/index.mjs +7 -0
- package/dist/common/ossFile/server/index.d.mts +94 -0
- package/dist/common/ossFile/server/index.d.ts +94 -0
- package/dist/common/ossFile/server/index.js +221 -0
- package/dist/common/ossFile/server/index.mjs +12 -0
- package/dist/common/platform/index.js +8 -8
- package/dist/common/platform/index.mjs +4 -4
- package/dist/common/request/index.d.mts +1 -1
- package/dist/common/request/index.d.ts +1 -1
- package/dist/common/request/index.js +5 -7
- package/dist/common/request/index.mjs +2 -4
- package/dist/common/storage/index.d.mts +1 -1
- package/dist/common/storage/index.d.ts +1 -1
- package/dist/common/storage/index.js +17 -17
- package/dist/common/storage/index.mjs +5 -5
- package/dist/common/universalExport/index.d.mts +232 -0
- package/dist/common/universalExport/index.d.ts +232 -0
- package/dist/common/universalExport/index.js +178 -0
- package/dist/common/universalExport/index.mjs +5 -0
- package/dist/common/universalExport/server/index.d.mts +1189 -0
- package/dist/common/universalExport/server/index.d.ts +1189 -0
- package/dist/common/universalExport/server/index.js +151 -0
- package/dist/common/universalExport/server/index.mjs +6 -0
- package/dist/common/universalFile/index.d.mts +409 -0
- package/dist/common/universalFile/index.d.ts +409 -0
- package/dist/common/universalFile/index.js +1742 -0
- package/dist/common/universalFile/index.js.map +1 -0
- package/dist/common/universalFile/index.mjs +1497 -0
- package/dist/common/universalFile/index.mjs.map +1 -0
- package/dist/common/universalFile/server/index.d.mts +1064 -0
- package/dist/common/universalFile/server/index.d.ts +1064 -0
- package/dist/common/universalFile/server/index.js +311 -0
- package/dist/common/universalFile/server/index.mjs +10 -0
- package/dist/common/utils/index.d.mts +1 -1
- package/dist/common/utils/index.d.ts +1 -1
- package/dist/common/utils/index.js +11 -12
- package/dist/common/utils/index.mjs +2 -3
- package/dist/index-BRLygK4h.d.ts +67 -0
- package/dist/index-BWNK5mH2.d.ts +76 -0
- package/dist/index-Bd7cKF1j.d.mts +50 -0
- package/dist/index-BiCK6gg6.d.mts +210 -0
- package/dist/index-BiCK6gg6.d.ts +210 -0
- package/dist/index-C-P2yBTH.d.mts +76 -0
- package/dist/index-CT4K2z-O.d.ts +81 -0
- package/dist/index-D6RJTGce.d.mts +81 -0
- package/dist/index-DA7L9JlE.d.mts +159 -0
- package/dist/index-DRQxtCDw.d.ts +50 -0
- package/dist/index-DXVph21C.d.mts +201 -0
- package/dist/index-DXVph21C.d.ts +201 -0
- package/dist/index-DzyK789B.d.mts +67 -0
- package/dist/index-FVJZCEtm.d.mts +145 -0
- package/dist/index-FVJZCEtm.d.ts +145 -0
- package/dist/index-nD9vPCZT.d.ts +159 -0
- package/dist/index-nOmIv2BG.d.mts +559 -0
- package/dist/index-nOmIv2BG.d.ts +559 -0
- package/dist/path-Bzc7hj1N.d.ts +45 -0
- package/dist/path-DN_65vhO.d.mts +45 -0
- package/dist/utils-Dm3O1rAa.d.mts +366 -0
- package/dist/utils-Dm3O1rAa.d.ts +366 -0
- package/package.json +293 -348
- package/dist/AliyunOSSProvider-4GRL2FJB.js +0 -15
- package/dist/AliyunOSSProvider-4GRL2FJB.js.map +0 -1
- package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs +0 -6
- package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs.map +0 -1
- package/dist/CollisionBalls-BpHufX3H.d.mts +0 -41
- package/dist/CollisionBalls-BpHufX3H.d.ts +0 -41
- package/dist/ConfigService-BxK06xP6.d.mts +0 -262
- package/dist/ConfigService-BxK06xP6.d.ts +0 -262
- package/dist/LocalStorageProvider-J5RHV37G.mjs +0 -6
- package/dist/LocalStorageProvider-J5RHV37G.mjs.map +0 -1
- package/dist/LocalStorageProvider-PFA2DMIJ.js +0 -15
- package/dist/LocalStorageProvider-PFA2DMIJ.js.map +0 -1
- package/dist/UniversalFileService-CC4d3wkc.d.ts +0 -139
- package/dist/UniversalFileService-CzAE_G4V.d.mts +0 -139
- package/dist/ai/llm/core/index.d.mts +0 -70
- package/dist/ai/llm/core/index.d.ts +0 -70
- package/dist/ai/llm/core/index.js +0 -54
- package/dist/ai/llm/core/index.mjs +0 -5
- package/dist/ai/llm/electron/index.d.mts +0 -6
- package/dist/ai/llm/electron/index.d.ts +0 -6
- package/dist/ai/llm/electron/index.js +0 -66
- package/dist/ai/llm/electron/index.mjs +0 -9
- package/dist/ai/llm/index.d.mts +0 -3
- package/dist/ai/llm/index.d.ts +0 -3
- package/dist/ai/llm/index.js +0 -54
- package/dist/ai/llm/index.mjs +0 -5
- package/dist/ai/llm/miniapp/index.d.mts +0 -6
- package/dist/ai/llm/miniapp/index.d.ts +0 -6
- package/dist/ai/llm/miniapp/index.js +0 -59
- package/dist/ai/llm/miniapp/index.mjs +0 -6
- package/dist/ai/llm/rn/index.d.mts +0 -6
- package/dist/ai/llm/rn/index.d.ts +0 -6
- package/dist/ai/llm/rn/index.js +0 -59
- package/dist/ai/llm/rn/index.mjs +0 -6
- package/dist/ai/llm/ui/electron/index.d.mts +0 -5
- package/dist/ai/llm/ui/electron/index.d.ts +0 -5
- package/dist/ai/llm/ui/electron/index.js +0 -21
- package/dist/ai/llm/ui/electron/index.mjs +0 -8
- package/dist/ai/llm/ui/miniapp/index.d.mts +0 -9
- package/dist/ai/llm/ui/miniapp/index.d.ts +0 -9
- package/dist/ai/llm/ui/miniapp/index.js +0 -14
- package/dist/ai/llm/ui/miniapp/index.mjs +0 -5
- package/dist/ai/llm/ui/rn/index.d.mts +0 -9
- package/dist/ai/llm/ui/rn/index.d.ts +0 -9
- package/dist/ai/llm/ui/rn/index.js +0 -14
- package/dist/ai/llm/ui/rn/index.mjs +0 -5
- package/dist/ai/llm/ui/web/index.d.mts +0 -15
- package/dist/ai/llm/ui/web/index.d.ts +0 -15
- package/dist/ai/llm/ui/web/index.js +0 -20
- package/dist/ai/llm/ui/web/index.mjs +0 -7
- package/dist/ai/llm/web/index.d.mts +0 -6
- package/dist/ai/llm/web/index.d.ts +0 -6
- package/dist/ai/llm/web/index.js +0 -65
- package/dist/ai/llm/web/index.mjs +0 -8
- package/dist/analytics/index.d.mts +0 -2
- package/dist/analytics/index.d.ts +0 -2
- package/dist/analytics/index.js +0 -314
- package/dist/analytics/index.mjs +0 -5
- package/dist/analytics/server/index.js +0 -529
- package/dist/analytics/server/index.js.map +0 -1
- package/dist/analytics/server/index.mjs +0 -525
- package/dist/analytics/server/index.mjs.map +0 -1
- package/dist/api/index.d.mts +0 -3
- package/dist/api/index.d.ts +0 -3
- package/dist/api/index.js +0 -21
- package/dist/api/index.mjs +0 -4
- package/dist/audioDetection/index.d.mts +0 -449
- package/dist/audioDetection/index.d.ts +0 -449
- package/dist/audioDetection/index.js +0 -1244
- package/dist/audioDetection/index.js.map +0 -1
- package/dist/audioDetection/index.mjs +0 -1227
- package/dist/audioDetection/index.mjs.map +0 -1
- package/dist/auth/client/index.d.mts +0 -13
- package/dist/auth/client/index.d.ts +0 -13
- package/dist/auth/client/index.js +0 -26
- package/dist/auth/client/index.mjs +0 -5
- package/dist/auth/components/index.d.mts +0 -10
- package/dist/auth/components/index.d.ts +0 -10
- package/dist/auth/components/index.js +0 -70
- package/dist/auth/components/index.mjs +0 -9
- package/dist/auth/hooks/index.d.mts +0 -13
- package/dist/auth/hooks/index.d.ts +0 -13
- package/dist/auth/hooks/index.js +0 -28
- package/dist/auth/hooks/index.mjs +0 -7
- package/dist/auth/index.d.mts +0 -21
- package/dist/auth/index.d.ts +0 -21
- package/dist/auth/index.js +0 -112
- package/dist/auth/index.mjs +0 -11
- package/dist/auth/rn/index.d.mts +0 -3133
- package/dist/auth/rn/index.d.ts +0 -3133
- package/dist/auth/rn/index.js +0 -684
- package/dist/auth/rn/index.js.map +0 -1
- package/dist/auth/rn/index.mjs +0 -663
- package/dist/auth/rn/index.mjs.map +0 -1
- package/dist/auth/schema/index.d.mts +0 -4
- package/dist/auth/schema/index.d.ts +0 -4
- package/dist/auth/schema/index.js +0 -49
- package/dist/auth/schema/index.mjs +0 -4
- package/dist/auth/services/index.d.mts +0 -1
- package/dist/auth/services/index.d.ts +0 -1
- package/dist/auth/services/index.js +0 -17
- package/dist/auth/services/index.mjs +0 -4
- package/dist/base-api-client-BpmcQt4Q.d.ts +0 -103
- package/dist/base-api-client-CFIhZK4C.d.mts +0 -277
- package/dist/base-api-client-CFIhZK4C.d.ts +0 -277
- package/dist/base-api-client-DXLsq2yz.d.mts +0 -103
- package/dist/boothVaultService-Cn4WPhjg.d.mts +0 -83
- package/dist/boothVaultService-Cn4WPhjg.d.ts +0 -83
- package/dist/business/index.d.mts +0 -2
- package/dist/business/index.d.ts +0 -2
- package/dist/business/index.js +0 -581
- package/dist/business/index.js.map +0 -1
- package/dist/business/index.mjs +0 -575
- package/dist/business/index.mjs.map +0 -1
- package/dist/calendar/index.d.mts +0 -1325
- package/dist/calendar/index.d.ts +0 -1325
- package/dist/calendar/index.js +0 -5964
- package/dist/calendar/index.js.map +0 -1
- package/dist/calendar/index.mjs +0 -5878
- package/dist/calendar/index.mjs.map +0 -1
- package/dist/calendar/routes/index.d.mts +0 -191
- package/dist/calendar/routes/index.d.ts +0 -191
- package/dist/calendar/routes/index.js +0 -844
- package/dist/calendar/routes/index.js.map +0 -1
- package/dist/calendar/routes/index.mjs +0 -826
- package/dist/calendar/routes/index.mjs.map +0 -1
- package/dist/chunk-25OFOKNF.js +0 -171
- package/dist/chunk-25OFOKNF.js.map +0 -1
- package/dist/chunk-2Y7BKFKZ.js +0 -37
- package/dist/chunk-2Y7BKFKZ.js.map +0 -1
- package/dist/chunk-3DXPQ4YV.mjs +0 -165
- package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
- package/dist/chunk-3FRAIS4T.mjs +0 -35
- package/dist/chunk-3FRAIS4T.mjs.map +0 -1
- package/dist/chunk-3NHAT7D4.mjs +0 -361
- package/dist/chunk-3NHAT7D4.mjs.map +0 -1
- package/dist/chunk-3Z43XGA4.mjs +0 -54
- package/dist/chunk-3Z43XGA4.mjs.map +0 -1
- package/dist/chunk-4FDUURSD.js +0 -22
- package/dist/chunk-4FDUURSD.js.map +0 -1
- package/dist/chunk-4WBCWJSN.js +0 -836
- package/dist/chunk-4WBCWJSN.js.map +0 -1
- package/dist/chunk-5GBDDXYL.mjs +0 -23
- package/dist/chunk-5GBDDXYL.mjs.map +0 -1
- package/dist/chunk-5USIS3UM.js +0 -4
- package/dist/chunk-5USIS3UM.js.map +0 -1
- package/dist/chunk-7E3J7VAD.mjs +0 -3
- package/dist/chunk-7E3J7VAD.mjs.map +0 -1
- package/dist/chunk-ACUFEDVQ.js +0 -345
- package/dist/chunk-ACUFEDVQ.js.map +0 -1
- package/dist/chunk-AQPU2AXH.js +0 -756
- package/dist/chunk-AQPU2AXH.js.map +0 -1
- package/dist/chunk-ATUCZXJY.js +0 -80
- package/dist/chunk-ATUCZXJY.js.map +0 -1
- package/dist/chunk-B3CZ3HXJ.mjs +0 -126
- package/dist/chunk-B3CZ3HXJ.mjs.map +0 -1
- package/dist/chunk-BCE6RUZV.js +0 -2695
- package/dist/chunk-BCE6RUZV.js.map +0 -1
- package/dist/chunk-BIHYZA67.mjs +0 -2613
- package/dist/chunk-BIHYZA67.mjs.map +0 -1
- package/dist/chunk-C6KV7VTZ.mjs +0 -152
- package/dist/chunk-C6KV7VTZ.mjs.map +0 -1
- package/dist/chunk-CAYOQDBR.js +0 -78
- package/dist/chunk-CAYOQDBR.js.map +0 -1
- package/dist/chunk-CIVO4R6N.mjs +0 -37
- package/dist/chunk-CIVO4R6N.mjs.map +0 -1
- package/dist/chunk-CX2GHCAI.mjs +0 -217
- package/dist/chunk-CX2GHCAI.mjs.map +0 -1
- package/dist/chunk-DIF5VRL3.mjs +0 -73
- package/dist/chunk-DIF5VRL3.mjs.map +0 -1
- package/dist/chunk-FCEBAWN6.js +0 -18
- package/dist/chunk-FCEBAWN6.js.map +0 -1
- package/dist/chunk-FHIE5MTC.mjs +0 -541
- package/dist/chunk-FHIE5MTC.mjs.map +0 -1
- package/dist/chunk-FHLTPXAR.js +0 -56
- package/dist/chunk-FHLTPXAR.js.map +0 -1
- package/dist/chunk-FIUBFREP.mjs +0 -298
- package/dist/chunk-FIUBFREP.mjs.map +0 -1
- package/dist/chunk-FOQEQWX5.js +0 -4
- package/dist/chunk-FOQEQWX5.js.map +0 -1
- package/dist/chunk-FXQOXLDE.js +0 -120
- package/dist/chunk-FXQOXLDE.js.map +0 -1
- package/dist/chunk-G4NFB2QA.mjs +0 -212
- package/dist/chunk-G4NFB2QA.mjs.map +0 -1
- package/dist/chunk-G5HJGXGC.mjs +0 -39
- package/dist/chunk-G5HJGXGC.mjs.map +0 -1
- package/dist/chunk-G6HXNQ2U.mjs +0 -336
- package/dist/chunk-G6HXNQ2U.mjs.map +0 -1
- package/dist/chunk-G6NSKJMH.js +0 -106
- package/dist/chunk-G6NSKJMH.js.map +0 -1
- package/dist/chunk-G7UBMCUT.mjs +0 -41
- package/dist/chunk-G7UBMCUT.mjs.map +0 -1
- package/dist/chunk-GQZHGSRR.js +0 -44
- package/dist/chunk-GQZHGSRR.js.map +0 -1
- package/dist/chunk-GS7XLKET.js +0 -41
- package/dist/chunk-GS7XLKET.js.map +0 -1
- package/dist/chunk-GWNBVGDT.mjs +0 -1232
- package/dist/chunk-GWNBVGDT.mjs.map +0 -1
- package/dist/chunk-HDMIOOZY.mjs +0 -546
- package/dist/chunk-HDMIOOZY.mjs.map +0 -1
- package/dist/chunk-HJ6MH7J7.js +0 -552
- package/dist/chunk-HJ6MH7J7.js.map +0 -1
- package/dist/chunk-HJZHQW5R.mjs +0 -146
- package/dist/chunk-HJZHQW5R.mjs.map +0 -1
- package/dist/chunk-I5ZPEDNR.mjs +0 -734
- package/dist/chunk-I5ZPEDNR.mjs.map +0 -1
- package/dist/chunk-IBWDBBX5.mjs +0 -16
- package/dist/chunk-IBWDBBX5.mjs.map +0 -1
- package/dist/chunk-J77KR2EV.mjs +0 -193
- package/dist/chunk-J77KR2EV.mjs.map +0 -1
- package/dist/chunk-KH6RQ4J5.js +0 -28
- package/dist/chunk-KH6RQ4J5.js.map +0 -1
- package/dist/chunk-KQ643L7Z.js +0 -144
- package/dist/chunk-KQ643L7Z.js.map +0 -1
- package/dist/chunk-LFB5EIIM.mjs +0 -31
- package/dist/chunk-LFB5EIIM.mjs.map +0 -1
- package/dist/chunk-LHJKLUM7.mjs +0 -18
- package/dist/chunk-LHJKLUM7.mjs.map +0 -1
- package/dist/chunk-MBANGIG3.mjs +0 -781
- package/dist/chunk-MBANGIG3.mjs.map +0 -1
- package/dist/chunk-MWSAH7ZG.mjs +0 -42
- package/dist/chunk-MWSAH7ZG.mjs.map +0 -1
- package/dist/chunk-MZOGYD4N.mjs +0 -186
- package/dist/chunk-MZOGYD4N.mjs.map +0 -1
- package/dist/chunk-NCRP2YHY.mjs +0 -1598
- package/dist/chunk-NCRP2YHY.mjs.map +0 -1
- package/dist/chunk-NDGHXVGS.js +0 -25
- package/dist/chunk-NDGHXVGS.js.map +0 -1
- package/dist/chunk-NDPO5OMC.js +0 -563
- package/dist/chunk-NDPO5OMC.js.map +0 -1
- package/dist/chunk-PBI7FKMB.js +0 -43
- package/dist/chunk-PBI7FKMB.js.map +0 -1
- package/dist/chunk-Q5EDCKQA.js +0 -336
- package/dist/chunk-Q5EDCKQA.js.map +0 -1
- package/dist/chunk-Q5VFBPMG.mjs +0 -76
- package/dist/chunk-Q5VFBPMG.mjs.map +0 -1
- package/dist/chunk-QDUBO567.js +0 -1148
- package/dist/chunk-QDUBO567.js.map +0 -1
- package/dist/chunk-QP5N3ER6.js +0 -18
- package/dist/chunk-QP5N3ER6.js.map +0 -1
- package/dist/chunk-QXAOXBVB.mjs +0 -135
- package/dist/chunk-QXAOXBVB.mjs.map +0 -1
- package/dist/chunk-R2DXTE2L.js +0 -249
- package/dist/chunk-R2DXTE2L.js.map +0 -1
- package/dist/chunk-RJP2BRJD.mjs +0 -6077
- package/dist/chunk-RJP2BRJD.mjs.map +0 -1
- package/dist/chunk-RTD2WHQQ.mjs +0 -16
- package/dist/chunk-RTD2WHQQ.mjs.map +0 -1
- package/dist/chunk-RWCD2CAD.mjs +0 -1132
- package/dist/chunk-RWCD2CAD.mjs.map +0 -1
- package/dist/chunk-S37OK2QG.js +0 -216
- package/dist/chunk-S37OK2QG.js.map +0 -1
- package/dist/chunk-S3PUP7N4.js +0 -20
- package/dist/chunk-S3PUP7N4.js.map +0 -1
- package/dist/chunk-S6YSGVWD.js +0 -224
- package/dist/chunk-S6YSGVWD.js.map +0 -1
- package/dist/chunk-S732H246.js +0 -6154
- package/dist/chunk-S732H246.js.map +0 -1
- package/dist/chunk-SFDJNKWC.js +0 -22
- package/dist/chunk-SFDJNKWC.js.map +0 -1
- package/dist/chunk-SKFEJPMJ.mjs +0 -226
- package/dist/chunk-SKFEJPMJ.mjs.map +0 -1
- package/dist/chunk-SLKOEYFH.js +0 -303
- package/dist/chunk-SLKOEYFH.js.map +0 -1
- package/dist/chunk-TC5YU6A4.mjs +0 -243
- package/dist/chunk-TC5YU6A4.mjs.map +0 -1
- package/dist/chunk-TXMX6PZR.js +0 -190
- package/dist/chunk-TXMX6PZR.js.map +0 -1
- package/dist/chunk-UCOE6SET.js +0 -148
- package/dist/chunk-UCOE6SET.js.map +0 -1
- package/dist/chunk-UIYKZ73N.js +0 -36
- package/dist/chunk-UIYKZ73N.js.map +0 -1
- package/dist/chunk-V7EVKD5G.mjs +0 -116
- package/dist/chunk-V7EVKD5G.mjs.map +0 -1
- package/dist/chunk-VHN7PF5I.js +0 -20
- package/dist/chunk-VHN7PF5I.js.map +0 -1
- package/dist/chunk-VMTEDX5H.js +0 -1275
- package/dist/chunk-VMTEDX5H.js.map +0 -1
- package/dist/chunk-VRN76M56.mjs +0 -3
- package/dist/chunk-VRN76M56.mjs.map +0 -1
- package/dist/chunk-VXFUXZN5.mjs +0 -20
- package/dist/chunk-VXFUXZN5.mjs.map +0 -1
- package/dist/chunk-WEEXCPSE.mjs +0 -86
- package/dist/chunk-WEEXCPSE.mjs.map +0 -1
- package/dist/chunk-WW4GE6CZ.js +0 -1647
- package/dist/chunk-WW4GE6CZ.js.map +0 -1
- package/dist/chunk-WZDTNDYR.js +0 -207
- package/dist/chunk-WZDTNDYR.js.map +0 -1
- package/dist/chunk-XBZIS3MV.mjs +0 -13
- package/dist/chunk-XBZIS3MV.mjs.map +0 -1
- package/dist/chunk-XFOZ56FB.mjs +0 -20
- package/dist/chunk-XFOZ56FB.mjs.map +0 -1
- package/dist/chunk-XJ7ZAGC5.js +0 -88
- package/dist/chunk-XJ7ZAGC5.js.map +0 -1
- package/dist/chunk-XUS5ACKR.mjs +0 -100
- package/dist/chunk-XUS5ACKR.mjs.map +0 -1
- package/dist/chunk-YOTQG4NP.mjs +0 -314
- package/dist/chunk-YOTQG4NP.mjs.map +0 -1
- package/dist/chunk-Z23HAXHL.js +0 -136
- package/dist/chunk-Z23HAXHL.js.map +0 -1
- package/dist/chunk-ZGVB35L2.mjs +0 -25
- package/dist/chunk-ZGVB35L2.mjs.map +0 -1
- package/dist/chunk-ZLYPALF3.js +0 -242
- package/dist/chunk-ZLYPALF3.js.map +0 -1
- package/dist/chunk-ZM2SZJTZ.js +0 -158
- package/dist/chunk-ZM2SZJTZ.js.map +0 -1
- package/dist/chunk-ZRAW3HXA.js +0 -43
- package/dist/chunk-ZRAW3HXA.js.map +0 -1
- package/dist/chunk-ZWQJSZEY.js +0 -371
- package/dist/chunk-ZWQJSZEY.js.map +0 -1
- package/dist/components/index.d.mts +0 -405
- package/dist/components/index.d.ts +0 -405
- package/dist/components/index.js +0 -2516
- package/dist/components/index.js.map +0 -1
- package/dist/components/index.mjs +0 -2396
- package/dist/components/index.mjs.map +0 -1
- package/dist/config/index.d.mts +0 -1
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +0 -21
- package/dist/config/index.mjs +0 -4
- package/dist/config/server/index.js +0 -1177
- package/dist/config/server/index.js.map +0 -1
- package/dist/config/server/index.mjs +0 -1138
- package/dist/config/server/index.mjs.map +0 -1
- package/dist/drizzle-schema-BNhqj2AZ.d.mts +0 -1114
- package/dist/drizzle-schema-BNhqj2AZ.d.ts +0 -1114
- package/dist/festivalCard/index.d.mts +0 -76
- package/dist/festivalCard/index.d.ts +0 -76
- package/dist/festivalCard/index.js +0 -1492
- package/dist/festivalCard/index.js.map +0 -1
- package/dist/festivalCard/index.mjs +0 -1475
- package/dist/festivalCard/index.mjs.map +0 -1
- package/dist/festivalCard/routes/index.d.mts +0 -42
- package/dist/festivalCard/routes/index.d.ts +0 -42
- package/dist/festivalCard/routes/index.js +0 -361
- package/dist/festivalCard/routes/index.js.map +0 -1
- package/dist/festivalCard/routes/index.mjs +0 -356
- package/dist/festivalCard/routes/index.mjs.map +0 -1
- package/dist/festivalCard/server/index.d.mts +0 -120
- package/dist/festivalCard/server/index.d.ts +0 -120
- package/dist/festivalCard/server/index.js +0 -272
- package/dist/festivalCard/server/index.js.map +0 -1
- package/dist/festivalCard/server/index.mjs +0 -265
- package/dist/festivalCard/server/index.mjs.map +0 -1
- package/dist/festivalCardService-B3GsnNpV.d.ts +0 -13
- package/dist/festivalCardService-CWhrLNE9.d.mts +0 -13
- package/dist/i18n/index.d.mts +0 -2
- package/dist/i18n/index.d.ts +0 -2
- package/dist/i18n/index.js +0 -73
- package/dist/i18n/index.mjs +0 -4
- package/dist/imageCrop/index.d.mts +0 -165
- package/dist/imageCrop/index.d.ts +0 -165
- package/dist/imageCrop/index.js +0 -560
- package/dist/imageCrop/index.js.map +0 -1
- package/dist/imageCrop/index.mjs +0 -541
- package/dist/imageCrop/index.mjs.map +0 -1
- package/dist/index-2G9Dxjvt.d.ts +0 -81
- package/dist/index-BcjDRcKp.d.mts +0 -40
- package/dist/index-Bjem5rWn.d.mts +0 -17
- package/dist/index-BlpXrrTy.d.ts +0 -40
- package/dist/index-C5U-2hJq.d.ts +0 -23
- package/dist/index-CYuUB8aF.d.mts +0 -67
- package/dist/index-CifSBBP2.d.ts +0 -17
- package/dist/index-D0K4ehme.d.mts +0 -20
- package/dist/index-DLnfKN-a.d.mts +0 -23
- package/dist/index-DSel44Ke.d.mts +0 -93
- package/dist/index-DSel44Ke.d.ts +0 -93
- package/dist/index-DZ5iJtNO.d.mts +0 -102
- package/dist/index-DZ5iJtNO.d.ts +0 -102
- package/dist/index-Da7qdkgW.d.ts +0 -20
- package/dist/index-DrPcMJPc.d.mts +0 -250
- package/dist/index-DrPcMJPc.d.ts +0 -250
- package/dist/index-WrR57hKT.d.ts +0 -67
- package/dist/index-oLUvfqT8.d.ts +0 -20
- package/dist/index-pe38RDgC.d.mts +0 -20
- package/dist/index-qcOvRVuN.d.mts +0 -81
- package/dist/index.d.mts +0 -11590
- package/dist/index.d.ts +0 -11590
- package/dist/index.js +0 -17679
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -17403
- package/dist/index.mjs.map +0 -1
- package/dist/logger/index.d.mts +0 -125
- package/dist/logger/index.d.ts +0 -125
- package/dist/logger/index.js +0 -29
- package/dist/logger/index.mjs +0 -4
- package/dist/mikuContest/ui/web/index.d.mts +0 -2
- package/dist/mikuContest/ui/web/index.d.ts +0 -2
- package/dist/mikuContest/ui/web/index.js +0 -353
- package/dist/mikuContest/ui/web/index.js.map +0 -1
- package/dist/mikuContest/ui/web/index.mjs +0 -343
- package/dist/mikuContest/ui/web/index.mjs.map +0 -1
- package/dist/mikuFireworks3D/index.d.mts +0 -268
- package/dist/mikuFireworks3D/index.d.ts +0 -268
- package/dist/mikuFireworks3D/index.js +0 -1267
- package/dist/mikuFireworks3D/index.js.map +0 -1
- package/dist/mikuFireworks3D/index.mjs +0 -1228
- package/dist/mikuFireworks3D/index.mjs.map +0 -1
- package/dist/mikuFusionGame/index.d.mts +0 -117
- package/dist/mikuFusionGame/index.d.ts +0 -117
- package/dist/mikuFusionGame/index.js +0 -1208
- package/dist/mikuFusionGame/index.js.map +0 -1
- package/dist/mikuFusionGame/index.mjs +0 -1195
- package/dist/mikuFusionGame/index.mjs.map +0 -1
- package/dist/mmd/admin/index.d.mts +0 -487
- package/dist/mmd/admin/index.d.ts +0 -487
- package/dist/mmd/admin/index.js +0 -1058
- package/dist/mmd/admin/index.js.map +0 -1
- package/dist/mmd/admin/index.mjs +0 -1027
- package/dist/mmd/admin/index.mjs.map +0 -1
- package/dist/mmd/index.d.mts +0 -2467
- package/dist/mmd/index.d.ts +0 -2467
- package/dist/mmd/index.js +0 -10119
- package/dist/mmd/index.js.map +0 -1
- package/dist/mmd/index.mjs +0 -10028
- package/dist/mmd/index.mjs.map +0 -1
- package/dist/mmd/server/index.d.mts +0 -139
- package/dist/mmd/server/index.d.ts +0 -139
- package/dist/mmd/server/index.js +0 -424
- package/dist/mmd/server/index.js.map +0 -1
- package/dist/mmd/server/index.mjs +0 -404
- package/dist/mmd/server/index.mjs.map +0 -1
- package/dist/music/index.d.mts +0 -74
- package/dist/music/index.d.ts +0 -74
- package/dist/music/index.js +0 -830
- package/dist/music/index.js.map +0 -1
- package/dist/music/index.mjs +0 -809
- package/dist/music/index.mjs.map +0 -1
- package/dist/music/server/index.d.mts +0 -1
- package/dist/music/server/index.d.ts +0 -1
- package/dist/music/server/index.js +0 -194
- package/dist/music/server/index.js.map +0 -1
- package/dist/music/server/index.mjs +0 -182
- package/dist/music/server/index.mjs.map +0 -1
- package/dist/navigation/index.d.mts +0 -93
- package/dist/navigation/index.d.ts +0 -93
- package/dist/navigation/index.js +0 -453
- package/dist/navigation/index.js.map +0 -1
- package/dist/navigation/index.mjs +0 -443
- package/dist/navigation/index.mjs.map +0 -1
- package/dist/ossFile/index.d.mts +0 -61
- package/dist/ossFile/index.d.ts +0 -61
- package/dist/ossFile/index.js +0 -96
- package/dist/ossFile/index.js.map +0 -1
- package/dist/ossFile/index.mjs +0 -7
- package/dist/ossFile/index.mjs.map +0 -1
- package/dist/ossFile/server/index.d.mts +0 -94
- package/dist/ossFile/server/index.d.ts +0 -94
- package/dist/ossFile/server/index.js +0 -213
- package/dist/ossFile/server/index.js.map +0 -1
- package/dist/ossFile/server/index.mjs +0 -12
- package/dist/ossFile/server/index.mjs.map +0 -1
- package/dist/path-DkaHQSyW.d.mts +0 -41
- package/dist/path-qjVnH8qU.d.ts +0 -41
- package/dist/portfolio/index.d.mts +0 -66
- package/dist/portfolio/index.d.ts +0 -66
- package/dist/portfolio/index.js +0 -736
- package/dist/portfolio/index.js.map +0 -1
- package/dist/portfolio/index.mjs +0 -724
- package/dist/portfolio/index.mjs.map +0 -1
- package/dist/qqbot/server/index.d.mts +0 -216
- package/dist/qqbot/server/index.d.ts +0 -216
- package/dist/qqbot/server/index.js +0 -394
- package/dist/qqbot/server/index.js.map +0 -1
- package/dist/qqbot/server/index.mjs +0 -385
- package/dist/qqbot/server/index.mjs.map +0 -1
- package/dist/qqbot/ui/web/index.d.mts +0 -10
- package/dist/qqbot/ui/web/index.d.ts +0 -10
- package/dist/qqbot/ui/web/index.js +0 -105
- package/dist/qqbot/ui/web/index.js.map +0 -1
- package/dist/qqbot/ui/web/index.mjs +0 -99
- package/dist/qqbot/ui/web/index.mjs.map +0 -1
- package/dist/request/index.d.mts +0 -59
- package/dist/request/index.d.ts +0 -59
- package/dist/request/index.js +0 -23
- package/dist/request/index.js.map +0 -1
- package/dist/request/index.mjs +0 -6
- package/dist/request/index.mjs.map +0 -1
- package/dist/screenReceiver/index.d.mts +0 -86
- package/dist/screenReceiver/index.d.ts +0 -86
- package/dist/screenReceiver/index.js +0 -281
- package/dist/screenReceiver/index.js.map +0 -1
- package/dist/screenReceiver/index.mjs +0 -273
- package/dist/screenReceiver/index.mjs.map +0 -1
- package/dist/session-BCXvGCnm.d.mts +0 -81
- package/dist/session-BCXvGCnm.d.ts +0 -81
- package/dist/storage/index.d.mts +0 -136
- package/dist/storage/index.d.ts +0 -136
- package/dist/storage/index.js +0 -48
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/index.mjs +0 -7
- package/dist/storage/index.mjs.map +0 -1
- package/dist/testYourself/admin/index.d.mts +0 -58
- package/dist/testYourself/admin/index.d.ts +0 -58
- package/dist/testYourself/admin/index.js +0 -1009
- package/dist/testYourself/admin/index.js.map +0 -1
- package/dist/testYourself/admin/index.mjs +0 -1002
- package/dist/testYourself/admin/index.mjs.map +0 -1
- package/dist/testYourself/index.d.mts +0 -53
- package/dist/testYourself/index.d.ts +0 -53
- package/dist/testYourself/index.js +0 -2551
- package/dist/testYourself/index.js.map +0 -1
- package/dist/testYourself/index.mjs +0 -2531
- package/dist/testYourself/index.mjs.map +0 -1
- package/dist/testYourself/server/index.d.mts +0 -1029
- package/dist/testYourself/server/index.d.ts +0 -1029
- package/dist/testYourself/server/index.js +0 -825
- package/dist/testYourself/server/index.js.map +0 -1
- package/dist/testYourself/server/index.mjs +0 -816
- package/dist/testYourself/server/index.mjs.map +0 -1
- package/dist/types-3ujSNAXb.d.mts +0 -286
- package/dist/types-3ujSNAXb.d.ts +0 -286
- package/dist/types-B6B210gX.d.mts +0 -270
- package/dist/types-B6B210gX.d.ts +0 -270
- package/dist/types-Bdnte5EN.d.mts +0 -292
- package/dist/types-C_W_CoUD.d.ts +0 -99
- package/dist/types-Cs0CLvrH.d.mts +0 -70
- package/dist/types-Cs0CLvrH.d.ts +0 -70
- package/dist/types-DCRvasyH.d.mts +0 -99
- package/dist/types-HorDyIRv.d.mts +0 -303
- package/dist/types-HorDyIRv.d.ts +0 -303
- package/dist/types-_rFX1atk.d.ts +0 -292
- package/dist/types.legacy-J-j-_ig_.d.mts +0 -25
- package/dist/types.legacy-J-j-_ig_.d.ts +0 -25
- package/dist/universalExport/index.d.mts +0 -312
- package/dist/universalExport/index.d.ts +0 -312
- package/dist/universalExport/index.js +0 -178
- package/dist/universalExport/index.js.map +0 -1
- package/dist/universalExport/index.mjs +0 -5
- package/dist/universalExport/index.mjs.map +0 -1
- package/dist/universalExport/server/index.d.mts +0 -1270
- package/dist/universalExport/server/index.d.ts +0 -1270
- package/dist/universalExport/server/index.js +0 -123
- package/dist/universalExport/server/index.js.map +0 -1
- package/dist/universalExport/server/index.mjs +0 -6
- package/dist/universalExport/server/index.mjs.map +0 -1
- package/dist/universalFile/index.d.mts +0 -409
- package/dist/universalFile/index.d.ts +0 -409
- package/dist/universalFile/index.js +0 -1742
- package/dist/universalFile/index.js.map +0 -1
- package/dist/universalFile/index.mjs +0 -1497
- package/dist/universalFile/index.mjs.map +0 -1
- package/dist/universalFile/server/index.d.mts +0 -1064
- package/dist/universalFile/server/index.d.ts +0 -1064
- package/dist/universalFile/server/index.js +0 -311
- package/dist/universalFile/server/index.js.map +0 -1
- package/dist/universalFile/server/index.mjs +0 -10
- package/dist/universalFile/server/index.mjs.map +0 -1
- package/dist/utils/index.d.mts +0 -192
- package/dist/utils/index.d.ts +0 -192
- package/dist/utils/index.js +0 -46
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/index.mjs +0 -5
- package/dist/utils/index.mjs.map +0 -1
- package/dist/vocaloidBooth/index.d.mts +0 -64
- package/dist/vocaloidBooth/index.d.ts +0 -64
- package/dist/vocaloidBooth/index.js +0 -376
- package/dist/vocaloidBooth/index.js.map +0 -1
- package/dist/vocaloidBooth/index.mjs +0 -362
- package/dist/vocaloidBooth/index.mjs.map +0 -1
- package/dist/vocaloidBooth/server/index.d.mts +0 -111
- package/dist/vocaloidBooth/server/index.d.ts +0 -111
- package/dist/vocaloidBooth/server/index.js +0 -247
- package/dist/vocaloidBooth/server/index.js.map +0 -1
- package/dist/vocaloidBooth/server/index.mjs +0 -237
- package/dist/vocaloidBooth/server/index.mjs.map +0 -1
- package/dist/vocaloidBooth/web/index.d.mts +0 -3
- package/dist/vocaloidBooth/web/index.d.ts +0 -3
- package/dist/vocaloidBooth/web/index.js +0 -376
- package/dist/vocaloidBooth/web/index.js.map +0 -1
- package/dist/vocaloidBooth/web/index.mjs +0 -362
- package/dist/vocaloidBooth/web/index.mjs.map +0 -1
- /package/dist/{ai → common/ai}/llm/core/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/core/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/electron/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/electron/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/miniapp/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/miniapp/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/rn/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/rn/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/electron/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/electron/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/miniapp/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/miniapp/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/rn/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/rn/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/web/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/web/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/web/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/web/index.mjs.map +0 -0
- /package/dist/{analytics → common/analytics}/index.js.map +0 -0
- /package/dist/{analytics → common/analytics}/index.mjs.map +0 -0
- /package/dist/{analytics → common/analytics}/server/index.d.mts +0 -0
- /package/dist/{analytics → common/analytics}/server/index.d.ts +0 -0
- /package/dist/{api → common/api}/index.js.map +0 -0
- /package/dist/{api → common/api}/index.mjs.map +0 -0
- /package/dist/{auth/client → common/components}/index.js.map +0 -0
- /package/dist/{auth/client → common/components}/index.mjs.map +0 -0
- /package/dist/{auth/components → common/config}/index.js.map +0 -0
- /package/dist/{auth/components → common/config}/index.mjs.map +0 -0
- /package/dist/{config → common/config}/server/index.d.mts +0 -0
- /package/dist/{config → common/config}/server/index.d.ts +0 -0
- /package/dist/{auth/hooks → common/i18n}/index.js.map +0 -0
- /package/dist/{auth/hooks → common/i18n}/index.mjs.map +0 -0
- /package/dist/{auth → common/imageCrop}/index.js.map +0 -0
- /package/dist/{auth → common/imageCrop}/index.mjs.map +0 -0
- /package/dist/{auth/schema → common/ossFile}/index.js.map +0 -0
- /package/dist/{auth/schema → common/ossFile}/index.mjs.map +0 -0
- /package/dist/{auth/services → common/ossFile/server}/index.js.map +0 -0
- /package/dist/{auth/services → common/ossFile/server}/index.mjs.map +0 -0
- /package/dist/{config → common/universalExport}/index.js.map +0 -0
- /package/dist/{config → common/universalExport}/index.mjs.map +0 -0
- /package/dist/{i18n → common/universalExport/server}/index.js.map +0 -0
- /package/dist/{i18n → common/universalExport/server}/index.mjs.map +0 -0
- /package/dist/{logger → common/universalFile/server}/index.js.map +0 -0
- /package/dist/{logger → common/universalFile/server}/index.mjs.map +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/universalExport/client.ts","../src/common/universalExport/components/ExportConfigEditor.tsx","../src/common/universalExport/components/UniversalExportButton.tsx"],"names":["config","useState","useCallback","React","FileText","Settings","clsx"],"mappings":"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","file":"chunk-WM3AEJ2E.mjs","sourcesContent":["/**\n * 通用导出服务客户端SDK\n *\n * 提供与后端API交互的客户端接口\n */\n\nimport type { ExportConfig, ExportProgress, ExportResult, ExportRequest } from './types';\nimport { API_ENDPOINTS, ERROR_CODES } from './constants';\nimport { createExportError, formatErrorMessage } from './utils';\n\n// ============= 配置类型 =============\n\nexport interface UniversalExportClientConfig {\n /** API基础URL */\n baseUrl?: string;\n /** 请求超时时间(毫秒) */\n timeout?: number;\n /** 自定义请求头 */\n headers?: Record<string, string>;\n}\n\n// ============= 客户端类 =============\n\n/**\n * 通用导出服务客户端\n */\nexport class UniversalExportClient {\n private config: UniversalExportClientConfig;\n\n constructor(config: UniversalExportClientConfig = {}) {\n this.config = {\n baseUrl: config.baseUrl || '',\n timeout: config.timeout || 30000,\n headers: config.headers || {},\n };\n }\n\n // ============= 配置管理API =============\n\n /**\n * 获取模块的导出配置列表\n */\n async getConfigsByModule(moduleId: string, businessId?: string): Promise<ExportConfig[]> {\n const params = new URLSearchParams({ moduleId });\n if (businessId) {\n params.append('businessId', businessId);\n }\n\n const url = (this.config.baseUrl) + (API_ENDPOINTS.GET_CONFIGS) + '?' + (params);\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'GET',\n headers: this.getHeaders(),\n });\n\n if (!response.ok) {\n throw new Error('获取配置失败: ' + (response.statusText));\n }\n\n const data = await response.json();\n return this.transformConfigsFromAPI(data.configs || []);\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '获取导出配置失败: ' + (formatErrorMessage(error)),\n { moduleId, businessId, originalError: error }\n );\n }\n }\n\n /**\n * 创建导出配置\n */\n async createConfig(\n config: Omit<ExportConfig, 'id' | 'createdAt' | 'updatedAt'>\n ): Promise<ExportConfig> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.CREATE_CONFIG);\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'POST',\n headers: {\n ...this.getHeaders(),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(config),\n });\n\n if (!response.ok) {\n throw new Error('创建配置失败: ' + (response.statusText));\n }\n\n const data = await response.json();\n return this.transformConfigFromAPI(data.config);\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '创建导出配置失败: ' + (formatErrorMessage(error)),\n { config, originalError: error }\n );\n }\n }\n\n /**\n * 更新导出配置\n */\n async updateConfig(configId: string, updates: Partial<ExportConfig>): Promise<ExportConfig> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.UPDATE_CONFIG(configId));\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'PUT',\n headers: {\n ...this.getHeaders(),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(updates),\n });\n\n if (!response.ok) {\n throw new Error('更新配置失败: ' + (response.statusText));\n }\n\n const data = await response.json();\n return this.transformConfigFromAPI(data.config);\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '更新导出配置失败: ' + (formatErrorMessage(error)),\n { configId, updates, originalError: error }\n );\n }\n }\n\n /**\n * 删除导出配置\n */\n async deleteConfig(configId: string): Promise<void> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.DELETE_CONFIG(configId));\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'DELETE',\n headers: this.getHeaders(),\n });\n\n if (!response.ok) {\n throw new Error('删除配置失败: ' + (response.statusText));\n }\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '删除导出配置失败: ' + (formatErrorMessage(error)),\n { configId, originalError: error }\n );\n }\n }\n\n // ============= 导出执行API =============\n\n /**\n * 触发数据导出\n */\n async exportData(request: Omit<ExportRequest, 'callbacks' | 'dataSource'> & {\n dataSource: any[] | string;\n }): Promise<ExportResult> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.EXPORT_DATA);\n\n try {\n // 如果 dataSource 是数组,我们需要将其作为请求体的一部分\n const isDataArray = Array.isArray(request.dataSource);\n\n const requestBody: any = {\n queryParams: request.queryParams,\n fieldMapping: request.fieldMapping,\n filters: request.filters,\n sortBy: request.sortBy,\n pagination: request.pagination,\n customFileName: request.customFileName,\n };\n\n // 支持两种方式:传字符串 ID(服务端从缓存/数据库查找)或传完整配置对象(服务端直接使用)\n if (typeof request.configId === 'string') {\n requestBody.configId = request.configId;\n } else if (request.configId && typeof request.configId === 'object') {\n // 传入完整配置对象时,只设置 config 字段,避免与字符串 configId 产生歧义\n requestBody.config = request.configId;\n }\n\n // 如果是数组数据,直接包含在请求体中\n if (isDataArray) {\n requestBody.data = request.dataSource;\n } else {\n requestBody.dataSource = request.dataSource;\n }\n\n const response = await this.fetchWithTimeout(url, {\n method: 'POST',\n headers: {\n ...this.getHeaders(),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch {\n errorData = { message: errorText };\n }\n throw new Error(errorData.message || '导出失败: ' + (response.statusText));\n }\n\n const data = await response.json();\n return this.transformExportResultFromAPI(data.result);\n } catch (error) {\n throw createExportError(\n ERROR_CODES.EXPORT_DATA_ERROR,\n '数据导出失败: ' + (formatErrorMessage(error)),\n { request, originalError: error }\n );\n }\n }\n\n /**\n * 查询导出进度\n */\n async getExportProgress(exportId: string): Promise<ExportProgress> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.GET_PROGRESS(exportId));\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'GET',\n headers: this.getHeaders(),\n });\n\n if (!response.ok) {\n throw new Error('获取导出进度失败: ' + (response.statusText));\n }\n\n const data = await response.json();\n return this.transformProgressFromAPI(data.progress);\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '获取导出进度失败: ' + (formatErrorMessage(error)),\n { exportId, originalError: error }\n );\n }\n }\n\n /**\n * 下载导出文件\n */\n async downloadExportFile(exportId: string): Promise<Blob> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.DOWNLOAD_FILE(exportId));\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'GET',\n headers: this.getHeaders(),\n });\n\n if (!response.ok) {\n throw new Error('下载文件失败: ' + (response.statusText));\n }\n\n return await response.blob();\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '下载导出文件失败: ' + (formatErrorMessage(error)),\n { exportId, originalError: error }\n );\n }\n }\n\n // ============= 私有辅助方法 =============\n\n /**\n * 获取请求头\n */\n private getHeaders(): Record<string, string> {\n return {\n ...this.config.headers,\n };\n }\n\n /**\n * 带超时的fetch请求\n */\n private async fetchWithTimeout(url: string, options: RequestInit): Promise<Response> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n const response = await fetch(url, {\n ...options,\n signal: controller.signal,\n });\n return response;\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n throw createExportError(ERROR_CODES.TIMEOUT_ERROR, '请求超时', {\n url,\n timeout: this.config.timeout,\n });\n }\n throw error;\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n /**\n * 转换API返回的配置数据\n */\n private transformConfigFromAPI(apiConfig: any): ExportConfig {\n return {\n id: apiConfig.id,\n name: apiConfig.name,\n description: apiConfig.description || undefined,\n format: apiConfig.format,\n fields: apiConfig.fields,\n grouping: apiConfig.grouping,\n fileNameTemplate: apiConfig.fileNameTemplate,\n includeHeader: apiConfig.includeHeader,\n delimiter: apiConfig.delimiter,\n encoding: apiConfig.encoding,\n addBOM: apiConfig.addBOM,\n maxRows: apiConfig.maxRows || undefined,\n createdAt: new Date(apiConfig.createdAt),\n updatedAt: new Date(apiConfig.updatedAt),\n moduleId: apiConfig.moduleId,\n businessId: apiConfig.businessId || undefined,\n createdBy: apiConfig.createdBy || undefined,\n };\n }\n\n /**\n * 转换API返回的配置列表\n */\n private transformConfigsFromAPI(apiConfigs: any[]): ExportConfig[] {\n return apiConfigs.map((config) => this.transformConfigFromAPI(config));\n }\n\n /**\n * 转换API返回的导出结果\n */\n private transformExportResultFromAPI(apiResult: any): ExportResult {\n const fileBlob = this.createFileBlobFromBase64(\n apiResult.fileData ?? apiResult.fileBlob,\n apiResult.fileName\n );\n\n return {\n exportId: apiResult.exportId,\n fileName: apiResult.fileName,\n fileSize: apiResult.fileSize,\n fileUrl: apiResult.fileUrl,\n fileBlob,\n exportedRows: apiResult.exportedRows,\n startTime: new Date(apiResult.startTime),\n endTime: new Date(apiResult.endTime),\n duration: apiResult.duration,\n statistics: apiResult.statistics,\n };\n }\n\n /**\n * 将后端返回的base64文件数据转换为Blob\n */\n private createFileBlobFromBase64(fileData?: string, fileName?: string): Blob | undefined {\n if (!fileData || typeof fileData !== 'string') {\n return undefined;\n }\n\n try {\n if (typeof atob === 'function') {\n const binaryString = atob(fileData);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n const arrayBuffer = bytes.buffer.slice(\n bytes.byteOffset,\n bytes.byteOffset + bytes.byteLength\n );\n return new Blob([arrayBuffer], { type: this.getMimeTypeByFileName(fileName) });\n } else if (typeof Buffer !== 'undefined') {\n const bufferBytes = Buffer.from(fileData, 'base64');\n const bytes = Uint8Array.from(bufferBytes);\n const arrayBuffer = bytes.buffer.slice(\n bytes.byteOffset,\n bytes.byteOffset + bytes.byteLength\n );\n return new Blob([arrayBuffer], { type: this.getMimeTypeByFileName(fileName) });\n } else {\n return undefined;\n }\n } catch {\n return undefined;\n }\n }\n\n /**\n * 根据文件名推断MIME类型\n */\n private getMimeTypeByFileName(fileName?: string): string {\n const extension = fileName?.split('.').pop()?.toLowerCase();\n\n switch (extension) {\n case 'csv':\n return 'text/csv; charset=utf-8';\n case 'xlsx':\n case 'xls':\n return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n case 'json':\n return 'application/json; charset=utf-8';\n default:\n return 'application/octet-stream';\n }\n }\n\n /**\n * 转换API返回的进度数据\n */\n private transformProgressFromAPI(apiProgress: any): ExportProgress {\n return {\n exportId: apiProgress.exportId,\n status: apiProgress.status,\n progress: apiProgress.progress,\n processedRows: apiProgress.processedRows,\n totalRows: apiProgress.totalRows,\n startTime: new Date(apiProgress.startTime),\n estimatedEndTime: apiProgress.estimatedEndTime\n ? new Date(apiProgress.estimatedEndTime)\n : undefined,\n currentData: apiProgress.currentData,\n error: apiProgress.error,\n };\n }\n}\n\n// ============= 单例导出 =============\n\n/**\n * 默认客户端实例\n */\nexport const universalExportClient = new UniversalExportClient();\n\n/**\n * 创建自定义客户端实例\n */\nexport function createExportClient(config?: UniversalExportClientConfig): UniversalExportClient {\n return new UniversalExportClient(config);\n}\n","/**\n * 导出配置编辑器组件\n * \n * 提供可视化的导出字段配置编辑功能\n */\n\n'use client';\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { clsx } from 'clsx';\nimport { \n Settings, \n Trash2, \n Eye, \n EyeOff, \n MoveUp, \n MoveDown, \n Save, \n X,\n FileText,\n Calendar,\n Hash,\n CheckSquare,\n Type,\n AlignLeft,\n AlignCenter,\n AlignRight,\n Group,\n GitMerge,\n Layers,\n ArrowUpDown,\n FileSpreadsheet,\n Database\n} from 'lucide-react';\n\nimport type { \n ExportConfig, \n ExportField, \n FieldType, \n FieldAlignment,\n ExportFormat,\n GroupingConfig,\n GroupingField,\n GroupingMode,\n GroupValueProcessing\n} from '../types';\n\n// ============= 类型定义 =============\n\nexport interface ExportConfigEditorProps {\n /** 初始配置 */\n initialConfig?: ExportConfig;\n /** 模块标识 */\n moduleId: string;\n /** 业务标识 */\n businessId?: string;\n /** 可用的字段定义 */\n availableFields: ExportField[];\n /** 保存配置回调 */\n onSave?: (config: ExportConfig) => void;\n /** 取消回调 */\n onCancel?: () => void;\n /** 是否显示 */\n visible?: boolean;\n /** 自定义样式类名 */\n className?: string;\n /** 配置变化回调(新增/删除/更新) */\n onConfigChange?: () => void;\n}\n\n// ============= 字段类型图标映射 =============\n\nconst FIELD_TYPE_ICONS: Record<FieldType, React.ReactNode> = {\n string: <Type className=\"w-4 h-4\" />,\n number: <Hash className=\"w-4 h-4\" />,\n date: <Calendar className=\"w-4 h-4\" />,\n boolean: <CheckSquare className=\"w-4 h-4\" />,\n array: <FileText className=\"w-4 h-4\" />,\n object: <FileText className=\"w-4 h-4\" />,\n};\n\nconst FIELD_TYPE_LABELS: Record<FieldType, string> = {\n string: '文本',\n number: '数字',\n date: '日期',\n boolean: '布尔',\n array: '数组',\n object: '对象',\n};\n\nconst ALIGNMENT_ICONS: Record<FieldAlignment, React.ReactNode> = {\n left: <AlignLeft className=\"w-4 h-4\" />,\n center: <AlignCenter className=\"w-4 h-4\" />,\n right: <AlignRight className=\"w-4 h-4\" />,\n};\n\nconst ALIGNMENT_LABELS: Record<FieldAlignment, string> = {\n left: '左对齐',\n center: '居中对齐',\n right: '右对齐',\n};\n\n// ============= 分组相关标签 =============\n\nconst GROUPING_MODE_LABELS: Record<GroupingMode, string> = {\n merge: '合并模式',\n separate: '分离模式',\n nested: '嵌套模式',\n};\n\nconst GROUPING_MODE_DESCRIPTIONS: Record<GroupingMode, string> = {\n merge: '同组数据合并显示,Excel支持单元格合并',\n separate: '每个分组独立显示,可添加分组头',\n nested: '支持多级嵌套分组',\n};\n\nconst VALUE_PROCESSING_LABELS: Record<GroupValueProcessing, string> = {\n first: '取第一个值',\n last: '取最后一个值',\n concat: '连接所有值',\n sum: '求和',\n count: '计数',\n custom: '自定义处理',\n};\n\nconst FORMAT_ICONS: Record<ExportFormat, React.ReactNode> = {\n csv: <FileText className=\"w-4 h-4\" />,\n excel: <FileSpreadsheet className=\"w-4 h-4\" />,\n json: <Database className=\"w-4 h-4\" />,\n};\n\nconst FORMAT_DESCRIPTIONS: Record<ExportFormat, string> = {\n csv: '逗号分隔值文件,兼容性最好',\n excel: 'Excel表格文件,支持格式化和单元格合并',\n json: 'JSON数据文件,适合开发者使用',\n};\n\n// ============= 主组件 =============\n\nexport const ExportConfigEditor: React.FC<ExportConfigEditorProps> = ({\n initialConfig,\n moduleId,\n businessId,\n availableFields,\n onSave,\n onCancel,\n visible = false,\n className = '',\n onConfigChange,\n}) => {\n // ============= 状态管理 =============\n \n const [config, setConfig] = useState<ExportConfig>(() => {\n if (initialConfig) {\n return { ...initialConfig };\n }\n \n // 创建默认配置\n return {\n id: '',\n name: '新建导出配置',\n description: '',\n format: 'csv',\n fields: availableFields.map((field, index) => ({\n ...field,\n enabled: true,\n sortOrder: index,\n })),\n grouping: {\n enabled: false,\n fields: [],\n preserveOrder: true,\n nullValueHandling: 'separate',\n nullGroupName: '未分组'\n },\n fileNameTemplate: '导出数据_{date}',\n includeHeader: true,\n delimiter: ',',\n encoding: 'utf-8',\n addBOM: true,\n maxRows: undefined,\n createdAt: new Date(),\n updatedAt: new Date(),\n moduleId,\n businessId,\n };\n });\n\n const [activeTab, setActiveTab] = useState<'basic' | 'fields' | 'grouping' | 'manage'>('basic');\n \n // 配置管理相关状态\n const [savedConfigs, setSavedConfigs] = useState<ExportConfig[]>([]);\n const [loadingConfigs, setLoadingConfigs] = useState(false);\n const [deletingConfigId, setDeletingConfigId] = useState<string | null>(null);\n\n // 加载已保存的配置\n const loadSavedConfigs = useCallback(async () => {\n if (!visible || activeTab !== 'manage') return;\n \n setLoadingConfigs(true);\n try {\n const params = new URLSearchParams({ moduleId });\n if (businessId) {\n params.set('businessId', businessId);\n }\n \n const response = await fetch('/api/universal-export/configs?' + (params.toString()));\n if (response.ok) {\n const data = await response.json();\n setSavedConfigs(data.configs || []);\n }\n } catch (error) {\n console.error('加载配置异常:', error);\n } finally {\n setLoadingConfigs(false);\n }\n }, [visible, activeTab, moduleId, businessId]);\n\n // 删除配置\n const deleteConfig = useCallback(async (configId: string) => {\n setDeletingConfigId(configId);\n try {\n const response = await fetch('/api/universal-export/configs/' + (configId), {\n method: 'DELETE'\n });\n if (response.ok) {\n setSavedConfigs(prev => prev.filter(cfg => cfg.id !== configId));\n onConfigChange?.();\n }\n } catch (error) {\n console.error('删除配置失败:', error);\n } finally {\n setDeletingConfigId(null);\n }\n }, [onConfigChange]);\n\n // 加载配置到编辑器\n const loadConfigToEditor = useCallback((config: ExportConfig) => {\n setConfig(config);\n setActiveTab('basic');\n }, []);\n\n // 当切换到管理tab时加载配置\n useEffect(() => {\n if (activeTab === 'manage') {\n loadSavedConfigs();\n }\n }, [activeTab, loadSavedConfigs]);\n\n // 阻止背景滚动\n useEffect(() => {\n if (!visible) return;\n \n const scrollY = window.scrollY;\n document.body.style.position = 'fixed';\n document.body.style.top = '-' + (scrollY) + 'px';\n document.body.style.left = '0';\n document.body.style.right = '0';\n document.body.style.overflow = 'hidden';\n \n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onCancel?.();\n }\n };\n \n document.addEventListener('keydown', handleKeyDown);\n \n return () => {\n document.body.style.position = '';\n document.body.style.top = '';\n document.body.style.left = '';\n document.body.style.right = '';\n document.body.style.overflow = '';\n window.scrollTo(0, scrollY);\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [visible, onCancel]);\n\n // ============= 字段管理 =============\n\n const toggleFieldEnabled = useCallback((fieldKey: string) => {\n setConfig(prev => ({\n ...prev,\n fields: prev.fields.map(field =>\n field.key === fieldKey\n ? { ...field, enabled: !field.enabled }\n : field\n ),\n }));\n }, []);\n\n const updateField = useCallback((fieldKey: string, updates: Partial<ExportField>) => {\n setConfig(prev => ({\n ...prev,\n fields: prev.fields.map(field =>\n field.key === fieldKey\n ? { ...field, ...updates }\n : field\n ),\n }));\n }, []);\n\n const moveField = useCallback((fieldKey: string, direction: 'up' | 'down') => {\n setConfig(prev => {\n const fields = [...prev.fields];\n const index = fields.findIndex(f => f.key === fieldKey);\n \n if (direction === 'up' && index > 0) {\n const temp = fields[index - 1]!;\n fields[index - 1] = fields[index]!;\n fields[index] = temp;\n } else if (direction === 'down' && index < fields.length - 1) {\n const temp = fields[index + 1]!;\n fields[index + 1] = fields[index]!;\n fields[index] = temp;\n }\n \n return {\n ...prev,\n fields: fields.map((field, idx) => ({ ...field, sortOrder: idx })),\n };\n });\n }, []);\n\n const removeField = useCallback((fieldKey: string) => {\n setConfig(prev => ({\n ...prev,\n fields: prev.fields.filter(f => f.key !== fieldKey),\n }));\n }, []);\n\n // ============= 分组配置管理 =============\n\n const toggleGrouping = useCallback((enabled: boolean) => {\n setConfig(prev => ({\n ...prev,\n grouping: {\n ...prev.grouping!,\n enabled,\n },\n }));\n }, []);\n\n const addGroupingField = useCallback((fieldKey: string) => {\n const field = config.fields.find(f => f.key === fieldKey);\n if (!field) return;\n\n const groupField: GroupingField = {\n key: field.key,\n label: field.label,\n mode: 'merge',\n valueProcessing: 'first',\n showGroupHeader: false,\n mergeCells: true,\n };\n\n setConfig(prev => ({\n ...prev,\n grouping: {\n ...prev.grouping!,\n fields: [...prev.grouping!.fields, groupField],\n },\n }));\n }, [config.fields]);\n\n const removeGroupingField = useCallback((fieldKey: string) => {\n setConfig(prev => ({\n ...prev,\n grouping: {\n ...prev.grouping!,\n fields: prev.grouping!.fields.filter(f => f.key !== fieldKey),\n },\n }));\n }, []);\n\n const updateGroupingField = useCallback((fieldKey: string, updates: Partial<GroupingField>) => {\n setConfig(prev => ({\n ...prev,\n grouping: {\n ...prev.grouping!,\n fields: prev.grouping!.fields.map(field =>\n field.key === fieldKey\n ? { ...field, ...updates }\n : field\n ),\n },\n }));\n }, []);\n\n const moveGroupingField = useCallback((fieldKey: string, direction: 'up' | 'down') => {\n setConfig(prev => {\n const fields = [...prev.grouping!.fields];\n const index = fields.findIndex(f => f.key === fieldKey);\n \n if (direction === 'up' && index > 0) {\n const temp = fields[index - 1]!;\n fields[index - 1] = fields[index]!;\n fields[index] = temp;\n } else if (direction === 'down' && index < fields.length - 1) {\n const temp = fields[index + 1]!;\n fields[index + 1] = fields[index]!;\n fields[index] = temp;\n }\n \n return {\n ...prev,\n grouping: {\n ...prev.grouping!,\n fields,\n },\n };\n });\n }, []);\n\n const updateGroupingConfig = useCallback((updates: Partial<GroupingConfig>) => {\n setConfig(prev => ({\n ...prev,\n grouping: {\n ...prev.grouping!,\n ...updates,\n },\n }));\n }, []);\n\n // ============= 保存配置 =============\n\n const handleSave = useCallback(() => {\n if (!config.name.trim()) {\n alert('请输入配置名称');\n return;\n }\n\n const enabledFields = config.fields.filter(f => f.enabled);\n if (enabledFields.length === 0) {\n alert('至少需要启用一个字段');\n return;\n }\n\n const updatedConfig: ExportConfig = {\n ...config,\n updatedAt: new Date(),\n };\n\n onSave?.(updatedConfig);\n onConfigChange?.();\n }, [config, onSave, onConfigChange]);\n\n // ============= 渲染组件 =============\n\n if (!visible) {\n return null;\n }\n\n const tabs = [\n { id: 'basic' as const, label: '基本配置', icon: <Settings className=\"w-4 h-4\" />, description: '配置名称、格式和基本选项' },\n { id: 'fields' as const, label: '字段设置', icon: <Type className=\"w-4 h-4\" />, description: '选择和配置导出字段' },\n { id: 'grouping' as const, label: '分组设置', icon: <Group className=\"w-4 h-4\" />, description: '配置数据分组和合并选项' },\n { id: 'manage' as const, label: '配置管理', icon: <Database className=\"w-4 h-4\" />, description: '管理已保存的导出配置' },\n ];\n\n return (\n <div \n className={clsx('fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-[50] p-4', className)}\n onClick={onCancel}\n >\n <div \n className=\"bg-white rounded-lg shadow-xl w-full max-w-5xl max-h-[90vh] flex flex-col\"\n onClick={(e) => e.stopPropagation()}\n >\n {/* 头部 */}\n <div className=\"flex items-center justify-between p-4 border-b flex-shrink-0\">\n <div className=\"flex items-center gap-3\">\n <Settings className=\"w-6 h-6 text-blue-600\" />\n <div>\n <h2 className=\"text-xl font-semibold text-gray-900\">导出配置编辑器</h2>\n <p className=\"text-sm text-gray-600\">配置导出字段和格式选项</p>\n </div>\n </div>\n <button onClick={onCancel} className=\"p-2 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-lg\">\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n {/* Tab导航 */}\n <div className=\"border-b bg-gray-50 flex-shrink-0\">\n <nav className=\"flex space-x-1 p-2\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveTab(tab.id)}\n className={clsx('flex items-center gap-2 px-4 py-3 text-sm font-medium rounded-lg transition-colors', activeTab === tab.id ? 'bg-white text-blue-600 shadow-sm border border-gray-200' : 'text-gray-600 hover:text-gray-900')}\n >\n {tab.icon}\n <span>{tab.label}</span>\n </button>\n ))}\n </nav>\n </div>\n\n {/* Tab内容 */}\n <div className=\"flex-1 overflow-hidden flex flex-col\">\n <div className=\"bg-blue-50 border-b border-blue-100 p-4 flex-shrink-0\">\n <div className=\"flex items-center gap-2 text-blue-800 text-sm font-medium\">\n {tabs.find(t => t.id === activeTab)?.icon}\n {tabs.find(t => t.id === activeTab)?.description}\n </div>\n </div>\n\n <div className=\"flex-1 overflow-y-auto p-4 sm:p-6\">\n {activeTab === 'basic' && (\n <div className=\"max-w-2xl mx-auto space-y-6\">\n <div className=\"space-y-4\">\n <label className=\"block text-sm font-medium text-gray-700\">配置名称 *</label>\n <input\n type=\"text\"\n value={config.name}\n onChange={(e) => setConfig(prev => ({ ...prev, name: e.target.value }))}\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg\"\n />\n <label className=\"block text-sm font-medium text-gray-700\">描述</label>\n <textarea\n value={config.description}\n onChange={(e) => setConfig(prev => ({ ...prev, description: e.target.value }))}\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg\"\n rows={3}\n />\n <label className=\"block text-sm font-medium text-gray-700\">导出格式</label>\n <div className=\"space-y-3\">\n {(['csv', 'excel', 'json'] as ExportFormat[]).map((format) => (\n <label key={format} className=\"flex items-start gap-3 p-3 border rounded-lg cursor-pointer hover:border-blue-300\">\n <input\n type=\"radio\"\n checked={config.format === format}\n onChange={() => setConfig(prev => ({ ...prev, format }))}\n className=\"mt-1\"\n />\n <div>\n <div className=\"flex items-center gap-2 font-medium\">\n {FORMAT_ICONS[format]} {format.toUpperCase()}\n </div>\n <p className=\"text-sm text-gray-600\">{FORMAT_DESCRIPTIONS[format]}</p>\n </div>\n </label>\n ))}\n </div>\n </div>\n </div>\n )}\n\n {activeTab === 'fields' && (\n <div className=\"space-y-4\">\n {config.fields.map((field, index) => (\n <div key={field.key} className=\"flex items-center gap-3 p-3 border rounded-lg bg-white\">\n <button onClick={() => toggleFieldEnabled(field.key)} className={field.enabled ? 'text-blue-600' : 'text-gray-400'}>\n {field.enabled ? <Eye className=\"w-4 h-4\" /> : <EyeOff className=\"w-4 h-4\" />}\n </button>\n <div className=\"flex-1\">\n <div className=\"font-medium\">{field.label}</div>\n <div className=\"text-xs text-gray-500\">{field.key}</div>\n </div>\n <div className=\"flex gap-1\">\n <button onClick={() => moveField(field.key, 'up')} disabled={index === 0} className=\"disabled:opacity-30\"><MoveUp className=\"w-4 h-4\" /></button>\n <button onClick={() => moveField(field.key, 'down')} disabled={index === config.fields.length - 1} className=\"disabled:opacity-30\"><MoveDown className=\"w-4 h-4\" /></button>\n <button onClick={() => removeField(field.key)} className=\"text-red-600\"><Trash2 className=\"w-4 h-4\" /></button>\n </div>\n </div>\n ))}\n </div>\n )}\n\n {activeTab === 'grouping' && (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-lg font-medium flex items-center gap-2\"><Group className=\"w-5 h-5 text-blue-600\" /> 分组配置</h3>\n <label className=\"flex items-center gap-2\">\n <input type=\"checkbox\" checked={config.grouping?.enabled} onChange={(e) => toggleGrouping(e.target.checked)} />\n 启用分组\n </label>\n </div>\n {config.grouping?.enabled && (\n <div className=\"space-y-4\">\n {config.grouping.fields.map((gf, index) => (\n <div key={gf.key} className=\"p-4 border rounded-lg bg-blue-50 border-blue-200\">\n <div className=\"flex justify-between items-center mb-4\">\n <span className=\"font-medium text-blue-900\">{gf.label}</span>\n <button onClick={() => removeGroupingField(gf.key)} className=\"text-red-600\"><Trash2 className=\"w-4 h-4\" /></button>\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <select value={gf.mode} onChange={(e) => updateGroupingField(gf.key, { mode: e.target.value as GroupingMode })} className=\"border rounded p-2\">\n <option value=\"merge\">合并模式</option>\n <option value=\"separate\">分离模式</option>\n <option value=\"nested\">嵌套模式</option>\n </select>\n <select value={gf.valueProcessing} onChange={(e) => updateGroupingField(gf.key, { valueProcessing: e.target.value as GroupValueProcessing })} className=\"border rounded p-2\">\n <option value=\"first\">首值</option>\n <option value=\"sum\">求和</option>\n <option value=\"count\">计数</option>\n </select>\n </div>\n </div>\n ))}\n <select onChange={(e) => e.target.value && addGroupingField(e.target.value)} className=\"w-full border rounded p-2\">\n <option value=\"\">添加分组字段...</option>\n {config.fields.filter(f => f.enabled && !config.grouping?.fields.some(gf => gf.key === f.key)).map(f => (\n <option key={f.key} value={f.key}>{f.label}</option>\n ))}\n </select>\n </div>\n )}\n </div>\n )}\n\n {activeTab === 'manage' && (\n <div className=\"space-y-4\">\n {loadingConfigs ? <div className=\"text-center py-10\">加载中...</div> : savedConfigs.map(sc => (\n <div key={sc.id} className=\"flex justify-between items-center p-4 border rounded-lg\">\n <div>\n <div className=\"font-medium\">{sc.name}</div>\n <div className=\"text-sm text-gray-500\">{sc.format}</div>\n </div>\n <div className=\"flex gap-2\">\n <button onClick={() => loadConfigToEditor(sc)} className=\"text-blue-600 px-3 py-1 border rounded\">编辑</button>\n <button onClick={() => deleteConfig(sc.id)} className=\"text-red-600 px-3 py-1 border rounded\">删除</button>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {/* 底部 */}\n <div className=\"flex justify-end gap-3 p-4 border-t bg-gray-50\">\n <button onClick={onCancel} className=\"px-4 py-2 border rounded\">取消</button>\n {activeTab !== 'manage' && (\n <button onClick={handleSave} className=\"px-4 py-2 bg-blue-600 text-white rounded flex items-center gap-2\">\n <Save className=\"w-4 h-4\" /> 保存配置\n </button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\n","/**\n * 通用导出按钮组件\n * \n * 提供统一的导出功能入口,支持配置化导出\n */\n\n'use client';\n\nimport React, { useState, useCallback } from 'react';\nimport { clsx } from 'clsx';\nimport { \n Download, \n Settings, \n FileText, \n Loader2,\n ChevronDown\n} from 'lucide-react';\n\nimport type { \n ExportConfig, \n ExportField, \n ExportRequest,\n ExportResult,\n ExportProgress \n} from '../types';\n\nimport { ExportConfigEditor } from './ExportConfigEditor';\n\n// ============= 类型定义 =============\n\nexport interface UniversalExportButtonProps {\n /** 导出服务实例 */\n exportService: any; // UniversalExportClient\n /** 模块标识 */\n moduleId: string;\n /** 业务标识 */\n businessId?: string;\n /** 可用的字段定义 */\n availableFields: ExportField[];\n /** 数据源函数 */\n dataSource: () => Promise<any[]>;\n /** 默认配置 */\n defaultConfig?: ExportConfig;\n /** 按钮文本 */\n buttonText?: string;\n /** 按钮样式 */\n variant?: 'primary' | 'secondary' | 'outline';\n /** 按钮大小 */\n size?: 'sm' | 'md' | 'lg';\n /** 是否禁用 */\n disabled?: boolean;\n /** 自定义样式类名 */\n className?: string;\n /** 导出成功回调 */\n onExportSuccess?: (result: ExportResult) => void;\n /** 导出失败回调 */\n onExportError?: (error: string) => void;\n /** 配置保存回调 */\n onConfigSave?: (config: ExportConfig) => void;\n}\n\n// ============= 按钮样式配置 =============\n\nconst BUTTON_STYLES = {\n primary: {\n sm: 'px-3 py-1.5 text-sm bg-blue-600 text-white hover:bg-blue-700',\n md: 'px-4 py-2 text-sm bg-blue-600 text-white hover:bg-blue-700',\n lg: 'px-6 py-3 text-base bg-blue-600 text-white hover:bg-blue-700',\n },\n secondary: {\n sm: 'px-3 py-1.5 text-sm bg-gray-600 text-white hover:bg-gray-700',\n md: 'px-4 py-2 text-sm bg-gray-600 text-white hover:bg-gray-700',\n lg: 'px-6 py-3 text-base bg-gray-600 text-white hover:bg-gray-700',\n },\n outline: {\n sm: 'px-3 py-1.5 text-sm border border-gray-300 text-gray-700 hover:bg-gray-50',\n md: 'px-4 py-2 text-sm border border-gray-300 text-gray-700 hover:bg-gray-50',\n lg: 'px-6 py-3 text-base border border-gray-300 text-gray-700 hover:bg-gray-50',\n },\n};\n\n// ============= 主组件 =============\n\nexport const UniversalExportButton: React.FC<UniversalExportButtonProps> = ({\n exportService,\n moduleId,\n businessId,\n availableFields,\n dataSource,\n defaultConfig,\n buttonText = '导出数据',\n variant = 'primary',\n size = 'md',\n disabled = false,\n className = '',\n onExportSuccess,\n onExportError,\n onConfigSave,\n}) => {\n // ============= 状态管理 =============\n \n const [showConfigEditor, setShowConfigEditor] = useState(false);\n const [showDropdown, setShowDropdown] = useState(false);\n const [isExporting, setIsExporting] = useState(false);\n const [exportProgress, setExportProgress] = useState<ExportProgress | null>(null);\n const [savedConfigs, setSavedConfigs] = useState<ExportConfig[]>([]);\n\n // 加载保存的配置\n const loadSavedConfigs = useCallback(async () => {\n try {\n if (exportService) {\n const configs = await exportService.getConfigsByModule(moduleId, businessId);\n setSavedConfigs(configs);\n }\n } catch (error) {\n console.error('加载保存的配置失败:', error);\n }\n }, [exportService, moduleId, businessId]);\n\n // 组件挂载时加载配置\n React.useEffect(() => {\n loadSavedConfigs();\n }, [loadSavedConfigs]);\n\n // ============= 导出处理 =============\n\n const handleExport = useCallback(async (config: ExportConfig) => {\n console.log('🚀 [UniversalExportButton] 开始导出:', {\n configId: config.id,\n configName: config.name,\n format: config.format,\n fieldsCount: config.fields.length,\n });\n\n if (!exportService) {\n console.error('❌ [UniversalExportButton] 导出服务未初始化');\n onExportError?.('导出服务未初始化');\n return;\n }\n\n setIsExporting(true);\n setExportProgress(null);\n\n try {\n // 获取数据\n console.log('📊 [UniversalExportButton] 获取数据...');\n const data = await dataSource();\n console.log('✅ [UniversalExportButton] 数据获取成功:', {\n dataType: typeof data,\n isArray: Array.isArray(data),\n length: Array.isArray(data) ? data.length : 'N/A',\n });\n\n // 创建导出请求(不包含回调,因为客户端不支持)\n const request = {\n configId: config,\n dataSource: data, // 传递实际数据而不是函数\n queryParams: undefined,\n fieldMapping: undefined,\n filters: undefined,\n sortBy: undefined,\n pagination: undefined,\n customFileName: undefined,\n };\n\n console.log('📞 [UniversalExportButton] 调用导出服务...');\n const result = await exportService.exportData(request);\n\n console.log('✅ [UniversalExportButton] 导出成功:', {\n fileName: result.fileName,\n fileSize: result.fileSize,\n exportedRows: result.exportedRows,\n });\n\n // 由于客户端不支持进度回调,我们模拟一个完成状态\n const progress: ExportProgress = {\n exportId: result.exportId,\n status: 'completed',\n progress: 100,\n processedRows: result.exportedRows,\n totalRows: result.exportedRows,\n startTime: result.startTime,\n estimatedEndTime: result.endTime,\n };\n setExportProgress(progress);\n\n // 下载文件\n if (result.fileUrl) {\n console.log('📥 [UniversalExportButton] 从URL下载文件...');\n const link = document.createElement('a');\n link.href = result.fileUrl;\n link.download = result.fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n console.log('✅ [UniversalExportButton] 文件下载完成');\n } else if (result.fileBlob) {\n console.log('📥 [UniversalExportButton] 从Blob下载文件...');\n const url = window.URL.createObjectURL(result.fileBlob);\n const link = document.createElement('a');\n link.href = url;\n link.download = result.fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n console.log('✅ [UniversalExportButton] 文件下载完成');\n } else if (result.exportId && typeof exportService.downloadExportFile === 'function') {\n console.log('📥 [UniversalExportButton] 从exportId兜底下载文件...');\n const blob = await exportService.downloadExportFile(result.exportId);\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = result.fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n console.log('✅ [UniversalExportButton] 文件下载完成(兜底分支)');\n } else {\n console.warn('⚠️ [UniversalExportButton] 导出成功但缺少可下载文件信息:', result);\n }\n\n // 延迟清除进度状态\n setTimeout(() => {\n setIsExporting(false);\n setExportProgress(null);\n }, 1000);\n\n onExportSuccess?.(result);\n } catch (error) {\n console.error('❌ [UniversalExportButton] 导出异常:', error);\n setIsExporting(false);\n setExportProgress(null);\n\n // 更好地处理错误信息\n let errorMessage = '导出失败';\n if (error && typeof error === 'object') {\n if ('message' in error && typeof error.message === 'string') {\n errorMessage = error.message;\n } else if ('code' in error && 'message' in error) {\n errorMessage = (error.code) + ': ' + (error.message);\n }\n } else if (typeof error === 'string') {\n errorMessage = error;\n }\n\n onExportError?.(errorMessage);\n }\n }, [exportService, dataSource, onExportSuccess, onExportError]);\n\n const handleQuickExport = useCallback(async () => {\n if (defaultConfig) {\n await handleExport(defaultConfig);\n } else {\n // 创建默认配置\n const config: ExportConfig = {\n id: 'quick_export',\n name: '快速导出',\n description: '使用默认配置快速导出',\n format: 'csv',\n fields: availableFields.map((field, index) => ({\n ...field,\n enabled: true,\n sortOrder: index,\n })),\n fileNameTemplate: '导出数据_{date}',\n includeHeader: true,\n delimiter: ',',\n encoding: 'utf-8',\n addBOM: true,\n createdAt: new Date(),\n updatedAt: new Date(),\n moduleId,\n businessId,\n };\n \n await handleExport(config);\n }\n }, [defaultConfig, availableFields, moduleId, businessId, handleExport]);\n\n // ============= 配置管理 =============\n\n const handleConfigSave = useCallback(async (config: ExportConfig) => {\n try {\n if (exportService) {\n const savedConfig = await exportService.createConfig(config);\n // 重新加载配置列表\n await loadSavedConfigs();\n onConfigSave?.(savedConfig);\n }\n setShowConfigEditor(false);\n } catch (error) {\n onExportError?.(error instanceof Error ? error.message : '保存配置失败');\n }\n }, [exportService, onConfigSave, onExportError, loadSavedConfigs]);\n\n // ============= 渲染进度 =============\n\n const renderProgress = () => {\n if (!exportProgress) return null;\n\n const { status, progress, processedRows, totalRows } = exportProgress;\n\n return (\n <div className=\"absolute top-full left-0 right-0 mt-2 bg-white border border-gray-200 rounded-lg shadow-lg p-4 z-[10]\">\n <div className=\"flex items-center gap-3 mb-2\">\n <Loader2 className=\"w-4 h-4 animate-spin text-blue-600\" />\n <span className=\"text-sm font-medium text-gray-900\">\n {status === 'processing' ? '正在导出...' : '导出完成'}\n </span>\n </div>\n \n <div className=\"space-y-2\">\n <div className=\"flex justify-between text-xs text-gray-600\">\n <span>进度: {progress}%</span>\n <span>{processedRows} / {totalRows} 行</span>\n </div>\n \n <div className=\"w-full bg-gray-200 rounded-full h-2\">\n <div \n className=\"bg-blue-600 h-2 rounded-full transition-all duration-300\"\n style={{ width: (progress) + '%' }}\n />\n </div>\n </div>\n </div>\n );\n };\n\n // ============= 渲染下拉菜单 =============\n\n const renderDropdown = () => {\n if (!showDropdown) return null;\n\n return (\n <div className=\"absolute top-full left-0 mt-2 bg-white border border-gray-200 rounded-lg shadow-lg py-2 z-[10] min-w-48\">\n {/* 快速导出 */}\n <button\n onClick={() => {\n setShowDropdown(false);\n handleQuickExport();\n }}\n disabled={isExporting}\n className=\"w-full px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 flex items-center gap-2\"\n >\n <Download className=\"w-4 h-4\" />\n 快速导出\n </button>\n\n {/* 使用保存的配置 */}\n {savedConfigs.length > 0 && (\n <>\n <div className=\"border-t border-gray-200 my-1\" />\n {savedConfigs.map((config) => (\n <button\n key={config.id}\n onClick={() => {\n setShowDropdown(false);\n handleExport(config);\n }}\n disabled={isExporting}\n className=\"w-full px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 flex items-center gap-2\"\n >\n <FileText className=\"w-4 h-4\" />\n {config.name}\n </button>\n ))}\n </>\n )}\n\n {/* 配置编辑器 */}\n <div className=\"border-t border-gray-200 my-1\" />\n <button\n onClick={() => {\n setShowDropdown(false);\n setShowConfigEditor(true);\n }}\n className=\"w-full px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 flex items-center gap-2\"\n >\n <Settings className=\"w-4 h-4\" />\n 自定义配置\n </button>\n </div>\n );\n };\n\n // ============= 渲染组件 =============\n\n const buttonStyle = BUTTON_STYLES[variant][size];\n const baseClasses = 'inline-flex items-center gap-2 rounded-lg font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed ' + (buttonStyle);\n\n return (\n <div className={clsx('relative', className)}>\n {/* 主按钮 */}\n <button\n onClick={() => setShowDropdown(!showDropdown)}\n disabled={disabled || isExporting}\n className={clsx(baseClasses, isExporting ? 'cursor-not-allowed' : '')}\n >\n {isExporting ? (\n <Loader2 className=\"w-4 h-4 animate-spin\" />\n ) : (\n <Download className=\"w-4 h-4\" />\n )}\n <span>{isExporting ? '导出中...' : buttonText}</span>\n <ChevronDown className=\"w-4 h-4\" />\n </button>\n\n {/* 下拉菜单 */}\n {renderDropdown()}\n\n {/* 进度显示 */}\n {renderProgress()}\n\n {/* 配置编辑器 */}\n <ExportConfigEditor\n moduleId={moduleId}\n businessId={businessId}\n availableFields={availableFields}\n onSave={handleConfigSave}\n onCancel={() => setShowConfigEditor(false)}\n visible={showConfigEditor}\n onConfigChange={loadSavedConfigs}\n />\n\n {/* 点击外部关闭下拉菜单 */}\n {showDropdown && (\n <div\n className=\"fixed inset-0 z-[0]\"\n onClick={() => setShowDropdown(false)}\n />\n )}\n </div>\n );\n};\n\n"]}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { useStorage, useLocalStorage } from './chunk-6V2MIQPF.mjs';
|
|
2
|
+
import { ReactNativeStorageAdapter } from './chunk-P7JQRNBJ.mjs';
|
|
3
|
+
import { ElectronStorageAdapter } from './chunk-ZUZLWHH5.mjs';
|
|
4
|
+
import { WebStorageAdapter } from './chunk-WB4H6ZUW.mjs';
|
|
5
|
+
import { __export } from './chunk-MAI35PU6.mjs';
|
|
6
|
+
|
|
7
|
+
// src/common/storage/index.ts
|
|
8
|
+
var storage_exports = {};
|
|
9
|
+
__export(storage_exports, {
|
|
10
|
+
ElectronStorageAdapter: () => ElectronStorageAdapter,
|
|
11
|
+
MiniAppStorageAdapter: () => MiniAppStorageAdapter,
|
|
12
|
+
ReactNativeStorageAdapter: () => ReactNativeStorageAdapter,
|
|
13
|
+
WebStorageAdapter: () => WebStorageAdapter,
|
|
14
|
+
useAsyncStorage: () => useAsyncStorage,
|
|
15
|
+
useElectronStorage: () => useElectronStorage,
|
|
16
|
+
useLocalStorage: () => useLocalStorage,
|
|
17
|
+
useStorage: () => useStorage,
|
|
18
|
+
useTaroStorage: () => useTaroStorage
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// src/common/storage/adapters/miniapp-adapter.ts
|
|
22
|
+
var Taro = null;
|
|
23
|
+
var taroLoadPromise = null;
|
|
24
|
+
var isMiniAppEnvironment = null;
|
|
25
|
+
function checkIsMiniApp() {
|
|
26
|
+
if (isMiniAppEnvironment !== null) return isMiniAppEnvironment;
|
|
27
|
+
if (typeof window === "undefined") {
|
|
28
|
+
isMiniAppEnvironment = false;
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
const globalObj = window;
|
|
32
|
+
isMiniAppEnvironment = !!(globalObj.wx || // 微信小程序
|
|
33
|
+
globalObj.my || // 支付宝小程序
|
|
34
|
+
globalObj.swan || // 百度小程序
|
|
35
|
+
globalObj.tt || // 抖音小程序
|
|
36
|
+
globalObj.qq || // QQ 小程序
|
|
37
|
+
globalObj.Taro);
|
|
38
|
+
return isMiniAppEnvironment;
|
|
39
|
+
}
|
|
40
|
+
async function loadTaro() {
|
|
41
|
+
if (!checkIsMiniApp()) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (Taro) return;
|
|
45
|
+
if (taroLoadPromise) return taroLoadPromise;
|
|
46
|
+
taroLoadPromise = (async () => {
|
|
47
|
+
try {
|
|
48
|
+
const importTaro = new Function('return import("@tarojs/taro")');
|
|
49
|
+
const taroModule = await importTaro();
|
|
50
|
+
Taro = taroModule.default || taroModule;
|
|
51
|
+
} catch (e) {
|
|
52
|
+
console.warn("[MiniAppStorage] Taro is not available. This is expected in non-MiniApp environments.");
|
|
53
|
+
}
|
|
54
|
+
})();
|
|
55
|
+
return taroLoadPromise;
|
|
56
|
+
}
|
|
57
|
+
var MiniAppStorageAdapter = class {
|
|
58
|
+
constructor() {
|
|
59
|
+
this.listeners = /* @__PURE__ */ new Map();
|
|
60
|
+
}
|
|
61
|
+
async getItem(key) {
|
|
62
|
+
if (!checkIsMiniApp()) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
await loadTaro();
|
|
66
|
+
if (!Taro) return null;
|
|
67
|
+
try {
|
|
68
|
+
const result = await Taro.getStorage({ key });
|
|
69
|
+
return result.data;
|
|
70
|
+
} catch (error) {
|
|
71
|
+
if (error.errMsg?.includes("data not found")) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
console.error('[MiniAppStorage] Error getting item "' + key + '":', error);
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async setItem(key, value) {
|
|
79
|
+
if (!checkIsMiniApp()) {
|
|
80
|
+
throw new Error("[MiniAppStorage] This adapter can only be used in MiniApp environment");
|
|
81
|
+
}
|
|
82
|
+
await loadTaro();
|
|
83
|
+
if (!Taro) {
|
|
84
|
+
throw new Error("[MiniAppStorage] Taro is not available");
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
await Taro.setStorage({ key, data: value });
|
|
88
|
+
this.notifyListeners(key, value);
|
|
89
|
+
} catch (error) {
|
|
90
|
+
console.error('[MiniAppStorage] Error setting item "' + key + '":', error);
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async removeItem(key) {
|
|
95
|
+
if (!checkIsMiniApp()) {
|
|
96
|
+
throw new Error("[MiniAppStorage] This adapter can only be used in MiniApp environment");
|
|
97
|
+
}
|
|
98
|
+
await loadTaro();
|
|
99
|
+
if (!Taro) {
|
|
100
|
+
throw new Error("[MiniAppStorage] Taro is not available");
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
await Taro.removeStorage({ key });
|
|
104
|
+
this.notifyListeners(key, null);
|
|
105
|
+
} catch (error) {
|
|
106
|
+
console.error('[MiniAppStorage] Error removing item "' + key + '":', error);
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async clear() {
|
|
111
|
+
if (!checkIsMiniApp()) {
|
|
112
|
+
throw new Error("[MiniAppStorage] This adapter can only be used in MiniApp environment");
|
|
113
|
+
}
|
|
114
|
+
await loadTaro();
|
|
115
|
+
if (!Taro) {
|
|
116
|
+
throw new Error("[MiniAppStorage] Taro is not available");
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
await Taro.clearStorage();
|
|
120
|
+
} catch (error) {
|
|
121
|
+
console.error("[MiniAppStorage] Error clearing storage:", error);
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
addChangeListener(callback) {
|
|
126
|
+
if (!this.listeners.has("*")) {
|
|
127
|
+
this.listeners.set("*", /* @__PURE__ */ new Set());
|
|
128
|
+
}
|
|
129
|
+
this.listeners.get("*").add(callback);
|
|
130
|
+
return () => {
|
|
131
|
+
this.listeners.get("*")?.delete(callback);
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
notifyListeners(key, value) {
|
|
135
|
+
const globalListeners = this.listeners.get("*");
|
|
136
|
+
if (globalListeners) {
|
|
137
|
+
globalListeners.forEach((callback) => callback(key, value));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// src/common/storage/hooks/useAsyncStorage.ts
|
|
143
|
+
var asyncStorage = new ReactNativeStorageAdapter();
|
|
144
|
+
function useAsyncStorage(key, defaultValue) {
|
|
145
|
+
return useStorage(asyncStorage, key, defaultValue);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// src/common/storage/hooks/useTaroStorage.ts
|
|
149
|
+
var taroStorage = new MiniAppStorageAdapter();
|
|
150
|
+
function useTaroStorage(key, defaultValue) {
|
|
151
|
+
return useStorage(taroStorage, key, defaultValue);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// src/common/storage/hooks/useElectronStorage.ts
|
|
155
|
+
var electronStorage = new ElectronStorageAdapter();
|
|
156
|
+
function useElectronStorage(key, defaultValue) {
|
|
157
|
+
return useStorage(electronStorage, key, defaultValue);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export { MiniAppStorageAdapter, storage_exports, useAsyncStorage, useElectronStorage, useTaroStorage };
|
|
161
|
+
//# sourceMappingURL=chunk-X5GINUGI.mjs.map
|
|
162
|
+
//# sourceMappingURL=chunk-X5GINUGI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/storage/index.ts","../src/common/storage/adapters/miniapp-adapter.ts","../src/common/storage/hooks/useAsyncStorage.ts","../src/common/storage/hooks/useTaroStorage.ts","../src/common/storage/hooks/useElectronStorage.ts"],"names":[],"mappings":"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","file":"chunk-X5GINUGI.mjs","sourcesContent":["/**\n * @package sa2kit/common/storage\n * 跨平台存储适配器与 Hooks\n */\nexport type { StorageAdapter, StorageChangeEvent } from './types';\nexport { WebStorageAdapter } from './adapters/web-adapter';\nexport { ReactNativeStorageAdapter } from './adapters/react-native-adapter';\nexport { MiniAppStorageAdapter } from './adapters/miniapp-adapter';\nexport { ElectronStorageAdapter } from './adapters/electron-adapter';\nexport * from './hooks';\n","/**\n * 小程序平台存储适配器 (wx.storage / Taro.storage)\n * 仅在小程序环境下加载和使用\n */\n\nimport type { StorageAdapter } from '../types';\n\n// 延迟加载 Taro(仅在小程序环境)\nlet Taro: any = null;\nlet taroLoadPromise: Promise<void> | null = null;\nlet isMiniAppEnvironment: boolean | null = null;\n\n/**\n * 检测是否是小程序环境\n */\nfunction checkIsMiniApp(): boolean {\n if (isMiniAppEnvironment !== null) return isMiniAppEnvironment;\n\n // 服务端环境,不是小程序\n if (typeof window === 'undefined') {\n isMiniAppEnvironment = false;\n return false;\n }\n\n // 检测是否有小程序全局对象\n const globalObj = window as any;\n isMiniAppEnvironment = !!(\n globalObj.wx || // 微信小程序\n globalObj.my || // 支付宝小程序\n globalObj.swan || // 百度小程序\n globalObj.tt || // 抖音小程序\n globalObj.qq || // QQ 小程序\n globalObj.Taro // Taro 环境\n );\n\n return isMiniAppEnvironment;\n}\n\n/**\n * 加载 Taro(仅在小程序环境)\n */\nasync function loadTaro() {\n // 如果不是小程序环境,直接返回\n if (!checkIsMiniApp()) {\n return;\n }\n\n if (Taro) return;\n if (taroLoadPromise) return taroLoadPromise;\n\n taroLoadPromise = (async () => {\n try {\n // 使用动态导入,仅在小程序环境加载\n // 使用 Function 构造器来避免 TypeScript 在编译时解析模块\n const importTaro = new Function('return import(\"@tarojs/taro\")');\n const taroModule = await importTaro();\n Taro = taroModule.default || taroModule;\n } catch (e) {\n // Taro 不可用(非小程序环境或未安装)\n console.warn('[MiniAppStorage] Taro is not available. This is expected in non-MiniApp environments.');\n }\n })();\n\n return taroLoadPromise;\n}\n\nexport class MiniAppStorageAdapter implements StorageAdapter {\n private listeners: Map<string, Set<(key: string, value: string | null) => void>> = new Map();\n\n async getItem(key: string): Promise<string | null> {\n // 非小程序环境,直接返回 null\n if (!checkIsMiniApp()) {\n return null;\n }\n\n await loadTaro();\n if (!Taro) return null;\n\n try {\n const result = await Taro.getStorage({ key });\n return result.data;\n } catch (error: any) {\n // 如果 key 不存在,Taro 会抛出错误\n if (error.errMsg?.includes('data not found')) {\n return null;\n }\n console.error('[MiniAppStorage] Error getting item \"' + (key) + '\":', error);\n return null;\n }\n }\n\n async setItem(key: string, value: string): Promise<void> {\n // 非小程序环境,抛出错误\n if (!checkIsMiniApp()) {\n throw new Error('[MiniAppStorage] This adapter can only be used in MiniApp environment');\n }\n\n await loadTaro();\n if (!Taro) {\n throw new Error('[MiniAppStorage] Taro is not available');\n }\n\n try {\n await Taro.setStorage({ key, data: value });\n this.notifyListeners(key, value);\n } catch (error) {\n console.error('[MiniAppStorage] Error setting item \"' + (key) + '\":', error);\n throw error;\n }\n }\n\n async removeItem(key: string): Promise<void> {\n // 非小程序环境,抛出错误\n if (!checkIsMiniApp()) {\n throw new Error('[MiniAppStorage] This adapter can only be used in MiniApp environment');\n }\n\n await loadTaro();\n if (!Taro) {\n throw new Error('[MiniAppStorage] Taro is not available');\n }\n\n try {\n await Taro.removeStorage({ key });\n this.notifyListeners(key, null);\n } catch (error) {\n console.error('[MiniAppStorage] Error removing item \"' + (key) + '\":', error);\n throw error;\n }\n }\n\n async clear(): Promise<void> {\n // 非小程序环境,抛出错误\n if (!checkIsMiniApp()) {\n throw new Error('[MiniAppStorage] This adapter can only be used in MiniApp environment');\n }\n\n await loadTaro();\n if (!Taro) {\n throw new Error('[MiniAppStorage] Taro is not available');\n }\n\n try {\n await Taro.clearStorage();\n } catch (error) {\n console.error('[MiniAppStorage] Error clearing storage:', error);\n throw error;\n }\n }\n\n addChangeListener(callback: (key: string, value: string | null) => void): () => void {\n // 小程序没有原生的存储监听,我们使用内存中的监听器\n if (!this.listeners.has('*')) {\n this.listeners.set('*', new Set());\n }\n\n this.listeners.get('*')!.add(callback);\n\n // 返回清理函数\n return () => {\n this.listeners.get('*')?.delete(callback);\n };\n }\n\n private notifyListeners(key: string, value: string | null): void {\n const globalListeners = this.listeners.get('*');\n if (globalListeners) {\n globalListeners.forEach((callback) => callback(key, value));\n }\n }\n}\n\n","'use client';\n\n/**\n * React Native AsyncStorage Hook\n * 基于通用 useStorage 的便捷封装\n */\n\nimport { useStorage } from './useStorage';\nimport { ReactNativeStorageAdapter } from '../adapters/react-native-adapter';\n\n// 创建单例适配器\nconst asyncStorage = new ReactNativeStorageAdapter();\n\n/**\n * React Native 的 AsyncStorage Hook\n *\n * @param key - 存储键名\n * @param defaultValue - 默认值\n * @returns [value, setValue, removeValue, isLoading]\n */\nexport function useAsyncStorage<T>(\n key: string,\n defaultValue: T\n): [T, (value: T) => void, () => void, boolean] {\n return useStorage(asyncStorage, key, defaultValue);\n}\n\n","'use client';\n\n/**\n * 小程序 Taro Storage Hook\n * 基于通用 useStorage 的便捷封装\n */\n\nimport { useStorage } from './useStorage';\nimport { MiniAppStorageAdapter } from '../adapters/miniapp-adapter';\n\n// 创建单例适配器\nconst taroStorage = new MiniAppStorageAdapter();\n\n/**\n * 小程序的 Taro Storage Hook\n *\n * @param key - 存储键名\n * @param defaultValue - 默认值\n * @returns [value, setValue, removeValue, isLoading]\n */\nexport function useTaroStorage<T>(\n key: string,\n defaultValue: T\n): [T, (value: T) => void, () => void, boolean] {\n return useStorage(taroStorage, key, defaultValue);\n}\n\n","'use client';\n\n/**\n * Electron 桌面端 Storage Hook\n * 基于通用 useStorage 的便捷封装\n */\n\nimport { useStorage } from './useStorage';\nimport { ElectronStorageAdapter } from '../adapters/electron-adapter';\n\n// 创建单例适配器\nconst electronStorage = new ElectronStorageAdapter();\n\n/**\n * Electron 桌面端的 Storage Hook\n *\n * 在 Electron 渲染进程中使用 localStorage\n * 支持跨窗口同步\n *\n * @param key - 存储键名\n * @param defaultValue - 默认值\n * @returns [value, setValue, removeValue, isLoading]\n *\n * @example\n * ```tsx\n * const [token, setToken, removeToken] = useElectronStorage('auth-token', '')\n * ```\n */\nexport function useElectronStorage<T>(\n key: string,\n defaultValue: T\n): [T, (value: T) => void, () => void, boolean] {\n return useStorage(electronStorage, key, defaultValue);\n}\n\n"]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// src/common/ossFile/shared/ossConfig.ts
|
|
2
|
+
var STANDARD_ALIYUN_OSS_KEYS = {
|
|
3
|
+
region: "ALIYUN_OSS_REGION",
|
|
4
|
+
bucket: "ALIYUN_OSS_BUCKET",
|
|
5
|
+
accessKeyId: "ALIYUN_OSS_ACCESS_KEY_ID",
|
|
6
|
+
accessKeySecret: "ALIYUN_OSS_ACCESS_KEY_SECRET",
|
|
7
|
+
customDomain: "ALIYUN_OSS_CUSTOM_DOMAIN",
|
|
8
|
+
secure: "ALIYUN_OSS_SECURE",
|
|
9
|
+
internal: "ALIYUN_OSS_INTERNAL"
|
|
10
|
+
};
|
|
11
|
+
function parseAliyunOssConfigFromMap(configMap, keys = STANDARD_ALIYUN_OSS_KEYS) {
|
|
12
|
+
const region = configMap[keys.region]?.trim();
|
|
13
|
+
const bucket = configMap[keys.bucket]?.trim();
|
|
14
|
+
const accessKeyId = configMap[keys.accessKeyId]?.trim();
|
|
15
|
+
const accessKeySecret = configMap[keys.accessKeySecret]?.trim();
|
|
16
|
+
if (!region || !bucket || !accessKeyId || !accessKeySecret) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const secureRaw = configMap[keys.secure]?.trim().toLowerCase();
|
|
20
|
+
const internalRaw = configMap[keys.internal]?.trim().toLowerCase();
|
|
21
|
+
return {
|
|
22
|
+
type: "aliyun-oss",
|
|
23
|
+
enabled: true,
|
|
24
|
+
region,
|
|
25
|
+
bucket,
|
|
26
|
+
accessKeyId,
|
|
27
|
+
accessKeySecret,
|
|
28
|
+
customDomain: configMap[keys.customDomain]?.trim() || void 0,
|
|
29
|
+
secure: secureRaw === "true",
|
|
30
|
+
internal: internalRaw === "true"
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function isCompleteOssConfig(config) {
|
|
34
|
+
return Boolean(
|
|
35
|
+
config?.enabled && config.region && config.bucket && config.accessKeyId && config.accessKeySecret
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
function getOssStorageModeLabelFromConfig(config) {
|
|
39
|
+
if (!isCompleteOssConfig(config)) {
|
|
40
|
+
return "\u672C\u5730\u5B58\u50A8 + \u6587\u4EF6\u670D\u52A1";
|
|
41
|
+
}
|
|
42
|
+
return config.customDomain ? "\u963F\u91CC\u4E91 OSS + \u81EA\u5B9A\u4E49\u57DF\u540D" : "\u963F\u91CC\u4E91 OSS";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// src/common/ossFile/shared/path.ts
|
|
46
|
+
function resolveUploadFolderPath(options) {
|
|
47
|
+
for (const candidate of [options.folderPath, options.customPath]) {
|
|
48
|
+
if (typeof candidate === "string" && candidate.trim()) {
|
|
49
|
+
return candidate.trim();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return buildModuleUploadPath({
|
|
53
|
+
moduleId: options.moduleId,
|
|
54
|
+
businessId: options.businessId,
|
|
55
|
+
fileName: options.fileName
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function resolveUploadFolderPathFromFormData(formData, defaults) {
|
|
59
|
+
const folderPath = formData.get("folderPath");
|
|
60
|
+
const customPath = formData.get("customPath");
|
|
61
|
+
return resolveUploadFolderPath({
|
|
62
|
+
...defaults,
|
|
63
|
+
folderPath: typeof folderPath === "string" ? folderPath : void 0,
|
|
64
|
+
customPath: typeof customPath === "string" ? customPath : void 0
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
function buildModuleUploadPath(options) {
|
|
68
|
+
const extension = options.fileName.split(".").pop()?.toLowerCase() || "jpg";
|
|
69
|
+
const timestamp = Date.now();
|
|
70
|
+
const randomId = Math.random().toString(36).slice(2, 11);
|
|
71
|
+
const segments = [
|
|
72
|
+
options.moduleId,
|
|
73
|
+
options.businessId,
|
|
74
|
+
options.subfolder
|
|
75
|
+
].filter(Boolean);
|
|
76
|
+
const base = segments.length > 0 ? segments.join("/") : options.moduleId;
|
|
77
|
+
return `${base}/${timestamp}_${randomId}.${extension}`;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export { STANDARD_ALIYUN_OSS_KEYS, buildModuleUploadPath, getOssStorageModeLabelFromConfig, isCompleteOssConfig, parseAliyunOssConfigFromMap, resolveUploadFolderPath, resolveUploadFolderPathFromFormData };
|
|
81
|
+
//# sourceMappingURL=chunk-XB7GUEHZ.mjs.map
|
|
82
|
+
//# sourceMappingURL=chunk-XB7GUEHZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/ossFile/shared/ossConfig.ts","../src/common/ossFile/shared/path.ts"],"names":[],"mappings":"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","file":"chunk-XB7GUEHZ.mjs","sourcesContent":["import type { AliyunOSSConfig } from '../../universalFile/server/types';\n\n/** 与 profile-v1 配置项 / 环境变量对齐的 OSS 键名 */\nexport const STANDARD_ALIYUN_OSS_KEYS = {\n region: 'ALIYUN_OSS_REGION',\n bucket: 'ALIYUN_OSS_BUCKET',\n accessKeyId: 'ALIYUN_OSS_ACCESS_KEY_ID',\n accessKeySecret: 'ALIYUN_OSS_ACCESS_KEY_SECRET',\n customDomain: 'ALIYUN_OSS_CUSTOM_DOMAIN',\n secure: 'ALIYUN_OSS_SECURE',\n internal: 'ALIYUN_OSS_INTERNAL',\n} as const;\n\nexport type OssConfigKeyMap = typeof STANDARD_ALIYUN_OSS_KEYS;\n\nexport function parseAliyunOssConfigFromMap(\n configMap: Record<string, string | undefined | null>,\n keys: OssConfigKeyMap = STANDARD_ALIYUN_OSS_KEYS,\n): AliyunOSSConfig | null {\n const region = configMap[keys.region]?.trim();\n const bucket = configMap[keys.bucket]?.trim();\n const accessKeyId = configMap[keys.accessKeyId]?.trim();\n const accessKeySecret = configMap[keys.accessKeySecret]?.trim();\n\n if (!region || !bucket || !accessKeyId || !accessKeySecret) {\n return null;\n }\n\n const secureRaw = configMap[keys.secure]?.trim().toLowerCase();\n const internalRaw = configMap[keys.internal]?.trim().toLowerCase();\n\n return {\n type: 'aliyun-oss',\n enabled: true,\n region,\n bucket,\n accessKeyId,\n accessKeySecret,\n customDomain: configMap[keys.customDomain]?.trim() || undefined,\n secure: secureRaw === 'true',\n internal: internalRaw === 'true',\n };\n}\n\nexport function isCompleteOssConfig(config: AliyunOSSConfig | null): config is AliyunOSSConfig {\n return Boolean(\n config?.enabled\n && config.region\n && config.bucket\n && config.accessKeyId\n && config.accessKeySecret,\n );\n}\n\nexport function getOssStorageModeLabelFromConfig(config: AliyunOSSConfig | null): string {\n if (!isCompleteOssConfig(config)) {\n return '本地存储 + 文件服务';\n }\n return config.customDomain\n ? '阿里云 OSS + 自定义域名'\n : '阿里云 OSS';\n}\n","export interface BuildModuleUploadPathOptions {\n moduleId: string;\n businessId?: string;\n fileName: string;\n subfolder?: string;\n}\n\nexport interface ResolveUploadFolderPathOptions {\n moduleId: string;\n businessId?: string;\n fileName: string;\n /** 优先于 customPath;与 API FormData 字段一致 */\n folderPath?: string | null;\n /** universalFile UploadFileInfo.customPath 别名 */\n customPath?: string | null;\n}\n\n/**\n * 统一 folderPath / customPath 解析(R2-204)。\n * client 与 server 均应使用此函数,避免双端路径不一致。\n */\nexport function resolveUploadFolderPath(\n options: ResolveUploadFolderPathOptions,\n): string {\n for (const candidate of [options.folderPath, options.customPath]) {\n if (typeof candidate === 'string' && candidate.trim()) {\n return candidate.trim();\n }\n }\n return buildModuleUploadPath({\n moduleId: options.moduleId,\n businessId: options.businessId,\n fileName: options.fileName,\n });\n}\n\n/**\n * 从 multipart FormData 解析上传路径(兼容 folderPath 与 customPath)。\n */\nexport function resolveUploadFolderPathFromFormData(\n formData: FormData,\n defaults: Pick<ResolveUploadFolderPathOptions, 'moduleId' | 'businessId' | 'fileName'>,\n): string {\n const folderPath = formData.get('folderPath');\n const customPath = formData.get('customPath');\n return resolveUploadFolderPath({\n ...defaults,\n folderPath: typeof folderPath === 'string' ? folderPath : undefined,\n customPath: typeof customPath === 'string' ? customPath : undefined,\n });\n}\n\n/**\n * 生成 OSS / universal-file 使用的 folderPath(含扩展名)。\n */\nexport function buildModuleUploadPath(options: BuildModuleUploadPathOptions): string {\n const extension = options.fileName.split('.').pop()?.toLowerCase() || 'jpg';\n const timestamp = Date.now();\n const randomId = Math.random().toString(36).slice(2, 11);\n const segments = [\n options.moduleId,\n options.businessId,\n options.subfolder,\n ].filter(Boolean);\n const base = segments.length > 0 ? segments.join('/') : options.moduleId;\n return `${base}/${timestamp}_${randomId}.${extension}`;\n}\n"]}
|