sa2kit 3.1.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-4GRL2FJB.js.map → AliyunOSSProvider-7IOT5U6M.js.map} +1 -1
- package/dist/AliyunOSSProvider-ZXZM7OQA.mjs +6 -0
- package/dist/{AliyunOSSProvider-QNVFIZ7Q.mjs.map → AliyunOSSProvider-ZXZM7OQA.mjs.map} +1 -1
- package/dist/LocalStorageProvider-KJKRCKBS.js +15 -0
- package/dist/{LocalStorageProvider-PFA2DMIJ.js.map → LocalStorageProvider-KJKRCKBS.js.map} +1 -1
- package/dist/LocalStorageProvider-O22465NY.mjs +6 -0
- package/dist/{LocalStorageProvider-J5RHV37G.mjs.map → LocalStorageProvider-O22465NY.mjs.map} +1 -1
- package/dist/{chunk-SLKOEYFH.js → chunk-2234T4A6.js} +5 -5
- package/dist/chunk-2234T4A6.js.map +1 -0
- package/dist/{chunk-HQLKOXG7.js → chunk-36KGNXKW.js} +3 -3
- package/dist/{chunk-HQLKOXG7.js.map → chunk-36KGNXKW.js.map} +1 -1
- package/dist/{chunk-BCE6RUZV.js → chunk-375C7WL7.js} +19 -19
- package/dist/chunk-375C7WL7.js.map +1 -0
- package/dist/{chunk-VMTEDX5H.js → chunk-3J24Z4MB.js} +34 -318
- package/dist/chunk-3J24Z4MB.js.map +1 -0
- package/dist/{chunk-PBI7FKMB.js → chunk-3QCATFQV.js} +3 -3
- package/dist/chunk-3QCATFQV.js.map +1 -0
- package/dist/{chunk-FXQOXLDE.js → chunk-3R6JHA6D.js} +4 -4
- package/dist/chunk-3R6JHA6D.js.map +1 -0
- package/dist/{chunk-ZRAW3HXA.js → chunk-4OXKHV7J.js} +3 -3
- package/dist/chunk-4OXKHV7J.js.map +1 -0
- package/dist/chunk-4PJM4752.js +4 -0
- package/dist/{chunk-5USIS3UM.js.map → chunk-4PJM4752.js.map} +1 -1
- package/dist/{chunk-3Z43XGA4.mjs → chunk-65JRVC3F.mjs} +4 -4
- package/dist/{chunk-3Z43XGA4.mjs.map → chunk-65JRVC3F.mjs.map} +1 -1
- package/dist/{chunk-Q5EDCKQA.js → chunk-6HL54I2B.js} +16 -16
- 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-C6KV7VTZ.mjs → chunk-7CRU2Y5X.mjs} +5 -5
- 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-XJ7ZAGC5.js → chunk-7VVZHFEM.js} +3 -3
- package/dist/chunk-7VVZHFEM.js.map +1 -0
- package/dist/chunk-AWHGIKTQ.js +56 -0
- package/dist/{chunk-FHLTPXAR.js.map → chunk-AWHGIKTQ.js.map} +1 -1
- package/dist/chunk-B3GYF6TY.js +37 -0
- package/dist/{chunk-2Y7BKFKZ.js.map → chunk-B3GYF6TY.js.map} +1 -1
- package/dist/{chunk-5FUAQLGC.mjs → chunk-BDBJFOXM.mjs} +3 -3
- package/dist/{chunk-5FUAQLGC.mjs.map → chunk-BDBJFOXM.mjs.map} +1 -1
- package/dist/{chunk-ZGVB35L2.mjs → chunk-BTW3SWQN.mjs} +3 -3
- package/dist/chunk-BTW3SWQN.mjs.map +1 -0
- package/dist/{chunk-I5ZPEDNR.mjs → chunk-CHYSSZ4E.mjs} +10 -10
- package/dist/chunk-CHYSSZ4E.mjs.map +1 -0
- package/dist/{chunk-FIUBFREP.mjs → chunk-DO6QYAZV.mjs} +5 -5
- package/dist/chunk-DO6QYAZV.mjs.map +1 -0
- package/dist/{chunk-MBANGIG3.mjs → chunk-DTR53LQO.mjs} +6 -6
- package/dist/chunk-DTR53LQO.mjs.map +1 -0
- package/dist/{chunk-EQXPL7TN.mjs → chunk-EI2S4XDG.mjs} +16 -5
- package/dist/chunk-EI2S4XDG.mjs.map +1 -0
- package/dist/{chunk-GSNGCENJ.js → chunk-EOZHUI46.js} +16 -4
- package/dist/chunk-EOZHUI46.js.map +1 -0
- package/dist/{chunk-25OFOKNF.js → chunk-F2BZIU67.js} +18 -5
- package/dist/chunk-F2BZIU67.js.map +1 -0
- package/dist/{chunk-AQPU2AXH.js → chunk-F2TEJSCP.js} +10 -10
- package/dist/chunk-F2TEJSCP.js.map +1 -0
- package/dist/{chunk-UCOE6SET.js → chunk-FCLS5R24.js} +3 -3
- package/dist/chunk-FCLS5R24.js.map +1 -0
- package/dist/{chunk-3NHAT7D4.mjs → chunk-FUA6ZGMI.mjs} +27 -12
- package/dist/chunk-FUA6ZGMI.mjs.map +1 -0
- package/dist/chunk-FY2X3LYR.mjs +3 -0
- package/dist/{chunk-VRN76M56.mjs.map → chunk-FY2X3LYR.mjs.map} +1 -1
- package/dist/{chunk-V7EVKD5G.mjs → chunk-GS4SAW25.mjs} +4 -4
- 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-HDMIOOZY.mjs → chunk-HG34SGMN.mjs} +4 -4
- 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/{imageCrop/index.mjs → chunk-KEZFTDZT.mjs} +24 -6
- package/dist/chunk-KEZFTDZT.mjs.map +1 -0
- package/dist/{chunk-KQ643L7Z.js → chunk-KHOVC2KL.js} +3 -3
- package/dist/chunk-KHOVC2KL.js.map +1 -0
- package/dist/{chunk-6PMXAK7F.js → chunk-KRBSTLKC.js} +57 -57
- 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-G7UBMCUT.mjs → chunk-LZ5YTMMP.mjs} +3 -3
- package/dist/chunk-LZ5YTMMP.mjs.map +1 -0
- package/dist/{chunk-WW4GE6CZ.js → chunk-MJ6XJGAL.js} +23 -119
- package/dist/chunk-MJ6XJGAL.js.map +1 -0
- package/dist/{chunk-NCRP2YHY.mjs → chunk-MKLXCV4Z.mjs} +8 -96
- 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-TC5YU6A4.mjs → chunk-N2O3OX5Y.mjs} +3 -3
- package/dist/chunk-N2O3OX5Y.mjs.map +1 -0
- package/dist/{chunk-3FRAIS4T.mjs → chunk-O6NNSPWD.mjs} +5 -5
- package/dist/{chunk-3FRAIS4T.mjs.map → chunk-O6NNSPWD.mjs.map} +1 -1
- package/dist/chunk-OIRZXSYM.js +80 -0
- package/dist/chunk-OIRZXSYM.js.map +1 -0
- package/dist/{chunk-Q5VFBPMG.mjs → chunk-P7JQRNBJ.mjs} +3 -3
- package/dist/chunk-P7JQRNBJ.mjs.map +1 -0
- package/dist/{chunk-BIHYZA67.mjs → chunk-PLIG5257.mjs} +18 -18
- 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-4OOANEJV.mjs → chunk-RHECN4E2.mjs} +21 -21
- package/dist/chunk-RHECN4E2.mjs.map +1 -0
- package/dist/{chunk-YOTQG4NP.mjs → chunk-RHHTZTIN.mjs} +4 -4
- package/dist/chunk-RHHTZTIN.mjs.map +1 -0
- package/dist/{chunk-G6NSKJMH.js → chunk-RRQ2X26Z.js} +4 -4
- package/dist/chunk-RRQ2X26Z.js.map +1 -0
- package/dist/{chunk-4WBCWJSN.js → chunk-RST2T54Y.js} +7 -7
- package/dist/chunk-RST2T54Y.js.map +1 -0
- package/dist/{chunk-R2DXTE2L.js → chunk-RVNQI6BI.js} +4 -4
- package/dist/chunk-RVNQI6BI.js.map +1 -0
- package/dist/{chunk-SKFEJPMJ.mjs → chunk-S3K4LTRI.mjs} +6 -6
- package/dist/chunk-S3K4LTRI.mjs.map +1 -0
- package/dist/{chunk-ZM2SZJTZ.js → chunk-SWZ5XNF6.js} +9 -9
- package/dist/chunk-SWZ5XNF6.js.map +1 -0
- package/dist/{chunk-QSKLQX6H.js → chunk-U7HNBCBS.js} +16 -16
- package/dist/chunk-U7HNBCBS.js.map +1 -0
- package/dist/{chunk-CIVO4R6N.mjs → chunk-UJS3YSD3.mjs} +3 -3
- package/dist/chunk-UJS3YSD3.mjs.map +1 -0
- package/dist/{chunk-G6HXNQ2U.mjs → chunk-UJUWDF7M.mjs} +8 -8
- package/dist/chunk-UJUWDF7M.mjs.map +1 -0
- package/dist/{chunk-CAYOQDBR.js → chunk-UR5NENGE.js} +3 -3
- package/dist/chunk-UR5NENGE.js.map +1 -0
- package/dist/{chunk-QXAOXBVB.mjs → chunk-V7HGBDCB.mjs} +3 -3
- package/dist/chunk-V7HGBDCB.mjs.map +1 -0
- package/dist/{chunk-ATUCZXJY.js → chunk-V7RLIZMN.js} +14 -4
- package/dist/chunk-V7RLIZMN.js.map +1 -0
- package/dist/{chunk-ACUFEDVQ.js → chunk-VCKXK6V5.js} +9 -9
- package/dist/chunk-VCKXK6V5.js.map +1 -0
- package/dist/{chunk-XUS5ACKR.mjs → chunk-VIEXDTNF.mjs} +3 -3
- package/dist/chunk-VIEXDTNF.mjs.map +1 -0
- package/dist/{imageCrop/index.js → chunk-VN2DULIA.js} +24 -5
- package/dist/chunk-VN2DULIA.js.map +1 -0
- package/dist/{chunk-S6YSGVWD.js → chunk-VNWMRUY6.js} +31 -87
- package/dist/chunk-VNWMRUY6.js.map +1 -0
- package/dist/{chunk-3DXPQ4YV.mjs → chunk-VYK4M2D6.mjs} +18 -6
- package/dist/chunk-VYK4M2D6.mjs.map +1 -0
- package/dist/{chunk-WEEXCPSE.mjs → chunk-WB4H6ZUW.mjs} +3 -3
- package/dist/chunk-WB4H6ZUW.mjs.map +1 -0
- package/dist/{chunk-GWNBVGDT.mjs → chunk-WM3AEJ2E.mjs} +6 -257
- package/dist/chunk-WM3AEJ2E.mjs.map +1 -0
- package/dist/{chunk-CX2GHCAI.mjs → chunk-X5GINUGI.mjs} +26 -81
- package/dist/chunk-X5GINUGI.mjs.map +1 -0
- package/dist/{chunk-DIF5VRL3.mjs → chunk-XB7GUEHZ.mjs} +14 -5
- package/dist/chunk-XB7GUEHZ.mjs.map +1 -0
- package/dist/{chunk-ZLYPALF3.js → chunk-XE5RGZ3B.js} +11 -11
- package/dist/chunk-XE5RGZ3B.js.map +1 -0
- package/dist/{chunk-WJ7IMUEJ.mjs → chunk-XNTIMVSL.mjs} +7 -7
- package/dist/chunk-XNTIMVSL.mjs.map +1 -0
- package/dist/{chunk-ZWQJSZEY.js → chunk-Y7WHUKJF.js} +28 -12
- package/dist/chunk-Y7WHUKJF.js.map +1 -0
- package/dist/{components/index.mjs → chunk-YIRPPMCN.mjs} +305 -785
- package/dist/chunk-YIRPPMCN.mjs.map +1 -0
- package/dist/{chunk-KH6RQ4J5.js → chunk-Z2SNB5LJ.js} +3 -3
- package/dist/chunk-Z2SNB5LJ.js.map +1 -0
- package/dist/{chunk-HJ6MH7J7.js → chunk-ZOP7YIVX.js} +17 -17
- package/dist/chunk-ZOP7YIVX.js.map +1 -0
- package/dist/{chunk-HJZHQW5R.mjs → chunk-ZUZLWHH5.mjs} +3 -3
- package/dist/chunk-ZUZLWHH5.mjs.map +1 -0
- package/dist/{ai → common/ai}/llm/core/index.d.mts +3 -3
- package/dist/{ai → common/ai}/llm/core/index.d.ts +3 -3
- package/dist/{ai/llm → common/ai/llm/core}/index.js +14 -14
- package/dist/{ai/llm → common/ai/llm/core}/index.mjs +3 -3
- package/dist/{ai → common/ai}/llm/electron/index.d.mts +3 -3
- package/dist/{ai/llm/web → common/ai/llm/electron}/index.d.ts +3 -3
- package/dist/common/ai/llm/electron/index.js +67 -0
- package/dist/common/ai/llm/electron/index.mjs +10 -0
- package/dist/{ai → common/ai}/llm/index.d.mts +2 -2
- package/dist/{ai → common/ai}/llm/index.d.ts +2 -2
- package/dist/{ai/llm/core → common/ai/llm}/index.js +13 -13
- package/dist/{ai/llm/core → common/ai/llm}/index.mjs +2 -2
- package/dist/{ai → common/ai}/llm/miniapp/index.d.mts +3 -3
- package/dist/{ai → common/ai}/llm/miniapp/index.d.ts +3 -3
- package/dist/{ai/llm/rn → common/ai/llm/miniapp}/index.js +16 -16
- package/dist/{ai/llm/rn → common/ai/llm/miniapp}/index.mjs +4 -4
- package/dist/{ai → common/ai}/llm/rn/index.d.mts +3 -3
- package/dist/{ai → common/ai}/llm/rn/index.d.ts +3 -3
- package/dist/{ai/llm/miniapp → common/ai/llm/rn}/index.js +16 -16
- package/dist/{ai/llm/miniapp → common/ai/llm/rn}/index.mjs +4 -4
- 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/{ai → common/ai}/llm/ui/web/index.d.mts +7 -7
- package/dist/{ai → common/ai}/llm/ui/web/index.d.ts +7 -7
- package/dist/common/ai/llm/ui/web/index.js +21 -0
- package/dist/common/ai/llm/ui/web/index.mjs +8 -0
- package/dist/{ai → common/ai}/llm/web/index.d.mts +3 -3
- package/dist/{ai/llm/electron → common/ai/llm/web}/index.d.ts +3 -3
- package/dist/common/ai/llm/web/index.js +66 -0
- package/dist/common/ai/llm/web/index.mjs +9 -0
- package/dist/{analytics → common/analytics}/index.d.mts +1 -1
- package/dist/{analytics → common/analytics}/index.d.ts +1 -1
- package/dist/{analytics → common/analytics}/index.js +79 -79
- package/dist/{analytics → common/analytics}/index.mjs +3 -3
- package/dist/{analytics → common/analytics}/server/index.js +2 -2
- package/dist/common/analytics/server/index.js.map +1 -0
- package/dist/{analytics → common/analytics}/server/index.mjs +2 -2
- package/dist/common/analytics/server/index.mjs.map +1 -0
- package/dist/{api → common/api}/index.d.mts +3 -3
- package/dist/{api → common/api}/index.d.ts +3 -3
- package/dist/common/api/index.js +21 -0
- package/dist/common/api/index.mjs +4 -0
- package/dist/common/auth/components/index.d.mts +9 -9
- package/dist/common/auth/components/index.d.ts +9 -9
- package/dist/common/auth/index.js +6 -6
- package/dist/common/auth/index.mjs +2 -2
- package/dist/common/auth/react/index.d.mts +3 -3
- package/dist/common/auth/react/index.d.ts +3 -3
- package/dist/common/auth/rn/index.d.mts +2 -2
- package/dist/common/auth/rn/index.d.ts +2 -2
- package/dist/common/auth/rn/index.js +2 -2
- package/dist/common/auth/rn/index.js.map +1 -1
- package/dist/common/auth/rn/index.mjs +1 -1
- package/dist/common/auth/rn/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/{config → common/config}/index.d.mts +1 -1
- package/dist/{config → common/config}/index.d.ts +1 -1
- package/dist/common/config/index.js +21 -0
- package/dist/common/config/index.mjs +4 -0
- package/dist/{config → common/config}/server/index.js +5 -5
- package/dist/common/config/server/index.js.map +1 -0
- package/dist/{config → common/config}/server/index.mjs +5 -5
- 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/{i18n → common/i18n}/index.d.mts +1 -1
- package/dist/{i18n → common/i18n}/index.d.ts +1 -1
- package/dist/{i18n → common/i18n}/index.js +18 -18
- package/dist/{i18n → common/i18n}/index.mjs +2 -2
- 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 +16 -16
- package/dist/common/index.d.ts +16 -16
- package/dist/common/index.js +75 -67
- package/dist/common/index.mjs +26 -26
- 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/{ossFile → common/ossFile}/index.d.mts +6 -6
- package/dist/{ossFile → common/ossFile}/index.d.ts +6 -6
- package/dist/{ossFile → common/ossFile}/index.js +26 -26
- package/dist/{ossFile → common/ossFile}/index.mjs +5 -5
- package/dist/{ossFile/server/index.d.ts → common/ossFile/server/index.d.mts} +7 -7
- package/dist/{ossFile/server/index.d.mts → common/ossFile/server/index.d.ts} +7 -7
- package/dist/{ossFile → common/ossFile}/server/index.js +60 -52
- package/dist/{ossFile → common/ossFile}/server/index.mjs +10 -10
- 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 -6
- package/dist/common/request/index.mjs +2 -3
- 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/{universalExport → common/universalExport}/index.d.mts +6 -86
- package/dist/{universalExport → common/universalExport}/index.d.ts +6 -86
- package/dist/{universalExport → common/universalExport}/index.js +67 -67
- package/dist/common/universalExport/index.mjs +5 -0
- package/dist/{universalExport → common/universalExport}/server/index.d.mts +3 -84
- package/dist/{universalExport → common/universalExport}/server/index.d.ts +3 -84
- package/dist/common/universalExport/server/index.js +151 -0
- package/dist/common/universalExport/server/index.mjs +6 -0
- package/dist/{universalFile/index.d.ts → common/universalFile/index.d.mts} +9 -9
- package/dist/{universalFile/index.d.mts → common/universalFile/index.d.ts} +9 -9
- package/dist/{universalFile → common/universalFile}/index.js +63 -63
- package/dist/common/universalFile/index.js.map +1 -0
- package/dist/{universalFile → common/universalFile}/index.mjs +4 -4
- package/dist/common/universalFile/index.mjs.map +1 -0
- package/dist/{universalFile → common/universalFile}/server/index.d.mts +5 -5
- package/dist/{universalFile → common/universalFile}/server/index.d.ts +5 -5
- package/dist/{universalFile → common/universalFile}/server/index.js +68 -68
- package/dist/{universalFile → common/universalFile}/server/index.mjs +8 -8
- 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-WrR57hKT.d.ts → index-BRLygK4h.d.ts} +2 -2
- package/dist/{request/index.d.mts → index-BWNK5mH2.d.ts} +19 -2
- package/dist/{utils/index.d.mts → index-BiCK6gg6.d.mts} +19 -1
- package/dist/{utils/index.d.ts → index-BiCK6gg6.d.ts} +19 -1
- package/dist/{index-DoUo8IrU.d.mts → index-BxZauNN_.d.mts} +8 -8
- package/dist/{index-DoUo8IrU.d.ts → index-BxZauNN_.d.ts} +8 -8
- package/dist/{request/index.d.ts → index-C-P2yBTH.d.mts} +19 -2
- package/dist/{index-D0cqaQEH.d.mts → index-CLB80GCP.d.mts} +5 -5
- package/dist/{index-D0cqaQEH.d.ts → index-CLB80GCP.d.ts} +5 -5
- package/dist/{index-2G9Dxjvt.d.ts → index-CT4K2z-O.d.ts} +2 -2
- package/dist/{index-qcOvRVuN.d.mts → index-D6RJTGce.d.mts} +2 -2
- package/dist/{storage/index.d.ts → index-DA7L9JlE.d.mts} +26 -3
- package/dist/{imageCrop/index.d.mts → index-DXVph21C.d.mts} +40 -4
- package/dist/{imageCrop/index.d.ts → index-DXVph21C.d.ts} +40 -4
- package/dist/{index-CYuUB8aF.d.mts → index-DzyK789B.d.mts} +2 -2
- package/dist/{logger/index.d.mts → index-FVJZCEtm.d.mts} +21 -1
- package/dist/{logger/index.d.ts → index-FVJZCEtm.d.ts} +21 -1
- package/dist/{storage/index.d.mts → index-nD9vPCZT.d.ts} +26 -3
- package/dist/{components/index.d.mts → index-nOmIv2BG.d.mts} +159 -5
- package/dist/{components/index.d.ts → index-nOmIv2BG.d.ts} +159 -5
- package/dist/{path-qjVnH8qU.d.ts → path-Bzc7hj1N.d.ts} +5 -1
- package/dist/{path-DkaHQSyW.d.mts → path-DN_65vhO.d.mts} +5 -1
- package/dist/{types-3ujSNAXb.d.mts → utils-Dm3O1rAa.d.mts} +81 -1
- package/dist/{types-3ujSNAXb.d.ts → utils-Dm3O1rAa.d.ts} +81 -1
- package/package.json +292 -312
- package/dist/AliyunOSSProvider-4GRL2FJB.js +0 -15
- package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs +0 -6
- 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-PFA2DMIJ.js +0 -15
- package/dist/UniversalFileService-CC4d3wkc.d.ts +0 -139
- package/dist/UniversalFileService-CzAE_G4V.d.mts +0 -139
- package/dist/ai/llm/electron/index.js +0 -66
- package/dist/ai/llm/electron/index.mjs +0 -9
- 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.js +0 -20
- package/dist/ai/llm/ui/web/index.mjs +0 -7
- package/dist/ai/llm/web/index.js +0 -65
- package/dist/ai/llm/web/index.mjs +0 -8
- package/dist/analytics/server/index.js.map +0 -1
- package/dist/analytics/server/index.mjs.map +0 -1
- 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/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.map +0 -1
- package/dist/chunk-2Y7BKFKZ.js +0 -37
- package/dist/chunk-3CSCIRQY.js +0 -17
- package/dist/chunk-3CSCIRQY.js.map +0 -1
- package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
- package/dist/chunk-3NHAT7D4.mjs.map +0 -1
- package/dist/chunk-4FDUURSD.js +0 -22
- package/dist/chunk-4FDUURSD.js.map +0 -1
- package/dist/chunk-4OOANEJV.mjs.map +0 -1
- 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-6PMXAK7F.js.map +0 -1
- package/dist/chunk-7B5SI4OF.mjs +0 -15
- package/dist/chunk-7B5SI4OF.mjs.map +0 -1
- package/dist/chunk-ACUFEDVQ.js.map +0 -1
- package/dist/chunk-AQPU2AXH.js.map +0 -1
- package/dist/chunk-ATUCZXJY.js.map +0 -1
- package/dist/chunk-BCE6RUZV.js.map +0 -1
- package/dist/chunk-BIHYZA67.mjs.map +0 -1
- package/dist/chunk-C6KV7VTZ.mjs.map +0 -1
- package/dist/chunk-CAYOQDBR.js.map +0 -1
- package/dist/chunk-CIVO4R6N.mjs.map +0 -1
- package/dist/chunk-CX2GHCAI.mjs.map +0 -1
- package/dist/chunk-DIF5VRL3.mjs.map +0 -1
- package/dist/chunk-EQXPL7TN.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-FIUBFREP.mjs.map +0 -1
- package/dist/chunk-FXQOXLDE.js.map +0 -1
- package/dist/chunk-G6HXNQ2U.mjs.map +0 -1
- package/dist/chunk-G6NSKJMH.js.map +0 -1
- package/dist/chunk-G7UBMCUT.mjs.map +0 -1
- package/dist/chunk-GSNGCENJ.js.map +0 -1
- package/dist/chunk-GWNBVGDT.mjs.map +0 -1
- package/dist/chunk-HDMIOOZY.mjs.map +0 -1
- package/dist/chunk-HJ6MH7J7.js.map +0 -1
- package/dist/chunk-HJZHQW5R.mjs.map +0 -1
- package/dist/chunk-I5ZPEDNR.mjs.map +0 -1
- package/dist/chunk-KH6RQ4J5.js.map +0 -1
- 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-MBANGIG3.mjs.map +0 -1
- 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.map +0 -1
- package/dist/chunk-Q5EDCKQA.js.map +0 -1
- package/dist/chunk-Q5VFBPMG.mjs.map +0 -1
- package/dist/chunk-QSKLQX6H.js.map +0 -1
- package/dist/chunk-QXAOXBVB.mjs.map +0 -1
- package/dist/chunk-R2DXTE2L.js.map +0 -1
- package/dist/chunk-RTD2WHQQ.mjs +0 -16
- package/dist/chunk-RTD2WHQQ.mjs.map +0 -1
- package/dist/chunk-S6YSGVWD.js.map +0 -1
- package/dist/chunk-SKFEJPMJ.mjs.map +0 -1
- package/dist/chunk-SLKOEYFH.js.map +0 -1
- package/dist/chunk-TC5YU6A4.mjs.map +0 -1
- 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.map +0 -1
- package/dist/chunk-VMTEDX5H.js.map +0 -1
- package/dist/chunk-VRN76M56.mjs +0 -3
- package/dist/chunk-VXFUXZN5.mjs +0 -20
- package/dist/chunk-VXFUXZN5.mjs.map +0 -1
- package/dist/chunk-WEEXCPSE.mjs.map +0 -1
- package/dist/chunk-WJ7IMUEJ.mjs.map +0 -1
- package/dist/chunk-WW4GE6CZ.js.map +0 -1
- package/dist/chunk-XJ7ZAGC5.js.map +0 -1
- package/dist/chunk-XUS5ACKR.mjs.map +0 -1
- package/dist/chunk-YOTQG4NP.mjs.map +0 -1
- package/dist/chunk-ZGVB35L2.mjs.map +0 -1
- package/dist/chunk-ZLYPALF3.js.map +0 -1
- package/dist/chunk-ZM2SZJTZ.js.map +0 -1
- package/dist/chunk-ZRAW3HXA.js.map +0 -1
- package/dist/chunk-ZWQJSZEY.js.map +0 -1
- package/dist/components/index.js +0 -2516
- package/dist/components/index.js.map +0 -1
- package/dist/components/index.mjs.map +0 -1
- package/dist/config/index.js +0 -21
- package/dist/config/index.mjs +0 -4
- package/dist/config/server/index.js.map +0 -1
- 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/imageCrop/index.js.map +0 -1
- package/dist/imageCrop/index.mjs.map +0 -1
- package/dist/index-Bjem5rWn.d.mts +0 -17
- package/dist/index-C5U-2hJq.d.ts +0 -23
- 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-oLUvfqT8.d.ts +0 -20
- package/dist/index-pe38RDgC.d.mts +0 -20
- package/dist/index.d.mts +0 -11611
- package/dist/index.d.ts +0 -11611
- package/dist/index.js +0 -17230
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -16954
- package/dist/index.mjs.map +0 -1
- 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/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.js +0 -22
- package/dist/request/index.mjs +0 -5
- 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/storage/index.js +0 -48
- package/dist/storage/index.mjs +0 -7
- 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-B6B210gX.d.mts +0 -270
- package/dist/types-B6B210gX.d.ts +0 -270
- package/dist/types-Bdnte5EN.d.mts +0 -292
- package/dist/types-Cs0CLvrH.d.mts +0 -70
- package/dist/types-Cs0CLvrH.d.ts +0 -70
- 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/universalExport/index.mjs +0 -5
- package/dist/universalExport/server/index.js +0 -123
- package/dist/universalExport/server/index.mjs +0 -6
- package/dist/universalFile/index.js.map +0 -1
- package/dist/universalFile/index.mjs.map +0 -1
- package/dist/universalFile/server/index.js.map +0 -1
- package/dist/universalFile/server/index.mjs.map +0 -1
- 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/{config → common/components}/index.js.map +0 -0
- /package/dist/{config → common/components}/index.mjs.map +0 -0
- /package/dist/{i18n → common/config}/index.js.map +0 -0
- /package/dist/{i18n → 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/{logger → common/i18n}/index.js.map +0 -0
- /package/dist/{logger → common/i18n}/index.mjs.map +0 -0
- /package/dist/{ossFile → common/imageCrop}/index.js.map +0 -0
- /package/dist/{ossFile → common/imageCrop}/index.mjs.map +0 -0
- /package/dist/{ossFile/server → common/ossFile}/index.js.map +0 -0
- /package/dist/{ossFile/server → common/ossFile}/index.mjs.map +0 -0
- /package/dist/{request → common/ossFile/server}/index.js.map +0 -0
- /package/dist/{request → common/ossFile/server}/index.mjs.map +0 -0
- /package/dist/{storage → common/universalExport}/index.js.map +0 -0
- /package/dist/{storage → common/universalExport}/index.mjs.map +0 -0
- /package/dist/{universalExport → common/universalExport/server}/index.js.map +0 -0
- /package/dist/{universalExport → common/universalExport/server}/index.mjs.map +0 -0
- /package/dist/{universalExport → common/universalFile}/server/index.js.map +0 -0
- /package/dist/{universalExport → common/universalFile}/server/index.mjs.map +0 -0
|
@@ -1,394 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var server = require('next/server');
|
|
4
|
-
var promises = require('fs/promises');
|
|
5
|
-
var path = require('path');
|
|
6
|
-
|
|
7
|
-
// src/qqbot/server/client.ts
|
|
8
|
-
var NapCatClient = class {
|
|
9
|
-
constructor(config) {
|
|
10
|
-
this.baseUrl = config.baseUrl.replace(/\/$/, "");
|
|
11
|
-
this.accessToken = config.accessToken;
|
|
12
|
-
this.timeoutMs = config.timeoutMs ?? 12e3;
|
|
13
|
-
}
|
|
14
|
-
async callApi(action, params) {
|
|
15
|
-
const controller = new AbortController();
|
|
16
|
-
const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
17
|
-
try {
|
|
18
|
-
const response = await fetch(`${this.baseUrl}/${action}`, {
|
|
19
|
-
method: "POST",
|
|
20
|
-
headers: {
|
|
21
|
-
"Content-Type": "application/json",
|
|
22
|
-
...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
|
|
23
|
-
},
|
|
24
|
-
body: JSON.stringify(params ?? {}),
|
|
25
|
-
signal: controller.signal
|
|
26
|
-
});
|
|
27
|
-
if (!response.ok) {
|
|
28
|
-
return {
|
|
29
|
-
status: "failed",
|
|
30
|
-
retcode: response.status,
|
|
31
|
-
message: `NapCat HTTP ${response.status}`
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
const payload = await response.json();
|
|
35
|
-
return payload;
|
|
36
|
-
} catch (error) {
|
|
37
|
-
return {
|
|
38
|
-
status: "failed",
|
|
39
|
-
retcode: -1,
|
|
40
|
-
message: error instanceof Error ? error.message : "Unknown NapCat request error"
|
|
41
|
-
};
|
|
42
|
-
} finally {
|
|
43
|
-
clearTimeout(timeout);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
async sendGroupMessage(payload) {
|
|
47
|
-
return this.callApi("send_group_msg", payload);
|
|
48
|
-
}
|
|
49
|
-
async sendPrivateMessage(payload) {
|
|
50
|
-
return this.callApi("send_private_msg", payload);
|
|
51
|
-
}
|
|
52
|
-
async getGroupList() {
|
|
53
|
-
return this.callApi("get_group_list");
|
|
54
|
-
}
|
|
55
|
-
async getFriendList() {
|
|
56
|
-
return this.callApi("get_friend_list");
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
// src/qqbot/server/webApi.ts
|
|
61
|
-
function json(status, body) {
|
|
62
|
-
return {
|
|
63
|
-
status,
|
|
64
|
-
headers: { "Content-Type": "application/json" },
|
|
65
|
-
body
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
function createNapCatWebApi(client, options = {}) {
|
|
69
|
-
return async function handle(request) {
|
|
70
|
-
const method = request.method.toUpperCase();
|
|
71
|
-
if (method === "GET" && request.path === "/health") {
|
|
72
|
-
return json(200, { ok: true, data: { service: "qqbot-napcat-bridge" } });
|
|
73
|
-
}
|
|
74
|
-
if (method === "POST" && request.path === "/send/group") {
|
|
75
|
-
const result = await client.sendGroupMessage(request.body ?? {});
|
|
76
|
-
return json(result.status === "ok" ? 200 : 502, {
|
|
77
|
-
ok: result.status === "ok",
|
|
78
|
-
data: result.data,
|
|
79
|
-
error: result.message
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
if (method === "POST" && request.path === "/send/private") {
|
|
83
|
-
const result = await client.sendPrivateMessage(request.body ?? {});
|
|
84
|
-
return json(result.status === "ok" ? 200 : 502, {
|
|
85
|
-
ok: result.status === "ok",
|
|
86
|
-
data: result.data,
|
|
87
|
-
error: result.message
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
if (method === "POST" && request.path === "/groups") {
|
|
91
|
-
const result = await client.getGroupList();
|
|
92
|
-
return json(result.status === "ok" ? 200 : 502, {
|
|
93
|
-
ok: result.status === "ok",
|
|
94
|
-
data: result.data,
|
|
95
|
-
error: result.message
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
if (method === "POST" && request.path === "/friends") {
|
|
99
|
-
const result = await client.getFriendList();
|
|
100
|
-
return json(result.status === "ok" ? 200 : 502, {
|
|
101
|
-
ok: result.status === "ok",
|
|
102
|
-
data: result.data,
|
|
103
|
-
error: result.message
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
if (method === "POST" && request.path.startsWith("/action/")) {
|
|
107
|
-
const action = request.path.replace("/action/", "");
|
|
108
|
-
const result = await client.callApi(action, request.body ?? {});
|
|
109
|
-
return json(result.status === "ok" ? 200 : 502, {
|
|
110
|
-
ok: result.status === "ok",
|
|
111
|
-
data: result.data,
|
|
112
|
-
error: result.message
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
if (method === "POST" && request.path === "/webhook/event") {
|
|
116
|
-
const event = request.body ?? {};
|
|
117
|
-
await options.onWebhookEvent?.(event);
|
|
118
|
-
return json(200, { ok: true });
|
|
119
|
-
}
|
|
120
|
-
return json(404, { ok: false, error: `Route not found: ${method} ${request.path}` });
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
function createNextNapCatRouteHandler(config) {
|
|
124
|
-
const basePath = config.basePath ?? "/api/qqbot";
|
|
125
|
-
const handle = createNapCatWebApi(config.client, {
|
|
126
|
-
onWebhookEvent: config.onWebhookEvent
|
|
127
|
-
});
|
|
128
|
-
return async function handler(request) {
|
|
129
|
-
const url = new URL(request.url);
|
|
130
|
-
const path = url.pathname.startsWith(basePath) ? url.pathname.slice(basePath.length) || "/" : url.pathname;
|
|
131
|
-
const body = request.method.toUpperCase() === "GET" ? void 0 : await request.json().catch(() => void 0);
|
|
132
|
-
const payload = {
|
|
133
|
-
method: request.method,
|
|
134
|
-
path,
|
|
135
|
-
body
|
|
136
|
-
};
|
|
137
|
-
const result = await handle(payload);
|
|
138
|
-
return server.NextResponse.json(result.body, { status: result.status, headers: result.headers });
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// src/qqbot/server/xhsMonitor/notifier.ts
|
|
143
|
-
function defaultMessageTemplate(payload) {
|
|
144
|
-
return [
|
|
145
|
-
`\u3010\u5C0F\u7EA2\u4E66\u65B0\u5E16\u63D0\u9192\u3011${payload.accountLabel}`,
|
|
146
|
-
payload.post.title ? `\u6807\u9898\uFF1A${payload.post.title}` : void 0,
|
|
147
|
-
`\u94FE\u63A5\uFF1A${payload.post.url}`,
|
|
148
|
-
`\u68C0\u6D4B\u65F6\u95F4\uFF1A${payload.detectedAt}`
|
|
149
|
-
].filter(Boolean).join("\n");
|
|
150
|
-
}
|
|
151
|
-
var XhsQqNotifier = class {
|
|
152
|
-
constructor(options) {
|
|
153
|
-
this.client = options.client;
|
|
154
|
-
this.target = options.target;
|
|
155
|
-
this.messageTemplate = options.messageTemplate ?? defaultMessageTemplate;
|
|
156
|
-
}
|
|
157
|
-
async notify(payload) {
|
|
158
|
-
const message = this.messageTemplate(payload);
|
|
159
|
-
const response = this.target.type === "group" ? await this.client.sendGroupMessage({
|
|
160
|
-
group_id: this.target.groupId,
|
|
161
|
-
message
|
|
162
|
-
}) : await this.client.sendPrivateMessage({
|
|
163
|
-
user_id: this.target.userId,
|
|
164
|
-
message
|
|
165
|
-
});
|
|
166
|
-
if (response.status !== "ok") {
|
|
167
|
-
throw new Error(`Failed to send QQ message: ${response.message ?? "Unknown error"}`);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
// src/qqbot/server/xhsMonitor/source.ts
|
|
173
|
-
function decodeHtmlEntities(input) {
|
|
174
|
-
return input.replace(/\\u003c/g, "<").replace(/\\u003e/g, ">").replace(/\\u0026/g, "&").replace(/\\"/g, '"').replace(/\\n/g, " ").trim();
|
|
175
|
-
}
|
|
176
|
-
function normalizeTitle(title) {
|
|
177
|
-
return decodeHtmlEntities(title).replace(/\s+/g, " ").trim();
|
|
178
|
-
}
|
|
179
|
-
var XhsProfileHtmlSource = class {
|
|
180
|
-
constructor(options) {
|
|
181
|
-
this.profileUrl = options.profileUrl;
|
|
182
|
-
this.timeoutMs = options.timeoutMs ?? 12e3;
|
|
183
|
-
this.userAgent = options.userAgent ?? "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0 Safari/537.36";
|
|
184
|
-
}
|
|
185
|
-
async fetchLatestPosts(limit = 20) {
|
|
186
|
-
const controller = new AbortController();
|
|
187
|
-
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
188
|
-
try {
|
|
189
|
-
const response = await fetch(this.profileUrl, {
|
|
190
|
-
method: "GET",
|
|
191
|
-
headers: {
|
|
192
|
-
"User-Agent": this.userAgent,
|
|
193
|
-
Accept: "text/html,application/xhtml+xml"
|
|
194
|
-
},
|
|
195
|
-
signal: controller.signal
|
|
196
|
-
});
|
|
197
|
-
if (!response.ok) {
|
|
198
|
-
throw new Error(`Failed to fetch profile page: HTTP ${response.status}`);
|
|
199
|
-
}
|
|
200
|
-
const html = await response.text();
|
|
201
|
-
return this.parsePostsFromHtml(html, limit);
|
|
202
|
-
} finally {
|
|
203
|
-
clearTimeout(timer);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
parsePostsFromHtml(html, limit) {
|
|
207
|
-
const idMatches = [...html.matchAll(/(?:\/explore\/|\"noteId\"\s*:\s*\")([a-zA-Z0-9_-]{8,32})/g)];
|
|
208
|
-
const titleMatches = [...html.matchAll(/\"displayTitle\"\s*:\s*\"([^"]{1,120})\"/g)];
|
|
209
|
-
const uniqueIds = [];
|
|
210
|
-
const seen = /* @__PURE__ */ new Set();
|
|
211
|
-
for (const match of idMatches) {
|
|
212
|
-
const id = match[1];
|
|
213
|
-
if (!id || seen.has(id)) {
|
|
214
|
-
continue;
|
|
215
|
-
}
|
|
216
|
-
seen.add(id);
|
|
217
|
-
uniqueIds.push(id);
|
|
218
|
-
if (uniqueIds.length >= limit) {
|
|
219
|
-
break;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
const titles = titleMatches.map((match) => normalizeTitle(match[1] ?? "")).filter(Boolean);
|
|
223
|
-
return uniqueIds.map((id, index) => ({
|
|
224
|
-
id,
|
|
225
|
-
url: `https://www.xiaohongshu.com/explore/${id}`,
|
|
226
|
-
title: titles[index]
|
|
227
|
-
}));
|
|
228
|
-
}
|
|
229
|
-
};
|
|
230
|
-
var DEFAULT_STATE = {
|
|
231
|
-
seenPostIds: [],
|
|
232
|
-
updatedAt: (/* @__PURE__ */ new Date(0)).toISOString()
|
|
233
|
-
};
|
|
234
|
-
var FileXhsMonitorStateStore = class {
|
|
235
|
-
constructor(options) {
|
|
236
|
-
this.filePath = options.filePath;
|
|
237
|
-
this.maxSeenPostIds = Math.max(10, options.maxSeenPostIds ?? 500);
|
|
238
|
-
}
|
|
239
|
-
async read() {
|
|
240
|
-
try {
|
|
241
|
-
const text = await promises.readFile(this.filePath, "utf8");
|
|
242
|
-
const parsed = JSON.parse(text);
|
|
243
|
-
const seenPostIds = Array.isArray(parsed.seenPostIds) ? parsed.seenPostIds.filter((item) => typeof item === "string") : [];
|
|
244
|
-
const updatedAt = typeof parsed.updatedAt === "string" ? parsed.updatedAt : (/* @__PURE__ */ new Date()).toISOString();
|
|
245
|
-
return {
|
|
246
|
-
seenPostIds: seenPostIds.slice(0, this.maxSeenPostIds),
|
|
247
|
-
updatedAt
|
|
248
|
-
};
|
|
249
|
-
} catch {
|
|
250
|
-
return DEFAULT_STATE;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
async write(state) {
|
|
254
|
-
await promises.mkdir(path.dirname(this.filePath), { recursive: true });
|
|
255
|
-
const compactState = {
|
|
256
|
-
seenPostIds: state.seenPostIds.slice(0, this.maxSeenPostIds),
|
|
257
|
-
updatedAt: state.updatedAt
|
|
258
|
-
};
|
|
259
|
-
await promises.writeFile(this.filePath, JSON.stringify(compactState, null, 2), "utf8");
|
|
260
|
-
}
|
|
261
|
-
};
|
|
262
|
-
|
|
263
|
-
// src/qqbot/server/xhsMonitor/service.ts
|
|
264
|
-
function sortPostsByPublishedAt(posts) {
|
|
265
|
-
return [...posts].sort((a, b) => {
|
|
266
|
-
const ta = a.publishedAt ? Date.parse(a.publishedAt) : Number.NaN;
|
|
267
|
-
const tb = b.publishedAt ? Date.parse(b.publishedAt) : Number.NaN;
|
|
268
|
-
if (Number.isNaN(ta) || Number.isNaN(tb)) {
|
|
269
|
-
return 0;
|
|
270
|
-
}
|
|
271
|
-
return ta - tb;
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
var XhsMonitorService = class {
|
|
275
|
-
constructor(options) {
|
|
276
|
-
this.timer = null;
|
|
277
|
-
this.initialized = false;
|
|
278
|
-
this.running = false;
|
|
279
|
-
this.accountLabel = options.accountLabel;
|
|
280
|
-
this.source = options.source;
|
|
281
|
-
this.notifier = options.notifier;
|
|
282
|
-
this.stateStore = options.stateStore;
|
|
283
|
-
this.pollIntervalMs = Math.max(5e3, options.pollIntervalMs);
|
|
284
|
-
this.skipInitialSnapshot = options.skipInitialSnapshot ?? true;
|
|
285
|
-
this.postLimit = options.postLimit ?? 20;
|
|
286
|
-
this.now = options.now ?? (() => /* @__PURE__ */ new Date());
|
|
287
|
-
}
|
|
288
|
-
async checkOnce() {
|
|
289
|
-
if (this.running) {
|
|
290
|
-
return { notifiedCount: 0, fetchedCount: 0 };
|
|
291
|
-
}
|
|
292
|
-
this.running = true;
|
|
293
|
-
try {
|
|
294
|
-
const state = await this.stateStore.read();
|
|
295
|
-
const seen = new Set(state.seenPostIds);
|
|
296
|
-
const posts = await this.source.fetchLatestPosts(this.postLimit);
|
|
297
|
-
const orderedPosts = sortPostsByPublishedAt(posts);
|
|
298
|
-
const newlyDetected = orderedPosts.filter((post) => !seen.has(post.id));
|
|
299
|
-
if (!this.initialized && this.skipInitialSnapshot) {
|
|
300
|
-
for (const post of orderedPosts) {
|
|
301
|
-
seen.add(post.id);
|
|
302
|
-
}
|
|
303
|
-
await this.persistSeenIds(seen);
|
|
304
|
-
this.initialized = true;
|
|
305
|
-
return { notifiedCount: 0, fetchedCount: posts.length };
|
|
306
|
-
}
|
|
307
|
-
let notifiedCount = 0;
|
|
308
|
-
for (const post of newlyDetected) {
|
|
309
|
-
await this.notifier.notify({
|
|
310
|
-
accountLabel: this.accountLabel,
|
|
311
|
-
post,
|
|
312
|
-
detectedAt: this.now().toISOString()
|
|
313
|
-
});
|
|
314
|
-
notifiedCount += 1;
|
|
315
|
-
seen.add(post.id);
|
|
316
|
-
}
|
|
317
|
-
if (newlyDetected.length > 0 || !this.initialized) {
|
|
318
|
-
for (const post of orderedPosts) {
|
|
319
|
-
seen.add(post.id);
|
|
320
|
-
}
|
|
321
|
-
await this.persistSeenIds(seen);
|
|
322
|
-
}
|
|
323
|
-
this.initialized = true;
|
|
324
|
-
return { notifiedCount, fetchedCount: posts.length };
|
|
325
|
-
} finally {
|
|
326
|
-
this.running = false;
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
start(immediate = true) {
|
|
330
|
-
if (this.timer) {
|
|
331
|
-
return;
|
|
332
|
-
}
|
|
333
|
-
const run = async () => {
|
|
334
|
-
try {
|
|
335
|
-
await this.checkOnce();
|
|
336
|
-
} catch (error) {
|
|
337
|
-
console.error("[XhsMonitorService] check failed", error);
|
|
338
|
-
}
|
|
339
|
-
};
|
|
340
|
-
if (immediate) {
|
|
341
|
-
void run();
|
|
342
|
-
}
|
|
343
|
-
this.timer = setInterval(() => {
|
|
344
|
-
void run();
|
|
345
|
-
}, this.pollIntervalMs);
|
|
346
|
-
}
|
|
347
|
-
stop() {
|
|
348
|
-
if (this.timer) {
|
|
349
|
-
clearInterval(this.timer);
|
|
350
|
-
this.timer = null;
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
async persistSeenIds(seenIds) {
|
|
354
|
-
await this.stateStore.write({
|
|
355
|
-
seenPostIds: Array.from(seenIds).slice(-500),
|
|
356
|
-
updatedAt: this.now().toISOString()
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
};
|
|
360
|
-
|
|
361
|
-
// src/qqbot/server/xhsMonitor/app.ts
|
|
362
|
-
function createXhsMonitorApp(options) {
|
|
363
|
-
const client = new NapCatClient(options.napCat);
|
|
364
|
-
const source = new XhsProfileHtmlSource({
|
|
365
|
-
profileUrl: options.profileUrl
|
|
366
|
-
});
|
|
367
|
-
const stateStore = new FileXhsMonitorStateStore({
|
|
368
|
-
filePath: options.stateFilePath
|
|
369
|
-
});
|
|
370
|
-
const notifier = new XhsQqNotifier({
|
|
371
|
-
client,
|
|
372
|
-
target: options.target
|
|
373
|
-
});
|
|
374
|
-
return new XhsMonitorService({
|
|
375
|
-
accountLabel: options.accountLabel,
|
|
376
|
-
source,
|
|
377
|
-
notifier,
|
|
378
|
-
stateStore,
|
|
379
|
-
pollIntervalMs: options.pollIntervalMs,
|
|
380
|
-
skipInitialSnapshot: options.skipInitialSnapshot,
|
|
381
|
-
postLimit: options.postLimit
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
exports.FileXhsMonitorStateStore = FileXhsMonitorStateStore;
|
|
386
|
-
exports.NapCatClient = NapCatClient;
|
|
387
|
-
exports.XhsMonitorService = XhsMonitorService;
|
|
388
|
-
exports.XhsProfileHtmlSource = XhsProfileHtmlSource;
|
|
389
|
-
exports.XhsQqNotifier = XhsQqNotifier;
|
|
390
|
-
exports.createNapCatWebApi = createNapCatWebApi;
|
|
391
|
-
exports.createNextNapCatRouteHandler = createNextNapCatRouteHandler;
|
|
392
|
-
exports.createXhsMonitorApp = createXhsMonitorApp;
|
|
393
|
-
//# sourceMappingURL=index.js.map
|
|
394
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/qqbot/server/client.ts","../../../src/qqbot/server/webApi.ts","../../../src/qqbot/server/nextRouteAdapter.ts","../../../src/qqbot/server/xhsMonitor/notifier.ts","../../../src/qqbot/server/xhsMonitor/source.ts","../../../src/qqbot/server/xhsMonitor/stateStore.ts","../../../src/qqbot/server/xhsMonitor/service.ts","../../../src/qqbot/server/xhsMonitor/app.ts"],"names":["NextResponse","readFile","mkdir","dirname","writeFile"],"mappings":"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","file":"index.js","sourcesContent":["import {\n NapCatConfig,\n OneBotActionResponse,\n OneBotFriendInfo,\n OneBotGroupInfo,\n SendGroupMessagePayload,\n SendPrivateMessagePayload,\n} from '../types';\n\nexport class NapCatClient {\n private readonly baseUrl: string;\n private readonly accessToken?: string;\n private readonly timeoutMs: number;\n\n constructor(config: NapCatConfig) {\n this.baseUrl = config.baseUrl.replace(/\\/$/, '');\n this.accessToken = config.accessToken;\n this.timeoutMs = config.timeoutMs ?? 12000;\n }\n\n async callApi<TData = unknown>(action: string, params?: Record<string, unknown>): Promise<OneBotActionResponse<TData>> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.timeoutMs);\n\n try {\n const response = await fetch(`${this.baseUrl}/${action}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}),\n },\n body: JSON.stringify(params ?? {}),\n signal: controller.signal,\n });\n\n if (!response.ok) {\n return {\n status: 'failed',\n retcode: response.status,\n message: `NapCat HTTP ${response.status}`,\n };\n }\n\n const payload = (await response.json()) as OneBotActionResponse<TData>;\n return payload;\n } catch (error) {\n return {\n status: 'failed',\n retcode: -1,\n message: error instanceof Error ? error.message : 'Unknown NapCat request error',\n };\n } finally {\n clearTimeout(timeout);\n }\n }\n\n async sendGroupMessage(payload: SendGroupMessagePayload) {\n return this.callApi<{ message_id: number }>('send_group_msg', payload as unknown as Record<string, unknown>);\n }\n\n async sendPrivateMessage(payload: SendPrivateMessagePayload) {\n return this.callApi<{ message_id: number }>('send_private_msg', payload as unknown as Record<string, unknown>);\n }\n\n async getGroupList() {\n return this.callApi<OneBotGroupInfo[]>('get_group_list');\n }\n\n async getFriendList() {\n return this.callApi<OneBotFriendInfo[]>('get_friend_list');\n }\n}\n","import { NapCatWebhookEvent, NapCatWebApiResponse } from '../types';\nimport { NapCatClient } from './client';\n\nexport interface HttpLikeRequest {\n method: string;\n path: string;\n body?: unknown;\n}\n\nexport interface HttpLikeResponse {\n status: number;\n headers?: Record<string, string>;\n body: NapCatWebApiResponse<unknown>;\n}\n\nexport interface NapCatWebApiOptions {\n onWebhookEvent?: (event: NapCatWebhookEvent) => Promise<void> | void;\n}\n\nfunction json(status: number, body: NapCatWebApiResponse<unknown>): HttpLikeResponse {\n return {\n status,\n headers: { 'Content-Type': 'application/json' },\n body,\n };\n}\n\nexport function createNapCatWebApi(client: NapCatClient, options: NapCatWebApiOptions = {}) {\n return async function handle(request: HttpLikeRequest): Promise<HttpLikeResponse> {\n const method = request.method.toUpperCase();\n\n if (method === 'GET' && request.path === '/health') {\n return json(200, { ok: true, data: { service: 'qqbot-napcat-bridge' } });\n }\n\n if (method === 'POST' && request.path === '/send/group') {\n const result = await client.sendGroupMessage((request.body ?? {}) as any);\n return json(result.status === 'ok' ? 200 : 502, {\n ok: result.status === 'ok',\n data: result.data,\n error: result.message,\n });\n }\n\n if (method === 'POST' && request.path === '/send/private') {\n const result = await client.sendPrivateMessage((request.body ?? {}) as any);\n return json(result.status === 'ok' ? 200 : 502, {\n ok: result.status === 'ok',\n data: result.data,\n error: result.message,\n });\n }\n\n if (method === 'POST' && request.path === '/groups') {\n const result = await client.getGroupList();\n return json(result.status === 'ok' ? 200 : 502, {\n ok: result.status === 'ok',\n data: result.data,\n error: result.message,\n });\n }\n\n if (method === 'POST' && request.path === '/friends') {\n const result = await client.getFriendList();\n return json(result.status === 'ok' ? 200 : 502, {\n ok: result.status === 'ok',\n data: result.data,\n error: result.message,\n });\n }\n\n if (method === 'POST' && request.path.startsWith('/action/')) {\n const action = request.path.replace('/action/', '');\n const result = await client.callApi(action, (request.body ?? {}) as Record<string, unknown>);\n return json(result.status === 'ok' ? 200 : 502, {\n ok: result.status === 'ok',\n data: result.data,\n error: result.message,\n });\n }\n\n if (method === 'POST' && request.path === '/webhook/event') {\n const event = (request.body ?? {}) as NapCatWebhookEvent;\n await options.onWebhookEvent?.(event);\n return json(200, { ok: true });\n }\n\n return json(404, { ok: false, error: `Route not found: ${method} ${request.path}` });\n };\n}\n","import { NextRequest, NextResponse } from 'next/server';\nimport { HttpLikeRequest, createNapCatWebApi } from './webApi';\nimport { NapCatClient } from './client';\n\nexport interface NextNapCatRouteConfig {\n client: NapCatClient;\n basePath?: string;\n onWebhookEvent?: (event: Record<string, unknown>) => Promise<void> | void;\n}\n\nexport function createNextNapCatRouteHandler(config: NextNapCatRouteConfig) {\n const basePath = config.basePath ?? '/api/qqbot';\n const handle = createNapCatWebApi(config.client, {\n onWebhookEvent: config.onWebhookEvent,\n });\n\n return async function handler(request: NextRequest) {\n const url = new URL(request.url);\n const path = url.pathname.startsWith(basePath) ? url.pathname.slice(basePath.length) || '/' : url.pathname;\n\n const body = request.method.toUpperCase() === 'GET' ? undefined : await request.json().catch(() => undefined);\n\n const payload: HttpLikeRequest = {\n method: request.method,\n path,\n body,\n };\n\n const result = await handle(payload);\n return NextResponse.json(result.body, { status: result.status, headers: result.headers });\n };\n}\n","import { NapCatClient } from '../client';\nimport { XhsNotificationPayload, XhsNotifier } from './types';\n\nexport interface XhsQqNotifierOptions {\n client: NapCatClient;\n target: { type: 'group'; groupId: number } | { type: 'private'; userId: number };\n messageTemplate?: (payload: XhsNotificationPayload) => string;\n}\n\nfunction defaultMessageTemplate(payload: XhsNotificationPayload): string {\n return [\n `【小红书新帖提醒】${payload.accountLabel}`,\n payload.post.title ? `标题:${payload.post.title}` : undefined,\n `链接:${payload.post.url}`,\n `检测时间:${payload.detectedAt}`,\n ]\n .filter(Boolean)\n .join('\\n');\n}\n\nexport class XhsQqNotifier implements XhsNotifier {\n private readonly client: NapCatClient;\n private readonly target: XhsQqNotifierOptions['target'];\n private readonly messageTemplate: (payload: XhsNotificationPayload) => string;\n\n constructor(options: XhsQqNotifierOptions) {\n this.client = options.client;\n this.target = options.target;\n this.messageTemplate = options.messageTemplate ?? defaultMessageTemplate;\n }\n\n async notify(payload: XhsNotificationPayload): Promise<void> {\n const message = this.messageTemplate(payload);\n const response =\n this.target.type === 'group'\n ? await this.client.sendGroupMessage({\n group_id: this.target.groupId,\n message,\n })\n : await this.client.sendPrivateMessage({\n user_id: this.target.userId,\n message,\n });\n\n if (response.status !== 'ok') {\n throw new Error(`Failed to send QQ message: ${response.message ?? 'Unknown error'}`);\n }\n }\n}\n","import { XhsPost, XhsSource } from './types';\n\nexport interface XhsProfileHtmlSourceOptions {\n profileUrl: string;\n timeoutMs?: number;\n userAgent?: string;\n}\n\nfunction decodeHtmlEntities(input: string): string {\n return input\n .replace(/\\\\u003c/g, '<')\n .replace(/\\\\u003e/g, '>')\n .replace(/\\\\u0026/g, '&')\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\n/g, ' ')\n .trim();\n}\n\nfunction normalizeTitle(title: string): string {\n return decodeHtmlEntities(title).replace(/\\s+/g, ' ').trim();\n}\n\nexport class XhsProfileHtmlSource implements XhsSource {\n private readonly profileUrl: string;\n private readonly timeoutMs: number;\n private readonly userAgent: string;\n\n constructor(options: XhsProfileHtmlSourceOptions) {\n this.profileUrl = options.profileUrl;\n this.timeoutMs = options.timeoutMs ?? 12000;\n this.userAgent =\n options.userAgent ??\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0 Safari/537.36';\n }\n\n async fetchLatestPosts(limit = 20): Promise<XhsPost[]> {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), this.timeoutMs);\n\n try {\n const response = await fetch(this.profileUrl, {\n method: 'GET',\n headers: {\n 'User-Agent': this.userAgent,\n Accept: 'text/html,application/xhtml+xml',\n },\n signal: controller.signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch profile page: HTTP ${response.status}`);\n }\n\n const html = await response.text();\n return this.parsePostsFromHtml(html, limit);\n } finally {\n clearTimeout(timer);\n }\n }\n\n private parsePostsFromHtml(html: string, limit: number): XhsPost[] {\n const idMatches = [...html.matchAll(/(?:\\/explore\\/|\\\"noteId\\\"\\s*:\\s*\\\")([a-zA-Z0-9_-]{8,32})/g)];\n const titleMatches = [...html.matchAll(/\\\"displayTitle\\\"\\s*:\\s*\\\"([^\"]{1,120})\\\"/g)];\n\n const uniqueIds: string[] = [];\n const seen = new Set<string>();\n for (const match of idMatches) {\n const id = match[1];\n if (!id || seen.has(id)) {\n continue;\n }\n seen.add(id);\n uniqueIds.push(id);\n if (uniqueIds.length >= limit) {\n break;\n }\n }\n\n const titles = titleMatches.map((match) => normalizeTitle(match[1] ?? '')).filter(Boolean);\n\n return uniqueIds.map((id, index) => ({\n id,\n url: `https://www.xiaohongshu.com/explore/${id}`,\n title: titles[index],\n }));\n }\n}\n","import { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport { XhsMonitorState, XhsMonitorStateStore } from './types';\n\nconst DEFAULT_STATE: XhsMonitorState = {\n seenPostIds: [],\n updatedAt: new Date(0).toISOString(),\n};\n\nexport interface FileXhsMonitorStateStoreOptions {\n filePath: string;\n maxSeenPostIds?: number;\n}\n\nexport class FileXhsMonitorStateStore implements XhsMonitorStateStore {\n private readonly filePath: string;\n private readonly maxSeenPostIds: number;\n\n constructor(options: FileXhsMonitorStateStoreOptions) {\n this.filePath = options.filePath;\n this.maxSeenPostIds = Math.max(10, options.maxSeenPostIds ?? 500);\n }\n\n async read(): Promise<XhsMonitorState> {\n try {\n const text = await readFile(this.filePath, 'utf8');\n const parsed = JSON.parse(text) as Partial<XhsMonitorState>;\n const seenPostIds = Array.isArray(parsed.seenPostIds)\n ? parsed.seenPostIds.filter((item): item is string => typeof item === 'string')\n : [];\n const updatedAt = typeof parsed.updatedAt === 'string' ? parsed.updatedAt : new Date().toISOString();\n return {\n seenPostIds: seenPostIds.slice(0, this.maxSeenPostIds),\n updatedAt,\n };\n } catch {\n return DEFAULT_STATE;\n }\n }\n\n async write(state: XhsMonitorState): Promise<void> {\n await mkdir(dirname(this.filePath), { recursive: true });\n const compactState: XhsMonitorState = {\n seenPostIds: state.seenPostIds.slice(0, this.maxSeenPostIds),\n updatedAt: state.updatedAt,\n };\n await writeFile(this.filePath, JSON.stringify(compactState, null, 2), 'utf8');\n }\n}\n","import { XhsMonitorStateStore, XhsNotifier, XhsPost, XhsSource } from './types';\n\nexport interface XhsMonitorServiceOptions {\n accountLabel: string;\n source: XhsSource;\n notifier: XhsNotifier;\n stateStore: XhsMonitorStateStore;\n pollIntervalMs: number;\n skipInitialSnapshot?: boolean;\n postLimit?: number;\n now?: () => Date;\n}\n\nfunction sortPostsByPublishedAt(posts: XhsPost[]): XhsPost[] {\n return [...posts].sort((a, b) => {\n const ta = a.publishedAt ? Date.parse(a.publishedAt) : Number.NaN;\n const tb = b.publishedAt ? Date.parse(b.publishedAt) : Number.NaN;\n if (Number.isNaN(ta) || Number.isNaN(tb)) {\n return 0;\n }\n return ta - tb;\n });\n}\n\nexport class XhsMonitorService {\n private readonly accountLabel: string;\n private readonly source: XhsSource;\n private readonly notifier: XhsNotifier;\n private readonly stateStore: XhsMonitorStateStore;\n private readonly pollIntervalMs: number;\n private readonly skipInitialSnapshot: boolean;\n private readonly postLimit: number;\n private readonly now: () => Date;\n private timer: NodeJS.Timeout | null = null;\n private initialized = false;\n private running = false;\n\n constructor(options: XhsMonitorServiceOptions) {\n this.accountLabel = options.accountLabel;\n this.source = options.source;\n this.notifier = options.notifier;\n this.stateStore = options.stateStore;\n this.pollIntervalMs = Math.max(5000, options.pollIntervalMs);\n this.skipInitialSnapshot = options.skipInitialSnapshot ?? true;\n this.postLimit = options.postLimit ?? 20;\n this.now = options.now ?? (() => new Date());\n }\n\n async checkOnce(): Promise<{ notifiedCount: number; fetchedCount: number }> {\n if (this.running) {\n return { notifiedCount: 0, fetchedCount: 0 };\n }\n\n this.running = true;\n try {\n const state = await this.stateStore.read();\n const seen = new Set(state.seenPostIds);\n const posts = await this.source.fetchLatestPosts(this.postLimit);\n const orderedPosts = sortPostsByPublishedAt(posts);\n const newlyDetected = orderedPosts.filter((post) => !seen.has(post.id));\n\n if (!this.initialized && this.skipInitialSnapshot) {\n for (const post of orderedPosts) {\n seen.add(post.id);\n }\n await this.persistSeenIds(seen);\n this.initialized = true;\n return { notifiedCount: 0, fetchedCount: posts.length };\n }\n\n let notifiedCount = 0;\n for (const post of newlyDetected) {\n await this.notifier.notify({\n accountLabel: this.accountLabel,\n post,\n detectedAt: this.now().toISOString(),\n });\n notifiedCount += 1;\n seen.add(post.id);\n }\n\n if (newlyDetected.length > 0 || !this.initialized) {\n for (const post of orderedPosts) {\n seen.add(post.id);\n }\n await this.persistSeenIds(seen);\n }\n\n this.initialized = true;\n return { notifiedCount, fetchedCount: posts.length };\n } finally {\n this.running = false;\n }\n }\n\n start(immediate = true): void {\n if (this.timer) {\n return;\n }\n\n const run = async () => {\n try {\n await this.checkOnce();\n } catch (error) {\n console.error('[XhsMonitorService] check failed', error);\n }\n };\n\n if (immediate) {\n void run();\n }\n\n this.timer = setInterval(() => {\n void run();\n }, this.pollIntervalMs);\n }\n\n stop(): void {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n }\n\n private async persistSeenIds(seenIds: Set<string>): Promise<void> {\n await this.stateStore.write({\n seenPostIds: Array.from(seenIds).slice(-500),\n updatedAt: this.now().toISOString(),\n });\n }\n}\n","import { NapCatClient } from '../client';\nimport { XhsQqNotifier } from './notifier';\nimport { XhsProfileHtmlSource } from './source';\nimport { FileXhsMonitorStateStore } from './stateStore';\nimport { XhsMonitorService } from './service';\n\nexport interface CreateXhsMonitorAppOptions {\n accountLabel: string;\n profileUrl: string;\n pollIntervalMs: number;\n stateFilePath: string;\n napCat: {\n baseUrl: string;\n accessToken?: string;\n timeoutMs?: number;\n };\n target: { type: 'group'; groupId: number } | { type: 'private'; userId: number };\n skipInitialSnapshot?: boolean;\n postLimit?: number;\n}\n\nexport function createXhsMonitorApp(options: CreateXhsMonitorAppOptions): XhsMonitorService {\n const client = new NapCatClient(options.napCat);\n const source = new XhsProfileHtmlSource({\n profileUrl: options.profileUrl,\n });\n const stateStore = new FileXhsMonitorStateStore({\n filePath: options.stateFilePath,\n });\n const notifier = new XhsQqNotifier({\n client,\n target: options.target,\n });\n\n return new XhsMonitorService({\n accountLabel: options.accountLabel,\n source,\n notifier,\n stateStore,\n pollIntervalMs: options.pollIntervalMs,\n skipInitialSnapshot: options.skipInitialSnapshot,\n postLimit: options.postLimit,\n });\n}\n"]}
|