@qwen-code/qwen-code 0.19.2 → 0.19.3
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/bundled/extension-creator/SKILL.md +357 -0
- package/bundled/loop/SKILL.md +12 -7
- package/bundled/loop/SKILL.test.ts +32 -0
- package/bundled/qc-helper/SKILL.md +14 -14
- package/bundled/qc-helper/docs/configuration/auth.md +11 -11
- package/bundled/qc-helper/docs/configuration/model-providers.md +13 -13
- package/bundled/qc-helper/docs/configuration/settings.md +60 -60
- package/bundled/qc-helper/docs/features/commands.md +108 -77
- package/bundled/qc-helper/docs/features/memory.md +52 -0
- package/bundled/qc-helper/docs/qwen-serve.md +24 -2
- package/bundled/qc-helper/docs/support/tos-privacy.md +16 -3
- package/chunks/{MaxSizedBox-7RERNLFK.js → MaxSizedBox-QNF3EIGU.js} +29 -30
- package/chunks/{StandaloneSessionPicker-S22XBSN6.js → StandaloneSessionPicker-Z52JTYST.js} +42 -40
- package/chunks/{acpAgent-4MCETHF2.js → acpAgent-7RZUOWOM.js} +406 -118
- package/chunks/{agent-K3ENVYSB.js → agent-4FG7WTHJ.js} +24 -26
- package/chunks/{agent-headless-HO3V3A3A.js → agent-headless-RQ5BTX3G.js} +24 -26
- package/chunks/{anthropicContentGenerator-E3TQ5XJJ.js → anthropicContentGenerator-PFITVL7Y.js} +31 -13
- package/chunks/{artifact-tool-QA4KRO3B.js → artifact-tool-D2X7G3C3.js} +2 -2
- package/chunks/{askUserQuestion-HMWXW6VN.js → askUserQuestion-UGETICJQ.js} +2 -2
- package/chunks/{bridge-4LV2HBH2.js → bridge-JL2PMCIW.js} +29 -32
- package/chunks/{ca-7WC7ELX6.js → ca-IUFWESZL.js} +1 -0
- package/chunks/{chunk-3UALQ56H.js → chunk-3227DZO4.js} +1 -1
- package/chunks/{chunk-JTYRZODB.js → chunk-3TV3HUWZ.js} +16 -7
- package/chunks/{chunk-NYOHZYHM.js → chunk-4LUZAKMK.js} +45 -3
- package/chunks/{chunk-EL5IHQON.js → chunk-4QK3O43S.js} +6 -27
- package/chunks/chunk-5GOVVXEV.js +73 -0
- package/chunks/{chunk-R36VMVEP.js → chunk-6V4NZFUS.js} +5 -5
- package/chunks/{chunk-XKBP7M7A.js → chunk-ADCIHOQZ.js} +138 -28
- package/chunks/chunk-BC3C4F3Q.js +40 -0
- package/chunks/{chunk-CGEGHF2C.js → chunk-BKXBARJZ.js} +1 -1
- package/chunks/chunk-BMFMJINR.js +45 -0
- package/chunks/chunk-BTLJ2MF5.js +690 -0
- package/chunks/{chunk-OIC6S73E.js → chunk-BUUQ5HPX.js} +1 -1
- package/chunks/{chunk-2BIF2NVV.js → chunk-BVSVIN45.js} +2 -2
- package/chunks/{chunk-JXQ23SNT.js → chunk-BW4KCQFD.js} +54 -2
- package/chunks/{chunk-TOEGRAVX.js → chunk-BX5YO7UW.js} +17 -5
- package/chunks/{chunk-5RVSM6NW.js → chunk-BXSHL2SF.js} +1 -1
- package/chunks/{chunk-UN3C6GOR.js → chunk-CF6BB3LT.js} +0 -107
- package/chunks/{chunk-Z7XXFPGP.js → chunk-CKQA6AWF.js} +1 -1
- package/chunks/{chunk-I2RFAW6Q.js → chunk-CNLEDYE3.js} +7 -5
- package/chunks/{chunk-PRYMDRBV.js → chunk-DDMOU62Q.js} +1 -1
- package/chunks/chunk-EDMZZFDU.js +11213 -0
- package/chunks/{chunk-IRJWHZWU.js → chunk-EJYJYJZ2.js} +70 -3
- package/chunks/{chunk-OQHQHJRK.js → chunk-F3ZYSEY6.js} +151 -4775
- package/chunks/chunk-FKAVULLM.js +4909 -0
- package/chunks/{chunk-TZM5JIAX.js → chunk-FNJ7BDPH.js} +6 -6
- package/chunks/{chunk-EXMX5YHG.js → chunk-FXKVLFFY.js} +1 -1
- package/chunks/{chunk-EX4W6ZYG.js → chunk-GGBIN5K7.js} +1 -1
- package/chunks/{chunk-BS64PXY3.js → chunk-GT2FGICD.js} +1 -1
- package/chunks/{chunk-HG6YKEBI.js → chunk-HPZTOP4I.js} +75 -23
- package/chunks/{chunk-OTBK43JR.js → chunk-HYCC3XM3.js} +1 -1
- package/chunks/{chunk-3QFE4OTE.js → chunk-HZT4UCFB.js} +4 -4
- package/chunks/{chunk-GYZQA2FO.js → chunk-I2LYBGNI.js} +1 -1
- package/chunks/{chunk-TMBPDHXD.js → chunk-I4H7PRWQ.js} +1 -1
- package/chunks/{chunk-2BAQ3ACS.js → chunk-J33ZR6OJ.js} +404 -4
- package/chunks/{chunk-4W4T77MO.js → chunk-J7FA27RO.js} +109 -6
- package/chunks/{chunk-S566HKUS.js → chunk-JE5FVRPC.js} +38 -7
- package/chunks/{chunk-CGOMICBE.js → chunk-JJXWTVSK.js} +1 -1
- package/chunks/{chunk-EEEZIVFJ.js → chunk-JOLIREYR.js} +1 -1
- package/chunks/{chunk-DBZUXSSV.js → chunk-JVHEVCAU.js} +5 -5
- package/chunks/chunk-K5XU6E4T.js +167 -0
- package/chunks/{chunk-EW6C27XX.js → chunk-KMGMKW5Q.js} +1 -1
- package/chunks/{chunk-D5E5TMYH.js → chunk-L7OKCI7T.js} +4 -2
- package/chunks/{chunk-ZUAXI2OA.js → chunk-M2U5NM24.js} +188 -11366
- package/chunks/{chunk-CI5O6SQL.js → chunk-MNF6S5PR.js} +4 -4
- package/chunks/{chunk-FPACXT7T.js → chunk-N4EJFBN5.js} +421 -163
- package/chunks/chunk-NDOC6M5S.js +481 -0
- package/chunks/{chunk-HGNSRCRB.js → chunk-NL4C3H6C.js} +1 -1
- package/chunks/{chunk-GZCJS5WH.js → chunk-O2VBQ3Y2.js} +2 -2
- package/chunks/{chunk-VQRYPFCV.js → chunk-O75BHFQW.js} +10 -460
- package/chunks/{chunk-WGAEWQTF.js → chunk-ODLIHNOY.js} +1 -2
- package/chunks/{chunk-J6AW7O5D.js → chunk-PDE7CSDS.js} +2 -2
- package/chunks/{chunk-5R4SBCX6.js → chunk-PR32FRT6.js} +3 -3
- package/chunks/{chunk-LLFFKXZZ.js → chunk-QE6KJYLT.js} +56 -29
- package/chunks/{chunk-3RJ3ZPPR.js → chunk-QI7GOGJR.js} +7 -7
- package/chunks/{chunk-XU5P23GN.js → chunk-QLDPRILK.js} +3 -3
- package/chunks/{chunk-WA5OJGFL.js → chunk-QNKBEJO2.js} +359 -76
- package/chunks/{chunk-UAARVVBI.js → chunk-QWFNTRH4.js} +1 -1
- package/chunks/chunk-QYUE6W3T.js +123 -0
- package/chunks/{chunk-5JZLXFPD.js → chunk-R5OP2ATH.js} +11 -11
- package/chunks/{chunk-BNXANYLH.js → chunk-RD6YJJJ6.js} +81 -1
- package/chunks/{chunk-2TJ3YN6Q.js → chunk-RRFZXMYP.js} +380 -400
- package/chunks/{chunk-ZN5T4BHI.js → chunk-RYLJU2DY.js} +1 -1
- package/chunks/{chunk-ZD3NW5KL.js → chunk-S7AKE7HL.js} +3 -3
- package/chunks/{chunk-BG4BIP7F.js → chunk-SBBN4BWR.js} +4 -2
- package/chunks/{chunk-T2VDEFUU.js → chunk-SKQZZVAV.js} +2 -2
- package/chunks/{chunk-USGMPVOY.js → chunk-SLNKLLEO.js} +14 -9
- package/chunks/chunk-SMXULRAN.js +37 -0
- package/chunks/{chunk-PF523XJX.js → chunk-SMYQZVZ3.js} +1 -1
- package/chunks/{chunk-I5T6PIBQ.js → chunk-STUWFKGD.js} +1001 -887
- package/chunks/{chunk-UAARJR2G.js → chunk-T4T2FNV4.js} +2 -2
- package/chunks/{chunk-F6XNTYNE.js → chunk-U3KSMM7G.js} +8 -4
- package/chunks/chunk-UFLGERMB.js +813 -0
- package/chunks/{chunk-BGUDAULQ.js → chunk-UO5GVXQE.js} +5 -5
- package/chunks/{chunk-C4K3FEQ2.js → chunk-UX4SGCGN.js} +32 -3
- package/chunks/{chunk-RS4HRC75.js → chunk-UYT3MWEB.js} +85 -8
- package/chunks/{chunk-VYFMN7C6.js → chunk-VBZ452JT.js} +113 -24
- package/chunks/{chunk-KBXLIVWQ.js → chunk-VVLOGDB6.js} +2 -2
- package/chunks/{chunk-TXVGVZYR.js → chunk-XJYUPHRC.js} +3 -3
- package/chunks/{chunk-2JD55C6G.js → chunk-Y6YMRS3U.js} +2 -2
- package/chunks/{chunk-PXFFKNCO.js → chunk-YAINVQ3Q.js} +2961 -1349
- package/chunks/{chunk-X6EDWN44.js → chunk-ZP6UKOPB.js} +1 -1
- package/chunks/{computer-use-6BBRNT6S.js → computer-use-JGB36FDW.js} +103 -52
- package/chunks/{contextCommand-UJAJ6N57.js → contextCommand-WYU6OQ2F.js} +26 -28
- package/chunks/{cron-create-4KQE6YLH.js → cron-create-SKEY55RG.js} +4 -4
- package/chunks/{cron-delete-THME66UP.js → cron-delete-I3NAT32Z.js} +6 -6
- package/chunks/{cron-list-7A54SJ5N.js → cron-list-6XRRL6TH.js} +5 -5
- package/chunks/daemon-status-provider-HH2EC5FI.js +65 -0
- package/chunks/{de-ACHALDED.js → de-EOW5PVHF.js} +1 -0
- package/chunks/{dist-BOOH5JWN.js → dist-663NZ6MI.js} +1 -1
- package/chunks/{dist-QHJRBCMP.js → dist-J37VXPLD.js} +46 -5
- package/chunks/{dist-OD2FY543.js → dist-LB6OGPVM.js} +1 -1
- package/chunks/{dist-BD27IA3L.js → dist-NHEYYB2B.js} +2 -2
- package/chunks/{dist-QFFZWACU.js → dist-PQPZ5Q4N.js} +1 -1
- package/chunks/{earlyInputCapture-X6KMCSHD.js → earlyInputCapture-44RISVVJ.js} +25 -27
- package/chunks/{edit-7J6WXARF.js → edit-NN6GM5DT.js} +68 -30
- package/chunks/{en-NCUBOJOY.js → en-HPWEJBTR.js} +8 -0
- package/chunks/{enter-worktree-KULCKJPJ.js → enter-worktree-PB3O2C7D.js} +24 -26
- package/chunks/{enterPlanMode-H2CIOLMH.js → enterPlanMode-YQFNNSUA.js} +24 -26
- package/chunks/{errors-6G2JYR54.js → errors-LS7XU5DZ.js} +26 -28
- package/chunks/{exit-worktree-ECBWBVC5.js → exit-worktree-E2FTNSBK.js} +24 -26
- package/chunks/{exitPlanMode-DQV56GTW.js → exitPlanMode-GLYK2BUB.js} +24 -26
- package/chunks/{fast-path-35JJFS3C.js → fast-path-WQ6M7LI7.js} +4 -4
- package/chunks/{fast-path-settings-TSVI53EB.js → fast-path-settings-OAGU3X5H.js} +3 -2
- package/chunks/{fr-GVKZ27MF.js → fr-BN5NKSAC.js} +1 -0
- package/chunks/{gemini-NDTG7WAX.js → gemini-2YFLVA2M.js} +204 -103
- package/chunks/{geminiContentGenerator-XTG6SFLA.js → geminiContentGenerator-XV6SV6CD.js} +4 -4
- package/chunks/{glob-SJ2JBZK4.js → glob-2H6CDDMK.js} +24 -26
- package/chunks/{grep-BRMWFEWR.js → grep-VXIUXM3C.js} +24 -26
- package/chunks/{headlessSafetyWarnings-LJ6FJX77.js → headlessSafetyWarnings-TBE35GJ4.js} +24 -26
- package/chunks/initializer-2Y7SLOKV.js +61 -0
- package/chunks/{ja-FKZ2WZ4D.js → ja-7DEUB2TS.js} +1 -0
- package/chunks/{keychain-token-storage-CSYMNRPP.js → keychain-token-storage-YLMDLKXT.js} +2 -2
- package/chunks/list-ZAFHZ7OS.js +65 -0
- package/chunks/loadedSettingsAdapter-6KJXD6M3.js +60 -0
- package/chunks/{loop-wakeup-33GPXJLA.js → loop-wakeup-CITGGQHA.js} +7 -7
- package/chunks/{ls-BYQY7RVV.js → ls-R5WP4BGZ.js} +4 -4
- package/chunks/{lsp-X54RO4IV.js → lsp-GSICJMMW.js} +2 -2
- package/chunks/{monitor-DH7KFSJV.js → monitor-HKLRS2HQ.js} +24 -26
- package/chunks/nonInteractiveCli-5W4GIZQM.js +96 -0
- package/chunks/{notebook-edit-D4R4ZLMA.js → notebook-edit-Y6SKSGTT.js} +52 -26
- package/chunks/{openaiContentGenerator-F74IPQ6E.js → openaiContentGenerator-J7G2FYJT.js} +13 -14
- package/chunks/{pt-SY5NCFGR.js → pt-TNZRNLQB.js} +1 -0
- package/chunks/{qwenContentGenerator-ATTK5P4D.js → qwenContentGenerator-5XIEM5GV.js} +26 -28
- package/chunks/{qwenOAuth2-K4AASPCV.js → qwenOAuth2-AG3PFFLZ.js} +4 -4
- package/chunks/{read-file-767G23OY.js → read-file-J7D552ZJ.js} +9 -10
- package/chunks/{read-mcp-resource-I5HCZJ6X.js → read-mcp-resource-DQQW7H7T.js} +2 -2
- package/chunks/{ripGrep-4OMMGSWX.js → ripGrep-IEIFIWP4.js} +24 -26
- package/chunks/{ru-FWNXJG4F.js → ru-NIAUBKCN.js} +1 -0
- package/chunks/{run-qwen-serve-REKSTYRA.js → run-qwen-serve-SGEEVMXD.js} +149 -41
- package/chunks/{scheduler-UNTFDQLG.js → scheduler-7CQI3S4Q.js} +24 -26
- package/chunks/{send-message-2DAFXEYP.js → send-message-EE4TWKVU.js} +2 -2
- package/chunks/{serve-KZ56QB5S.js → serve-V6GVZR6U.js} +31 -31
- package/chunks/{server-BV5TZUMU.js → server-4QMUWXPW.js} +6996 -5864
- package/chunks/{session-OIBXFSGD.js → session-NRO7UFOY.js} +62 -57
- package/chunks/{settings-WJTCBIRA.js → settings-SGWRDQSC.js} +30 -30
- package/chunks/{shell-WC52IBHW.js → shell-62ANGIHL.js} +24 -26
- package/chunks/{skill-U7F7JR4M.js → skill-VWAQAWW6.js} +39 -13
- package/chunks/{spawnChannel-EI2E5BCW.js → spawnChannel-3VHW5EPY.js} +26 -28
- package/chunks/{src-4F6FBZFI.js → src-KUV5J5Q2.js} +52 -28
- package/chunks/{startInteractiveUI-SFRVB3CE.js → startInteractiveUI-6EYJN3JV.js} +2588 -2371
- package/chunks/{syntheticOutput-PPS3HDVA.js → syntheticOutput-T5YHQ6S2.js} +3 -3
- package/chunks/{task-create-OUYCA553.js → task-create-BLY7RHXX.js} +6 -6
- package/chunks/{task-list-WAX7I2IA.js → task-list-3QUYNVYR.js} +5 -5
- package/chunks/{task-stop-CAIL6FNH.js → task-stop-U4RATK2V.js} +2 -2
- package/chunks/{task-update-AHEO5OUT.js → task-update-U54O7KJX.js} +6 -6
- package/chunks/{team-create-3WC7CIIW.js → team-create-LPOGCPM7.js} +24 -26
- package/chunks/{team-delete-HGHFG23B.js → team-delete-LKBYPASD.js} +5 -5
- package/chunks/{theme-manager-DICFCT3P.js → theme-manager-LYLGAERF.js} +25 -27
- package/chunks/{todoWrite-IFBMN3FH.js → todoWrite-OYXKTVYN.js} +4 -4
- package/chunks/{tool-search-L5K7HLER.js → tool-search-YPUFJ3ZQ.js} +102 -18
- package/chunks/trustedFolders-5B24TMEA.js +73 -0
- package/chunks/types-QX5C3CHJ.js +12 -0
- package/chunks/{validateNonInterActiveAuth-GCH4Z6KI.js → validateNonInterActiveAuth-BTDTYOVT.js} +57 -54
- package/chunks/{web-fetch-B5IIQ5TT.js → web-fetch-EEB5LZYU.js} +28 -15
- package/chunks/{workflow-OB3AND7I.js → workflow-LAWIW5LI.js} +32 -33
- package/chunks/workspace-providers-status-PIAFVYHA.js +62 -0
- package/chunks/workspace-service-YAIOD4HG.js +71 -0
- package/chunks/{write-file-SEXBNDZM.js → write-file-PCV226DJ.js} +63 -30
- package/chunks/{zh-RBEGQVQT.js → zh-5EUYXASN.js} +8 -0
- package/chunks/{zh-TW-QGAVRXT3.js → zh-TW-TR3XYGE5.js} +8 -0
- package/cli-entry.js +20 -9
- package/cli.js +6 -6
- package/locales/ca.js +2 -0
- package/locales/de.js +2 -0
- package/locales/en.js +14 -0
- package/locales/fr.js +2 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +2 -0
- package/locales/ru.js +2 -0
- package/locales/zh-TW.js +12 -0
- package/locales/zh.js +12 -0
- package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +35 -0
- package/node_modules/@qwen-code/audio-capture/dist/index.js +48 -0
- package/node_modules/@qwen-code/audio-capture/dist/index.js.map +1 -0
- package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +7 -0
- package/node_modules/@qwen-code/audio-capture/dist/platform.js +18 -0
- package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +1 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +21 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +58 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +5 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +84 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +19 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +6 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +207 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +7 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +43 -0
- package/node_modules/@qwen-code/audio-capture/package.json +30 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/linux-arm64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/linux-x64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
- package/package.json +6 -3
- package/web-shell/assets/{arc-D_ae_Y9k.js → arc-DA7r8Ueo.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BMLRjppa.js → architectureDiagram-3BPJPVTR-ZDUxPtZ2.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-qVDQC8KL.js → blockDiagram-GPEHLZMM-vrtOf1kJ.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-CxWS6MBd.js → c4Diagram-AAUBKEIU-BHFjzIi4.js} +1 -1
- package/web-shell/assets/channel-iRo68q4Q.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-BtNuY5Yp.js → chunk-2J33WTMH-mdeQVz59.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BU-x368d.js → chunk-4BX2VUAB-BkKMlwBX.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DRgTLvBu.js → chunk-55IACEB6-B7bnXNfu.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-D2aElv7q.js → chunk-727SXJPM-DGz8Mm6i.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BwHCMRQ0.js → chunk-AQP2D5EJ-BQAydUNk.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-BMyPH-ku.js → chunk-FMBD7UC4-GHr2LN_p.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-BNKTstUf.js → chunk-ND2GUHAM-7R91lnUx.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-gD3vsFId.js → chunk-QZHKN3VN-aTJD3lSQ.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-iHF24a8X.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-iHF24a8X.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BG9FAsXE.js → cose-bilkent-S5V4N54A-BTf8t1RL.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-Cy1sR7om.js → dagre-BM42HDAG-_sgp3WuA.js} +1 -1
- package/web-shell/assets/default-aEtf0G7-.svg +1 -0
- package/web-shell/assets/{diagram-2AECGRRQ-Bxi1I_Vu.js → diagram-2AECGRRQ-CROtRy1w.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BGCJjO6y.js → diagram-5GNKFQAL-BqGRzwSc.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CMTeLXp7.js → diagram-KO2AKTUF-CMrcEtA7.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BN1wyAGh.js → diagram-LMA3HP47-BRydGNW5.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-UYSG_zcp.js → diagram-OG6HWLK6-D0ilgNjV.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-DqXL08lw.js → erDiagram-TEJ5UH35-2lnQeJUM.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BPJ9SFji.js → flowDiagram-I6XJVG4X-C_ZMdQiC.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BEd9Pnms.js → ganttDiagram-6RSMTGT7-Dw9V_Ny0.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DrNRH3oi.js → gitGraphDiagram-PVQCEYII-HDXI-F1B.js} +1 -1
- package/web-shell/assets/index-CHmzAWys.css +5 -0
- package/web-shell/assets/index-w6GTOHh1.js +713 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CFYBrkVI.js → infoDiagram-5YYISTIA-CuB8Ebua.js} +1 -1
- package/web-shell/assets/insert-DmRbh9Rv.svg +1 -0
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Dxsddth7.js → ishikawaDiagram-YF4QCWOH-D_tyhVwh.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-DxaDK80t.js → journeyDiagram-JHISSGLW-CgCwJQNU.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-Q0jQCOct.js → kanban-definition-UN3LZRKU-PZUtcbPx.js} +1 -1
- package/web-shell/assets/{linear-DGGM2kcP.js → linear-CZqRdJIU.js} +1 -1
- package/web-shell/assets/{mermaid.core-ByoxnWut.js → mermaid.core-CPW_4UEF.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-C0ZseHsi.js → mindmap-definition-RKZ34NQL-D_Y75ID7.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-MQXNhl5A.js → pieDiagram-4H26LBE5-Q4dTyLeF.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DIR4ee2A.js → quadrantDiagram-W4KKPZXB-ckw329Ft.js} +1 -1
- package/web-shell/assets/queue-DWpnpFgW.svg +1 -0
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BTR0UdYQ.js → requirementDiagram-4Y6WPE33-DbVDm4It.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-sfnhMELN.js → sankeyDiagram-5OEKKPKP-CHuZ_ecH.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DXczHOHH.js → sequenceDiagram-3UESZ5HK-DU2YSpq-.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-DdE_KQFH.js → stateDiagram-AJRCARHV-CA9PEBUo.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-t1LRI0oY.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-DIc61uE8.js → timeline-definition-PNZ67QCA-Bhlo4WVc.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BF7ODmxB.js → vennDiagram-CIIHVFJN-6xtPLsyl.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-3pc1MEaw.js → wardley-L42UT6IY-3eozmXPf.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-9jnPcZuP.js → wardleyDiagram-YWT4CUSO-BOn6hKss.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-DcthaZK6.js → xychartDiagram-2RQKCTM6-BsP4-I_y.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-5P5XGNYH.js +0 -93
- package/chunks/chunk-B6HQGTYR.js +0 -410
- package/chunks/chunk-SEZC2725.js +0 -36
- package/chunks/chunk-SYCJMSIJ.js +0 -82
- package/chunks/daemon-status-provider-CSL3BUOY.js +0 -68
- package/chunks/initializer-P5AXF7PV.js +0 -61
- package/chunks/list-6COK34BP.js +0 -65
- package/chunks/loadedSettingsAdapter-XIUTN245.js +0 -60
- package/chunks/nonInteractiveCli-7575LBXP.js +0 -91
- package/chunks/workspace-providers-status-ZIR5EPOO.js +0 -62
- package/chunks/workspace-service-OM5D4OI2.js +0 -60
- package/web-shell/assets/channel-DYPNiTww.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-p_g25Tni.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-p_g25Tni.js +0 -1
- package/web-shell/assets/index-CpOXWDPh.js +0 -714
- package/web-shell/assets/index-oVK7qhre.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BHUSEndU.js +0 -1
|
@@ -6,12 +6,18 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
require_mime_db
|
|
8
8
|
} from "./chunk-7RYW5LQV.js";
|
|
9
|
+
import {
|
|
10
|
+
MAX_WORKSPACE_PATH_LENGTH
|
|
11
|
+
} from "./chunk-JE5FVRPC.js";
|
|
12
|
+
import {
|
|
13
|
+
writeStderrLine
|
|
14
|
+
} from "./chunk-Y6Z2O3WR.js";
|
|
9
15
|
import {
|
|
10
16
|
require_once
|
|
11
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-YAINVQ3Q.js";
|
|
12
18
|
import {
|
|
13
19
|
require_safer
|
|
14
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-EJYJYJZ2.js";
|
|
15
21
|
import {
|
|
16
22
|
require_src
|
|
17
23
|
} from "./chunk-QN5NZ3UQ.js";
|
|
@@ -9060,11 +9066,11 @@ var require_mime_types = __commonJS({
|
|
|
9060
9066
|
return exts[0];
|
|
9061
9067
|
}
|
|
9062
9068
|
__name(extension, "extension");
|
|
9063
|
-
function lookup(
|
|
9064
|
-
if (!
|
|
9069
|
+
function lookup(path3) {
|
|
9070
|
+
if (!path3 || typeof path3 !== "string") {
|
|
9065
9071
|
return false;
|
|
9066
9072
|
}
|
|
9067
|
-
var extension2 = extname("x." +
|
|
9073
|
+
var extension2 = extname("x." + path3).toLowerCase().slice(1);
|
|
9068
9074
|
if (!extension2) {
|
|
9069
9075
|
return false;
|
|
9070
9076
|
}
|
|
@@ -10195,13 +10201,13 @@ var require_view = __commonJS({
|
|
|
10195
10201
|
"use strict";
|
|
10196
10202
|
init_esbuild_shims();
|
|
10197
10203
|
var debug = require_src()("express:view");
|
|
10198
|
-
var
|
|
10204
|
+
var path3 = __require("node:path");
|
|
10199
10205
|
var fs = __require("node:fs");
|
|
10200
|
-
var dirname2 =
|
|
10201
|
-
var basename2 =
|
|
10202
|
-
var extname =
|
|
10203
|
-
var join2 =
|
|
10204
|
-
var resolve =
|
|
10206
|
+
var dirname2 = path3.dirname;
|
|
10207
|
+
var basename2 = path3.basename;
|
|
10208
|
+
var extname = path3.extname;
|
|
10209
|
+
var join2 = path3.join;
|
|
10210
|
+
var resolve = path3.resolve;
|
|
10205
10211
|
module.exports = View;
|
|
10206
10212
|
function View(name, options) {
|
|
10207
10213
|
var opts = options || {};
|
|
@@ -10231,17 +10237,17 @@ var require_view = __commonJS({
|
|
|
10231
10237
|
}
|
|
10232
10238
|
__name(View, "View");
|
|
10233
10239
|
View.prototype.lookup = /* @__PURE__ */ __name(function lookup(name) {
|
|
10234
|
-
var
|
|
10240
|
+
var path4;
|
|
10235
10241
|
var roots = [].concat(this.root);
|
|
10236
10242
|
debug('lookup "%s"', name);
|
|
10237
|
-
for (var i = 0; i < roots.length && !
|
|
10243
|
+
for (var i = 0; i < roots.length && !path4; i++) {
|
|
10238
10244
|
var root = roots[i];
|
|
10239
10245
|
var loc = resolve(root, name);
|
|
10240
10246
|
var dir = dirname2(loc);
|
|
10241
10247
|
var file = basename2(loc);
|
|
10242
|
-
|
|
10248
|
+
path4 = this.resolve(dir, file);
|
|
10243
10249
|
}
|
|
10244
|
-
return
|
|
10250
|
+
return path4;
|
|
10245
10251
|
}, "lookup");
|
|
10246
10252
|
View.prototype.render = /* @__PURE__ */ __name(function render(options, callback) {
|
|
10247
10253
|
var sync = true;
|
|
@@ -10263,21 +10269,21 @@ var require_view = __commonJS({
|
|
|
10263
10269
|
}, "render");
|
|
10264
10270
|
View.prototype.resolve = /* @__PURE__ */ __name(function resolve2(dir, file) {
|
|
10265
10271
|
var ext = this.ext;
|
|
10266
|
-
var
|
|
10267
|
-
var stat = tryStat(
|
|
10272
|
+
var path4 = join2(dir, file);
|
|
10273
|
+
var stat = tryStat(path4);
|
|
10268
10274
|
if (stat && stat.isFile()) {
|
|
10269
|
-
return
|
|
10275
|
+
return path4;
|
|
10270
10276
|
}
|
|
10271
|
-
|
|
10272
|
-
stat = tryStat(
|
|
10277
|
+
path4 = join2(dir, basename2(file, ext), "index" + ext);
|
|
10278
|
+
stat = tryStat(path4);
|
|
10273
10279
|
if (stat && stat.isFile()) {
|
|
10274
|
-
return
|
|
10280
|
+
return path4;
|
|
10275
10281
|
}
|
|
10276
10282
|
}, "resolve");
|
|
10277
|
-
function tryStat(
|
|
10278
|
-
debug('stat "%s"',
|
|
10283
|
+
function tryStat(path4) {
|
|
10284
|
+
debug('stat "%s"', path4);
|
|
10279
10285
|
try {
|
|
10280
|
-
return fs.statSync(
|
|
10286
|
+
return fs.statSync(path4);
|
|
10281
10287
|
} catch (e) {
|
|
10282
10288
|
return void 0;
|
|
10283
10289
|
}
|
|
@@ -11467,9 +11473,9 @@ var require_dist2 = __commonJS({
|
|
|
11467
11473
|
function consume(endType) {
|
|
11468
11474
|
const tokens2 = [];
|
|
11469
11475
|
while (true) {
|
|
11470
|
-
const
|
|
11471
|
-
if (
|
|
11472
|
-
tokens2.push({ type: "text", value: encodePath(
|
|
11476
|
+
const path3 = it.text();
|
|
11477
|
+
if (path3)
|
|
11478
|
+
tokens2.push({ type: "text", value: encodePath(path3) });
|
|
11473
11479
|
const param = it.tryConsume("PARAM");
|
|
11474
11480
|
if (param) {
|
|
11475
11481
|
tokens2.push({
|
|
@@ -11503,16 +11509,16 @@ var require_dist2 = __commonJS({
|
|
|
11503
11509
|
return new TokenData(tokens);
|
|
11504
11510
|
}
|
|
11505
11511
|
__name(parse, "parse");
|
|
11506
|
-
function compile(
|
|
11512
|
+
function compile(path3, options = {}) {
|
|
11507
11513
|
const { encode = encodeURIComponent, delimiter = DEFAULT_DELIMITER } = options;
|
|
11508
|
-
const data =
|
|
11514
|
+
const data = path3 instanceof TokenData ? path3 : parse(path3, options);
|
|
11509
11515
|
const fn = tokensToFunction(data.tokens, delimiter, encode);
|
|
11510
|
-
return /* @__PURE__ */ __name(function
|
|
11511
|
-
const [
|
|
11516
|
+
return /* @__PURE__ */ __name(function path4(data2 = {}) {
|
|
11517
|
+
const [path5, ...missing] = fn(data2);
|
|
11512
11518
|
if (missing.length) {
|
|
11513
11519
|
throw new TypeError(`Missing parameters: ${missing.join(", ")}`);
|
|
11514
11520
|
}
|
|
11515
|
-
return
|
|
11521
|
+
return path5;
|
|
11516
11522
|
}, "path");
|
|
11517
11523
|
}
|
|
11518
11524
|
__name(compile, "compile");
|
|
@@ -11571,9 +11577,9 @@ var require_dist2 = __commonJS({
|
|
|
11571
11577
|
};
|
|
11572
11578
|
}
|
|
11573
11579
|
__name(tokenToFunction, "tokenToFunction");
|
|
11574
|
-
function match(
|
|
11580
|
+
function match(path3, options = {}) {
|
|
11575
11581
|
const { decode = decodeURIComponent, delimiter = DEFAULT_DELIMITER } = options;
|
|
11576
|
-
const { regexp, keys } = pathToRegexp(
|
|
11582
|
+
const { regexp, keys } = pathToRegexp(path3, options);
|
|
11577
11583
|
const decoders = keys.map((key) => {
|
|
11578
11584
|
if (decode === false)
|
|
11579
11585
|
return NOOP_VALUE;
|
|
@@ -11585,7 +11591,7 @@ var require_dist2 = __commonJS({
|
|
|
11585
11591
|
const m = regexp.exec(input);
|
|
11586
11592
|
if (!m)
|
|
11587
11593
|
return false;
|
|
11588
|
-
const
|
|
11594
|
+
const path4 = m[0];
|
|
11589
11595
|
const params = /* @__PURE__ */ Object.create(null);
|
|
11590
11596
|
for (let i = 1; i < m.length; i++) {
|
|
11591
11597
|
if (m[i] === void 0)
|
|
@@ -11594,17 +11600,17 @@ var require_dist2 = __commonJS({
|
|
|
11594
11600
|
const decoder = decoders[i - 1];
|
|
11595
11601
|
params[key.name] = decoder(m[i]);
|
|
11596
11602
|
}
|
|
11597
|
-
return { path:
|
|
11603
|
+
return { path: path4, params };
|
|
11598
11604
|
}, "match");
|
|
11599
11605
|
}
|
|
11600
11606
|
__name(match, "match");
|
|
11601
|
-
function pathToRegexp(
|
|
11607
|
+
function pathToRegexp(path3, options = {}) {
|
|
11602
11608
|
const { delimiter = DEFAULT_DELIMITER, end = true, sensitive = false, trailing = true } = options;
|
|
11603
11609
|
const keys = [];
|
|
11604
11610
|
const sources = [];
|
|
11605
11611
|
const flags = sensitive ? "" : "i";
|
|
11606
|
-
const paths = Array.isArray(
|
|
11607
|
-
const items = paths.map((
|
|
11612
|
+
const paths = Array.isArray(path3) ? path3 : [path3];
|
|
11613
|
+
const items = paths.map((path4) => path4 instanceof TokenData ? path4 : parse(path4, options));
|
|
11608
11614
|
for (const { tokens } of items) {
|
|
11609
11615
|
for (const seq of flatten(tokens, 0, [])) {
|
|
11610
11616
|
const regexp2 = sequenceToRegExp(seq, delimiter, keys);
|
|
@@ -11722,18 +11728,18 @@ var require_layer = __commonJS({
|
|
|
11722
11728
|
var TRAILING_SLASH_REGEXP = /\/+$/;
|
|
11723
11729
|
var MATCHING_GROUP_REGEXP = /\((?:\?<(.*?)>)?(?!\?)/g;
|
|
11724
11730
|
module.exports = Layer;
|
|
11725
|
-
function Layer(
|
|
11731
|
+
function Layer(path3, options, fn) {
|
|
11726
11732
|
if (!(this instanceof Layer)) {
|
|
11727
|
-
return new Layer(
|
|
11733
|
+
return new Layer(path3, options, fn);
|
|
11728
11734
|
}
|
|
11729
|
-
debug("new %o",
|
|
11735
|
+
debug("new %o", path3);
|
|
11730
11736
|
const opts = options || {};
|
|
11731
11737
|
this.handle = fn;
|
|
11732
11738
|
this.keys = [];
|
|
11733
11739
|
this.name = fn.name || "<anonymous>";
|
|
11734
11740
|
this.params = void 0;
|
|
11735
11741
|
this.path = void 0;
|
|
11736
|
-
this.slash =
|
|
11742
|
+
this.slash = path3 === "/" && opts.end === false;
|
|
11737
11743
|
function matcher(_path) {
|
|
11738
11744
|
if (_path instanceof RegExp) {
|
|
11739
11745
|
const keys = [];
|
|
@@ -11773,7 +11779,7 @@ var require_layer = __commonJS({
|
|
|
11773
11779
|
});
|
|
11774
11780
|
}
|
|
11775
11781
|
__name(matcher, "matcher");
|
|
11776
|
-
this.matchers = Array.isArray(
|
|
11782
|
+
this.matchers = Array.isArray(path3) ? path3.map(matcher) : [matcher(path3)];
|
|
11777
11783
|
}
|
|
11778
11784
|
__name(Layer, "Layer");
|
|
11779
11785
|
Layer.prototype.handleError = /* @__PURE__ */ __name(function handleError(error, req, res, next) {
|
|
@@ -11814,9 +11820,9 @@ var require_layer = __commonJS({
|
|
|
11814
11820
|
next(err);
|
|
11815
11821
|
}
|
|
11816
11822
|
}, "handleRequest");
|
|
11817
|
-
Layer.prototype.match = /* @__PURE__ */ __name(function match(
|
|
11823
|
+
Layer.prototype.match = /* @__PURE__ */ __name(function match(path3) {
|
|
11818
11824
|
let match2;
|
|
11819
|
-
if (
|
|
11825
|
+
if (path3 != null) {
|
|
11820
11826
|
if (this.slash) {
|
|
11821
11827
|
this.params = {};
|
|
11822
11828
|
this.path = "";
|
|
@@ -11824,7 +11830,7 @@ var require_layer = __commonJS({
|
|
|
11824
11830
|
}
|
|
11825
11831
|
let i = 0;
|
|
11826
11832
|
while (!match2 && i < this.matchers.length) {
|
|
11827
|
-
match2 = this.matchers[i](
|
|
11833
|
+
match2 = this.matchers[i](path3);
|
|
11828
11834
|
i++;
|
|
11829
11835
|
}
|
|
11830
11836
|
}
|
|
@@ -11853,13 +11859,13 @@ var require_layer = __commonJS({
|
|
|
11853
11859
|
}
|
|
11854
11860
|
}
|
|
11855
11861
|
__name(decodeParam, "decodeParam");
|
|
11856
|
-
function loosen(
|
|
11857
|
-
if (
|
|
11858
|
-
return
|
|
11862
|
+
function loosen(path3) {
|
|
11863
|
+
if (path3 instanceof RegExp || path3 === "/") {
|
|
11864
|
+
return path3;
|
|
11859
11865
|
}
|
|
11860
|
-
return Array.isArray(
|
|
11866
|
+
return Array.isArray(path3) ? path3.map(function(p) {
|
|
11861
11867
|
return loosen(p);
|
|
11862
|
-
}) : String(
|
|
11868
|
+
}) : String(path3).replace(TRAILING_SLASH_REGEXP, "");
|
|
11863
11869
|
}
|
|
11864
11870
|
__name(loosen, "loosen");
|
|
11865
11871
|
}
|
|
@@ -11877,9 +11883,9 @@ var require_route = __commonJS({
|
|
|
11877
11883
|
var flatten = Array.prototype.flat;
|
|
11878
11884
|
var methods = METHODS.map((method) => method.toLowerCase());
|
|
11879
11885
|
module.exports = Route;
|
|
11880
|
-
function Route(
|
|
11881
|
-
debug("new %o",
|
|
11882
|
-
this.path =
|
|
11886
|
+
function Route(path3) {
|
|
11887
|
+
debug("new %o", path3);
|
|
11888
|
+
this.path = path3;
|
|
11883
11889
|
this.stack = [];
|
|
11884
11890
|
this.methods = /* @__PURE__ */ Object.create(null);
|
|
11885
11891
|
}
|
|
@@ -12092,8 +12098,8 @@ var require_router = __commonJS({
|
|
|
12092
12098
|
if (++sync > 100) {
|
|
12093
12099
|
return setImmediate(next, err);
|
|
12094
12100
|
}
|
|
12095
|
-
const
|
|
12096
|
-
if (
|
|
12101
|
+
const path3 = getPathname(req);
|
|
12102
|
+
if (path3 == null) {
|
|
12097
12103
|
return done(layerError);
|
|
12098
12104
|
}
|
|
12099
12105
|
let layer;
|
|
@@ -12101,7 +12107,7 @@ var require_router = __commonJS({
|
|
|
12101
12107
|
let route;
|
|
12102
12108
|
while (match !== true && idx < stack.length) {
|
|
12103
12109
|
layer = stack[idx++];
|
|
12104
|
-
match = matchLayer(layer,
|
|
12110
|
+
match = matchLayer(layer, path3);
|
|
12105
12111
|
route = layer.route;
|
|
12106
12112
|
if (typeof match !== "boolean") {
|
|
12107
12113
|
layerError = layerError || match;
|
|
@@ -12139,19 +12145,19 @@ var require_router = __commonJS({
|
|
|
12139
12145
|
} else if (route) {
|
|
12140
12146
|
layer.handleRequest(req, res, next);
|
|
12141
12147
|
} else {
|
|
12142
|
-
trimPrefix(layer, layerError, layerPath,
|
|
12148
|
+
trimPrefix(layer, layerError, layerPath, path3);
|
|
12143
12149
|
}
|
|
12144
12150
|
sync = 0;
|
|
12145
12151
|
});
|
|
12146
12152
|
}
|
|
12147
12153
|
__name(next, "next");
|
|
12148
|
-
function trimPrefix(layer, layerError, layerPath,
|
|
12154
|
+
function trimPrefix(layer, layerError, layerPath, path3) {
|
|
12149
12155
|
if (layerPath.length !== 0) {
|
|
12150
|
-
if (layerPath !==
|
|
12156
|
+
if (layerPath !== path3.substring(0, layerPath.length)) {
|
|
12151
12157
|
next(layerError);
|
|
12152
12158
|
return;
|
|
12153
12159
|
}
|
|
12154
|
-
const c =
|
|
12160
|
+
const c = path3[layerPath.length];
|
|
12155
12161
|
if (c && c !== "/") {
|
|
12156
12162
|
next(layerError);
|
|
12157
12163
|
return;
|
|
@@ -12176,7 +12182,7 @@ var require_router = __commonJS({
|
|
|
12176
12182
|
}, "handle");
|
|
12177
12183
|
Router.prototype.use = /* @__PURE__ */ __name(function use(handler) {
|
|
12178
12184
|
let offset = 0;
|
|
12179
|
-
let
|
|
12185
|
+
let path3 = "/";
|
|
12180
12186
|
if (typeof handler !== "function") {
|
|
12181
12187
|
let arg = handler;
|
|
12182
12188
|
while (Array.isArray(arg) && arg.length !== 0) {
|
|
@@ -12184,7 +12190,7 @@ var require_router = __commonJS({
|
|
|
12184
12190
|
}
|
|
12185
12191
|
if (typeof arg !== "function") {
|
|
12186
12192
|
offset = 1;
|
|
12187
|
-
|
|
12193
|
+
path3 = handler;
|
|
12188
12194
|
}
|
|
12189
12195
|
}
|
|
12190
12196
|
const callbacks = flatten.call(slice.call(arguments, offset), Infinity);
|
|
@@ -12196,8 +12202,8 @@ var require_router = __commonJS({
|
|
|
12196
12202
|
if (typeof fn !== "function") {
|
|
12197
12203
|
throw new TypeError("argument handler must be a function");
|
|
12198
12204
|
}
|
|
12199
|
-
debug("use %o %s",
|
|
12200
|
-
const layer = new Layer(
|
|
12205
|
+
debug("use %o %s", path3, fn.name || "<anonymous>");
|
|
12206
|
+
const layer = new Layer(path3, {
|
|
12201
12207
|
sensitive: this.caseSensitive,
|
|
12202
12208
|
strict: false,
|
|
12203
12209
|
end: false
|
|
@@ -12207,9 +12213,9 @@ var require_router = __commonJS({
|
|
|
12207
12213
|
}
|
|
12208
12214
|
return this;
|
|
12209
12215
|
}, "use");
|
|
12210
|
-
Router.prototype.route = /* @__PURE__ */ __name(function route(
|
|
12211
|
-
const route2 = new Route(
|
|
12212
|
-
const layer = new Layer(
|
|
12216
|
+
Router.prototype.route = /* @__PURE__ */ __name(function route(path3) {
|
|
12217
|
+
const route2 = new Route(path3);
|
|
12218
|
+
const layer = new Layer(path3, {
|
|
12213
12219
|
sensitive: this.caseSensitive,
|
|
12214
12220
|
strict: this.strict,
|
|
12215
12221
|
end: true
|
|
@@ -12223,8 +12229,8 @@ var require_router = __commonJS({
|
|
|
12223
12229
|
return route2;
|
|
12224
12230
|
}, "route");
|
|
12225
12231
|
methods.concat("all").forEach(function(method) {
|
|
12226
|
-
Router.prototype[method] = function(
|
|
12227
|
-
const route = this.route(
|
|
12232
|
+
Router.prototype[method] = function(path3) {
|
|
12233
|
+
const route = this.route(path3);
|
|
12228
12234
|
route[method].apply(route, slice.call(arguments, 1));
|
|
12229
12235
|
return this;
|
|
12230
12236
|
};
|
|
@@ -12256,9 +12262,9 @@ var require_router = __commonJS({
|
|
|
12256
12262
|
return fqdnIndex !== -1 ? url.substring(0, url.indexOf("/", 3 + fqdnIndex)) : void 0;
|
|
12257
12263
|
}
|
|
12258
12264
|
__name(getProtohost, "getProtohost");
|
|
12259
|
-
function matchLayer(layer,
|
|
12265
|
+
function matchLayer(layer, path3) {
|
|
12260
12266
|
try {
|
|
12261
|
-
return layer.match(
|
|
12267
|
+
return layer.match(path3);
|
|
12262
12268
|
} catch (err) {
|
|
12263
12269
|
return err;
|
|
12264
12270
|
}
|
|
@@ -12496,7 +12502,7 @@ var require_application = __commonJS({
|
|
|
12496
12502
|
}, "handle");
|
|
12497
12503
|
app.use = /* @__PURE__ */ __name(function use(fn) {
|
|
12498
12504
|
var offset = 0;
|
|
12499
|
-
var
|
|
12505
|
+
var path3 = "/";
|
|
12500
12506
|
if (typeof fn !== "function") {
|
|
12501
12507
|
var arg = fn;
|
|
12502
12508
|
while (Array.isArray(arg) && arg.length !== 0) {
|
|
@@ -12504,7 +12510,7 @@ var require_application = __commonJS({
|
|
|
12504
12510
|
}
|
|
12505
12511
|
if (typeof arg !== "function") {
|
|
12506
12512
|
offset = 1;
|
|
12507
|
-
|
|
12513
|
+
path3 = fn;
|
|
12508
12514
|
}
|
|
12509
12515
|
}
|
|
12510
12516
|
var fns = flatten.call(slice.call(arguments, offset), Infinity);
|
|
@@ -12514,12 +12520,12 @@ var require_application = __commonJS({
|
|
|
12514
12520
|
var router = this.router;
|
|
12515
12521
|
fns.forEach(function(fn2) {
|
|
12516
12522
|
if (!fn2 || !fn2.handle || !fn2.set) {
|
|
12517
|
-
return router.use(
|
|
12523
|
+
return router.use(path3, fn2);
|
|
12518
12524
|
}
|
|
12519
|
-
debug(".use app under %s",
|
|
12520
|
-
fn2.mountpath =
|
|
12525
|
+
debug(".use app under %s", path3);
|
|
12526
|
+
fn2.mountpath = path3;
|
|
12521
12527
|
fn2.parent = this;
|
|
12522
|
-
router.use(
|
|
12528
|
+
router.use(path3, /* @__PURE__ */ __name(function mounted_app(req, res, next) {
|
|
12523
12529
|
var orig = req.app;
|
|
12524
12530
|
fn2.handle(req, res, function(err) {
|
|
12525
12531
|
Object.setPrototypeOf(req, orig.request);
|
|
@@ -12531,8 +12537,8 @@ var require_application = __commonJS({
|
|
|
12531
12537
|
}, this);
|
|
12532
12538
|
return this;
|
|
12533
12539
|
}, "use");
|
|
12534
|
-
app.route = /* @__PURE__ */ __name(function route(
|
|
12535
|
-
return this.router.route(
|
|
12540
|
+
app.route = /* @__PURE__ */ __name(function route(path3) {
|
|
12541
|
+
return this.router.route(path3);
|
|
12536
12542
|
}, "route");
|
|
12537
12543
|
app.engine = /* @__PURE__ */ __name(function engine(ext, fn) {
|
|
12538
12544
|
if (typeof fn !== "function") {
|
|
@@ -12575,7 +12581,7 @@ var require_application = __commonJS({
|
|
|
12575
12581
|
}
|
|
12576
12582
|
return this;
|
|
12577
12583
|
}, "set");
|
|
12578
|
-
app.path = /* @__PURE__ */ __name(function
|
|
12584
|
+
app.path = /* @__PURE__ */ __name(function path3() {
|
|
12579
12585
|
return this.parent ? this.parent.path() + this.mountpath : "";
|
|
12580
12586
|
}, "path");
|
|
12581
12587
|
app.enabled = /* @__PURE__ */ __name(function enabled(setting) {
|
|
@@ -12591,17 +12597,17 @@ var require_application = __commonJS({
|
|
|
12591
12597
|
return this.set(setting, false);
|
|
12592
12598
|
}, "disable");
|
|
12593
12599
|
methods.forEach(function(method) {
|
|
12594
|
-
app[method] = function(
|
|
12600
|
+
app[method] = function(path3) {
|
|
12595
12601
|
if (method === "get" && arguments.length === 1) {
|
|
12596
|
-
return this.set(
|
|
12602
|
+
return this.set(path3);
|
|
12597
12603
|
}
|
|
12598
|
-
var route = this.route(
|
|
12604
|
+
var route = this.route(path3);
|
|
12599
12605
|
route[method].apply(route, slice.call(arguments, 1));
|
|
12600
12606
|
return this;
|
|
12601
12607
|
};
|
|
12602
12608
|
});
|
|
12603
|
-
app.all = /* @__PURE__ */ __name(function all(
|
|
12604
|
-
var route = this.route(
|
|
12609
|
+
app.all = /* @__PURE__ */ __name(function all(path3) {
|
|
12610
|
+
var route = this.route(path3);
|
|
12605
12611
|
var args = slice.call(arguments, 1);
|
|
12606
12612
|
for (var i = 0; i < methods.length; i++) {
|
|
12607
12613
|
route[methods[i]].apply(route, args);
|
|
@@ -13571,7 +13577,7 @@ var require_request = __commonJS({
|
|
|
13571
13577
|
var subdomains2 = !isIP(hostname) ? hostname.split(".").reverse() : [hostname];
|
|
13572
13578
|
return subdomains2.slice(offset);
|
|
13573
13579
|
}, "subdomains"));
|
|
13574
|
-
defineGetter(req, "path", /* @__PURE__ */ __name(function
|
|
13580
|
+
defineGetter(req, "path", /* @__PURE__ */ __name(function path3() {
|
|
13575
13581
|
return parse(this).pathname;
|
|
13576
13582
|
}, "path"));
|
|
13577
13583
|
defineGetter(req, "host", /* @__PURE__ */ __name(function host() {
|
|
@@ -13794,8 +13800,8 @@ var require_content_disposition = __commonJS({
|
|
|
13794
13800
|
this.parameters = parameters;
|
|
13795
13801
|
}
|
|
13796
13802
|
__name(ContentDisposition, "ContentDisposition");
|
|
13797
|
-
function basename2(
|
|
13798
|
-
const normalized =
|
|
13803
|
+
function basename2(path3) {
|
|
13804
|
+
const normalized = path3.replaceAll("\\", "/");
|
|
13799
13805
|
let end = normalized.length;
|
|
13800
13806
|
while (end > 0 && normalized[end - 1] === "/") {
|
|
13801
13807
|
end--;
|
|
@@ -14055,28 +14061,28 @@ var require_send = __commonJS({
|
|
|
14055
14061
|
var ms = require_ms();
|
|
14056
14062
|
var onFinished = require_on_finished();
|
|
14057
14063
|
var parseRange = require_range_parser();
|
|
14058
|
-
var
|
|
14064
|
+
var path3 = __require("path");
|
|
14059
14065
|
var statuses = require_statuses();
|
|
14060
14066
|
var Stream = __require("stream");
|
|
14061
14067
|
var util = __require("util");
|
|
14062
|
-
var extname =
|
|
14063
|
-
var join2 =
|
|
14064
|
-
var normalize =
|
|
14065
|
-
var resolve =
|
|
14066
|
-
var sep =
|
|
14068
|
+
var extname = path3.extname;
|
|
14069
|
+
var join2 = path3.join;
|
|
14070
|
+
var normalize = path3.normalize;
|
|
14071
|
+
var resolve = path3.resolve;
|
|
14072
|
+
var sep = path3.sep;
|
|
14067
14073
|
var BYTES_RANGE_REGEXP = /^ *bytes=/;
|
|
14068
14074
|
var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1e3;
|
|
14069
14075
|
var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/;
|
|
14070
14076
|
module.exports = send;
|
|
14071
|
-
function send(req,
|
|
14072
|
-
return new SendStream(req,
|
|
14077
|
+
function send(req, path4, options) {
|
|
14078
|
+
return new SendStream(req, path4, options);
|
|
14073
14079
|
}
|
|
14074
14080
|
__name(send, "send");
|
|
14075
|
-
function SendStream(req,
|
|
14081
|
+
function SendStream(req, path4, options) {
|
|
14076
14082
|
Stream.call(this);
|
|
14077
14083
|
var opts = options || {};
|
|
14078
14084
|
this.options = opts;
|
|
14079
|
-
this.path =
|
|
14085
|
+
this.path = path4;
|
|
14080
14086
|
this.req = req;
|
|
14081
14087
|
this._acceptRanges = opts.acceptRanges !== void 0 ? Boolean(opts.acceptRanges) : true;
|
|
14082
14088
|
this._cacheControl = opts.cacheControl !== void 0 ? Boolean(opts.cacheControl) : true;
|
|
@@ -14191,10 +14197,10 @@ var require_send = __commonJS({
|
|
|
14191
14197
|
var lastModified = this.res.getHeader("Last-Modified");
|
|
14192
14198
|
return parseHttpDate(lastModified) <= parseHttpDate(ifRange);
|
|
14193
14199
|
}, "isRangeFresh");
|
|
14194
|
-
SendStream.prototype.redirect = /* @__PURE__ */ __name(function redirect(
|
|
14200
|
+
SendStream.prototype.redirect = /* @__PURE__ */ __name(function redirect(path4) {
|
|
14195
14201
|
var res = this.res;
|
|
14196
14202
|
if (hasListeners(this, "directory")) {
|
|
14197
|
-
this.emit("directory", res,
|
|
14203
|
+
this.emit("directory", res, path4);
|
|
14198
14204
|
return;
|
|
14199
14205
|
}
|
|
14200
14206
|
if (this.hasTrailingSlash()) {
|
|
@@ -14214,38 +14220,38 @@ var require_send = __commonJS({
|
|
|
14214
14220
|
SendStream.prototype.pipe = /* @__PURE__ */ __name(function pipe(res) {
|
|
14215
14221
|
var root = this._root;
|
|
14216
14222
|
this.res = res;
|
|
14217
|
-
var
|
|
14218
|
-
if (
|
|
14223
|
+
var path4 = decode(this.path);
|
|
14224
|
+
if (path4 === -1) {
|
|
14219
14225
|
this.error(400);
|
|
14220
14226
|
return res;
|
|
14221
14227
|
}
|
|
14222
|
-
if (~
|
|
14228
|
+
if (~path4.indexOf("\0")) {
|
|
14223
14229
|
this.error(400);
|
|
14224
14230
|
return res;
|
|
14225
14231
|
}
|
|
14226
14232
|
var parts;
|
|
14227
14233
|
if (root !== null) {
|
|
14228
|
-
if (
|
|
14229
|
-
|
|
14234
|
+
if (path4) {
|
|
14235
|
+
path4 = normalize("." + sep + path4);
|
|
14230
14236
|
}
|
|
14231
|
-
if (UP_PATH_REGEXP.test(
|
|
14232
|
-
debug('malicious path "%s"',
|
|
14237
|
+
if (UP_PATH_REGEXP.test(path4)) {
|
|
14238
|
+
debug('malicious path "%s"', path4);
|
|
14233
14239
|
this.error(403);
|
|
14234
14240
|
return res;
|
|
14235
14241
|
}
|
|
14236
|
-
parts =
|
|
14237
|
-
|
|
14242
|
+
parts = path4.split(sep);
|
|
14243
|
+
path4 = normalize(join2(root, path4));
|
|
14238
14244
|
} else {
|
|
14239
|
-
if (UP_PATH_REGEXP.test(
|
|
14240
|
-
debug('malicious path "%s"',
|
|
14245
|
+
if (UP_PATH_REGEXP.test(path4)) {
|
|
14246
|
+
debug('malicious path "%s"', path4);
|
|
14241
14247
|
this.error(403);
|
|
14242
14248
|
return res;
|
|
14243
14249
|
}
|
|
14244
|
-
parts = normalize(
|
|
14245
|
-
|
|
14250
|
+
parts = normalize(path4).split(sep);
|
|
14251
|
+
path4 = resolve(path4);
|
|
14246
14252
|
}
|
|
14247
14253
|
if (containsDotFile(parts)) {
|
|
14248
|
-
debug('%s dotfile "%s"', this._dotfiles,
|
|
14254
|
+
debug('%s dotfile "%s"', this._dotfiles, path4);
|
|
14249
14255
|
switch (this._dotfiles) {
|
|
14250
14256
|
case "allow":
|
|
14251
14257
|
break;
|
|
@@ -14259,13 +14265,13 @@ var require_send = __commonJS({
|
|
|
14259
14265
|
}
|
|
14260
14266
|
}
|
|
14261
14267
|
if (this._index.length && this.hasTrailingSlash()) {
|
|
14262
|
-
this.sendIndex(
|
|
14268
|
+
this.sendIndex(path4);
|
|
14263
14269
|
return res;
|
|
14264
14270
|
}
|
|
14265
|
-
this.sendFile(
|
|
14271
|
+
this.sendFile(path4);
|
|
14266
14272
|
return res;
|
|
14267
14273
|
}, "pipe");
|
|
14268
|
-
SendStream.prototype.send = /* @__PURE__ */ __name(function send2(
|
|
14274
|
+
SendStream.prototype.send = /* @__PURE__ */ __name(function send2(path4, stat) {
|
|
14269
14275
|
var len = stat.size;
|
|
14270
14276
|
var options = this.options;
|
|
14271
14277
|
var opts = {};
|
|
@@ -14277,9 +14283,9 @@ var require_send = __commonJS({
|
|
|
14277
14283
|
this.headersAlreadySent();
|
|
14278
14284
|
return;
|
|
14279
14285
|
}
|
|
14280
|
-
debug('pipe "%s"',
|
|
14281
|
-
this.setHeader(
|
|
14282
|
-
this.type(
|
|
14286
|
+
debug('pipe "%s"', path4);
|
|
14287
|
+
this.setHeader(path4, stat);
|
|
14288
|
+
this.type(path4);
|
|
14283
14289
|
if (this.isConditionalGET()) {
|
|
14284
14290
|
if (this.isPreconditionFailure()) {
|
|
14285
14291
|
this.error(412);
|
|
@@ -14328,28 +14334,28 @@ var require_send = __commonJS({
|
|
|
14328
14334
|
res.end();
|
|
14329
14335
|
return;
|
|
14330
14336
|
}
|
|
14331
|
-
this.stream(
|
|
14337
|
+
this.stream(path4, opts);
|
|
14332
14338
|
}, "send");
|
|
14333
|
-
SendStream.prototype.sendFile = /* @__PURE__ */ __name(function sendFile(
|
|
14339
|
+
SendStream.prototype.sendFile = /* @__PURE__ */ __name(function sendFile(path4) {
|
|
14334
14340
|
var i = 0;
|
|
14335
14341
|
var self = this;
|
|
14336
|
-
debug('stat "%s"',
|
|
14337
|
-
fs.stat(
|
|
14338
|
-
var pathEndsWithSep =
|
|
14339
|
-
if (err && err.code === "ENOENT" && !extname(
|
|
14342
|
+
debug('stat "%s"', path4);
|
|
14343
|
+
fs.stat(path4, /* @__PURE__ */ __name(function onstat(err, stat) {
|
|
14344
|
+
var pathEndsWithSep = path4[path4.length - 1] === sep;
|
|
14345
|
+
if (err && err.code === "ENOENT" && !extname(path4) && !pathEndsWithSep) {
|
|
14340
14346
|
return next(err);
|
|
14341
14347
|
}
|
|
14342
14348
|
if (err) return self.onStatError(err);
|
|
14343
|
-
if (stat.isDirectory()) return self.redirect(
|
|
14349
|
+
if (stat.isDirectory()) return self.redirect(path4);
|
|
14344
14350
|
if (pathEndsWithSep) return self.error(404);
|
|
14345
|
-
self.emit("file",
|
|
14346
|
-
self.send(
|
|
14351
|
+
self.emit("file", path4, stat);
|
|
14352
|
+
self.send(path4, stat);
|
|
14347
14353
|
}, "onstat"));
|
|
14348
14354
|
function next(err) {
|
|
14349
14355
|
if (self._extensions.length <= i) {
|
|
14350
14356
|
return err ? self.onStatError(err) : self.error(404);
|
|
14351
14357
|
}
|
|
14352
|
-
var p =
|
|
14358
|
+
var p = path4 + "." + self._extensions[i++];
|
|
14353
14359
|
debug('stat "%s"', p);
|
|
14354
14360
|
fs.stat(p, function(err2, stat) {
|
|
14355
14361
|
if (err2) return next(err2);
|
|
@@ -14360,7 +14366,7 @@ var require_send = __commonJS({
|
|
|
14360
14366
|
}
|
|
14361
14367
|
__name(next, "next");
|
|
14362
14368
|
}, "sendFile");
|
|
14363
|
-
SendStream.prototype.sendIndex = /* @__PURE__ */ __name(function sendIndex(
|
|
14369
|
+
SendStream.prototype.sendIndex = /* @__PURE__ */ __name(function sendIndex(path4) {
|
|
14364
14370
|
var i = -1;
|
|
14365
14371
|
var self = this;
|
|
14366
14372
|
function next(err) {
|
|
@@ -14368,7 +14374,7 @@ var require_send = __commonJS({
|
|
|
14368
14374
|
if (err) return self.onStatError(err);
|
|
14369
14375
|
return self.error(404);
|
|
14370
14376
|
}
|
|
14371
|
-
var p = join2(
|
|
14377
|
+
var p = join2(path4, self._index[i]);
|
|
14372
14378
|
debug('stat "%s"', p);
|
|
14373
14379
|
fs.stat(p, function(err2, stat) {
|
|
14374
14380
|
if (err2) return next(err2);
|
|
@@ -14380,10 +14386,10 @@ var require_send = __commonJS({
|
|
|
14380
14386
|
__name(next, "next");
|
|
14381
14387
|
next();
|
|
14382
14388
|
}, "sendIndex");
|
|
14383
|
-
SendStream.prototype.stream = /* @__PURE__ */ __name(function stream(
|
|
14389
|
+
SendStream.prototype.stream = /* @__PURE__ */ __name(function stream(path4, options) {
|
|
14384
14390
|
var self = this;
|
|
14385
14391
|
var res = this.res;
|
|
14386
|
-
var stream2 = fs.createReadStream(
|
|
14392
|
+
var stream2 = fs.createReadStream(path4, options);
|
|
14387
14393
|
this.emit("stream", stream2);
|
|
14388
14394
|
stream2.pipe(res);
|
|
14389
14395
|
function cleanup() {
|
|
@@ -14399,17 +14405,17 @@ var require_send = __commonJS({
|
|
|
14399
14405
|
self.emit("end");
|
|
14400
14406
|
}, "onend"));
|
|
14401
14407
|
}, "stream");
|
|
14402
|
-
SendStream.prototype.type = /* @__PURE__ */ __name(function type(
|
|
14408
|
+
SendStream.prototype.type = /* @__PURE__ */ __name(function type(path4) {
|
|
14403
14409
|
var res = this.res;
|
|
14404
14410
|
if (res.getHeader("Content-Type")) return;
|
|
14405
|
-
var ext = extname(
|
|
14411
|
+
var ext = extname(path4);
|
|
14406
14412
|
var type2 = mime.contentType(ext) || "application/octet-stream";
|
|
14407
14413
|
debug("content-type %s", type2);
|
|
14408
14414
|
res.setHeader("Content-Type", type2);
|
|
14409
14415
|
}, "type");
|
|
14410
|
-
SendStream.prototype.setHeader = /* @__PURE__ */ __name(function setHeader(
|
|
14416
|
+
SendStream.prototype.setHeader = /* @__PURE__ */ __name(function setHeader(path4, stat) {
|
|
14411
14417
|
var res = this.res;
|
|
14412
|
-
this.emit("headers", res,
|
|
14418
|
+
this.emit("headers", res, path4, stat);
|
|
14413
14419
|
if (this._acceptRanges && !res.getHeader("Accept-Ranges")) {
|
|
14414
14420
|
debug("accept ranges");
|
|
14415
14421
|
res.setHeader("Accept-Ranges", "bytes");
|
|
@@ -14473,9 +14479,9 @@ var require_send = __commonJS({
|
|
|
14473
14479
|
return err instanceof Error ? createError(status, err, { expose: false }) : createError(status, err);
|
|
14474
14480
|
}
|
|
14475
14481
|
__name(createHttpError, "createHttpError");
|
|
14476
|
-
function decode(
|
|
14482
|
+
function decode(path4) {
|
|
14477
14483
|
try {
|
|
14478
|
-
return decodeURIComponent(
|
|
14484
|
+
return decodeURIComponent(path4);
|
|
14479
14485
|
} catch (err) {
|
|
14480
14486
|
return -1;
|
|
14481
14487
|
}
|
|
@@ -14630,7 +14636,7 @@ var require_response = __commonJS({
|
|
|
14630
14636
|
var http = __require("node:http");
|
|
14631
14637
|
var onFinished = require_on_finished();
|
|
14632
14638
|
var mime = require_mime_types();
|
|
14633
|
-
var
|
|
14639
|
+
var path3 = __require("node:path");
|
|
14634
14640
|
var pathIsAbsolute = __require("node:path").isAbsolute;
|
|
14635
14641
|
var statuses = require_statuses();
|
|
14636
14642
|
var sign = require_cookie_signature().sign;
|
|
@@ -14639,8 +14645,8 @@ var require_response = __commonJS({
|
|
|
14639
14645
|
var setCharset = require_utils2().setCharset;
|
|
14640
14646
|
var cookie = require_cookie();
|
|
14641
14647
|
var send = require_send();
|
|
14642
|
-
var extname =
|
|
14643
|
-
var resolve =
|
|
14648
|
+
var extname = path3.extname;
|
|
14649
|
+
var resolve = path3.resolve;
|
|
14644
14650
|
var vary = require_vary();
|
|
14645
14651
|
var { Buffer: Buffer2 } = __require("node:buffer");
|
|
14646
14652
|
var res = Object.create(http.ServerResponse.prototype);
|
|
@@ -14786,26 +14792,26 @@ var require_response = __commonJS({
|
|
|
14786
14792
|
this.type("txt");
|
|
14787
14793
|
return this.send(body);
|
|
14788
14794
|
}, "sendStatus");
|
|
14789
|
-
res.sendFile = /* @__PURE__ */ __name(function sendFile(
|
|
14795
|
+
res.sendFile = /* @__PURE__ */ __name(function sendFile(path4, options, callback) {
|
|
14790
14796
|
var done = callback;
|
|
14791
14797
|
var req = this.req;
|
|
14792
14798
|
var res2 = this;
|
|
14793
14799
|
var next = req.next;
|
|
14794
14800
|
var opts = options || {};
|
|
14795
|
-
if (!
|
|
14801
|
+
if (!path4) {
|
|
14796
14802
|
throw new TypeError("path argument is required to res.sendFile");
|
|
14797
14803
|
}
|
|
14798
|
-
if (typeof
|
|
14804
|
+
if (typeof path4 !== "string") {
|
|
14799
14805
|
throw new TypeError("path must be a string to res.sendFile");
|
|
14800
14806
|
}
|
|
14801
14807
|
if (typeof options === "function") {
|
|
14802
14808
|
done = options;
|
|
14803
14809
|
opts = {};
|
|
14804
14810
|
}
|
|
14805
|
-
if (!opts.root && !pathIsAbsolute(
|
|
14811
|
+
if (!opts.root && !pathIsAbsolute(path4)) {
|
|
14806
14812
|
throw new TypeError("path must be absolute or specify root to res.sendFile");
|
|
14807
14813
|
}
|
|
14808
|
-
var pathname = encodeURI(
|
|
14814
|
+
var pathname = encodeURI(path4);
|
|
14809
14815
|
opts.etag = this.app.enabled("etag");
|
|
14810
14816
|
var file = send(req, pathname, opts);
|
|
14811
14817
|
sendfile(res2, file, opts, function(err) {
|
|
@@ -14816,7 +14822,7 @@ var require_response = __commonJS({
|
|
|
14816
14822
|
}
|
|
14817
14823
|
});
|
|
14818
14824
|
}, "sendFile");
|
|
14819
|
-
res.download = /* @__PURE__ */ __name(function download(
|
|
14825
|
+
res.download = /* @__PURE__ */ __name(function download(path4, filename, options, callback) {
|
|
14820
14826
|
var done = callback;
|
|
14821
14827
|
var name = filename;
|
|
14822
14828
|
var opts = options || null;
|
|
@@ -14833,7 +14839,7 @@ var require_response = __commonJS({
|
|
|
14833
14839
|
opts = filename;
|
|
14834
14840
|
}
|
|
14835
14841
|
var headers = {
|
|
14836
|
-
"Content-Disposition": contentDisposition(name ||
|
|
14842
|
+
"Content-Disposition": contentDisposition(name || path4)
|
|
14837
14843
|
};
|
|
14838
14844
|
if (opts && opts.headers) {
|
|
14839
14845
|
var keys = Object.keys(opts.headers);
|
|
@@ -14846,7 +14852,7 @@ var require_response = __commonJS({
|
|
|
14846
14852
|
}
|
|
14847
14853
|
opts = Object.create(opts);
|
|
14848
14854
|
opts.headers = headers;
|
|
14849
|
-
var fullPath = !opts.root ? resolve(
|
|
14855
|
+
var fullPath = !opts.root ? resolve(path4) : path4;
|
|
14850
14856
|
return this.sendFile(fullPath, opts, done);
|
|
14851
14857
|
}, "download");
|
|
14852
14858
|
res.contentType = res.type = /* @__PURE__ */ __name(function contentType(type) {
|
|
@@ -15139,11 +15145,11 @@ var require_serve_static = __commonJS({
|
|
|
15139
15145
|
}
|
|
15140
15146
|
var forwardError = !fallthrough;
|
|
15141
15147
|
var originalUrl = parseUrl.original(req);
|
|
15142
|
-
var
|
|
15143
|
-
if (
|
|
15144
|
-
|
|
15148
|
+
var path3 = parseUrl(req).pathname;
|
|
15149
|
+
if (path3 === "/" && originalUrl.pathname.substr(-1) !== "/") {
|
|
15150
|
+
path3 = "";
|
|
15145
15151
|
}
|
|
15146
|
-
var stream = send(req,
|
|
15152
|
+
var stream = send(req, path3, opts);
|
|
15147
15153
|
stream.on("directory", onDirectory);
|
|
15148
15154
|
if (setHeaders) {
|
|
15149
15155
|
stream.on("headers", setHeaders);
|
|
@@ -16367,6 +16373,7 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16367
16373
|
session_tasks: { since: "v1" },
|
|
16368
16374
|
session_stats: { since: "v1" },
|
|
16369
16375
|
session_lsp: { since: "v1" },
|
|
16376
|
+
session_status: { since: "v1" },
|
|
16370
16377
|
session_close: { since: "v1" },
|
|
16371
16378
|
session_metadata: { since: "v1" },
|
|
16372
16379
|
// Daemon supports the MCP client guardrail surface: an in-process
|
|
@@ -16416,7 +16423,17 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16416
16423
|
// (`tools.disabled` is consulted at `Config` construction time).
|
|
16417
16424
|
workspace_tool_toggle: { since: "v1" },
|
|
16418
16425
|
workspace_settings: { since: "v1" },
|
|
16426
|
+
// `GET /workspace/permissions` is always available when this tag is
|
|
16427
|
+
// advertised. `POST /workspace/permissions` updates the active ACP
|
|
16428
|
+
// child and returns `permission_session_required` when no live ACP
|
|
16429
|
+
// session exists; the tag means the route contract exists, not that
|
|
16430
|
+
// the current daemon state can accept a write.
|
|
16419
16431
|
workspace_permissions: { since: "v1" },
|
|
16432
|
+
workspace_voice: { since: "v1" },
|
|
16433
|
+
workspace_voice_transcription: { since: "v1", modes: ["batch"] },
|
|
16434
|
+
// Inspect bound workspace trust and request local operator action.
|
|
16435
|
+
// Remote clients cannot directly write trustedFolders.json.
|
|
16436
|
+
workspace_trust: { since: "v1" },
|
|
16420
16437
|
// `POST /workspace/init` scaffolds an empty
|
|
16421
16438
|
// `QWEN.md` (or whatever `getCurrentGeminiMdFilename()` returns) at
|
|
16422
16439
|
// the bound workspace root. Body: `{force?: boolean}`. Default
|
|
@@ -16425,6 +16442,11 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16425
16442
|
// the file, the caller should follow up with
|
|
16426
16443
|
// `POST /session/:id/prompt`.
|
|
16427
16444
|
workspace_init: { since: "v1" },
|
|
16445
|
+
// `POST /workspace/setup-github` installs the fixed
|
|
16446
|
+
// qwen-code-action workflow set into the bound workspace after
|
|
16447
|
+
// explicit consent. The route reuses the interactive `/setup-github`
|
|
16448
|
+
// release lookup, workflow download, and `.gitignore` update logic.
|
|
16449
|
+
workspace_github_setup: { since: "v1" },
|
|
16428
16450
|
// `POST /workspace/mcp/:server/restart` performs
|
|
16429
16451
|
// a single-server MCP restart (disconnect + reconnect + rediscover)
|
|
16430
16452
|
// through the ACP child's `McpClientManager`. Pre-checks the live
|
|
@@ -16542,9 +16564,10 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
|
|
|
16542
16564
|
(toggles) => typeof toggles.writerIdleTimeoutMs === "number" && toggles.writerIdleTimeoutMs > 0
|
|
16543
16565
|
],
|
|
16544
16566
|
["workspace_settings", (toggles) => toggles.persistSettingAvailable === true],
|
|
16567
|
+
["workspace_voice", (toggles) => toggles.persistSettingAvailable === true],
|
|
16545
16568
|
[
|
|
16546
|
-
"
|
|
16547
|
-
(toggles) => toggles.
|
|
16569
|
+
"workspace_voice_transcription",
|
|
16570
|
+
(toggles) => toggles.voiceTranscriptionAvailable === true
|
|
16548
16571
|
],
|
|
16549
16572
|
[
|
|
16550
16573
|
"session_shell_command",
|
|
@@ -16594,13 +16617,232 @@ __name(getServeProtocolVersions, "getServeProtocolVersions");
|
|
|
16594
16617
|
init_esbuild_shims();
|
|
16595
16618
|
var CAPABILITIES_SCHEMA_VERSION = 1;
|
|
16596
16619
|
|
|
16620
|
+
// packages/cli/src/serve/acp-session-bridge.ts
|
|
16621
|
+
init_esbuild_shims();
|
|
16622
|
+
|
|
16623
|
+
// packages/cli/src/serve/server/request-helpers.ts
|
|
16624
|
+
init_esbuild_shims();
|
|
16625
|
+
import * as path2 from "node:path";
|
|
16626
|
+
function sendJsonBodyParserError(res, err) {
|
|
16627
|
+
if (err instanceof SyntaxError && "status" in err && err.status === 400) {
|
|
16628
|
+
res.status(400).json({ error: "Invalid JSON in request body" });
|
|
16629
|
+
return true;
|
|
16630
|
+
}
|
|
16631
|
+
if (err && typeof err === "object" && "status" in err && err.status === 413) {
|
|
16632
|
+
res.status(413).json({ error: "Request body too large (max 10 MB)" });
|
|
16633
|
+
return true;
|
|
16634
|
+
}
|
|
16635
|
+
return false;
|
|
16636
|
+
}
|
|
16637
|
+
__name(sendJsonBodyParserError, "sendJsonBodyParserError");
|
|
16638
|
+
var PROTOTYPE_POLLUTION_KEYS = /* @__PURE__ */ new Set([
|
|
16639
|
+
"__proto__",
|
|
16640
|
+
"constructor",
|
|
16641
|
+
"prototype"
|
|
16642
|
+
]);
|
|
16643
|
+
var CLIENT_ID_HEADER = "x-qwen-client-id";
|
|
16644
|
+
var MAX_CLIENT_ID_LENGTH = 128;
|
|
16645
|
+
var MAX_TOOL_NAME_LENGTH = 256;
|
|
16646
|
+
var MAX_SERVER_NAME_LENGTH = 256;
|
|
16647
|
+
var CLIENT_ID_RE = /^[A-Za-z0-9._:-]+$/;
|
|
16648
|
+
var INVALID_PERMISSION_OUTCOME_ERROR = '`outcome` must be `{ outcome: "cancelled" }` or `{ outcome: "selected", optionId: string }`';
|
|
16649
|
+
function safeBody(req) {
|
|
16650
|
+
const raw = req.body;
|
|
16651
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
16652
|
+
return /* @__PURE__ */ Object.create(null);
|
|
16653
|
+
}
|
|
16654
|
+
const out = /* @__PURE__ */ Object.create(null);
|
|
16655
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
16656
|
+
if (PROTOTYPE_POLLUTION_KEYS.has(key)) continue;
|
|
16657
|
+
out[key] = value;
|
|
16658
|
+
}
|
|
16659
|
+
return out;
|
|
16660
|
+
}
|
|
16661
|
+
__name(safeBody, "safeBody");
|
|
16662
|
+
function parseOptionalWorkspaceCwd(body, boundWorkspace, res) {
|
|
16663
|
+
const hasCwd = "cwd" in body;
|
|
16664
|
+
if (hasCwd && typeof body["cwd"] !== "string") {
|
|
16665
|
+
res.status(400).json({ error: "`cwd` must be a string absolute path when provided" });
|
|
16666
|
+
return void 0;
|
|
16667
|
+
}
|
|
16668
|
+
if (hasCwd && body["cwd"].length > MAX_WORKSPACE_PATH_LENGTH) {
|
|
16669
|
+
res.status(400).json({
|
|
16670
|
+
error: `\`cwd\` exceeds the ${MAX_WORKSPACE_PATH_LENGTH}-character limit`
|
|
16671
|
+
});
|
|
16672
|
+
return void 0;
|
|
16673
|
+
}
|
|
16674
|
+
const cwd = hasCwd ? body["cwd"] : boundWorkspace;
|
|
16675
|
+
if (!path2.isAbsolute(cwd)) {
|
|
16676
|
+
res.status(400).json({ error: "`cwd` must be an absolute path when provided" });
|
|
16677
|
+
return void 0;
|
|
16678
|
+
}
|
|
16679
|
+
return cwd;
|
|
16680
|
+
}
|
|
16681
|
+
__name(parseOptionalWorkspaceCwd, "parseOptionalWorkspaceCwd");
|
|
16682
|
+
function requireSessionId(req, res) {
|
|
16683
|
+
const sessionId = req.params["id"];
|
|
16684
|
+
if (!sessionId) {
|
|
16685
|
+
res.status(400).json({ error: "`sessionId` route parameter is required" });
|
|
16686
|
+
return null;
|
|
16687
|
+
}
|
|
16688
|
+
return sessionId;
|
|
16689
|
+
}
|
|
16690
|
+
__name(requireSessionId, "requireSessionId");
|
|
16691
|
+
function parseClientIdHeader(req, res) {
|
|
16692
|
+
const raw = req.get(CLIENT_ID_HEADER);
|
|
16693
|
+
if (raw === void 0 || raw === "") return void 0;
|
|
16694
|
+
if (raw.length > MAX_CLIENT_ID_LENGTH || !CLIENT_ID_RE.test(raw)) {
|
|
16695
|
+
res.status(400).json({
|
|
16696
|
+
error: "`X-Qwen-Client-Id` must be a non-empty token of 128 characters or fewer",
|
|
16697
|
+
code: "invalid_client_id"
|
|
16698
|
+
});
|
|
16699
|
+
return null;
|
|
16700
|
+
}
|
|
16701
|
+
return raw;
|
|
16702
|
+
}
|
|
16703
|
+
__name(parseClientIdHeader, "parseClientIdHeader");
|
|
16704
|
+
function detectFromLoopback(req) {
|
|
16705
|
+
const addr = req.socket?.remoteAddress;
|
|
16706
|
+
if (typeof addr !== "string") return false;
|
|
16707
|
+
if (addr === "::1") return true;
|
|
16708
|
+
if (addr.startsWith("127.")) return true;
|
|
16709
|
+
if (addr.startsWith("::ffff:127.")) return true;
|
|
16710
|
+
return false;
|
|
16711
|
+
}
|
|
16712
|
+
__name(detectFromLoopback, "detectFromLoopback");
|
|
16713
|
+
function validateMcpRuntimeServerName(name, res) {
|
|
16714
|
+
if (typeof name !== "string" || name.length === 0) {
|
|
16715
|
+
res.status(400).json({
|
|
16716
|
+
error: "Server name is required and must be a non-empty string",
|
|
16717
|
+
code: "invalid_server_name"
|
|
16718
|
+
});
|
|
16719
|
+
return false;
|
|
16720
|
+
}
|
|
16721
|
+
if (name.length > MAX_SERVER_NAME_LENGTH) {
|
|
16722
|
+
res.status(400).json({
|
|
16723
|
+
error: `Server name exceeds ${MAX_SERVER_NAME_LENGTH}-character limit`,
|
|
16724
|
+
code: "invalid_server_name"
|
|
16725
|
+
});
|
|
16726
|
+
return false;
|
|
16727
|
+
}
|
|
16728
|
+
if (!/^[A-Za-z0-9_-]+$/.test(name)) {
|
|
16729
|
+
res.status(400).json({
|
|
16730
|
+
error: "Server name must contain only alphanumeric characters, underscores, and hyphens",
|
|
16731
|
+
code: "invalid_server_name"
|
|
16732
|
+
});
|
|
16733
|
+
return false;
|
|
16734
|
+
}
|
|
16735
|
+
if (name === "__proto__" || name === "constructor" || name === "prototype") {
|
|
16736
|
+
res.status(400).json({
|
|
16737
|
+
error: "Server name must not be a reserved JS property name",
|
|
16738
|
+
code: "invalid_server_name"
|
|
16739
|
+
});
|
|
16740
|
+
return false;
|
|
16741
|
+
}
|
|
16742
|
+
return true;
|
|
16743
|
+
}
|
|
16744
|
+
__name(validateMcpRuntimeServerName, "validateMcpRuntimeServerName");
|
|
16745
|
+
function parseAndValidateWorkspaceClientId(req, res, bridge) {
|
|
16746
|
+
const raw = parseClientIdHeader(req, res);
|
|
16747
|
+
if (raw === null || raw === void 0) return raw;
|
|
16748
|
+
if (!bridge.knownClientIds().has(raw)) {
|
|
16749
|
+
res.status(400).json({
|
|
16750
|
+
error: `Client id "${raw}" is not registered for this workspace`,
|
|
16751
|
+
code: "invalid_client_id",
|
|
16752
|
+
clientId: raw
|
|
16753
|
+
});
|
|
16754
|
+
return null;
|
|
16755
|
+
}
|
|
16756
|
+
return raw;
|
|
16757
|
+
}
|
|
16758
|
+
__name(parseAndValidateWorkspaceClientId, "parseAndValidateWorkspaceClientId");
|
|
16759
|
+
function createBuildWorkspaceCtx(boundWorkspace) {
|
|
16760
|
+
return (route, clientId) => ({
|
|
16761
|
+
originatorClientId: clientId,
|
|
16762
|
+
route,
|
|
16763
|
+
workspaceCwd: boundWorkspace
|
|
16764
|
+
});
|
|
16765
|
+
}
|
|
16766
|
+
__name(createBuildWorkspaceCtx, "createBuildWorkspaceCtx");
|
|
16767
|
+
function parsePermissionVoteBody(req, res) {
|
|
16768
|
+
const body = safeBody(req);
|
|
16769
|
+
const outcome = body["outcome"];
|
|
16770
|
+
if (!isValidOutcome(outcome)) {
|
|
16771
|
+
res.status(400).json({ error: INVALID_PERMISSION_OUTCOME_ERROR });
|
|
16772
|
+
return void 0;
|
|
16773
|
+
}
|
|
16774
|
+
return {
|
|
16775
|
+
...body,
|
|
16776
|
+
outcome
|
|
16777
|
+
};
|
|
16778
|
+
}
|
|
16779
|
+
__name(parsePermissionVoteBody, "parsePermissionVoteBody");
|
|
16780
|
+
function isValidOutcome(raw) {
|
|
16781
|
+
if (typeof raw !== "object" || raw === null) return false;
|
|
16782
|
+
const obj = raw;
|
|
16783
|
+
if (obj["outcome"] === "cancelled") return true;
|
|
16784
|
+
return obj["outcome"] === "selected" && typeof obj["optionId"] === "string" && obj["optionId"].length > 0;
|
|
16785
|
+
}
|
|
16786
|
+
__name(isValidOutcome, "isValidOutcome");
|
|
16787
|
+
var MIN_QUERY_MAX_QUEUED = 16;
|
|
16788
|
+
var MAX_QUERY_MAX_QUEUED = 2048;
|
|
16789
|
+
function parseMaxQueuedQuery(raw, res) {
|
|
16790
|
+
if (raw === void 0) return void 0;
|
|
16791
|
+
if (typeof raw !== "string" || !/^\d+$/.test(raw)) {
|
|
16792
|
+
writeStderrLine(
|
|
16793
|
+
`qwen serve: rejected ?maxQueued ${safeLogValue(raw)} (not a decimal integer)`
|
|
16794
|
+
);
|
|
16795
|
+
res.status(400).json({
|
|
16796
|
+
error: "`maxQueued` must be a decimal integer",
|
|
16797
|
+
code: "invalid_max_queued"
|
|
16798
|
+
});
|
|
16799
|
+
return null;
|
|
16800
|
+
}
|
|
16801
|
+
const n = Number.parseInt(raw, 10);
|
|
16802
|
+
if (!Number.isFinite(n) || n < MIN_QUERY_MAX_QUEUED || n > MAX_QUERY_MAX_QUEUED) {
|
|
16803
|
+
writeStderrLine(
|
|
16804
|
+
`qwen serve: rejected ?maxQueued ${safeLogValue(raw)} (outside [${MIN_QUERY_MAX_QUEUED}, ${MAX_QUERY_MAX_QUEUED}])`
|
|
16805
|
+
);
|
|
16806
|
+
res.status(400).json({
|
|
16807
|
+
error: `\`maxQueued\` must be in [${MIN_QUERY_MAX_QUEUED}, ${MAX_QUERY_MAX_QUEUED}]`,
|
|
16808
|
+
code: "invalid_max_queued"
|
|
16809
|
+
});
|
|
16810
|
+
return null;
|
|
16811
|
+
}
|
|
16812
|
+
return n;
|
|
16813
|
+
}
|
|
16814
|
+
__name(parseMaxQueuedQuery, "parseMaxQueuedQuery");
|
|
16815
|
+
function safeLogValue(raw) {
|
|
16816
|
+
return JSON.stringify(String(raw)).slice(0, 82);
|
|
16817
|
+
}
|
|
16818
|
+
__name(safeLogValue, "safeLogValue");
|
|
16819
|
+
function parseLastEventId(raw) {
|
|
16820
|
+
if (typeof raw !== "string" || !/^\d+$/.test(raw)) {
|
|
16821
|
+
if (typeof raw === "string" && raw.length > 0) {
|
|
16822
|
+
writeStderrLine(
|
|
16823
|
+
`qwen serve: rejected Last-Event-ID ${safeLogValue(raw)} (not a decimal integer)`
|
|
16824
|
+
);
|
|
16825
|
+
}
|
|
16826
|
+
return void 0;
|
|
16827
|
+
}
|
|
16828
|
+
const n = Number.parseInt(raw, 10);
|
|
16829
|
+
if (!Number.isFinite(n) || n > Number.MAX_SAFE_INTEGER) {
|
|
16830
|
+
writeStderrLine(
|
|
16831
|
+
`qwen serve: rejected Last-Event-ID ${safeLogValue(raw)} (exceeds Number.MAX_SAFE_INTEGER)`
|
|
16832
|
+
);
|
|
16833
|
+
return void 0;
|
|
16834
|
+
}
|
|
16835
|
+
return n;
|
|
16836
|
+
}
|
|
16837
|
+
__name(parseLastEventId, "parseLastEventId");
|
|
16838
|
+
|
|
16597
16839
|
// packages/cli/src/serve/rate-limit.ts
|
|
16598
16840
|
init_esbuild_shims();
|
|
16599
16841
|
var MAX_BUCKETS = 1e4;
|
|
16600
16842
|
var GC_REQUEST_INTERVAL = 1e3;
|
|
16601
16843
|
var GC_TIMER_INTERVAL_MS = 5 * 60 * 1e3;
|
|
16602
|
-
function resolveTier(method,
|
|
16603
|
-
const p =
|
|
16844
|
+
function resolveTier(method, path3) {
|
|
16845
|
+
const p = path3.endsWith("/") && path3.length > 1 ? path3.slice(0, -1) : path3;
|
|
16604
16846
|
if (method === "OPTIONS") return null;
|
|
16605
16847
|
if ((method === "GET" || method === "HEAD") && (p === "/health" || p === "/demo"))
|
|
16606
16848
|
return null;
|
|
@@ -16615,8 +16857,6 @@ function resolveTier(method, path2) {
|
|
|
16615
16857
|
return "read";
|
|
16616
16858
|
}
|
|
16617
16859
|
__name(resolveTier, "resolveTier");
|
|
16618
|
-
var MAX_CLIENT_ID_LENGTH = 128;
|
|
16619
|
-
var CLIENT_ID_RE = /^[A-Za-z0-9._:-]+$/;
|
|
16620
16860
|
function normalizeIp(raw) {
|
|
16621
16861
|
if (raw.startsWith("::ffff:")) {
|
|
16622
16862
|
return raw.slice(7);
|
|
@@ -17292,6 +17532,24 @@ export {
|
|
|
17292
17532
|
getAdvertisedServeFeatures,
|
|
17293
17533
|
getServeProtocolVersions,
|
|
17294
17534
|
CAPABILITIES_SCHEMA_VERSION,
|
|
17535
|
+
sendJsonBodyParserError,
|
|
17536
|
+
CLIENT_ID_HEADER,
|
|
17537
|
+
MAX_CLIENT_ID_LENGTH,
|
|
17538
|
+
MAX_TOOL_NAME_LENGTH,
|
|
17539
|
+
MAX_SERVER_NAME_LENGTH,
|
|
17540
|
+
CLIENT_ID_RE,
|
|
17541
|
+
safeBody,
|
|
17542
|
+
parseOptionalWorkspaceCwd,
|
|
17543
|
+
requireSessionId,
|
|
17544
|
+
parseClientIdHeader,
|
|
17545
|
+
detectFromLoopback,
|
|
17546
|
+
validateMcpRuntimeServerName,
|
|
17547
|
+
parseAndValidateWorkspaceClientId,
|
|
17548
|
+
createBuildWorkspaceCtx,
|
|
17549
|
+
parsePermissionVoteBody,
|
|
17550
|
+
parseMaxQueuedQuery,
|
|
17551
|
+
safeLogValue,
|
|
17552
|
+
parseLastEventId,
|
|
17295
17553
|
createRateLimiter,
|
|
17296
17554
|
setRateLimiter,
|
|
17297
17555
|
getRateLimiter,
|