@dylanpiercey/work 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -0
- package/bin/work.mjs +236 -0
- package/dist/_B9zhiogp.js +1797 -0
- package/dist/_BMI-E3GI.js +44 -0
- package/dist/_BmSjjJ2E.js +43 -0
- package/dist/_DmVVbFOa.js +7641 -0
- package/dist/_JcAWG3K1.js +2422 -0
- package/dist/_xlrdOUsL.js +877 -0
- package/dist/index.mjs +21023 -0
- package/dist/public/apple-touch-icon.png +0 -0
- package/dist/public/assets/_0fSaH845.js +2 -0
- package/dist/public/assets/_0fSaH845.js.map +1 -0
- package/dist/public/assets/_1d3aXaVP.js +2 -0
- package/dist/public/assets/_1d3aXaVP.js.map +1 -0
- package/dist/public/assets/_2IIEA8gg.js +2 -0
- package/dist/public/assets/_2IIEA8gg.js.map +1 -0
- package/dist/public/assets/_2WURHcVF2.js +2 -0
- package/dist/public/assets/_2WURHcVF2.js.map +1 -0
- package/dist/public/assets/_2sfcym2Z.js +2 -0
- package/dist/public/assets/_2sfcym2Z.js.map +1 -0
- package/dist/public/assets/_4CJ0cIlV.js +2 -0
- package/dist/public/assets/_4CJ0cIlV.js.map +1 -0
- package/dist/public/assets/_4G7pJPwS2.js +2 -0
- package/dist/public/assets/_4G7pJPwS2.js.map +1 -0
- package/dist/public/assets/_4ZHwLPI52.js +2 -0
- package/dist/public/assets/_4ZHwLPI52.js.map +1 -0
- package/dist/public/assets/_5eyTD99u.js +2 -0
- package/dist/public/assets/_5eyTD99u.js.map +1 -0
- package/dist/public/assets/_7GGW24-e2.js +2 -0
- package/dist/public/assets/_7GGW24-e2.js.map +1 -0
- package/dist/public/assets/_8PwUyIlP2.js +2 -0
- package/dist/public/assets/_8PwUyIlP2.js.map +1 -0
- package/dist/public/assets/_9MfHhQsQ.js +2 -0
- package/dist/public/assets/_9MfHhQsQ.js.map +1 -0
- package/dist/public/assets/_B1RWQWA52.js +2 -0
- package/dist/public/assets/_B1RWQWA52.js.map +1 -0
- package/dist/public/assets/_B2OO5cIa2.js +2 -0
- package/dist/public/assets/_B2OO5cIa2.js.map +1 -0
- package/dist/public/assets/_B2gwz-sJ2.js +2 -0
- package/dist/public/assets/_B2gwz-sJ2.js.map +1 -0
- package/dist/public/assets/_B3-BJFgG2.js +2 -0
- package/dist/public/assets/_B3-BJFgG2.js.map +1 -0
- package/dist/public/assets/_B35FxJx-.js +2 -0
- package/dist/public/assets/_B35FxJx-.js.map +1 -0
- package/dist/public/assets/_B3gFvitq2.js +2 -0
- package/dist/public/assets/_B3gFvitq2.js.map +1 -0
- package/dist/public/assets/_B5W6OYN7.js +2 -0
- package/dist/public/assets/_B5W6OYN7.js.map +1 -0
- package/dist/public/assets/_B5_Aarum.js +2 -0
- package/dist/public/assets/_B5_Aarum.js.map +1 -0
- package/dist/public/assets/_B5eOa1yu.js +2 -0
- package/dist/public/assets/_B5eOa1yu.js.map +1 -0
- package/dist/public/assets/_B68TUdTA.js +2 -0
- package/dist/public/assets/_B68TUdTA.js.map +1 -0
- package/dist/public/assets/_B6D30XZt.js +2 -0
- package/dist/public/assets/_B6D30XZt.js.map +1 -0
- package/dist/public/assets/_B7U1oqTK.js +2 -0
- package/dist/public/assets/_B7U1oqTK.js.map +1 -0
- package/dist/public/assets/_B7ZEbQpA2.js +2 -0
- package/dist/public/assets/_B7ZEbQpA2.js.map +1 -0
- package/dist/public/assets/_BAWPOn9u.js +2 -0
- package/dist/public/assets/_BAWPOn9u.js.map +1 -0
- package/dist/public/assets/_BAd6mRrB.js +2 -0
- package/dist/public/assets/_BAd6mRrB.js.map +1 -0
- package/dist/public/assets/_BC2Px7Mm.js +2 -0
- package/dist/public/assets/_BC2Px7Mm.js.map +1 -0
- package/dist/public/assets/_BC_s9l72.js +2 -0
- package/dist/public/assets/_BC_s9l72.js.map +1 -0
- package/dist/public/assets/_BHWKrbxM.js +2 -0
- package/dist/public/assets/_BHWKrbxM.js.map +1 -0
- package/dist/public/assets/_BHpQb5nM.js +2 -0
- package/dist/public/assets/_BHpQb5nM.js.map +1 -0
- package/dist/public/assets/_BJitypiv.js +2 -0
- package/dist/public/assets/_BJitypiv.js.map +1 -0
- package/dist/public/assets/_BM315xPC.js +2 -0
- package/dist/public/assets/_BM315xPC.js.map +1 -0
- package/dist/public/assets/_BML5mF2J.js +2 -0
- package/dist/public/assets/_BML5mF2J.js.map +1 -0
- package/dist/public/assets/_BMqwQI7S.js +2 -0
- package/dist/public/assets/_BMqwQI7S.js.map +1 -0
- package/dist/public/assets/_BN8roHge.js +2 -0
- package/dist/public/assets/_BN8roHge.js.map +1 -0
- package/dist/public/assets/_BNLmms1o.js +2 -0
- package/dist/public/assets/_BNLmms1o.js.map +1 -0
- package/dist/public/assets/_BPjhmG05.js +2 -0
- package/dist/public/assets/_BPjhmG05.js.map +1 -0
- package/dist/public/assets/_BQwnQ1RS.js +2 -0
- package/dist/public/assets/_BQwnQ1RS.js.map +1 -0
- package/dist/public/assets/_BR5RXkoi.js +2 -0
- package/dist/public/assets/_BR5RXkoi.js.map +1 -0
- package/dist/public/assets/_BRdr0IET2.js +2 -0
- package/dist/public/assets/_BRdr0IET2.js.map +1 -0
- package/dist/public/assets/_BSMLrYjP.js +2 -0
- package/dist/public/assets/_BSMLrYjP.js.map +1 -0
- package/dist/public/assets/_BSWPekZh2.js +2 -0
- package/dist/public/assets/_BSWPekZh2.js.map +1 -0
- package/dist/public/assets/_BUDT5pXO2.js +2 -0
- package/dist/public/assets/_BUDT5pXO2.js.map +1 -0
- package/dist/public/assets/_BUR00bIu.js +2 -0
- package/dist/public/assets/_BUR00bIu.js.map +1 -0
- package/dist/public/assets/_BVOciON5.js +2 -0
- package/dist/public/assets/_BVOciON5.js.map +1 -0
- package/dist/public/assets/_BVqpJbzt.js +2 -0
- package/dist/public/assets/_BVqpJbzt.js.map +1 -0
- package/dist/public/assets/_BWXHIvNe2.js +2 -0
- package/dist/public/assets/_BWXHIvNe2.js.map +1 -0
- package/dist/public/assets/_BX8lD8tm2.js +2 -0
- package/dist/public/assets/_BX8lD8tm2.js.map +1 -0
- package/dist/public/assets/_BXViO-2h.js +2 -0
- package/dist/public/assets/_BXViO-2h.js.map +1 -0
- package/dist/public/assets/_BXeXVLqQ.js +2 -0
- package/dist/public/assets/_BXeXVLqQ.js.map +1 -0
- package/dist/public/assets/_BYOwaDjH.js +2 -0
- package/dist/public/assets/_BYOwaDjH.js.map +1 -0
- package/dist/public/assets/_BYnGhZoM.js +2 -0
- package/dist/public/assets/_BYnGhZoM.js.map +1 -0
- package/dist/public/assets/_BZCL-v6S2.js +2 -0
- package/dist/public/assets/_BZCL-v6S2.js.map +1 -0
- package/dist/public/assets/_B_bV9PQ92.js +2 -0
- package/dist/public/assets/_B_bV9PQ92.js.map +1 -0
- package/dist/public/assets/_B_tTalzw.js +2 -0
- package/dist/public/assets/_B_tTalzw.js.map +1 -0
- package/dist/public/assets/_BaHq4SXp.js +2 -0
- package/dist/public/assets/_BaHq4SXp.js.map +1 -0
- package/dist/public/assets/_BaS-oxxd2.js +2 -0
- package/dist/public/assets/_BaS-oxxd2.js.map +1 -0
- package/dist/public/assets/_Bc3YyYrH2.js +2 -0
- package/dist/public/assets/_Bc3YyYrH2.js.map +1 -0
- package/dist/public/assets/_BdRaM05m2.js +2 -0
- package/dist/public/assets/_BdRaM05m2.js.map +1 -0
- package/dist/public/assets/_BdplqJrr.js +2 -0
- package/dist/public/assets/_BdplqJrr.js.map +1 -0
- package/dist/public/assets/_BeD6FBFk.js +2 -0
- package/dist/public/assets/_BeD6FBFk.js.map +1 -0
- package/dist/public/assets/_BewZWKdk2.js +2 -0
- package/dist/public/assets/_BewZWKdk2.js.map +1 -0
- package/dist/public/assets/_BgfXC-Er.js +2 -0
- package/dist/public/assets/_BgfXC-Er.js.map +1 -0
- package/dist/public/assets/_Bh7aXd4k.js +2 -0
- package/dist/public/assets/_Bh7aXd4k.js.map +1 -0
- package/dist/public/assets/_BiFt_7mu2.js +2 -0
- package/dist/public/assets/_BiFt_7mu2.js.map +1 -0
- package/dist/public/assets/_BiJDBrnU2.js +2 -0
- package/dist/public/assets/_BiJDBrnU2.js.map +1 -0
- package/dist/public/assets/_Bj61d0ZC2.js +2 -0
- package/dist/public/assets/_Bj61d0ZC2.js.map +1 -0
- package/dist/public/assets/_Bj7E1mRn.js +2 -0
- package/dist/public/assets/_Bj7E1mRn.js.map +1 -0
- package/dist/public/assets/_BjSbUqbC.js +2 -0
- package/dist/public/assets/_BjSbUqbC.js.map +1 -0
- package/dist/public/assets/_Bkw-3BvZ.js +2 -0
- package/dist/public/assets/_Bkw-3BvZ.js.map +1 -0
- package/dist/public/assets/_BkyTk9wS.js +2 -0
- package/dist/public/assets/_BkyTk9wS.js.map +1 -0
- package/dist/public/assets/_Bm2Q91Ye.js +2 -0
- package/dist/public/assets/_Bm2Q91Ye.js.map +1 -0
- package/dist/public/assets/_Bm3Qr25_2.js +2 -0
- package/dist/public/assets/_Bm3Qr25_2.js.map +1 -0
- package/dist/public/assets/_BmuOG9ZW.js +2 -0
- package/dist/public/assets/_BmuOG9ZW.js.map +1 -0
- package/dist/public/assets/_BnjxR4X6.js +2 -0
- package/dist/public/assets/_BnjxR4X6.js.map +1 -0
- package/dist/public/assets/_BnlCZFoB2.js +2 -0
- package/dist/public/assets/_BnlCZFoB2.js.map +1 -0
- package/dist/public/assets/_Bozd7klA.js +2 -0
- package/dist/public/assets/_Bozd7klA.js.map +1 -0
- package/dist/public/assets/_BqS6dk9f2.js +2 -0
- package/dist/public/assets/_BqS6dk9f2.js.map +1 -0
- package/dist/public/assets/_Bqwy1Gya.js +2 -0
- package/dist/public/assets/_Bqwy1Gya.js.map +1 -0
- package/dist/public/assets/_BroJfC0k2.js +2 -0
- package/dist/public/assets/_BroJfC0k2.js.map +1 -0
- package/dist/public/assets/_BsKzXJz42.js +2 -0
- package/dist/public/assets/_BsKzXJz42.js.map +1 -0
- package/dist/public/assets/_BsSzOQcm2.js +2 -0
- package/dist/public/assets/_BsSzOQcm2.js.map +1 -0
- package/dist/public/assets/_BtDbiS_P.js +2 -0
- package/dist/public/assets/_BtDbiS_P.js.map +1 -0
- package/dist/public/assets/_Bvq9DfCD.js +2 -0
- package/dist/public/assets/_Bvq9DfCD.js.map +1 -0
- package/dist/public/assets/_Bx1FflLF.js +2 -0
- package/dist/public/assets/_Bx1FflLF.js.map +1 -0
- package/dist/public/assets/_BxMlprV5.js +2 -0
- package/dist/public/assets/_BxMlprV5.js.map +1 -0
- package/dist/public/assets/_BxpfTIzt.js +2 -0
- package/dist/public/assets/_BxpfTIzt.js.map +1 -0
- package/dist/public/assets/_ByJddavk.js +2 -0
- package/dist/public/assets/_ByJddavk.js.map +1 -0
- package/dist/public/assets/_ByQdrI9o.js +2 -0
- package/dist/public/assets/_ByQdrI9o.js.map +1 -0
- package/dist/public/assets/_ByWQv1Qj2.js +2 -0
- package/dist/public/assets/_ByWQv1Qj2.js.map +1 -0
- package/dist/public/assets/_C-LZuMrd.js +2 -0
- package/dist/public/assets/_C-LZuMrd.js.map +1 -0
- package/dist/public/assets/_C03EYrpw.js +2 -0
- package/dist/public/assets/_C03EYrpw.js.map +1 -0
- package/dist/public/assets/_C0MpOrj4.js +2 -0
- package/dist/public/assets/_C0MpOrj4.js.map +1 -0
- package/dist/public/assets/_C0YiOr0H.js +2 -0
- package/dist/public/assets/_C0YiOr0H.js.map +1 -0
- package/dist/public/assets/_C1IUL_tW2.js +2 -0
- package/dist/public/assets/_C1IUL_tW2.js.map +1 -0
- package/dist/public/assets/_C2pBCSgt.js +2 -0
- package/dist/public/assets/_C2pBCSgt.js.map +1 -0
- package/dist/public/assets/_C3h-C4tm.js +2 -0
- package/dist/public/assets/_C3h-C4tm.js.map +1 -0
- package/dist/public/assets/_C5qYipkI.js +2 -0
- package/dist/public/assets/_C5qYipkI.js.map +1 -0
- package/dist/public/assets/_C7Dq7tkg.js +2 -0
- package/dist/public/assets/_C7Dq7tkg.js.map +1 -0
- package/dist/public/assets/_C7UOKdEL2.js +2 -0
- package/dist/public/assets/_C7UOKdEL2.js.map +1 -0
- package/dist/public/assets/_C7mF5XQf.js +2 -0
- package/dist/public/assets/_C7mF5XQf.js.map +1 -0
- package/dist/public/assets/_C820rvS2.js +2 -0
- package/dist/public/assets/_C820rvS2.js.map +1 -0
- package/dist/public/assets/_C8oCnwJJ2.js +2 -0
- package/dist/public/assets/_C8oCnwJJ2.js.map +1 -0
- package/dist/public/assets/_C8pVoKbM2.js +2 -0
- package/dist/public/assets/_C8pVoKbM2.js.map +1 -0
- package/dist/public/assets/_C8r90Shi2.js +2 -0
- package/dist/public/assets/_C8r90Shi2.js.map +1 -0
- package/dist/public/assets/_C9Q5zVZY.js +2 -0
- package/dist/public/assets/_C9Q5zVZY.js.map +1 -0
- package/dist/public/assets/_C9nuUTWB.js +2 -0
- package/dist/public/assets/_C9nuUTWB.js.map +1 -0
- package/dist/public/assets/_CA9gdOdF.js +2 -0
- package/dist/public/assets/_CA9gdOdF.js.map +1 -0
- package/dist/public/assets/_CA_30FGA2.js +2 -0
- package/dist/public/assets/_CA_30FGA2.js.map +1 -0
- package/dist/public/assets/_CAekHB0j.js +2 -0
- package/dist/public/assets/_CAekHB0j.js.map +1 -0
- package/dist/public/assets/_CAySWx-v2.js +2 -0
- package/dist/public/assets/_CAySWx-v2.js.map +1 -0
- package/dist/public/assets/_CBce3t8t2.js +2 -0
- package/dist/public/assets/_CBce3t8t2.js.map +1 -0
- package/dist/public/assets/_CCSX75yM2.js +2 -0
- package/dist/public/assets/_CCSX75yM2.js.map +1 -0
- package/dist/public/assets/_CCn79oCD.js +2 -0
- package/dist/public/assets/_CCn79oCD.js.map +1 -0
- package/dist/public/assets/_CDeNXAV0.js +2 -0
- package/dist/public/assets/_CDeNXAV0.js.map +1 -0
- package/dist/public/assets/_CDv2pdJW.js +2 -0
- package/dist/public/assets/_CDv2pdJW.js.map +1 -0
- package/dist/public/assets/_CE9AQfxI.js +2 -0
- package/dist/public/assets/_CE9AQfxI.js.map +1 -0
- package/dist/public/assets/_CE9ld1lL.js +2 -0
- package/dist/public/assets/_CE9ld1lL.js.map +1 -0
- package/dist/public/assets/_CEbqgOJL.js +2 -0
- package/dist/public/assets/_CEbqgOJL.js.map +1 -0
- package/dist/public/assets/_CFuIV2fl.js +2 -0
- package/dist/public/assets/_CFuIV2fl.js.map +1 -0
- package/dist/public/assets/_CHQ94UKr.js +2 -0
- package/dist/public/assets/_CHQ94UKr.js.map +1 -0
- package/dist/public/assets/_CJTPZ8u_.js +2 -0
- package/dist/public/assets/_CJTPZ8u_.js.map +1 -0
- package/dist/public/assets/_CKONSnHR2.js +2 -0
- package/dist/public/assets/_CKONSnHR2.js.map +1 -0
- package/dist/public/assets/_CL7CweMx.js +2 -0
- package/dist/public/assets/_CL7CweMx.js.map +1 -0
- package/dist/public/assets/_CLvhMVsD.js +2 -0
- package/dist/public/assets/_CLvhMVsD.js.map +1 -0
- package/dist/public/assets/_CLwyXe_n2.js +2 -0
- package/dist/public/assets/_CLwyXe_n2.js.map +1 -0
- package/dist/public/assets/_CMLA9XwU2.js +2 -0
- package/dist/public/assets/_CMLA9XwU2.js.map +1 -0
- package/dist/public/assets/_CNp9jCcm.js +2 -0
- package/dist/public/assets/_CNp9jCcm.js.map +1 -0
- package/dist/public/assets/_CPPmWfSs.js +2 -0
- package/dist/public/assets/_CPPmWfSs.js.map +1 -0
- package/dist/public/assets/_CQ2zXKGN2.js +2 -0
- package/dist/public/assets/_CQ2zXKGN2.js.map +1 -0
- package/dist/public/assets/_CQJs3lWb.js +2 -0
- package/dist/public/assets/_CQJs3lWb.js.map +1 -0
- package/dist/public/assets/_CRGYupPL.js +2 -0
- package/dist/public/assets/_CRGYupPL.js.map +1 -0
- package/dist/public/assets/_CSRkHgEL2.js +2 -0
- package/dist/public/assets/_CSRkHgEL2.js.map +1 -0
- package/dist/public/assets/_CUHmPFLl2.js +2 -0
- package/dist/public/assets/_CUHmPFLl2.js.map +1 -0
- package/dist/public/assets/_CV2tkWYe2.js +2 -0
- package/dist/public/assets/_CV2tkWYe2.js.map +1 -0
- package/dist/public/assets/_CY8IvGdO2.js +2 -0
- package/dist/public/assets/_CY8IvGdO2.js.map +1 -0
- package/dist/public/assets/_CYIUgYqB2.js +2 -0
- package/dist/public/assets/_CYIUgYqB2.js.map +1 -0
- package/dist/public/assets/_CYNrtFtB.js +2 -0
- package/dist/public/assets/_CYNrtFtB.js.map +1 -0
- package/dist/public/assets/_CYpm1nAK.js +2 -0
- package/dist/public/assets/_CYpm1nAK.js.map +1 -0
- package/dist/public/assets/_CZbG8q4J2.js +2 -0
- package/dist/public/assets/_CZbG8q4J2.js.map +1 -0
- package/dist/public/assets/_CZd0xW_V2.js +2 -0
- package/dist/public/assets/_CZd0xW_V2.js.map +1 -0
- package/dist/public/assets/_C_8bwKvT.js +2 -0
- package/dist/public/assets/_C_8bwKvT.js.map +1 -0
- package/dist/public/assets/_CacY0gHj2.js +2 -0
- package/dist/public/assets/_CacY0gHj2.js.map +1 -0
- package/dist/public/assets/_Cadu5wg_2.js +2 -0
- package/dist/public/assets/_Cadu5wg_2.js.map +1 -0
- package/dist/public/assets/_Cb4Vim4T2.js +2 -0
- package/dist/public/assets/_Cb4Vim4T2.js.map +1 -0
- package/dist/public/assets/_CcUt-GD82.js +2 -0
- package/dist/public/assets/_CcUt-GD82.js.map +1 -0
- package/dist/public/assets/_CcmNWLt02.js +2 -0
- package/dist/public/assets/_CcmNWLt02.js.map +1 -0
- package/dist/public/assets/_CewbzKMR.js +2 -0
- package/dist/public/assets/_CewbzKMR.js.map +1 -0
- package/dist/public/assets/_Cfkwpbl82.js +2 -0
- package/dist/public/assets/_Cfkwpbl82.js.map +1 -0
- package/dist/public/assets/_CgoNMtux2.js +2 -0
- package/dist/public/assets/_CgoNMtux2.js.map +1 -0
- package/dist/public/assets/_Ci_nEsc72.js +2 -0
- package/dist/public/assets/_Ci_nEsc72.js.map +1 -0
- package/dist/public/assets/_CjNLYCLg2.js +2 -0
- package/dist/public/assets/_CjNLYCLg2.js.map +1 -0
- package/dist/public/assets/_Ckw8ddFX.js +2 -0
- package/dist/public/assets/_Ckw8ddFX.js.map +1 -0
- package/dist/public/assets/_ClCAoQg62.js +2 -0
- package/dist/public/assets/_ClCAoQg62.js.map +1 -0
- package/dist/public/assets/_ClFFjSW22.js +2 -0
- package/dist/public/assets/_ClFFjSW22.js.map +1 -0
- package/dist/public/assets/_ClKdZ_lG.js +2 -0
- package/dist/public/assets/_ClKdZ_lG.js.map +1 -0
- package/dist/public/assets/_Clg0Yi872.js +2 -0
- package/dist/public/assets/_Clg0Yi872.js.map +1 -0
- package/dist/public/assets/_Cluzi2Zq.js +2 -0
- package/dist/public/assets/_Cluzi2Zq.js.map +1 -0
- package/dist/public/assets/_CmCQp5Yx.js +2 -0
- package/dist/public/assets/_CmCQp5Yx.js.map +1 -0
- package/dist/public/assets/_CmKGBNpS.js +2 -0
- package/dist/public/assets/_CmKGBNpS.js.map +1 -0
- package/dist/public/assets/_Cmm7eHzH.js +2 -0
- package/dist/public/assets/_Cmm7eHzH.js.map +1 -0
- package/dist/public/assets/_CnvKMtbv.js +2 -0
- package/dist/public/assets/_CnvKMtbv.js.map +1 -0
- package/dist/public/assets/_CoaEpmwp.js +2 -0
- package/dist/public/assets/_CoaEpmwp.js.map +1 -0
- package/dist/public/assets/_CohzipZa.js +2 -0
- package/dist/public/assets/_CohzipZa.js.map +1 -0
- package/dist/public/assets/_CpLgRqie.js +2 -0
- package/dist/public/assets/_CpLgRqie.js.map +1 -0
- package/dist/public/assets/_CpMGvmmC.js +2 -0
- package/dist/public/assets/_CpMGvmmC.js.map +1 -0
- package/dist/public/assets/_CpQYzh95.js +2 -0
- package/dist/public/assets/_CpQYzh95.js.map +1 -0
- package/dist/public/assets/_CpYNKFv52.js +2 -0
- package/dist/public/assets/_CpYNKFv52.js.map +1 -0
- package/dist/public/assets/_CpjhbsIL.js +2 -0
- package/dist/public/assets/_CpjhbsIL.js.map +1 -0
- package/dist/public/assets/_Cs2F2srj.js +2 -0
- package/dist/public/assets/_Cs2F2srj.js.map +1 -0
- package/dist/public/assets/_Cs6JJXT5.js +2 -0
- package/dist/public/assets/_Cs6JJXT5.js.map +1 -0
- package/dist/public/assets/_CsD5j6eV.js +2 -0
- package/dist/public/assets/_CsD5j6eV.js.map +1 -0
- package/dist/public/assets/_CsvMBhTu.js +2 -0
- package/dist/public/assets/_CsvMBhTu.js.map +1 -0
- package/dist/public/assets/_CswbzlgY.js +2 -0
- package/dist/public/assets/_CswbzlgY.js.map +1 -0
- package/dist/public/assets/_CtIoeUxU2.js +2 -0
- package/dist/public/assets/_CtIoeUxU2.js.map +1 -0
- package/dist/public/assets/_CtfBBspg2.js +2 -0
- package/dist/public/assets/_CtfBBspg2.js.map +1 -0
- package/dist/public/assets/_CtsyrtPq.js +2 -0
- package/dist/public/assets/_CtsyrtPq.js.map +1 -0
- package/dist/public/assets/_Cv5bFMCO.js +2 -0
- package/dist/public/assets/_Cv5bFMCO.js.map +1 -0
- package/dist/public/assets/_Cvrh5tZx2.js +2 -0
- package/dist/public/assets/_Cvrh5tZx2.js.map +1 -0
- package/dist/public/assets/_Cx8FnA3x.js +2 -0
- package/dist/public/assets/_Cx8FnA3x.js.map +1 -0
- package/dist/public/assets/_CxZEssPk2.js +2 -0
- package/dist/public/assets/_CxZEssPk2.js.map +1 -0
- package/dist/public/assets/_CyE5x4UV.js +2 -0
- package/dist/public/assets/_CyE5x4UV.js.map +1 -0
- package/dist/public/assets/_CyEgAFGc.js +2 -0
- package/dist/public/assets/_CyEgAFGc.js.map +1 -0
- package/dist/public/assets/_D-T_C697.js +2 -0
- package/dist/public/assets/_D-T_C697.js.map +1 -0
- package/dist/public/assets/_D-usSTwE2.js +2 -0
- package/dist/public/assets/_D-usSTwE2.js.map +1 -0
- package/dist/public/assets/_D0apG41V2.js +2 -0
- package/dist/public/assets/_D0apG41V2.js.map +1 -0
- package/dist/public/assets/_D1A_Heim2.js +2 -0
- package/dist/public/assets/_D1A_Heim2.js.map +1 -0
- package/dist/public/assets/_D271znPr.js +2 -0
- package/dist/public/assets/_D271znPr.js.map +1 -0
- package/dist/public/assets/_D4kbjPsP2.js +2 -0
- package/dist/public/assets/_D4kbjPsP2.js.map +1 -0
- package/dist/public/assets/_D7Lr4KcI2.js +2 -0
- package/dist/public/assets/_D7Lr4KcI2.js.map +1 -0
- package/dist/public/assets/_D7qyCx1q.js +2 -0
- package/dist/public/assets/_D7qyCx1q.js.map +1 -0
- package/dist/public/assets/_D80Fkn33.js +2 -0
- package/dist/public/assets/_D80Fkn33.js.map +1 -0
- package/dist/public/assets/_D81mTxaU2.js +2 -0
- package/dist/public/assets/_D81mTxaU2.js.map +1 -0
- package/dist/public/assets/_D8IpX4py2.js +2 -0
- package/dist/public/assets/_D8IpX4py2.js.map +1 -0
- package/dist/public/assets/_D8YarXPe.js +2 -0
- package/dist/public/assets/_D8YarXPe.js.map +1 -0
- package/dist/public/assets/_DB4EqR-F.js +2 -0
- package/dist/public/assets/_DB4EqR-F.js.map +1 -0
- package/dist/public/assets/_DBiDFlly.js +2 -0
- package/dist/public/assets/_DBiDFlly.js.map +1 -0
- package/dist/public/assets/_DBj4K9d_2.js +2 -0
- package/dist/public/assets/_DBj4K9d_2.js.map +1 -0
- package/dist/public/assets/_DCQb3MpD.js +2 -0
- package/dist/public/assets/_DCQb3MpD.js.map +1 -0
- package/dist/public/assets/_DDpmG2fV2.js +2 -0
- package/dist/public/assets/_DDpmG2fV2.js.map +1 -0
- package/dist/public/assets/_DExj1W_82.js +2 -0
- package/dist/public/assets/_DExj1W_82.js.map +1 -0
- package/dist/public/assets/_DGHpHOYJ2.js +2 -0
- package/dist/public/assets/_DGHpHOYJ2.js.map +1 -0
- package/dist/public/assets/_DHYfO66s2.js +2 -0
- package/dist/public/assets/_DHYfO66s2.js.map +1 -0
- package/dist/public/assets/_DHuY153x.js +2 -0
- package/dist/public/assets/_DHuY153x.js.map +1 -0
- package/dist/public/assets/_DI7wJmV3.js +2 -0
- package/dist/public/assets/_DI7wJmV3.js.map +1 -0
- package/dist/public/assets/_DI99ib-x2.js +2 -0
- package/dist/public/assets/_DI99ib-x2.js.map +1 -0
- package/dist/public/assets/_DJMQeKeT.js +2 -0
- package/dist/public/assets/_DJMQeKeT.js.map +1 -0
- package/dist/public/assets/_DKDBIGSx.js +2 -0
- package/dist/public/assets/_DKDBIGSx.js.map +1 -0
- package/dist/public/assets/_DKpUyyne2.js +2 -0
- package/dist/public/assets/_DKpUyyne2.js.map +1 -0
- package/dist/public/assets/_DLL8P-h_2.js +2 -0
- package/dist/public/assets/_DLL8P-h_2.js.map +1 -0
- package/dist/public/assets/_DLbMbJfH2.js +2 -0
- package/dist/public/assets/_DLbMbJfH2.js.map +1 -0
- package/dist/public/assets/_DMLJgrzU2.js +2 -0
- package/dist/public/assets/_DMLJgrzU2.js.map +1 -0
- package/dist/public/assets/_DMgNhnYS2.js +2 -0
- package/dist/public/assets/_DMgNhnYS2.js.map +1 -0
- package/dist/public/assets/_DMoTqEGO.js +2 -0
- package/dist/public/assets/_DMoTqEGO.js.map +1 -0
- package/dist/public/assets/_DNMTfnFr2.js +2 -0
- package/dist/public/assets/_DNMTfnFr2.js.map +1 -0
- package/dist/public/assets/_DO-qXg-I2.js +2 -0
- package/dist/public/assets/_DO-qXg-I2.js.map +1 -0
- package/dist/public/assets/_DOwzaHZ02.js +2 -0
- package/dist/public/assets/_DOwzaHZ02.js.map +1 -0
- package/dist/public/assets/_DQCgrYNe.js +2 -0
- package/dist/public/assets/_DQCgrYNe.js.map +1 -0
- package/dist/public/assets/_DQZ5AkYe.js +2 -0
- package/dist/public/assets/_DQZ5AkYe.js.map +1 -0
- package/dist/public/assets/_DQwYfKfQ2.js +2 -0
- package/dist/public/assets/_DQwYfKfQ2.js.map +1 -0
- package/dist/public/assets/_DQxkIbk2.js +2 -0
- package/dist/public/assets/_DQxkIbk2.js.map +1 -0
- package/dist/public/assets/_DRFjx7u42.js +2 -0
- package/dist/public/assets/_DRFjx7u42.js.map +1 -0
- package/dist/public/assets/_DSNQnXHK.js +2 -0
- package/dist/public/assets/_DSNQnXHK.js.map +1 -0
- package/dist/public/assets/_DVQuIRkW.js +2 -0
- package/dist/public/assets/_DVQuIRkW.js.map +1 -0
- package/dist/public/assets/_DVTAwKKz.js +2 -0
- package/dist/public/assets/_DVTAwKKz.js.map +1 -0
- package/dist/public/assets/_DW3nJb8Q.js +2 -0
- package/dist/public/assets/_DW3nJb8Q.js.map +1 -0
- package/dist/public/assets/_DWQbgPoS.js +2 -0
- package/dist/public/assets/_DWQbgPoS.js.map +1 -0
- package/dist/public/assets/_DX1BQOs82.js +2 -0
- package/dist/public/assets/_DX1BQOs82.js.map +1 -0
- package/dist/public/assets/_DXG-b-1a.js +2 -0
- package/dist/public/assets/_DXG-b-1a.js.map +1 -0
- package/dist/public/assets/_DXrisJhu.js +2 -0
- package/dist/public/assets/_DXrisJhu.js.map +1 -0
- package/dist/public/assets/_DXw9l8Rf.js +2 -0
- package/dist/public/assets/_DXw9l8Rf.js.map +1 -0
- package/dist/public/assets/_DYvRD3hg2.js +2 -0
- package/dist/public/assets/_DYvRD3hg2.js.map +1 -0
- package/dist/public/assets/_DZQUGsSH.js +2 -0
- package/dist/public/assets/_DZQUGsSH.js.map +1 -0
- package/dist/public/assets/_Db1ZVL_I.js +2 -0
- package/dist/public/assets/_Db1ZVL_I.js.map +1 -0
- package/dist/public/assets/_DcIDlBhZ.js +2 -0
- package/dist/public/assets/_DcIDlBhZ.js.map +1 -0
- package/dist/public/assets/_DdrHHSXu2.js +2 -0
- package/dist/public/assets/_DdrHHSXu2.js.map +1 -0
- package/dist/public/assets/_DdvCle-K2.js +2 -0
- package/dist/public/assets/_DdvCle-K2.js.map +1 -0
- package/dist/public/assets/_De_Heo4C.js +2 -0
- package/dist/public/assets/_De_Heo4C.js.map +1 -0
- package/dist/public/assets/_Df2xbC6M.js +2 -0
- package/dist/public/assets/_Df2xbC6M.js.map +1 -0
- package/dist/public/assets/_Dgaz7aur.js +2 -0
- package/dist/public/assets/_Dgaz7aur.js.map +1 -0
- package/dist/public/assets/_DgjMoLWr.js +2 -0
- package/dist/public/assets/_DgjMoLWr.js.map +1 -0
- package/dist/public/assets/_Dh228itO2.js +2 -0
- package/dist/public/assets/_Dh228itO2.js.map +1 -0
- package/dist/public/assets/_Dh5ihWbf.js +2 -0
- package/dist/public/assets/_Dh5ihWbf.js.map +1 -0
- package/dist/public/assets/_DhhofPvG.js +2 -0
- package/dist/public/assets/_DhhofPvG.js.map +1 -0
- package/dist/public/assets/_DhmEMT882.js +2 -0
- package/dist/public/assets/_DhmEMT882.js.map +1 -0
- package/dist/public/assets/_Dixweg8N.js +2 -0
- package/dist/public/assets/_Dixweg8N.js.map +1 -0
- package/dist/public/assets/_DjuaAJKi.js +2 -0
- package/dist/public/assets/_DjuaAJKi.js.map +1 -0
- package/dist/public/assets/_Dl-2e7rI2.js +2 -0
- package/dist/public/assets/_Dl-2e7rI2.js.map +1 -0
- package/dist/public/assets/_Dlh5hvp9.js +2 -0
- package/dist/public/assets/_Dlh5hvp9.js.map +1 -0
- package/dist/public/assets/_DluEY0Gj.js +2 -0
- package/dist/public/assets/_DluEY0Gj.js.map +1 -0
- package/dist/public/assets/_DmIc4jLQ.js +2 -0
- package/dist/public/assets/_DmIc4jLQ.js.map +1 -0
- package/dist/public/assets/_DnToyrRv2.js +2 -0
- package/dist/public/assets/_DnToyrRv2.js.map +1 -0
- package/dist/public/assets/_DqHOMS-s.js +2 -0
- package/dist/public/assets/_DqHOMS-s.js.map +1 -0
- package/dist/public/assets/_DqKBuwfJ2.js +2 -0
- package/dist/public/assets/_DqKBuwfJ2.js.map +1 -0
- package/dist/public/assets/_Dqh6l9VH.js +2 -0
- package/dist/public/assets/_Dqh6l9VH.js.map +1 -0
- package/dist/public/assets/_DqhwlshE2.js +2 -0
- package/dist/public/assets/_DqhwlshE2.js.map +1 -0
- package/dist/public/assets/_DsOwYco6.js +2 -0
- package/dist/public/assets/_DsOwYco6.js.map +1 -0
- package/dist/public/assets/_DsUTQ-LC2.js +2 -0
- package/dist/public/assets/_DsUTQ-LC2.js.map +1 -0
- package/dist/public/assets/_DswuEJGm2.js +2 -0
- package/dist/public/assets/_DswuEJGm2.js.map +1 -0
- package/dist/public/assets/_DtyUWVZz.js +2 -0
- package/dist/public/assets/_DtyUWVZz.js.map +1 -0
- package/dist/public/assets/_DuBRPxYg.js +2 -0
- package/dist/public/assets/_DuBRPxYg.js.map +1 -0
- package/dist/public/assets/_DuBYtv0r.js +2 -0
- package/dist/public/assets/_DuBYtv0r.js.map +1 -0
- package/dist/public/assets/_DvXPmvsu2.js +2 -0
- package/dist/public/assets/_DvXPmvsu2.js.map +1 -0
- package/dist/public/assets/_Dw6INy6H2.js +2 -0
- package/dist/public/assets/_Dw6INy6H2.js.map +1 -0
- package/dist/public/assets/_Dx-8-gkx.js +2 -0
- package/dist/public/assets/_Dx-8-gkx.js.map +1 -0
- package/dist/public/assets/_Dx2utMPo.js +2 -0
- package/dist/public/assets/_Dx2utMPo.js.map +1 -0
- package/dist/public/assets/_EUqPIrTm.js +2 -0
- package/dist/public/assets/_EUqPIrTm.js.map +1 -0
- package/dist/public/assets/_Fe1Jh2GI.js +2 -0
- package/dist/public/assets/_Fe1Jh2GI.js.map +1 -0
- package/dist/public/assets/_IvuFDN5E2.js +2 -0
- package/dist/public/assets/_IvuFDN5E2.js.map +1 -0
- package/dist/public/assets/_IyjqRm3v.js +2 -0
- package/dist/public/assets/_IyjqRm3v.js.map +1 -0
- package/dist/public/assets/_KFGFyKwG.js +2 -0
- package/dist/public/assets/_KFGFyKwG.js.map +1 -0
- package/dist/public/assets/_L8AbGenz.js +2 -0
- package/dist/public/assets/_L8AbGenz.js.map +1 -0
- package/dist/public/assets/_MrdJrrXF.js +2 -0
- package/dist/public/assets/_MrdJrrXF.js.map +1 -0
- package/dist/public/assets/_O90oeIOV2.js +2 -0
- package/dist/public/assets/_O90oeIOV2.js.map +1 -0
- package/dist/public/assets/_R8nAf1vR.js +2 -0
- package/dist/public/assets/_R8nAf1vR.js.map +1 -0
- package/dist/public/assets/_SCjQUq34.js +2 -0
- package/dist/public/assets/_SCjQUq34.js.map +1 -0
- package/dist/public/assets/_TlYgJqzm.js +2 -0
- package/dist/public/assets/_TlYgJqzm.js.map +1 -0
- package/dist/public/assets/_U0d_L8uA.js +2 -0
- package/dist/public/assets/_U0d_L8uA.js.map +1 -0
- package/dist/public/assets/_UdsmMDCL2.js +2 -0
- package/dist/public/assets/_UdsmMDCL2.js.map +1 -0
- package/dist/public/assets/_Uh3mh5XV2.js +2 -0
- package/dist/public/assets/_Uh3mh5XV2.js.map +1 -0
- package/dist/public/assets/_VUp2lXgN.js +2 -0
- package/dist/public/assets/_VUp2lXgN.js.map +1 -0
- package/dist/public/assets/_VXkXYg_d.js +2 -0
- package/dist/public/assets/_VXkXYg_d.js.map +1 -0
- package/dist/public/assets/_VbXTXTou2.js +2 -0
- package/dist/public/assets/_VbXTXTou2.js.map +1 -0
- package/dist/public/assets/__5a1GRtc.js +2 -0
- package/dist/public/assets/__5a1GRtc.js.map +1 -0
- package/dist/public/assets/__6rzW9BS.js +2 -0
- package/dist/public/assets/__6rzW9BS.js.map +1 -0
- package/dist/public/assets/__X_XdTYD.js +2 -0
- package/dist/public/assets/__X_XdTYD.js.map +1 -0
- package/dist/public/assets/_a4yckPl9.js +2 -0
- package/dist/public/assets/_a4yckPl9.js.map +1 -0
- package/dist/public/assets/_aMsaMD1D2.js +2 -0
- package/dist/public/assets/_aMsaMD1D2.js.map +1 -0
- package/dist/public/assets/_bTVj8UrX2.js +2 -0
- package/dist/public/assets/_bTVj8UrX2.js.map +1 -0
- package/dist/public/assets/_c_oH4hRZ.js +2 -0
- package/dist/public/assets/_c_oH4hRZ.js.map +1 -0
- package/dist/public/assets/_eJ-hLW7d2.js +2 -0
- package/dist/public/assets/_eJ-hLW7d2.js.map +1 -0
- package/dist/public/assets/_fvy_08gp2.js +2 -0
- package/dist/public/assets/_fvy_08gp2.js.map +1 -0
- package/dist/public/assets/_fwtXNY1n2.js +2 -0
- package/dist/public/assets/_fwtXNY1n2.js.map +1 -0
- package/dist/public/assets/_gzcpVVnB2.js +2 -0
- package/dist/public/assets/_gzcpVVnB2.js.map +1 -0
- package/dist/public/assets/_iUWkWK9o.js +2 -0
- package/dist/public/assets/_iUWkWK9o.js.map +1 -0
- package/dist/public/assets/_iXnhIJG72.js +2 -0
- package/dist/public/assets/_iXnhIJG72.js.map +1 -0
- package/dist/public/assets/_ilITqXS62.js +2 -0
- package/dist/public/assets/_ilITqXS62.js.map +1 -0
- package/dist/public/assets/_it7tAyoL2.js +2 -0
- package/dist/public/assets/_it7tAyoL2.js.map +1 -0
- package/dist/public/assets/_kIpfj7zU2.js +2 -0
- package/dist/public/assets/_kIpfj7zU2.js.map +1 -0
- package/dist/public/assets/_kZQmAZld.js +2 -0
- package/dist/public/assets/_kZQmAZld.js.map +1 -0
- package/dist/public/assets/_lWLdNTOI.js +2 -0
- package/dist/public/assets/_lWLdNTOI.js.map +1 -0
- package/dist/public/assets/_m5z1534W.js +2 -0
- package/dist/public/assets/_m5z1534W.js.map +1 -0
- package/dist/public/assets/_nFMaYfgc2.js +2 -0
- package/dist/public/assets/_nFMaYfgc2.js.map +1 -0
- package/dist/public/assets/_oM2G3aXe2.js +2 -0
- package/dist/public/assets/_oM2G3aXe2.js.map +1 -0
- package/dist/public/assets/_oeQT6MSM2.js +2 -0
- package/dist/public/assets/_oeQT6MSM2.js.map +1 -0
- package/dist/public/assets/_oqKa8noW.js +2 -0
- package/dist/public/assets/_oqKa8noW.js.map +1 -0
- package/dist/public/assets/_ot-7Btpt2.js +2 -0
- package/dist/public/assets/_ot-7Btpt2.js.map +1 -0
- package/dist/public/assets/_qD-0Kul2.js +2 -0
- package/dist/public/assets/_qD-0Kul2.js.map +1 -0
- package/dist/public/assets/_qdxAdBWQ2.js +2 -0
- package/dist/public/assets/_qdxAdBWQ2.js.map +1 -0
- package/dist/public/assets/_rLFTqkRN2.js +2 -0
- package/dist/public/assets/_rLFTqkRN2.js.map +1 -0
- package/dist/public/assets/_sB-x3p7T.js +2 -0
- package/dist/public/assets/_sB-x3p7T.js.map +1 -0
- package/dist/public/assets/_sltzmVWM2.js +2 -0
- package/dist/public/assets/_sltzmVWM2.js.map +1 -0
- package/dist/public/assets/_uh5ioxiV.js +2 -0
- package/dist/public/assets/_uh5ioxiV.js.map +1 -0
- package/dist/public/assets/_uhdI0v04.js +2 -0
- package/dist/public/assets/_uhdI0v04.js.map +1 -0
- package/dist/public/assets/_vGVdxbeo2.js +2 -0
- package/dist/public/assets/_vGVdxbeo2.js.map +1 -0
- package/dist/public/assets/_woXpYk--.js +2 -0
- package/dist/public/assets/_woXpYk--.js.map +1 -0
- package/dist/public/assets/_zf12oZj62.js +2 -0
- package/dist/public/assets/_zf12oZj62.js.map +1 -0
- package/dist/public/assets/index-KIy0rCx1.css +1 -0
- package/dist/public/assets/index-kv6gFctA.js +1612 -0
- package/dist/public/assets/index-kv6gFctA.js.map +1 -0
- package/dist/public/icon-192.png +0 -0
- package/dist/public/icon-512.png +0 -0
- package/dist/public/icon-maskable-512.png +0 -0
- package/dist/public/icon.svg +4 -0
- package/dist/public/manifest.webmanifest +35 -0
- package/dist/public/sw.js +48 -0
- package/install.sh +104 -0
- package/package.json +59 -0
- package/scripts/migrate.mjs +108 -0
|
@@ -0,0 +1,2422 @@
|
|
|
1
|
+
import { a as __toCommonJS, i as __require, n as __esmMin, r as __exportAll, t as __commonJSMin } from "./_BMI-E3GI.js";
|
|
2
|
+
import { n as require_ms, r as require_inherits, t as require_src } from "./_xlrdOUsL.js";
|
|
3
|
+
import { t as require_mime_db } from "./_DmVVbFOa.js";
|
|
4
|
+
//#region node_modules/.pnpm/encodeurl@2.0.0/node_modules/encodeurl/index.js
|
|
5
|
+
/*!
|
|
6
|
+
* encodeurl
|
|
7
|
+
* Copyright(c) 2016 Douglas Christopher Wilson
|
|
8
|
+
* MIT Licensed
|
|
9
|
+
*/
|
|
10
|
+
var require_encodeurl = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
11
|
+
/**
|
|
12
|
+
* Module exports.
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
module.exports = encodeUrl;
|
|
16
|
+
/**
|
|
17
|
+
* RegExp to match non-URL code points, *after* encoding (i.e. not including "%")
|
|
18
|
+
* and including invalid escape sequences.
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
var ENCODE_CHARS_REGEXP = /(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g;
|
|
22
|
+
/**
|
|
23
|
+
* RegExp to match unmatched surrogate pair.
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g;
|
|
27
|
+
/**
|
|
28
|
+
* String to replace unmatched surrogate pair with.
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
var UNMATCHED_SURROGATE_PAIR_REPLACE = "$1�$2";
|
|
32
|
+
/**
|
|
33
|
+
* Encode a URL to a percent-encoded form, excluding already-encoded sequences.
|
|
34
|
+
*
|
|
35
|
+
* This function will take an already-encoded URL and encode all the non-URL
|
|
36
|
+
* code points. This function will not encode the "%" character unless it is
|
|
37
|
+
* not part of a valid sequence (`%20` will be left as-is, but `%foo` will
|
|
38
|
+
* be encoded as `%25foo`).
|
|
39
|
+
*
|
|
40
|
+
* This encode is meant to be "safe" and does not throw errors. It will try as
|
|
41
|
+
* hard as it can to properly encode the given URL, including replacing any raw,
|
|
42
|
+
* unpaired surrogate pairs with the Unicode replacement character prior to
|
|
43
|
+
* encoding.
|
|
44
|
+
*
|
|
45
|
+
* @param {string} url
|
|
46
|
+
* @return {string}
|
|
47
|
+
* @public
|
|
48
|
+
*/
|
|
49
|
+
function encodeUrl(url) {
|
|
50
|
+
return String(url).replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE).replace(ENCODE_CHARS_REGEXP, encodeURI);
|
|
51
|
+
}
|
|
52
|
+
}));
|
|
53
|
+
//#endregion
|
|
54
|
+
//#region node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js
|
|
55
|
+
/*!
|
|
56
|
+
* escape-html
|
|
57
|
+
* Copyright(c) 2012-2013 TJ Holowaychuk
|
|
58
|
+
* Copyright(c) 2015 Andreas Lubbe
|
|
59
|
+
* Copyright(c) 2015 Tiancheng "Timothy" Gu
|
|
60
|
+
* MIT Licensed
|
|
61
|
+
*/
|
|
62
|
+
var require_escape_html = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
63
|
+
/**
|
|
64
|
+
* Module variables.
|
|
65
|
+
* @private
|
|
66
|
+
*/
|
|
67
|
+
var matchHtmlRegExp = /["'&<>]/;
|
|
68
|
+
/**
|
|
69
|
+
* Module exports.
|
|
70
|
+
* @public
|
|
71
|
+
*/
|
|
72
|
+
module.exports = escapeHtml;
|
|
73
|
+
/**
|
|
74
|
+
* Escape special characters in the given string of html.
|
|
75
|
+
*
|
|
76
|
+
* @param {string} string The string to escape for inserting into HTML
|
|
77
|
+
* @return {string}
|
|
78
|
+
* @public
|
|
79
|
+
*/
|
|
80
|
+
function escapeHtml(string) {
|
|
81
|
+
var str = "" + string;
|
|
82
|
+
var match = matchHtmlRegExp.exec(str);
|
|
83
|
+
if (!match) return str;
|
|
84
|
+
var escape;
|
|
85
|
+
var html = "";
|
|
86
|
+
var index = 0;
|
|
87
|
+
var lastIndex = 0;
|
|
88
|
+
for (index = match.index; index < str.length; index++) {
|
|
89
|
+
switch (str.charCodeAt(index)) {
|
|
90
|
+
case 34:
|
|
91
|
+
escape = """;
|
|
92
|
+
break;
|
|
93
|
+
case 38:
|
|
94
|
+
escape = "&";
|
|
95
|
+
break;
|
|
96
|
+
case 39:
|
|
97
|
+
escape = "'";
|
|
98
|
+
break;
|
|
99
|
+
case 60:
|
|
100
|
+
escape = "<";
|
|
101
|
+
break;
|
|
102
|
+
case 62:
|
|
103
|
+
escape = ">";
|
|
104
|
+
break;
|
|
105
|
+
default: continue;
|
|
106
|
+
}
|
|
107
|
+
if (lastIndex !== index) html += str.substring(lastIndex, index);
|
|
108
|
+
lastIndex = index + 1;
|
|
109
|
+
html += escape;
|
|
110
|
+
}
|
|
111
|
+
return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
|
|
112
|
+
}
|
|
113
|
+
}));
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region node_modules/.pnpm/parseurl@1.3.3/node_modules/parseurl/index.js
|
|
116
|
+
/*!
|
|
117
|
+
* parseurl
|
|
118
|
+
* Copyright(c) 2014 Jonathan Ong
|
|
119
|
+
* Copyright(c) 2014-2017 Douglas Christopher Wilson
|
|
120
|
+
* MIT Licensed
|
|
121
|
+
*/
|
|
122
|
+
var require_parseurl = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
123
|
+
/**
|
|
124
|
+
* Module dependencies.
|
|
125
|
+
* @private
|
|
126
|
+
*/
|
|
127
|
+
var url$1 = __require("url");
|
|
128
|
+
var parse = url$1.parse;
|
|
129
|
+
var Url = url$1.Url;
|
|
130
|
+
/**
|
|
131
|
+
* Module exports.
|
|
132
|
+
* @public
|
|
133
|
+
*/
|
|
134
|
+
module.exports = parseurl;
|
|
135
|
+
module.exports.original = originalurl;
|
|
136
|
+
/**
|
|
137
|
+
* Parse the `req` url with memoization.
|
|
138
|
+
*
|
|
139
|
+
* @param {ServerRequest} req
|
|
140
|
+
* @return {Object}
|
|
141
|
+
* @public
|
|
142
|
+
*/
|
|
143
|
+
function parseurl(req) {
|
|
144
|
+
var url = req.url;
|
|
145
|
+
if (url === void 0) return;
|
|
146
|
+
var parsed = req._parsedUrl;
|
|
147
|
+
if (fresh(url, parsed)) return parsed;
|
|
148
|
+
parsed = fastparse(url);
|
|
149
|
+
parsed._raw = url;
|
|
150
|
+
return req._parsedUrl = parsed;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Parse the `req` original url with fallback and memoization.
|
|
154
|
+
*
|
|
155
|
+
* @param {ServerRequest} req
|
|
156
|
+
* @return {Object}
|
|
157
|
+
* @public
|
|
158
|
+
*/
|
|
159
|
+
function originalurl(req) {
|
|
160
|
+
var url = req.originalUrl;
|
|
161
|
+
if (typeof url !== "string") return parseurl(req);
|
|
162
|
+
var parsed = req._parsedOriginalUrl;
|
|
163
|
+
if (fresh(url, parsed)) return parsed;
|
|
164
|
+
parsed = fastparse(url);
|
|
165
|
+
parsed._raw = url;
|
|
166
|
+
return req._parsedOriginalUrl = parsed;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Parse the `str` url with fast-path short-cut.
|
|
170
|
+
*
|
|
171
|
+
* @param {string} str
|
|
172
|
+
* @return {Object}
|
|
173
|
+
* @private
|
|
174
|
+
*/
|
|
175
|
+
function fastparse(str) {
|
|
176
|
+
if (typeof str !== "string" || str.charCodeAt(0) !== 47) return parse(str);
|
|
177
|
+
var pathname = str;
|
|
178
|
+
var query = null;
|
|
179
|
+
var search = null;
|
|
180
|
+
for (var i = 1; i < str.length; i++) switch (str.charCodeAt(i)) {
|
|
181
|
+
case 63:
|
|
182
|
+
if (search === null) {
|
|
183
|
+
pathname = str.substring(0, i);
|
|
184
|
+
query = str.substring(i + 1);
|
|
185
|
+
search = str.substring(i);
|
|
186
|
+
}
|
|
187
|
+
break;
|
|
188
|
+
case 9:
|
|
189
|
+
case 10:
|
|
190
|
+
case 12:
|
|
191
|
+
case 13:
|
|
192
|
+
case 32:
|
|
193
|
+
case 35:
|
|
194
|
+
case 160:
|
|
195
|
+
case 65279: return parse(str);
|
|
196
|
+
}
|
|
197
|
+
var url = Url !== void 0 ? new Url() : {};
|
|
198
|
+
url.path = str;
|
|
199
|
+
url.href = str;
|
|
200
|
+
url.pathname = pathname;
|
|
201
|
+
if (search !== null) {
|
|
202
|
+
url.query = query;
|
|
203
|
+
url.search = search;
|
|
204
|
+
}
|
|
205
|
+
return url;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Determine if parsed is still fresh for url.
|
|
209
|
+
*
|
|
210
|
+
* @param {string} url
|
|
211
|
+
* @param {object} parsedUrl
|
|
212
|
+
* @return {boolean}
|
|
213
|
+
* @private
|
|
214
|
+
*/
|
|
215
|
+
function fresh(url, parsedUrl) {
|
|
216
|
+
return typeof parsedUrl === "object" && parsedUrl !== null && (Url === void 0 || parsedUrl instanceof Url) && parsedUrl._raw === url;
|
|
217
|
+
}
|
|
218
|
+
}));
|
|
219
|
+
//#endregion
|
|
220
|
+
//#region node_modules/.pnpm/depd@2.0.0/node_modules/depd/index.js
|
|
221
|
+
var require_depd = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
222
|
+
/*!
|
|
223
|
+
* depd
|
|
224
|
+
* Copyright(c) 2014-2018 Douglas Christopher Wilson
|
|
225
|
+
* MIT Licensed
|
|
226
|
+
*/
|
|
227
|
+
/**
|
|
228
|
+
* Module dependencies.
|
|
229
|
+
*/
|
|
230
|
+
var relative = __require("path").relative;
|
|
231
|
+
/**
|
|
232
|
+
* Module exports.
|
|
233
|
+
*/
|
|
234
|
+
module.exports = depd;
|
|
235
|
+
/**
|
|
236
|
+
* Get the path to base files on.
|
|
237
|
+
*/
|
|
238
|
+
var basePath = process.cwd();
|
|
239
|
+
/**
|
|
240
|
+
* Determine if namespace is contained in the string.
|
|
241
|
+
*/
|
|
242
|
+
function containsNamespace(str, namespace) {
|
|
243
|
+
var vals = str.split(/[ ,]+/);
|
|
244
|
+
var ns = String(namespace).toLowerCase();
|
|
245
|
+
for (var i = 0; i < vals.length; i++) {
|
|
246
|
+
var val = vals[i];
|
|
247
|
+
if (val && (val === "*" || val.toLowerCase() === ns)) return true;
|
|
248
|
+
}
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Convert a data descriptor to accessor descriptor.
|
|
253
|
+
*/
|
|
254
|
+
function convertDataDescriptorToAccessor(obj, prop, message) {
|
|
255
|
+
var descriptor = Object.getOwnPropertyDescriptor(obj, prop);
|
|
256
|
+
var value = descriptor.value;
|
|
257
|
+
descriptor.get = function getter() {
|
|
258
|
+
return value;
|
|
259
|
+
};
|
|
260
|
+
if (descriptor.writable) descriptor.set = function setter(val) {
|
|
261
|
+
return value = val;
|
|
262
|
+
};
|
|
263
|
+
delete descriptor.value;
|
|
264
|
+
delete descriptor.writable;
|
|
265
|
+
Object.defineProperty(obj, prop, descriptor);
|
|
266
|
+
return descriptor;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Create arguments string to keep arity.
|
|
270
|
+
*/
|
|
271
|
+
function createArgumentsString(arity) {
|
|
272
|
+
var str = "";
|
|
273
|
+
for (var i = 0; i < arity; i++) str += ", arg" + i;
|
|
274
|
+
return str.substr(2);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Create stack string from stack.
|
|
278
|
+
*/
|
|
279
|
+
function createStackString(stack) {
|
|
280
|
+
var str = this.name + ": " + this.namespace;
|
|
281
|
+
if (this.message) str += " deprecated " + this.message;
|
|
282
|
+
for (var i = 0; i < stack.length; i++) str += "\n at " + stack[i].toString();
|
|
283
|
+
return str;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Create deprecate for namespace in caller.
|
|
287
|
+
*/
|
|
288
|
+
function depd(namespace) {
|
|
289
|
+
if (!namespace) throw new TypeError("argument namespace is required");
|
|
290
|
+
var file = callSiteLocation(getStack()[1])[0];
|
|
291
|
+
function deprecate(message) {
|
|
292
|
+
log.call(deprecate, message);
|
|
293
|
+
}
|
|
294
|
+
deprecate._file = file;
|
|
295
|
+
deprecate._ignored = isignored(namespace);
|
|
296
|
+
deprecate._namespace = namespace;
|
|
297
|
+
deprecate._traced = istraced(namespace);
|
|
298
|
+
deprecate._warned = Object.create(null);
|
|
299
|
+
deprecate.function = wrapfunction;
|
|
300
|
+
deprecate.property = wrapproperty;
|
|
301
|
+
return deprecate;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Determine if event emitter has listeners of a given type.
|
|
305
|
+
*
|
|
306
|
+
* The way to do this check is done three different ways in Node.js >= 0.8
|
|
307
|
+
* so this consolidates them into a minimal set using instance methods.
|
|
308
|
+
*
|
|
309
|
+
* @param {EventEmitter} emitter
|
|
310
|
+
* @param {string} type
|
|
311
|
+
* @returns {boolean}
|
|
312
|
+
* @private
|
|
313
|
+
*/
|
|
314
|
+
function eehaslisteners(emitter, type) {
|
|
315
|
+
return (typeof emitter.listenerCount !== "function" ? emitter.listeners(type).length : emitter.listenerCount(type)) > 0;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Determine if namespace is ignored.
|
|
319
|
+
*/
|
|
320
|
+
function isignored(namespace) {
|
|
321
|
+
if (process.noDeprecation) return true;
|
|
322
|
+
return containsNamespace(process.env.NO_DEPRECATION || "", namespace);
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Determine if namespace is traced.
|
|
326
|
+
*/
|
|
327
|
+
function istraced(namespace) {
|
|
328
|
+
if (process.traceDeprecation) return true;
|
|
329
|
+
return containsNamespace(process.env.TRACE_DEPRECATION || "", namespace);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Display deprecation message.
|
|
333
|
+
*/
|
|
334
|
+
function log(message, site) {
|
|
335
|
+
var haslisteners = eehaslisteners(process, "deprecation");
|
|
336
|
+
if (!haslisteners && this._ignored) return;
|
|
337
|
+
var caller;
|
|
338
|
+
var callFile;
|
|
339
|
+
var callSite;
|
|
340
|
+
var depSite;
|
|
341
|
+
var i = 0;
|
|
342
|
+
var seen = false;
|
|
343
|
+
var stack = getStack();
|
|
344
|
+
var file = this._file;
|
|
345
|
+
if (site) {
|
|
346
|
+
depSite = site;
|
|
347
|
+
callSite = callSiteLocation(stack[1]);
|
|
348
|
+
callSite.name = depSite.name;
|
|
349
|
+
file = callSite[0];
|
|
350
|
+
} else {
|
|
351
|
+
i = 2;
|
|
352
|
+
depSite = callSiteLocation(stack[i]);
|
|
353
|
+
callSite = depSite;
|
|
354
|
+
}
|
|
355
|
+
for (; i < stack.length; i++) {
|
|
356
|
+
caller = callSiteLocation(stack[i]);
|
|
357
|
+
callFile = caller[0];
|
|
358
|
+
if (callFile === file) seen = true;
|
|
359
|
+
else if (callFile === this._file) file = this._file;
|
|
360
|
+
else if (seen) break;
|
|
361
|
+
}
|
|
362
|
+
var key = caller ? depSite.join(":") + "__" + caller.join(":") : void 0;
|
|
363
|
+
if (key !== void 0 && key in this._warned) return;
|
|
364
|
+
this._warned[key] = true;
|
|
365
|
+
var msg = message;
|
|
366
|
+
if (!msg) msg = callSite === depSite || !callSite.name ? defaultMessage(depSite) : defaultMessage(callSite);
|
|
367
|
+
if (haslisteners) {
|
|
368
|
+
var err = DeprecationError(this._namespace, msg, stack.slice(i));
|
|
369
|
+
process.emit("deprecation", err);
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
var output = (process.stderr.isTTY ? formatColor : formatPlain).call(this, msg, caller, stack.slice(i));
|
|
373
|
+
process.stderr.write(output + "\n", "utf8");
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Get call site location as array.
|
|
377
|
+
*/
|
|
378
|
+
function callSiteLocation(callSite) {
|
|
379
|
+
var file = callSite.getFileName() || "<anonymous>";
|
|
380
|
+
var line = callSite.getLineNumber();
|
|
381
|
+
var colm = callSite.getColumnNumber();
|
|
382
|
+
if (callSite.isEval()) file = callSite.getEvalOrigin() + ", " + file;
|
|
383
|
+
var site = [
|
|
384
|
+
file,
|
|
385
|
+
line,
|
|
386
|
+
colm
|
|
387
|
+
];
|
|
388
|
+
site.callSite = callSite;
|
|
389
|
+
site.name = callSite.getFunctionName();
|
|
390
|
+
return site;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Generate a default message from the site.
|
|
394
|
+
*/
|
|
395
|
+
function defaultMessage(site) {
|
|
396
|
+
var callSite = site.callSite;
|
|
397
|
+
var funcName = site.name;
|
|
398
|
+
if (!funcName) funcName = "<anonymous@" + formatLocation(site) + ">";
|
|
399
|
+
var context = callSite.getThis();
|
|
400
|
+
var typeName = context && callSite.getTypeName();
|
|
401
|
+
if (typeName === "Object") typeName = void 0;
|
|
402
|
+
if (typeName === "Function") typeName = context.name || typeName;
|
|
403
|
+
return typeName && callSite.getMethodName() ? typeName + "." + funcName : funcName;
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Format deprecation message without color.
|
|
407
|
+
*/
|
|
408
|
+
function formatPlain(msg, caller, stack) {
|
|
409
|
+
var formatted = (/* @__PURE__ */ new Date()).toUTCString() + " " + this._namespace + " deprecated " + msg;
|
|
410
|
+
if (this._traced) {
|
|
411
|
+
for (var i = 0; i < stack.length; i++) formatted += "\n at " + stack[i].toString();
|
|
412
|
+
return formatted;
|
|
413
|
+
}
|
|
414
|
+
if (caller) formatted += " at " + formatLocation(caller);
|
|
415
|
+
return formatted;
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Format deprecation message with color.
|
|
419
|
+
*/
|
|
420
|
+
function formatColor(msg, caller, stack) {
|
|
421
|
+
var formatted = "\x1B[36;1m" + this._namespace + "\x1B[22;39m \x1B[33;1mdeprecated\x1B[22;39m \x1B[0m" + msg + "\x1B[39m";
|
|
422
|
+
if (this._traced) {
|
|
423
|
+
for (var i = 0; i < stack.length; i++) formatted += "\n \x1B[36mat " + stack[i].toString() + "\x1B[39m";
|
|
424
|
+
return formatted;
|
|
425
|
+
}
|
|
426
|
+
if (caller) formatted += " \x1B[36m" + formatLocation(caller) + "\x1B[39m";
|
|
427
|
+
return formatted;
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Format call site location.
|
|
431
|
+
*/
|
|
432
|
+
function formatLocation(callSite) {
|
|
433
|
+
return relative(basePath, callSite[0]) + ":" + callSite[1] + ":" + callSite[2];
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Get the stack as array of call sites.
|
|
437
|
+
*/
|
|
438
|
+
function getStack() {
|
|
439
|
+
var limit = Error.stackTraceLimit;
|
|
440
|
+
var obj = {};
|
|
441
|
+
var prep = Error.prepareStackTrace;
|
|
442
|
+
Error.prepareStackTrace = prepareObjectStackTrace;
|
|
443
|
+
Error.stackTraceLimit = Math.max(10, limit);
|
|
444
|
+
Error.captureStackTrace(obj);
|
|
445
|
+
var stack = obj.stack.slice(1);
|
|
446
|
+
Error.prepareStackTrace = prep;
|
|
447
|
+
Error.stackTraceLimit = limit;
|
|
448
|
+
return stack;
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Capture call site stack from v8.
|
|
452
|
+
*/
|
|
453
|
+
function prepareObjectStackTrace(obj, stack) {
|
|
454
|
+
return stack;
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Return a wrapped function in a deprecation message.
|
|
458
|
+
*/
|
|
459
|
+
function wrapfunction(fn, message) {
|
|
460
|
+
if (typeof fn !== "function") throw new TypeError("argument fn must be a function");
|
|
461
|
+
var args = createArgumentsString(fn.length);
|
|
462
|
+
var site = callSiteLocation(getStack()[1]);
|
|
463
|
+
site.name = fn.name;
|
|
464
|
+
return new Function("fn", "log", "deprecate", "message", "site", "\"use strict\"\nreturn function (" + args + ") {log.call(deprecate, message, site)\nreturn fn.apply(this, arguments)\n}")(fn, log, this, message, site);
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Wrap property in a deprecation message.
|
|
468
|
+
*/
|
|
469
|
+
function wrapproperty(obj, prop, message) {
|
|
470
|
+
if (!obj || typeof obj !== "object" && typeof obj !== "function") throw new TypeError("argument obj must be object");
|
|
471
|
+
var descriptor = Object.getOwnPropertyDescriptor(obj, prop);
|
|
472
|
+
if (!descriptor) throw new TypeError("must call property on owner object");
|
|
473
|
+
if (!descriptor.configurable) throw new TypeError("property must be configurable");
|
|
474
|
+
var deprecate = this;
|
|
475
|
+
var site = callSiteLocation(getStack()[1]);
|
|
476
|
+
site.name = prop;
|
|
477
|
+
if ("value" in descriptor) descriptor = convertDataDescriptorToAccessor(obj, prop, message);
|
|
478
|
+
var get = descriptor.get;
|
|
479
|
+
var set = descriptor.set;
|
|
480
|
+
if (typeof get === "function") descriptor.get = function getter() {
|
|
481
|
+
log.call(deprecate, message, site);
|
|
482
|
+
return get.apply(this, arguments);
|
|
483
|
+
};
|
|
484
|
+
if (typeof set === "function") descriptor.set = function setter() {
|
|
485
|
+
log.call(deprecate, message, site);
|
|
486
|
+
return set.apply(this, arguments);
|
|
487
|
+
};
|
|
488
|
+
Object.defineProperty(obj, prop, descriptor);
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Create DeprecationError for deprecation
|
|
492
|
+
*/
|
|
493
|
+
function DeprecationError(namespace, message, stack) {
|
|
494
|
+
var error = /* @__PURE__ */ new Error();
|
|
495
|
+
var stackString;
|
|
496
|
+
Object.defineProperty(error, "constructor", { value: DeprecationError });
|
|
497
|
+
Object.defineProperty(error, "message", {
|
|
498
|
+
configurable: true,
|
|
499
|
+
enumerable: false,
|
|
500
|
+
value: message,
|
|
501
|
+
writable: true
|
|
502
|
+
});
|
|
503
|
+
Object.defineProperty(error, "name", {
|
|
504
|
+
enumerable: false,
|
|
505
|
+
configurable: true,
|
|
506
|
+
value: "DeprecationError",
|
|
507
|
+
writable: true
|
|
508
|
+
});
|
|
509
|
+
Object.defineProperty(error, "namespace", {
|
|
510
|
+
configurable: true,
|
|
511
|
+
enumerable: false,
|
|
512
|
+
value: namespace,
|
|
513
|
+
writable: true
|
|
514
|
+
});
|
|
515
|
+
Object.defineProperty(error, "stack", {
|
|
516
|
+
configurable: true,
|
|
517
|
+
enumerable: false,
|
|
518
|
+
get: function() {
|
|
519
|
+
if (stackString !== void 0) return stackString;
|
|
520
|
+
return stackString = createStackString.call(this, stack);
|
|
521
|
+
},
|
|
522
|
+
set: function setter(val) {
|
|
523
|
+
stackString = val;
|
|
524
|
+
}
|
|
525
|
+
});
|
|
526
|
+
return error;
|
|
527
|
+
}
|
|
528
|
+
}));
|
|
529
|
+
//#endregion
|
|
530
|
+
//#region node_modules/.pnpm/setprototypeof@1.2.0/node_modules/setprototypeof/index.js
|
|
531
|
+
var require_setprototypeof = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
532
|
+
module.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties);
|
|
533
|
+
function setProtoOf(obj, proto) {
|
|
534
|
+
obj.__proto__ = proto;
|
|
535
|
+
return obj;
|
|
536
|
+
}
|
|
537
|
+
function mixinProperties(obj, proto) {
|
|
538
|
+
for (var prop in proto) if (!Object.prototype.hasOwnProperty.call(obj, prop)) obj[prop] = proto[prop];
|
|
539
|
+
return obj;
|
|
540
|
+
}
|
|
541
|
+
}));
|
|
542
|
+
//#endregion
|
|
543
|
+
//#region node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/codes.json
|
|
544
|
+
var codes_exports = /* @__PURE__ */ __exportAll({ default: () => codes_default });
|
|
545
|
+
var codes_default;
|
|
546
|
+
var init_codes = __esmMin((() => {
|
|
547
|
+
codes_default = {
|
|
548
|
+
"100": "Continue",
|
|
549
|
+
"101": "Switching Protocols",
|
|
550
|
+
"102": "Processing",
|
|
551
|
+
"103": "Early Hints",
|
|
552
|
+
"200": "OK",
|
|
553
|
+
"201": "Created",
|
|
554
|
+
"202": "Accepted",
|
|
555
|
+
"203": "Non-Authoritative Information",
|
|
556
|
+
"204": "No Content",
|
|
557
|
+
"205": "Reset Content",
|
|
558
|
+
"206": "Partial Content",
|
|
559
|
+
"207": "Multi-Status",
|
|
560
|
+
"208": "Already Reported",
|
|
561
|
+
"226": "IM Used",
|
|
562
|
+
"300": "Multiple Choices",
|
|
563
|
+
"301": "Moved Permanently",
|
|
564
|
+
"302": "Found",
|
|
565
|
+
"303": "See Other",
|
|
566
|
+
"304": "Not Modified",
|
|
567
|
+
"305": "Use Proxy",
|
|
568
|
+
"307": "Temporary Redirect",
|
|
569
|
+
"308": "Permanent Redirect",
|
|
570
|
+
"400": "Bad Request",
|
|
571
|
+
"401": "Unauthorized",
|
|
572
|
+
"402": "Payment Required",
|
|
573
|
+
"403": "Forbidden",
|
|
574
|
+
"404": "Not Found",
|
|
575
|
+
"405": "Method Not Allowed",
|
|
576
|
+
"406": "Not Acceptable",
|
|
577
|
+
"407": "Proxy Authentication Required",
|
|
578
|
+
"408": "Request Timeout",
|
|
579
|
+
"409": "Conflict",
|
|
580
|
+
"410": "Gone",
|
|
581
|
+
"411": "Length Required",
|
|
582
|
+
"412": "Precondition Failed",
|
|
583
|
+
"413": "Payload Too Large",
|
|
584
|
+
"414": "URI Too Long",
|
|
585
|
+
"415": "Unsupported Media Type",
|
|
586
|
+
"416": "Range Not Satisfiable",
|
|
587
|
+
"417": "Expectation Failed",
|
|
588
|
+
"418": "I'm a Teapot",
|
|
589
|
+
"421": "Misdirected Request",
|
|
590
|
+
"422": "Unprocessable Entity",
|
|
591
|
+
"423": "Locked",
|
|
592
|
+
"424": "Failed Dependency",
|
|
593
|
+
"425": "Too Early",
|
|
594
|
+
"426": "Upgrade Required",
|
|
595
|
+
"428": "Precondition Required",
|
|
596
|
+
"429": "Too Many Requests",
|
|
597
|
+
"431": "Request Header Fields Too Large",
|
|
598
|
+
"451": "Unavailable For Legal Reasons",
|
|
599
|
+
"500": "Internal Server Error",
|
|
600
|
+
"501": "Not Implemented",
|
|
601
|
+
"502": "Bad Gateway",
|
|
602
|
+
"503": "Service Unavailable",
|
|
603
|
+
"504": "Gateway Timeout",
|
|
604
|
+
"505": "HTTP Version Not Supported",
|
|
605
|
+
"506": "Variant Also Negotiates",
|
|
606
|
+
"507": "Insufficient Storage",
|
|
607
|
+
"508": "Loop Detected",
|
|
608
|
+
"509": "Bandwidth Limit Exceeded",
|
|
609
|
+
"510": "Not Extended",
|
|
610
|
+
"511": "Network Authentication Required"
|
|
611
|
+
};
|
|
612
|
+
}));
|
|
613
|
+
//#endregion
|
|
614
|
+
//#region node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/index.js
|
|
615
|
+
/*!
|
|
616
|
+
* statuses
|
|
617
|
+
* Copyright(c) 2014 Jonathan Ong
|
|
618
|
+
* Copyright(c) 2016 Douglas Christopher Wilson
|
|
619
|
+
* MIT Licensed
|
|
620
|
+
*/
|
|
621
|
+
var require_statuses = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
622
|
+
/**
|
|
623
|
+
* Module dependencies.
|
|
624
|
+
* @private
|
|
625
|
+
*/
|
|
626
|
+
var codes = (init_codes(), __toCommonJS(codes_exports).default);
|
|
627
|
+
/**
|
|
628
|
+
* Module exports.
|
|
629
|
+
* @public
|
|
630
|
+
*/
|
|
631
|
+
module.exports = status;
|
|
632
|
+
status.message = codes;
|
|
633
|
+
status.code = createMessageToStatusCodeMap(codes);
|
|
634
|
+
status.codes = createStatusCodeList(codes);
|
|
635
|
+
status.redirect = {
|
|
636
|
+
300: true,
|
|
637
|
+
301: true,
|
|
638
|
+
302: true,
|
|
639
|
+
303: true,
|
|
640
|
+
305: true,
|
|
641
|
+
307: true,
|
|
642
|
+
308: true
|
|
643
|
+
};
|
|
644
|
+
status.empty = {
|
|
645
|
+
204: true,
|
|
646
|
+
205: true,
|
|
647
|
+
304: true
|
|
648
|
+
};
|
|
649
|
+
status.retry = {
|
|
650
|
+
502: true,
|
|
651
|
+
503: true,
|
|
652
|
+
504: true
|
|
653
|
+
};
|
|
654
|
+
/**
|
|
655
|
+
* Create a map of message to status code.
|
|
656
|
+
* @private
|
|
657
|
+
*/
|
|
658
|
+
function createMessageToStatusCodeMap(codes) {
|
|
659
|
+
var map = {};
|
|
660
|
+
Object.keys(codes).forEach(function forEachCode(code) {
|
|
661
|
+
var message = codes[code];
|
|
662
|
+
var status = Number(code);
|
|
663
|
+
map[message.toLowerCase()] = status;
|
|
664
|
+
});
|
|
665
|
+
return map;
|
|
666
|
+
}
|
|
667
|
+
/**
|
|
668
|
+
* Create a list of all status codes.
|
|
669
|
+
* @private
|
|
670
|
+
*/
|
|
671
|
+
function createStatusCodeList(codes) {
|
|
672
|
+
return Object.keys(codes).map(function mapCode(code) {
|
|
673
|
+
return Number(code);
|
|
674
|
+
});
|
|
675
|
+
}
|
|
676
|
+
/**
|
|
677
|
+
* Get the status code for given message.
|
|
678
|
+
* @private
|
|
679
|
+
*/
|
|
680
|
+
function getStatusCode(message) {
|
|
681
|
+
var msg = message.toLowerCase();
|
|
682
|
+
if (!Object.prototype.hasOwnProperty.call(status.code, msg)) throw new Error("invalid status message: \"" + message + "\"");
|
|
683
|
+
return status.code[msg];
|
|
684
|
+
}
|
|
685
|
+
/**
|
|
686
|
+
* Get the status message for given code.
|
|
687
|
+
* @private
|
|
688
|
+
*/
|
|
689
|
+
function getStatusMessage(code) {
|
|
690
|
+
if (!Object.prototype.hasOwnProperty.call(status.message, code)) throw new Error("invalid status code: " + code);
|
|
691
|
+
return status.message[code];
|
|
692
|
+
}
|
|
693
|
+
/**
|
|
694
|
+
* Get the status code.
|
|
695
|
+
*
|
|
696
|
+
* Given a number, this will throw if it is not a known status
|
|
697
|
+
* code, otherwise the code will be returned. Given a string,
|
|
698
|
+
* the string will be parsed for a number and return the code
|
|
699
|
+
* if valid, otherwise will lookup the code assuming this is
|
|
700
|
+
* the status message.
|
|
701
|
+
*
|
|
702
|
+
* @param {string|number} code
|
|
703
|
+
* @returns {number}
|
|
704
|
+
* @public
|
|
705
|
+
*/
|
|
706
|
+
function status(code) {
|
|
707
|
+
if (typeof code === "number") return getStatusMessage(code);
|
|
708
|
+
if (typeof code !== "string") throw new TypeError("code must be a number or string");
|
|
709
|
+
var n = parseInt(code, 10);
|
|
710
|
+
if (!isNaN(n)) return getStatusMessage(n);
|
|
711
|
+
return getStatusCode(code);
|
|
712
|
+
}
|
|
713
|
+
}));
|
|
714
|
+
//#endregion
|
|
715
|
+
//#region node_modules/.pnpm/toidentifier@1.0.1/node_modules/toidentifier/index.js
|
|
716
|
+
/*!
|
|
717
|
+
* toidentifier
|
|
718
|
+
* Copyright(c) 2016 Douglas Christopher Wilson
|
|
719
|
+
* MIT Licensed
|
|
720
|
+
*/
|
|
721
|
+
var require_toidentifier = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
722
|
+
/**
|
|
723
|
+
* Module exports.
|
|
724
|
+
* @public
|
|
725
|
+
*/
|
|
726
|
+
module.exports = toIdentifier;
|
|
727
|
+
/**
|
|
728
|
+
* Trasform the given string into a JavaScript identifier
|
|
729
|
+
*
|
|
730
|
+
* @param {string} str
|
|
731
|
+
* @returns {string}
|
|
732
|
+
* @public
|
|
733
|
+
*/
|
|
734
|
+
function toIdentifier(str) {
|
|
735
|
+
return str.split(" ").map(function(token) {
|
|
736
|
+
return token.slice(0, 1).toUpperCase() + token.slice(1);
|
|
737
|
+
}).join("").replace(/[^ _0-9a-z]/gi, "");
|
|
738
|
+
}
|
|
739
|
+
}));
|
|
740
|
+
//#endregion
|
|
741
|
+
//#region node_modules/.pnpm/http-errors@2.0.1/node_modules/http-errors/index.js
|
|
742
|
+
/*!
|
|
743
|
+
* http-errors
|
|
744
|
+
* Copyright(c) 2014 Jonathan Ong
|
|
745
|
+
* Copyright(c) 2016 Douglas Christopher Wilson
|
|
746
|
+
* MIT Licensed
|
|
747
|
+
*/
|
|
748
|
+
var require_http_errors = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
749
|
+
/**
|
|
750
|
+
* Module dependencies.
|
|
751
|
+
* @private
|
|
752
|
+
*/
|
|
753
|
+
var deprecate = require_depd()("http-errors");
|
|
754
|
+
var setPrototypeOf = require_setprototypeof();
|
|
755
|
+
var statuses = require_statuses();
|
|
756
|
+
var inherits = require_inherits();
|
|
757
|
+
var toIdentifier = require_toidentifier();
|
|
758
|
+
/**
|
|
759
|
+
* Module exports.
|
|
760
|
+
* @public
|
|
761
|
+
*/
|
|
762
|
+
module.exports = createError;
|
|
763
|
+
module.exports.HttpError = createHttpErrorConstructor();
|
|
764
|
+
module.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError);
|
|
765
|
+
populateConstructorExports(module.exports, statuses.codes, module.exports.HttpError);
|
|
766
|
+
/**
|
|
767
|
+
* Get the code class of a status code.
|
|
768
|
+
* @private
|
|
769
|
+
*/
|
|
770
|
+
function codeClass(status) {
|
|
771
|
+
return Number(String(status).charAt(0) + "00");
|
|
772
|
+
}
|
|
773
|
+
/**
|
|
774
|
+
* Create a new HTTP Error.
|
|
775
|
+
*
|
|
776
|
+
* @returns {Error}
|
|
777
|
+
* @public
|
|
778
|
+
*/
|
|
779
|
+
function createError() {
|
|
780
|
+
var err;
|
|
781
|
+
var msg;
|
|
782
|
+
var status = 500;
|
|
783
|
+
var props = {};
|
|
784
|
+
for (var i = 0; i < arguments.length; i++) {
|
|
785
|
+
var arg = arguments[i];
|
|
786
|
+
var type = typeof arg;
|
|
787
|
+
if (type === "object" && arg instanceof Error) {
|
|
788
|
+
err = arg;
|
|
789
|
+
status = err.status || err.statusCode || status;
|
|
790
|
+
} else if (type === "number" && i === 0) status = arg;
|
|
791
|
+
else if (type === "string") msg = arg;
|
|
792
|
+
else if (type === "object") props = arg;
|
|
793
|
+
else throw new TypeError("argument #" + (i + 1) + " unsupported type " + type);
|
|
794
|
+
}
|
|
795
|
+
if (typeof status === "number" && (status < 400 || status >= 600)) deprecate("non-error status code; use only 4xx or 5xx status codes");
|
|
796
|
+
if (typeof status !== "number" || !statuses.message[status] && (status < 400 || status >= 600)) status = 500;
|
|
797
|
+
var HttpError = createError[status] || createError[codeClass(status)];
|
|
798
|
+
if (!err) {
|
|
799
|
+
err = HttpError ? new HttpError(msg) : new Error(msg || statuses.message[status]);
|
|
800
|
+
Error.captureStackTrace(err, createError);
|
|
801
|
+
}
|
|
802
|
+
if (!HttpError || !(err instanceof HttpError) || err.status !== status) {
|
|
803
|
+
err.expose = status < 500;
|
|
804
|
+
err.status = err.statusCode = status;
|
|
805
|
+
}
|
|
806
|
+
for (var key in props) if (key !== "status" && key !== "statusCode") err[key] = props[key];
|
|
807
|
+
return err;
|
|
808
|
+
}
|
|
809
|
+
/**
|
|
810
|
+
* Create HTTP error abstract base class.
|
|
811
|
+
* @private
|
|
812
|
+
*/
|
|
813
|
+
function createHttpErrorConstructor() {
|
|
814
|
+
function HttpError() {
|
|
815
|
+
throw new TypeError("cannot construct abstract class");
|
|
816
|
+
}
|
|
817
|
+
inherits(HttpError, Error);
|
|
818
|
+
return HttpError;
|
|
819
|
+
}
|
|
820
|
+
/**
|
|
821
|
+
* Create a constructor for a client error.
|
|
822
|
+
* @private
|
|
823
|
+
*/
|
|
824
|
+
function createClientErrorConstructor(HttpError, name, code) {
|
|
825
|
+
var className = toClassName(name);
|
|
826
|
+
function ClientError(message) {
|
|
827
|
+
var msg = message != null ? message : statuses.message[code];
|
|
828
|
+
var err = new Error(msg);
|
|
829
|
+
Error.captureStackTrace(err, ClientError);
|
|
830
|
+
setPrototypeOf(err, ClientError.prototype);
|
|
831
|
+
Object.defineProperty(err, "message", {
|
|
832
|
+
enumerable: true,
|
|
833
|
+
configurable: true,
|
|
834
|
+
value: msg,
|
|
835
|
+
writable: true
|
|
836
|
+
});
|
|
837
|
+
Object.defineProperty(err, "name", {
|
|
838
|
+
enumerable: false,
|
|
839
|
+
configurable: true,
|
|
840
|
+
value: className,
|
|
841
|
+
writable: true
|
|
842
|
+
});
|
|
843
|
+
return err;
|
|
844
|
+
}
|
|
845
|
+
inherits(ClientError, HttpError);
|
|
846
|
+
nameFunc(ClientError, className);
|
|
847
|
+
ClientError.prototype.status = code;
|
|
848
|
+
ClientError.prototype.statusCode = code;
|
|
849
|
+
ClientError.prototype.expose = true;
|
|
850
|
+
return ClientError;
|
|
851
|
+
}
|
|
852
|
+
/**
|
|
853
|
+
* Create function to test is a value is a HttpError.
|
|
854
|
+
* @private
|
|
855
|
+
*/
|
|
856
|
+
function createIsHttpErrorFunction(HttpError) {
|
|
857
|
+
return function isHttpError(val) {
|
|
858
|
+
if (!val || typeof val !== "object") return false;
|
|
859
|
+
if (val instanceof HttpError) return true;
|
|
860
|
+
return val instanceof Error && typeof val.expose === "boolean" && typeof val.statusCode === "number" && val.status === val.statusCode;
|
|
861
|
+
};
|
|
862
|
+
}
|
|
863
|
+
/**
|
|
864
|
+
* Create a constructor for a server error.
|
|
865
|
+
* @private
|
|
866
|
+
*/
|
|
867
|
+
function createServerErrorConstructor(HttpError, name, code) {
|
|
868
|
+
var className = toClassName(name);
|
|
869
|
+
function ServerError(message) {
|
|
870
|
+
var msg = message != null ? message : statuses.message[code];
|
|
871
|
+
var err = new Error(msg);
|
|
872
|
+
Error.captureStackTrace(err, ServerError);
|
|
873
|
+
setPrototypeOf(err, ServerError.prototype);
|
|
874
|
+
Object.defineProperty(err, "message", {
|
|
875
|
+
enumerable: true,
|
|
876
|
+
configurable: true,
|
|
877
|
+
value: msg,
|
|
878
|
+
writable: true
|
|
879
|
+
});
|
|
880
|
+
Object.defineProperty(err, "name", {
|
|
881
|
+
enumerable: false,
|
|
882
|
+
configurable: true,
|
|
883
|
+
value: className,
|
|
884
|
+
writable: true
|
|
885
|
+
});
|
|
886
|
+
return err;
|
|
887
|
+
}
|
|
888
|
+
inherits(ServerError, HttpError);
|
|
889
|
+
nameFunc(ServerError, className);
|
|
890
|
+
ServerError.prototype.status = code;
|
|
891
|
+
ServerError.prototype.statusCode = code;
|
|
892
|
+
ServerError.prototype.expose = false;
|
|
893
|
+
return ServerError;
|
|
894
|
+
}
|
|
895
|
+
/**
|
|
896
|
+
* Set the name of a function, if possible.
|
|
897
|
+
* @private
|
|
898
|
+
*/
|
|
899
|
+
function nameFunc(func, name) {
|
|
900
|
+
var desc = Object.getOwnPropertyDescriptor(func, "name");
|
|
901
|
+
if (desc && desc.configurable) {
|
|
902
|
+
desc.value = name;
|
|
903
|
+
Object.defineProperty(func, "name", desc);
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
/**
|
|
907
|
+
* Populate the exports object with constructors for every error class.
|
|
908
|
+
* @private
|
|
909
|
+
*/
|
|
910
|
+
function populateConstructorExports(exports$1, codes, HttpError) {
|
|
911
|
+
codes.forEach(function forEachCode(code) {
|
|
912
|
+
var CodeError;
|
|
913
|
+
var name = toIdentifier(statuses.message[code]);
|
|
914
|
+
switch (codeClass(code)) {
|
|
915
|
+
case 400:
|
|
916
|
+
CodeError = createClientErrorConstructor(HttpError, name, code);
|
|
917
|
+
break;
|
|
918
|
+
case 500: CodeError = createServerErrorConstructor(HttpError, name, code);
|
|
919
|
+
}
|
|
920
|
+
if (CodeError) {
|
|
921
|
+
exports$1[code] = CodeError;
|
|
922
|
+
exports$1[name] = CodeError;
|
|
923
|
+
}
|
|
924
|
+
});
|
|
925
|
+
}
|
|
926
|
+
/**
|
|
927
|
+
* Get a class name from a name identifier.
|
|
928
|
+
*
|
|
929
|
+
* @param {string} name
|
|
930
|
+
* @returns {string}
|
|
931
|
+
* @private
|
|
932
|
+
*/
|
|
933
|
+
function toClassName(name) {
|
|
934
|
+
return name.slice(-5) === "Error" ? name : name + "Error";
|
|
935
|
+
}
|
|
936
|
+
}));
|
|
937
|
+
//#endregion
|
|
938
|
+
//#region node_modules/.pnpm/etag@1.8.1/node_modules/etag/index.js
|
|
939
|
+
/*!
|
|
940
|
+
* etag
|
|
941
|
+
* Copyright(c) 2014-2016 Douglas Christopher Wilson
|
|
942
|
+
* MIT Licensed
|
|
943
|
+
*/
|
|
944
|
+
var require_etag = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
945
|
+
/**
|
|
946
|
+
* Module exports.
|
|
947
|
+
* @public
|
|
948
|
+
*/
|
|
949
|
+
module.exports = etag;
|
|
950
|
+
/**
|
|
951
|
+
* Module dependencies.
|
|
952
|
+
* @private
|
|
953
|
+
*/
|
|
954
|
+
var crypto = __require("crypto");
|
|
955
|
+
var Stats = __require("fs").Stats;
|
|
956
|
+
/**
|
|
957
|
+
* Module variables.
|
|
958
|
+
* @private
|
|
959
|
+
*/
|
|
960
|
+
var toString = Object.prototype.toString;
|
|
961
|
+
/**
|
|
962
|
+
* Generate an entity tag.
|
|
963
|
+
*
|
|
964
|
+
* @param {Buffer|string} entity
|
|
965
|
+
* @return {string}
|
|
966
|
+
* @private
|
|
967
|
+
*/
|
|
968
|
+
function entitytag(entity) {
|
|
969
|
+
if (entity.length === 0) return "\"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk\"";
|
|
970
|
+
var hash = crypto.createHash("sha1").update(entity, "utf8").digest("base64").substring(0, 27);
|
|
971
|
+
return "\"" + (typeof entity === "string" ? Buffer.byteLength(entity, "utf8") : entity.length).toString(16) + "-" + hash + "\"";
|
|
972
|
+
}
|
|
973
|
+
/**
|
|
974
|
+
* Create a simple ETag.
|
|
975
|
+
*
|
|
976
|
+
* @param {string|Buffer|Stats} entity
|
|
977
|
+
* @param {object} [options]
|
|
978
|
+
* @param {boolean} [options.weak]
|
|
979
|
+
* @return {String}
|
|
980
|
+
* @public
|
|
981
|
+
*/
|
|
982
|
+
function etag(entity, options) {
|
|
983
|
+
if (entity == null) throw new TypeError("argument entity is required");
|
|
984
|
+
var isStats = isstats(entity);
|
|
985
|
+
var weak = options && typeof options.weak === "boolean" ? options.weak : isStats;
|
|
986
|
+
if (!isStats && typeof entity !== "string" && !Buffer.isBuffer(entity)) throw new TypeError("argument entity must be string, Buffer, or fs.Stats");
|
|
987
|
+
var tag = isStats ? stattag(entity) : entitytag(entity);
|
|
988
|
+
return weak ? "W/" + tag : tag;
|
|
989
|
+
}
|
|
990
|
+
/**
|
|
991
|
+
* Determine if object is a Stats object.
|
|
992
|
+
*
|
|
993
|
+
* @param {object} obj
|
|
994
|
+
* @return {boolean}
|
|
995
|
+
* @api private
|
|
996
|
+
*/
|
|
997
|
+
function isstats(obj) {
|
|
998
|
+
if (typeof Stats === "function" && obj instanceof Stats) return true;
|
|
999
|
+
return obj && typeof obj === "object" && "ctime" in obj && toString.call(obj.ctime) === "[object Date]" && "mtime" in obj && toString.call(obj.mtime) === "[object Date]" && "ino" in obj && typeof obj.ino === "number" && "size" in obj && typeof obj.size === "number";
|
|
1000
|
+
}
|
|
1001
|
+
/**
|
|
1002
|
+
* Generate a tag for a stat.
|
|
1003
|
+
*
|
|
1004
|
+
* @param {object} stat
|
|
1005
|
+
* @return {string}
|
|
1006
|
+
* @private
|
|
1007
|
+
*/
|
|
1008
|
+
function stattag(stat) {
|
|
1009
|
+
var mtime = stat.mtime.getTime().toString(16);
|
|
1010
|
+
return "\"" + stat.size.toString(16) + "-" + mtime + "\"";
|
|
1011
|
+
}
|
|
1012
|
+
}));
|
|
1013
|
+
//#endregion
|
|
1014
|
+
//#region node_modules/.pnpm/fresh@2.0.0/node_modules/fresh/index.js
|
|
1015
|
+
/*!
|
|
1016
|
+
* fresh
|
|
1017
|
+
* Copyright(c) 2012 TJ Holowaychuk
|
|
1018
|
+
* Copyright(c) 2016-2017 Douglas Christopher Wilson
|
|
1019
|
+
* MIT Licensed
|
|
1020
|
+
*/
|
|
1021
|
+
var require_fresh = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
1022
|
+
/**
|
|
1023
|
+
* RegExp to check for no-cache token in Cache-Control.
|
|
1024
|
+
* @private
|
|
1025
|
+
*/
|
|
1026
|
+
var CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\s*?no-cache\s*?(?:,|$)/;
|
|
1027
|
+
/**
|
|
1028
|
+
* Module exports.
|
|
1029
|
+
* @public
|
|
1030
|
+
*/
|
|
1031
|
+
module.exports = fresh;
|
|
1032
|
+
/**
|
|
1033
|
+
* Check freshness of the response using request and response headers.
|
|
1034
|
+
*
|
|
1035
|
+
* @param {Object} reqHeaders
|
|
1036
|
+
* @param {Object} resHeaders
|
|
1037
|
+
* @return {Boolean}
|
|
1038
|
+
* @public
|
|
1039
|
+
*/
|
|
1040
|
+
function fresh(reqHeaders, resHeaders) {
|
|
1041
|
+
var modifiedSince = reqHeaders["if-modified-since"];
|
|
1042
|
+
var noneMatch = reqHeaders["if-none-match"];
|
|
1043
|
+
if (!modifiedSince && !noneMatch) return false;
|
|
1044
|
+
var cacheControl = reqHeaders["cache-control"];
|
|
1045
|
+
if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) return false;
|
|
1046
|
+
if (noneMatch) {
|
|
1047
|
+
if (noneMatch === "*") return true;
|
|
1048
|
+
var etag = resHeaders.etag;
|
|
1049
|
+
if (!etag) return false;
|
|
1050
|
+
var matches = parseTokenList(noneMatch);
|
|
1051
|
+
for (var i = 0; i < matches.length; i++) {
|
|
1052
|
+
var match = matches[i];
|
|
1053
|
+
if (match === etag || match === "W/" + etag || "W/" + match === etag) return true;
|
|
1054
|
+
}
|
|
1055
|
+
return false;
|
|
1056
|
+
}
|
|
1057
|
+
if (modifiedSince) {
|
|
1058
|
+
var lastModified = resHeaders["last-modified"];
|
|
1059
|
+
if (!lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince))) return false;
|
|
1060
|
+
}
|
|
1061
|
+
return true;
|
|
1062
|
+
}
|
|
1063
|
+
/**
|
|
1064
|
+
* Parse an HTTP Date into a number.
|
|
1065
|
+
*
|
|
1066
|
+
* @param {string} date
|
|
1067
|
+
* @private
|
|
1068
|
+
*/
|
|
1069
|
+
function parseHttpDate(date) {
|
|
1070
|
+
var timestamp = date && Date.parse(date);
|
|
1071
|
+
// istanbul ignore next: guard against date.js Date.parse patching
|
|
1072
|
+
return typeof timestamp === "number" ? timestamp : NaN;
|
|
1073
|
+
}
|
|
1074
|
+
/**
|
|
1075
|
+
* Parse a HTTP token list.
|
|
1076
|
+
*
|
|
1077
|
+
* @param {string} str
|
|
1078
|
+
* @private
|
|
1079
|
+
*/
|
|
1080
|
+
function parseTokenList(str) {
|
|
1081
|
+
var end = 0;
|
|
1082
|
+
var list = [];
|
|
1083
|
+
var start = 0;
|
|
1084
|
+
for (var i = 0, len = str.length; i < len; i++) switch (str.charCodeAt(i)) {
|
|
1085
|
+
case 32:
|
|
1086
|
+
if (start === end) start = end = i + 1;
|
|
1087
|
+
break;
|
|
1088
|
+
case 44:
|
|
1089
|
+
list.push(str.substring(start, end));
|
|
1090
|
+
start = end = i + 1;
|
|
1091
|
+
break;
|
|
1092
|
+
default: end = i + 1;
|
|
1093
|
+
}
|
|
1094
|
+
list.push(str.substring(start, end));
|
|
1095
|
+
return list;
|
|
1096
|
+
}
|
|
1097
|
+
}));
|
|
1098
|
+
//#endregion
|
|
1099
|
+
//#region node_modules/.pnpm/mime-types@3.0.2/node_modules/mime-types/mimeScore.js
|
|
1100
|
+
var require_mimeScore = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
1101
|
+
var FACET_SCORES = {
|
|
1102
|
+
"prs.": 100,
|
|
1103
|
+
"x-": 200,
|
|
1104
|
+
"x.": 300,
|
|
1105
|
+
"vnd.": 400,
|
|
1106
|
+
default: 900
|
|
1107
|
+
};
|
|
1108
|
+
var SOURCE_SCORES = {
|
|
1109
|
+
nginx: 10,
|
|
1110
|
+
apache: 20,
|
|
1111
|
+
iana: 40,
|
|
1112
|
+
default: 30
|
|
1113
|
+
};
|
|
1114
|
+
var TYPE_SCORES = {
|
|
1115
|
+
application: 1,
|
|
1116
|
+
font: 2,
|
|
1117
|
+
audio: 2,
|
|
1118
|
+
video: 3,
|
|
1119
|
+
default: 0
|
|
1120
|
+
};
|
|
1121
|
+
/**
|
|
1122
|
+
* Get each component of the score for a mime type. The sum of these is the
|
|
1123
|
+
* total score. The higher the score, the more "official" the type.
|
|
1124
|
+
*/
|
|
1125
|
+
module.exports = function mimeScore(mimeType, source = "default") {
|
|
1126
|
+
if (mimeType === "application/octet-stream") return 0;
|
|
1127
|
+
const [type, subtype] = mimeType.split("/");
|
|
1128
|
+
const facetScore = FACET_SCORES[subtype.replace(/(\.|x-).*/, "$1")] || FACET_SCORES.default;
|
|
1129
|
+
const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default;
|
|
1130
|
+
const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default;
|
|
1131
|
+
const lengthScore = 1 - mimeType.length / 100;
|
|
1132
|
+
return facetScore + sourceScore + typeScore + lengthScore;
|
|
1133
|
+
};
|
|
1134
|
+
}));
|
|
1135
|
+
//#endregion
|
|
1136
|
+
//#region node_modules/.pnpm/mime-types@3.0.2/node_modules/mime-types/index.js
|
|
1137
|
+
/*!
|
|
1138
|
+
* mime-types
|
|
1139
|
+
* Copyright(c) 2014 Jonathan Ong
|
|
1140
|
+
* Copyright(c) 2015 Douglas Christopher Wilson
|
|
1141
|
+
* MIT Licensed
|
|
1142
|
+
*/
|
|
1143
|
+
var require_mime_types = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
1144
|
+
/**
|
|
1145
|
+
* Module dependencies.
|
|
1146
|
+
* @private
|
|
1147
|
+
*/
|
|
1148
|
+
var db = require_mime_db();
|
|
1149
|
+
var extname = __require("path").extname;
|
|
1150
|
+
var mimeScore = require_mimeScore();
|
|
1151
|
+
/**
|
|
1152
|
+
* Module variables.
|
|
1153
|
+
* @private
|
|
1154
|
+
*/
|
|
1155
|
+
var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/;
|
|
1156
|
+
var TEXT_TYPE_REGEXP = /^text\//i;
|
|
1157
|
+
/**
|
|
1158
|
+
* Module exports.
|
|
1159
|
+
* @public
|
|
1160
|
+
*/
|
|
1161
|
+
exports.charset = charset;
|
|
1162
|
+
exports.charsets = { lookup: charset };
|
|
1163
|
+
exports.contentType = contentType;
|
|
1164
|
+
exports.extension = extension;
|
|
1165
|
+
exports.extensions = Object.create(null);
|
|
1166
|
+
exports.lookup = lookup;
|
|
1167
|
+
exports.types = Object.create(null);
|
|
1168
|
+
exports._extensionConflicts = [];
|
|
1169
|
+
populateMaps(exports.extensions, exports.types);
|
|
1170
|
+
/**
|
|
1171
|
+
* Get the default charset for a MIME type.
|
|
1172
|
+
*
|
|
1173
|
+
* @param {string} type
|
|
1174
|
+
* @return {false|string}
|
|
1175
|
+
*/
|
|
1176
|
+
function charset(type) {
|
|
1177
|
+
if (!type || typeof type !== "string") return false;
|
|
1178
|
+
var match = EXTRACT_TYPE_REGEXP.exec(type);
|
|
1179
|
+
var mime = match && db[match[1].toLowerCase()];
|
|
1180
|
+
if (mime && mime.charset) return mime.charset;
|
|
1181
|
+
if (match && TEXT_TYPE_REGEXP.test(match[1])) return "UTF-8";
|
|
1182
|
+
return false;
|
|
1183
|
+
}
|
|
1184
|
+
/**
|
|
1185
|
+
* Create a full Content-Type header given a MIME type or extension.
|
|
1186
|
+
*
|
|
1187
|
+
* @param {string} str
|
|
1188
|
+
* @return {false|string}
|
|
1189
|
+
*/
|
|
1190
|
+
function contentType(str) {
|
|
1191
|
+
if (!str || typeof str !== "string") return false;
|
|
1192
|
+
var mime = str.indexOf("/") === -1 ? exports.lookup(str) : str;
|
|
1193
|
+
if (!mime) return false;
|
|
1194
|
+
if (mime.indexOf("charset") === -1) {
|
|
1195
|
+
var charset = exports.charset(mime);
|
|
1196
|
+
if (charset) mime += "; charset=" + charset.toLowerCase();
|
|
1197
|
+
}
|
|
1198
|
+
return mime;
|
|
1199
|
+
}
|
|
1200
|
+
/**
|
|
1201
|
+
* Get the default extension for a MIME type.
|
|
1202
|
+
*
|
|
1203
|
+
* @param {string} type
|
|
1204
|
+
* @return {false|string}
|
|
1205
|
+
*/
|
|
1206
|
+
function extension(type) {
|
|
1207
|
+
if (!type || typeof type !== "string") return false;
|
|
1208
|
+
var match = EXTRACT_TYPE_REGEXP.exec(type);
|
|
1209
|
+
var exts = match && exports.extensions[match[1].toLowerCase()];
|
|
1210
|
+
if (!exts || !exts.length) return false;
|
|
1211
|
+
return exts[0];
|
|
1212
|
+
}
|
|
1213
|
+
/**
|
|
1214
|
+
* Lookup the MIME type for a file path/extension.
|
|
1215
|
+
*
|
|
1216
|
+
* @param {string} path
|
|
1217
|
+
* @return {false|string}
|
|
1218
|
+
*/
|
|
1219
|
+
function lookup(path) {
|
|
1220
|
+
if (!path || typeof path !== "string") return false;
|
|
1221
|
+
var extension = extname("x." + path).toLowerCase().slice(1);
|
|
1222
|
+
if (!extension) return false;
|
|
1223
|
+
return exports.types[extension] || false;
|
|
1224
|
+
}
|
|
1225
|
+
/**
|
|
1226
|
+
* Populate the extensions and types maps.
|
|
1227
|
+
* @private
|
|
1228
|
+
*/
|
|
1229
|
+
function populateMaps(extensions, types) {
|
|
1230
|
+
Object.keys(db).forEach(function forEachMimeType(type) {
|
|
1231
|
+
var exts = db[type].extensions;
|
|
1232
|
+
if (!exts || !exts.length) return;
|
|
1233
|
+
extensions[type] = exts;
|
|
1234
|
+
for (var i = 0; i < exts.length; i++) {
|
|
1235
|
+
var extension = exts[i];
|
|
1236
|
+
types[extension] = _preferredType(extension, types[extension], type);
|
|
1237
|
+
const legacyType = _preferredTypeLegacy(extension, types[extension], type);
|
|
1238
|
+
if (legacyType !== types[extension]) exports._extensionConflicts.push([
|
|
1239
|
+
extension,
|
|
1240
|
+
legacyType,
|
|
1241
|
+
types[extension]
|
|
1242
|
+
]);
|
|
1243
|
+
}
|
|
1244
|
+
});
|
|
1245
|
+
}
|
|
1246
|
+
function _preferredType(ext, type0, type1) {
|
|
1247
|
+
return (type0 ? mimeScore(type0, db[type0].source) : 0) > (type1 ? mimeScore(type1, db[type1].source) : 0) ? type0 : type1;
|
|
1248
|
+
}
|
|
1249
|
+
function _preferredTypeLegacy(ext, type0, type1) {
|
|
1250
|
+
var SOURCE_RANK = [
|
|
1251
|
+
"nginx",
|
|
1252
|
+
"apache",
|
|
1253
|
+
void 0,
|
|
1254
|
+
"iana"
|
|
1255
|
+
];
|
|
1256
|
+
var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0;
|
|
1257
|
+
var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0;
|
|
1258
|
+
if (exports.types[extension] !== "application/octet-stream" && (score0 > score1 || score0 === score1 && exports.types[extension]?.slice(0, 12) === "application/")) return type0;
|
|
1259
|
+
return score0 > score1 ? type0 : type1;
|
|
1260
|
+
}
|
|
1261
|
+
}));
|
|
1262
|
+
//#endregion
|
|
1263
|
+
//#region node_modules/.pnpm/ee-first@1.1.1/node_modules/ee-first/index.js
|
|
1264
|
+
/*!
|
|
1265
|
+
* ee-first
|
|
1266
|
+
* Copyright(c) 2014 Jonathan Ong
|
|
1267
|
+
* MIT Licensed
|
|
1268
|
+
*/
|
|
1269
|
+
var require_ee_first = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
1270
|
+
/**
|
|
1271
|
+
* Module exports.
|
|
1272
|
+
* @public
|
|
1273
|
+
*/
|
|
1274
|
+
module.exports = first;
|
|
1275
|
+
/**
|
|
1276
|
+
* Get the first event in a set of event emitters and event pairs.
|
|
1277
|
+
*
|
|
1278
|
+
* @param {array} stuff
|
|
1279
|
+
* @param {function} done
|
|
1280
|
+
* @public
|
|
1281
|
+
*/
|
|
1282
|
+
function first(stuff, done) {
|
|
1283
|
+
if (!Array.isArray(stuff)) throw new TypeError("arg must be an array of [ee, events...] arrays");
|
|
1284
|
+
var cleanups = [];
|
|
1285
|
+
for (var i = 0; i < stuff.length; i++) {
|
|
1286
|
+
var arr = stuff[i];
|
|
1287
|
+
if (!Array.isArray(arr) || arr.length < 2) throw new TypeError("each array member must be [ee, events...]");
|
|
1288
|
+
var ee = arr[0];
|
|
1289
|
+
for (var j = 1; j < arr.length; j++) {
|
|
1290
|
+
var event = arr[j];
|
|
1291
|
+
var fn = listener(event, callback);
|
|
1292
|
+
ee.on(event, fn);
|
|
1293
|
+
cleanups.push({
|
|
1294
|
+
ee,
|
|
1295
|
+
event,
|
|
1296
|
+
fn
|
|
1297
|
+
});
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1300
|
+
function callback() {
|
|
1301
|
+
cleanup();
|
|
1302
|
+
done.apply(null, arguments);
|
|
1303
|
+
}
|
|
1304
|
+
function cleanup() {
|
|
1305
|
+
var x;
|
|
1306
|
+
for (var i = 0; i < cleanups.length; i++) {
|
|
1307
|
+
x = cleanups[i];
|
|
1308
|
+
x.ee.removeListener(x.event, x.fn);
|
|
1309
|
+
}
|
|
1310
|
+
}
|
|
1311
|
+
function thunk(fn) {
|
|
1312
|
+
done = fn;
|
|
1313
|
+
}
|
|
1314
|
+
thunk.cancel = cleanup;
|
|
1315
|
+
return thunk;
|
|
1316
|
+
}
|
|
1317
|
+
/**
|
|
1318
|
+
* Create the event listener.
|
|
1319
|
+
* @private
|
|
1320
|
+
*/
|
|
1321
|
+
function listener(event, done) {
|
|
1322
|
+
return function onevent(arg1) {
|
|
1323
|
+
var args = new Array(arguments.length);
|
|
1324
|
+
var ee = this;
|
|
1325
|
+
var err = event === "error" ? arg1 : null;
|
|
1326
|
+
for (var i = 0; i < args.length; i++) args[i] = arguments[i];
|
|
1327
|
+
done(err, ee, event, args);
|
|
1328
|
+
};
|
|
1329
|
+
}
|
|
1330
|
+
}));
|
|
1331
|
+
//#endregion
|
|
1332
|
+
//#region node_modules/.pnpm/on-finished@2.4.1/node_modules/on-finished/index.js
|
|
1333
|
+
/*!
|
|
1334
|
+
* on-finished
|
|
1335
|
+
* Copyright(c) 2013 Jonathan Ong
|
|
1336
|
+
* Copyright(c) 2014 Douglas Christopher Wilson
|
|
1337
|
+
* MIT Licensed
|
|
1338
|
+
*/
|
|
1339
|
+
var require_on_finished = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
1340
|
+
/**
|
|
1341
|
+
* Module exports.
|
|
1342
|
+
* @public
|
|
1343
|
+
*/
|
|
1344
|
+
module.exports = onFinished;
|
|
1345
|
+
module.exports.isFinished = isFinished;
|
|
1346
|
+
/**
|
|
1347
|
+
* Module dependencies.
|
|
1348
|
+
* @private
|
|
1349
|
+
*/
|
|
1350
|
+
var asyncHooks = tryRequireAsyncHooks();
|
|
1351
|
+
var first = require_ee_first();
|
|
1352
|
+
/**
|
|
1353
|
+
* Variables.
|
|
1354
|
+
* @private
|
|
1355
|
+
*/
|
|
1356
|
+
/* istanbul ignore next */
|
|
1357
|
+
var defer = typeof setImmediate === "function" ? setImmediate : function(fn) {
|
|
1358
|
+
process.nextTick(fn.bind.apply(fn, arguments));
|
|
1359
|
+
};
|
|
1360
|
+
/**
|
|
1361
|
+
* Invoke callback when the response has finished, useful for
|
|
1362
|
+
* cleaning up resources afterwards.
|
|
1363
|
+
*
|
|
1364
|
+
* @param {object} msg
|
|
1365
|
+
* @param {function} listener
|
|
1366
|
+
* @return {object}
|
|
1367
|
+
* @public
|
|
1368
|
+
*/
|
|
1369
|
+
function onFinished(msg, listener) {
|
|
1370
|
+
if (isFinished(msg) !== false) {
|
|
1371
|
+
defer(listener, null, msg);
|
|
1372
|
+
return msg;
|
|
1373
|
+
}
|
|
1374
|
+
attachListener(msg, wrap(listener));
|
|
1375
|
+
return msg;
|
|
1376
|
+
}
|
|
1377
|
+
/**
|
|
1378
|
+
* Determine if message is already finished.
|
|
1379
|
+
*
|
|
1380
|
+
* @param {object} msg
|
|
1381
|
+
* @return {boolean}
|
|
1382
|
+
* @public
|
|
1383
|
+
*/
|
|
1384
|
+
function isFinished(msg) {
|
|
1385
|
+
var socket = msg.socket;
|
|
1386
|
+
if (typeof msg.finished === "boolean") return Boolean(msg.finished || socket && !socket.writable);
|
|
1387
|
+
if (typeof msg.complete === "boolean") return Boolean(msg.upgrade || !socket || !socket.readable || msg.complete && !msg.readable);
|
|
1388
|
+
}
|
|
1389
|
+
/**
|
|
1390
|
+
* Attach a finished listener to the message.
|
|
1391
|
+
*
|
|
1392
|
+
* @param {object} msg
|
|
1393
|
+
* @param {function} callback
|
|
1394
|
+
* @private
|
|
1395
|
+
*/
|
|
1396
|
+
function attachFinishedListener(msg, callback) {
|
|
1397
|
+
var eeMsg;
|
|
1398
|
+
var eeSocket;
|
|
1399
|
+
var finished = false;
|
|
1400
|
+
function onFinish(error) {
|
|
1401
|
+
eeMsg.cancel();
|
|
1402
|
+
eeSocket.cancel();
|
|
1403
|
+
finished = true;
|
|
1404
|
+
callback(error);
|
|
1405
|
+
}
|
|
1406
|
+
eeMsg = eeSocket = first([[
|
|
1407
|
+
msg,
|
|
1408
|
+
"end",
|
|
1409
|
+
"finish"
|
|
1410
|
+
]], onFinish);
|
|
1411
|
+
function onSocket(socket) {
|
|
1412
|
+
msg.removeListener("socket", onSocket);
|
|
1413
|
+
if (finished) return;
|
|
1414
|
+
if (eeMsg !== eeSocket) return;
|
|
1415
|
+
eeSocket = first([[
|
|
1416
|
+
socket,
|
|
1417
|
+
"error",
|
|
1418
|
+
"close"
|
|
1419
|
+
]], onFinish);
|
|
1420
|
+
}
|
|
1421
|
+
if (msg.socket) {
|
|
1422
|
+
onSocket(msg.socket);
|
|
1423
|
+
return;
|
|
1424
|
+
}
|
|
1425
|
+
msg.on("socket", onSocket);
|
|
1426
|
+
if (msg.socket === void 0)
|
|
1427
|
+
// istanbul ignore next: node.js 0.8 patch
|
|
1428
|
+
patchAssignSocket(msg, onSocket);
|
|
1429
|
+
}
|
|
1430
|
+
/**
|
|
1431
|
+
* Attach the listener to the message.
|
|
1432
|
+
*
|
|
1433
|
+
* @param {object} msg
|
|
1434
|
+
* @return {function}
|
|
1435
|
+
* @private
|
|
1436
|
+
*/
|
|
1437
|
+
function attachListener(msg, listener) {
|
|
1438
|
+
var attached = msg.__onFinished;
|
|
1439
|
+
if (!attached || !attached.queue) {
|
|
1440
|
+
attached = msg.__onFinished = createListener(msg);
|
|
1441
|
+
attachFinishedListener(msg, attached);
|
|
1442
|
+
}
|
|
1443
|
+
attached.queue.push(listener);
|
|
1444
|
+
}
|
|
1445
|
+
/**
|
|
1446
|
+
* Create listener on message.
|
|
1447
|
+
*
|
|
1448
|
+
* @param {object} msg
|
|
1449
|
+
* @return {function}
|
|
1450
|
+
* @private
|
|
1451
|
+
*/
|
|
1452
|
+
function createListener(msg) {
|
|
1453
|
+
function listener(err) {
|
|
1454
|
+
if (msg.__onFinished === listener) msg.__onFinished = null;
|
|
1455
|
+
if (!listener.queue) return;
|
|
1456
|
+
var queue = listener.queue;
|
|
1457
|
+
listener.queue = null;
|
|
1458
|
+
for (var i = 0; i < queue.length; i++) queue[i](err, msg);
|
|
1459
|
+
}
|
|
1460
|
+
listener.queue = [];
|
|
1461
|
+
return listener;
|
|
1462
|
+
}
|
|
1463
|
+
/**
|
|
1464
|
+
* Patch ServerResponse.prototype.assignSocket for node.js 0.8.
|
|
1465
|
+
*
|
|
1466
|
+
* @param {ServerResponse} res
|
|
1467
|
+
* @param {function} callback
|
|
1468
|
+
* @private
|
|
1469
|
+
*/
|
|
1470
|
+
// istanbul ignore next: node.js 0.8 patch
|
|
1471
|
+
function patchAssignSocket(res, callback) {
|
|
1472
|
+
var assignSocket = res.assignSocket;
|
|
1473
|
+
if (typeof assignSocket !== "function") return;
|
|
1474
|
+
res.assignSocket = function _assignSocket(socket) {
|
|
1475
|
+
assignSocket.call(this, socket);
|
|
1476
|
+
callback(socket);
|
|
1477
|
+
};
|
|
1478
|
+
}
|
|
1479
|
+
/**
|
|
1480
|
+
* Try to require async_hooks
|
|
1481
|
+
* @private
|
|
1482
|
+
*/
|
|
1483
|
+
function tryRequireAsyncHooks() {
|
|
1484
|
+
try {
|
|
1485
|
+
return __require("async_hooks");
|
|
1486
|
+
} catch (e) {
|
|
1487
|
+
return {};
|
|
1488
|
+
}
|
|
1489
|
+
}
|
|
1490
|
+
/**
|
|
1491
|
+
* Wrap function with async resource, if possible.
|
|
1492
|
+
* AsyncResource.bind static method backported.
|
|
1493
|
+
* @private
|
|
1494
|
+
*/
|
|
1495
|
+
function wrap(fn) {
|
|
1496
|
+
var res;
|
|
1497
|
+
if (asyncHooks.AsyncResource) res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn");
|
|
1498
|
+
if (!res || !res.runInAsyncScope) return fn;
|
|
1499
|
+
return res.runInAsyncScope.bind(res, fn, null);
|
|
1500
|
+
}
|
|
1501
|
+
}));
|
|
1502
|
+
//#endregion
|
|
1503
|
+
//#region node_modules/.pnpm/range-parser@1.3.0/node_modules/range-parser/index.js
|
|
1504
|
+
/*!
|
|
1505
|
+
* range-parser
|
|
1506
|
+
* Copyright(c) 2012-2014 TJ Holowaychuk
|
|
1507
|
+
* Copyright(c) 2015-2016 Douglas Christopher Wilson
|
|
1508
|
+
* MIT Licensed
|
|
1509
|
+
*/
|
|
1510
|
+
var require_range_parser = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
1511
|
+
/**
|
|
1512
|
+
* Module exports.
|
|
1513
|
+
* @public
|
|
1514
|
+
*/
|
|
1515
|
+
module.exports = rangeParser;
|
|
1516
|
+
/**
|
|
1517
|
+
* Parse "Range" header `str` relative to the given file `size`.
|
|
1518
|
+
*
|
|
1519
|
+
* @param {Number} size
|
|
1520
|
+
* @param {String} str
|
|
1521
|
+
* @param {Object} [options]
|
|
1522
|
+
* @return {Array}
|
|
1523
|
+
* @public
|
|
1524
|
+
*/
|
|
1525
|
+
function rangeParser(size, str, options) {
|
|
1526
|
+
if (typeof str !== "string") throw new TypeError("argument str must be a string");
|
|
1527
|
+
var index = str.indexOf("=");
|
|
1528
|
+
if (index === -1) return -2;
|
|
1529
|
+
var arr = str.slice(index + 1).split(",");
|
|
1530
|
+
var ranges = [];
|
|
1531
|
+
ranges.type = str.slice(0, index);
|
|
1532
|
+
for (var i = 0; i < arr.length; i++) {
|
|
1533
|
+
var indexOf = arr[i].indexOf("-");
|
|
1534
|
+
if (indexOf === -1) return -2;
|
|
1535
|
+
var startStr = arr[i].slice(0, indexOf).trim();
|
|
1536
|
+
var endStr = arr[i].slice(indexOf + 1).trim();
|
|
1537
|
+
var start = parsePos(startStr);
|
|
1538
|
+
var end = parsePos(endStr);
|
|
1539
|
+
if (startStr.length === 0) {
|
|
1540
|
+
start = size - end;
|
|
1541
|
+
end = size - 1;
|
|
1542
|
+
} else if (endStr.length === 0) end = size - 1;
|
|
1543
|
+
if (end > size - 1) end = size - 1;
|
|
1544
|
+
if (isNaN(start) || isNaN(end)) return -2;
|
|
1545
|
+
if (start > end || start < 0) continue;
|
|
1546
|
+
ranges.push({
|
|
1547
|
+
start,
|
|
1548
|
+
end
|
|
1549
|
+
});
|
|
1550
|
+
}
|
|
1551
|
+
if (ranges.length < 1) return -1;
|
|
1552
|
+
return options && options.combine ? combineRanges(ranges) : ranges;
|
|
1553
|
+
}
|
|
1554
|
+
/**
|
|
1555
|
+
* Parse string to integer.
|
|
1556
|
+
* @private
|
|
1557
|
+
*/
|
|
1558
|
+
function parsePos(str) {
|
|
1559
|
+
if (/^\d+$/.test(str)) return Number(str);
|
|
1560
|
+
return NaN;
|
|
1561
|
+
}
|
|
1562
|
+
/**
|
|
1563
|
+
* Combine overlapping & adjacent ranges.
|
|
1564
|
+
* @private
|
|
1565
|
+
*/
|
|
1566
|
+
function combineRanges(ranges) {
|
|
1567
|
+
var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart);
|
|
1568
|
+
for (var j = 0, i = 1; i < ordered.length; i++) {
|
|
1569
|
+
var range = ordered[i];
|
|
1570
|
+
var current = ordered[j];
|
|
1571
|
+
if (range.start > current.end + 1) ordered[++j] = range;
|
|
1572
|
+
else if (range.end > current.end) {
|
|
1573
|
+
current.end = range.end;
|
|
1574
|
+
current.index = Math.min(current.index, range.index);
|
|
1575
|
+
}
|
|
1576
|
+
}
|
|
1577
|
+
ordered.length = j + 1;
|
|
1578
|
+
var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex);
|
|
1579
|
+
combined.type = ranges.type;
|
|
1580
|
+
return combined;
|
|
1581
|
+
}
|
|
1582
|
+
/**
|
|
1583
|
+
* Map function to add index value to ranges.
|
|
1584
|
+
* @private
|
|
1585
|
+
*/
|
|
1586
|
+
function mapWithIndex(range, index) {
|
|
1587
|
+
return {
|
|
1588
|
+
start: range.start,
|
|
1589
|
+
end: range.end,
|
|
1590
|
+
index
|
|
1591
|
+
};
|
|
1592
|
+
}
|
|
1593
|
+
/**
|
|
1594
|
+
* Map function to remove index value from ranges.
|
|
1595
|
+
* @private
|
|
1596
|
+
*/
|
|
1597
|
+
function mapWithoutIndex(range) {
|
|
1598
|
+
return {
|
|
1599
|
+
start: range.start,
|
|
1600
|
+
end: range.end
|
|
1601
|
+
};
|
|
1602
|
+
}
|
|
1603
|
+
/**
|
|
1604
|
+
* Sort function to sort ranges by index.
|
|
1605
|
+
* @private
|
|
1606
|
+
*/
|
|
1607
|
+
function sortByRangeIndex(a, b) {
|
|
1608
|
+
return a.index - b.index;
|
|
1609
|
+
}
|
|
1610
|
+
/**
|
|
1611
|
+
* Sort function to sort ranges by start position.
|
|
1612
|
+
* @private
|
|
1613
|
+
*/
|
|
1614
|
+
function sortByRangeStart(a, b) {
|
|
1615
|
+
return a.start - b.start;
|
|
1616
|
+
}
|
|
1617
|
+
}));
|
|
1618
|
+
//#endregion
|
|
1619
|
+
//#region node_modules/.pnpm/send@1.2.1_supports-color@10.2.2/node_modules/send/index.js
|
|
1620
|
+
/*!
|
|
1621
|
+
* send
|
|
1622
|
+
* Copyright(c) 2012 TJ Holowaychuk
|
|
1623
|
+
* Copyright(c) 2014-2022 Douglas Christopher Wilson
|
|
1624
|
+
* MIT Licensed
|
|
1625
|
+
*/
|
|
1626
|
+
var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
1627
|
+
/**
|
|
1628
|
+
* Module dependencies.
|
|
1629
|
+
* @private
|
|
1630
|
+
*/
|
|
1631
|
+
var createError = require_http_errors();
|
|
1632
|
+
var debug = require_src()("send");
|
|
1633
|
+
var encodeUrl = require_encodeurl();
|
|
1634
|
+
var escapeHtml = require_escape_html();
|
|
1635
|
+
var etag = require_etag();
|
|
1636
|
+
var fresh = require_fresh();
|
|
1637
|
+
var fs = __require("fs");
|
|
1638
|
+
var mime = require_mime_types();
|
|
1639
|
+
var ms = require_ms();
|
|
1640
|
+
var onFinished = require_on_finished();
|
|
1641
|
+
var parseRange = require_range_parser();
|
|
1642
|
+
var path = __require("path");
|
|
1643
|
+
var statuses = require_statuses();
|
|
1644
|
+
var Stream = __require("stream");
|
|
1645
|
+
var util = __require("util");
|
|
1646
|
+
/**
|
|
1647
|
+
* Path function references.
|
|
1648
|
+
* @private
|
|
1649
|
+
*/
|
|
1650
|
+
var extname = path.extname;
|
|
1651
|
+
var join = path.join;
|
|
1652
|
+
var normalize = path.normalize;
|
|
1653
|
+
var resolve = path.resolve;
|
|
1654
|
+
var sep = path.sep;
|
|
1655
|
+
/**
|
|
1656
|
+
* Regular expression for identifying a bytes Range header.
|
|
1657
|
+
* @private
|
|
1658
|
+
*/
|
|
1659
|
+
var BYTES_RANGE_REGEXP = /^ *bytes=/;
|
|
1660
|
+
/**
|
|
1661
|
+
* Maximum value allowed for the max age.
|
|
1662
|
+
* @private
|
|
1663
|
+
*/
|
|
1664
|
+
var MAX_MAXAGE = 31536e6;
|
|
1665
|
+
/**
|
|
1666
|
+
* Regular expression to match a path with a directory up component.
|
|
1667
|
+
* @private
|
|
1668
|
+
*/
|
|
1669
|
+
var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/;
|
|
1670
|
+
/**
|
|
1671
|
+
* Module exports.
|
|
1672
|
+
* @public
|
|
1673
|
+
*/
|
|
1674
|
+
module.exports = send;
|
|
1675
|
+
/**
|
|
1676
|
+
* Return a `SendStream` for `req` and `path`.
|
|
1677
|
+
*
|
|
1678
|
+
* @param {object} req
|
|
1679
|
+
* @param {string} path
|
|
1680
|
+
* @param {object} [options]
|
|
1681
|
+
* @return {SendStream}
|
|
1682
|
+
* @public
|
|
1683
|
+
*/
|
|
1684
|
+
function send(req, path, options) {
|
|
1685
|
+
return new SendStream(req, path, options);
|
|
1686
|
+
}
|
|
1687
|
+
/**
|
|
1688
|
+
* Initialize a `SendStream` with the given `path`.
|
|
1689
|
+
*
|
|
1690
|
+
* @param {Request} req
|
|
1691
|
+
* @param {String} path
|
|
1692
|
+
* @param {object} [options]
|
|
1693
|
+
* @private
|
|
1694
|
+
*/
|
|
1695
|
+
function SendStream(req, path, options) {
|
|
1696
|
+
Stream.call(this);
|
|
1697
|
+
var opts = options || {};
|
|
1698
|
+
this.options = opts;
|
|
1699
|
+
this.path = path;
|
|
1700
|
+
this.req = req;
|
|
1701
|
+
this._acceptRanges = opts.acceptRanges !== void 0 ? Boolean(opts.acceptRanges) : true;
|
|
1702
|
+
this._cacheControl = opts.cacheControl !== void 0 ? Boolean(opts.cacheControl) : true;
|
|
1703
|
+
this._etag = opts.etag !== void 0 ? Boolean(opts.etag) : true;
|
|
1704
|
+
this._dotfiles = opts.dotfiles !== void 0 ? opts.dotfiles : "ignore";
|
|
1705
|
+
if (this._dotfiles !== "ignore" && this._dotfiles !== "allow" && this._dotfiles !== "deny") throw new TypeError("dotfiles option must be \"allow\", \"deny\", or \"ignore\"");
|
|
1706
|
+
this._extensions = opts.extensions !== void 0 ? normalizeList(opts.extensions, "extensions option") : [];
|
|
1707
|
+
this._immutable = opts.immutable !== void 0 ? Boolean(opts.immutable) : false;
|
|
1708
|
+
this._index = opts.index !== void 0 ? normalizeList(opts.index, "index option") : ["index.html"];
|
|
1709
|
+
this._lastModified = opts.lastModified !== void 0 ? Boolean(opts.lastModified) : true;
|
|
1710
|
+
this._maxage = opts.maxAge || opts.maxage;
|
|
1711
|
+
this._maxage = typeof this._maxage === "string" ? ms(this._maxage) : Number(this._maxage);
|
|
1712
|
+
this._maxage = !isNaN(this._maxage) ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) : 0;
|
|
1713
|
+
this._root = opts.root ? resolve(opts.root) : null;
|
|
1714
|
+
}
|
|
1715
|
+
/**
|
|
1716
|
+
* Inherits from `Stream`.
|
|
1717
|
+
*/
|
|
1718
|
+
util.inherits(SendStream, Stream);
|
|
1719
|
+
/**
|
|
1720
|
+
* Emit error with `status`.
|
|
1721
|
+
*
|
|
1722
|
+
* @param {number} status
|
|
1723
|
+
* @param {Error} [err]
|
|
1724
|
+
* @private
|
|
1725
|
+
*/
|
|
1726
|
+
SendStream.prototype.error = function error(status, err) {
|
|
1727
|
+
if (hasListeners(this, "error")) return this.emit("error", createHttpError(status, err));
|
|
1728
|
+
var res = this.res;
|
|
1729
|
+
var doc = createHtmlDocument("Error", escapeHtml(statuses.message[status] || String(status)));
|
|
1730
|
+
clearHeaders(res);
|
|
1731
|
+
if (err && err.headers) setHeaders(res, err.headers);
|
|
1732
|
+
res.statusCode = status;
|
|
1733
|
+
res.setHeader("Content-Type", "text/html; charset=UTF-8");
|
|
1734
|
+
res.setHeader("Content-Length", Buffer.byteLength(doc));
|
|
1735
|
+
res.setHeader("Content-Security-Policy", "default-src 'none'");
|
|
1736
|
+
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
1737
|
+
res.end(doc);
|
|
1738
|
+
};
|
|
1739
|
+
/**
|
|
1740
|
+
* Check if the pathname ends with "/".
|
|
1741
|
+
*
|
|
1742
|
+
* @return {boolean}
|
|
1743
|
+
* @private
|
|
1744
|
+
*/
|
|
1745
|
+
SendStream.prototype.hasTrailingSlash = function hasTrailingSlash() {
|
|
1746
|
+
return this.path[this.path.length - 1] === "/";
|
|
1747
|
+
};
|
|
1748
|
+
/**
|
|
1749
|
+
* Check if this is a conditional GET request.
|
|
1750
|
+
*
|
|
1751
|
+
* @return {Boolean}
|
|
1752
|
+
* @api private
|
|
1753
|
+
*/
|
|
1754
|
+
SendStream.prototype.isConditionalGET = function isConditionalGET() {
|
|
1755
|
+
return this.req.headers["if-match"] || this.req.headers["if-unmodified-since"] || this.req.headers["if-none-match"] || this.req.headers["if-modified-since"];
|
|
1756
|
+
};
|
|
1757
|
+
/**
|
|
1758
|
+
* Check if the request preconditions failed.
|
|
1759
|
+
*
|
|
1760
|
+
* @return {boolean}
|
|
1761
|
+
* @private
|
|
1762
|
+
*/
|
|
1763
|
+
SendStream.prototype.isPreconditionFailure = function isPreconditionFailure() {
|
|
1764
|
+
var req = this.req;
|
|
1765
|
+
var res = this.res;
|
|
1766
|
+
var match = req.headers["if-match"];
|
|
1767
|
+
if (match) {
|
|
1768
|
+
var etag = res.getHeader("ETag");
|
|
1769
|
+
return !etag || match !== "*" && parseTokenList(match).every(function(match) {
|
|
1770
|
+
return match !== etag && match !== "W/" + etag && "W/" + match !== etag;
|
|
1771
|
+
});
|
|
1772
|
+
}
|
|
1773
|
+
var unmodifiedSince = parseHttpDate(req.headers["if-unmodified-since"]);
|
|
1774
|
+
if (!isNaN(unmodifiedSince)) {
|
|
1775
|
+
var lastModified = parseHttpDate(res.getHeader("Last-Modified"));
|
|
1776
|
+
return isNaN(lastModified) || lastModified > unmodifiedSince;
|
|
1777
|
+
}
|
|
1778
|
+
return false;
|
|
1779
|
+
};
|
|
1780
|
+
/**
|
|
1781
|
+
* Strip various content header fields for a change in entity.
|
|
1782
|
+
*
|
|
1783
|
+
* @private
|
|
1784
|
+
*/
|
|
1785
|
+
SendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields() {
|
|
1786
|
+
var res = this.res;
|
|
1787
|
+
res.removeHeader("Content-Encoding");
|
|
1788
|
+
res.removeHeader("Content-Language");
|
|
1789
|
+
res.removeHeader("Content-Length");
|
|
1790
|
+
res.removeHeader("Content-Range");
|
|
1791
|
+
res.removeHeader("Content-Type");
|
|
1792
|
+
};
|
|
1793
|
+
/**
|
|
1794
|
+
* Respond with 304 not modified.
|
|
1795
|
+
*
|
|
1796
|
+
* @api private
|
|
1797
|
+
*/
|
|
1798
|
+
SendStream.prototype.notModified = function notModified() {
|
|
1799
|
+
var res = this.res;
|
|
1800
|
+
debug("not modified");
|
|
1801
|
+
this.removeContentHeaderFields();
|
|
1802
|
+
res.statusCode = 304;
|
|
1803
|
+
res.end();
|
|
1804
|
+
};
|
|
1805
|
+
/**
|
|
1806
|
+
* Raise error that headers already sent.
|
|
1807
|
+
*
|
|
1808
|
+
* @api private
|
|
1809
|
+
*/
|
|
1810
|
+
SendStream.prototype.headersAlreadySent = function headersAlreadySent() {
|
|
1811
|
+
var err = /* @__PURE__ */ new Error("Can't set headers after they are sent.");
|
|
1812
|
+
debug("headers already sent");
|
|
1813
|
+
this.error(500, err);
|
|
1814
|
+
};
|
|
1815
|
+
/**
|
|
1816
|
+
* Check if the request is cacheable, aka
|
|
1817
|
+
* responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}).
|
|
1818
|
+
*
|
|
1819
|
+
* @return {Boolean}
|
|
1820
|
+
* @api private
|
|
1821
|
+
*/
|
|
1822
|
+
SendStream.prototype.isCachable = function isCachable() {
|
|
1823
|
+
var statusCode = this.res.statusCode;
|
|
1824
|
+
return statusCode >= 200 && statusCode < 300 || statusCode === 304;
|
|
1825
|
+
};
|
|
1826
|
+
/**
|
|
1827
|
+
* Handle stat() error.
|
|
1828
|
+
*
|
|
1829
|
+
* @param {Error} error
|
|
1830
|
+
* @private
|
|
1831
|
+
*/
|
|
1832
|
+
SendStream.prototype.onStatError = function onStatError(error) {
|
|
1833
|
+
switch (error.code) {
|
|
1834
|
+
case "ENAMETOOLONG":
|
|
1835
|
+
case "ENOENT":
|
|
1836
|
+
case "ENOTDIR":
|
|
1837
|
+
this.error(404, error);
|
|
1838
|
+
break;
|
|
1839
|
+
default: this.error(500, error);
|
|
1840
|
+
}
|
|
1841
|
+
};
|
|
1842
|
+
/**
|
|
1843
|
+
* Check if the cache is fresh.
|
|
1844
|
+
*
|
|
1845
|
+
* @return {Boolean}
|
|
1846
|
+
* @api private
|
|
1847
|
+
*/
|
|
1848
|
+
SendStream.prototype.isFresh = function isFresh() {
|
|
1849
|
+
return fresh(this.req.headers, {
|
|
1850
|
+
etag: this.res.getHeader("ETag"),
|
|
1851
|
+
"last-modified": this.res.getHeader("Last-Modified")
|
|
1852
|
+
});
|
|
1853
|
+
};
|
|
1854
|
+
/**
|
|
1855
|
+
* Check if the range is fresh.
|
|
1856
|
+
*
|
|
1857
|
+
* @return {Boolean}
|
|
1858
|
+
* @api private
|
|
1859
|
+
*/
|
|
1860
|
+
SendStream.prototype.isRangeFresh = function isRangeFresh() {
|
|
1861
|
+
var ifRange = this.req.headers["if-range"];
|
|
1862
|
+
if (!ifRange) return true;
|
|
1863
|
+
if (ifRange.indexOf("\"") !== -1) {
|
|
1864
|
+
var etag = this.res.getHeader("ETag");
|
|
1865
|
+
return Boolean(etag && ifRange.indexOf(etag) !== -1);
|
|
1866
|
+
}
|
|
1867
|
+
return parseHttpDate(this.res.getHeader("Last-Modified")) <= parseHttpDate(ifRange);
|
|
1868
|
+
};
|
|
1869
|
+
/**
|
|
1870
|
+
* Redirect to path.
|
|
1871
|
+
*
|
|
1872
|
+
* @param {string} path
|
|
1873
|
+
* @private
|
|
1874
|
+
*/
|
|
1875
|
+
SendStream.prototype.redirect = function redirect(path) {
|
|
1876
|
+
var res = this.res;
|
|
1877
|
+
if (hasListeners(this, "directory")) {
|
|
1878
|
+
this.emit("directory", res, path);
|
|
1879
|
+
return;
|
|
1880
|
+
}
|
|
1881
|
+
if (this.hasTrailingSlash()) {
|
|
1882
|
+
this.error(403);
|
|
1883
|
+
return;
|
|
1884
|
+
}
|
|
1885
|
+
var loc = encodeUrl(collapseLeadingSlashes(this.path + "/"));
|
|
1886
|
+
var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml(loc));
|
|
1887
|
+
res.statusCode = 301;
|
|
1888
|
+
res.setHeader("Content-Type", "text/html; charset=UTF-8");
|
|
1889
|
+
res.setHeader("Content-Length", Buffer.byteLength(doc));
|
|
1890
|
+
res.setHeader("Content-Security-Policy", "default-src 'none'");
|
|
1891
|
+
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
1892
|
+
res.setHeader("Location", loc);
|
|
1893
|
+
res.end(doc);
|
|
1894
|
+
};
|
|
1895
|
+
/**
|
|
1896
|
+
* Pipe to `res.
|
|
1897
|
+
*
|
|
1898
|
+
* @param {Stream} res
|
|
1899
|
+
* @return {Stream} res
|
|
1900
|
+
* @api public
|
|
1901
|
+
*/
|
|
1902
|
+
SendStream.prototype.pipe = function pipe(res) {
|
|
1903
|
+
var root = this._root;
|
|
1904
|
+
this.res = res;
|
|
1905
|
+
var path = decode(this.path);
|
|
1906
|
+
if (path === -1) {
|
|
1907
|
+
this.error(400);
|
|
1908
|
+
return res;
|
|
1909
|
+
}
|
|
1910
|
+
if (~path.indexOf("\0")) {
|
|
1911
|
+
this.error(400);
|
|
1912
|
+
return res;
|
|
1913
|
+
}
|
|
1914
|
+
var parts;
|
|
1915
|
+
if (root !== null) {
|
|
1916
|
+
if (path) path = normalize("." + sep + path);
|
|
1917
|
+
if (UP_PATH_REGEXP.test(path)) {
|
|
1918
|
+
debug("malicious path \"%s\"", path);
|
|
1919
|
+
this.error(403);
|
|
1920
|
+
return res;
|
|
1921
|
+
}
|
|
1922
|
+
parts = path.split(sep);
|
|
1923
|
+
path = normalize(join(root, path));
|
|
1924
|
+
} else {
|
|
1925
|
+
if (UP_PATH_REGEXP.test(path)) {
|
|
1926
|
+
debug("malicious path \"%s\"", path);
|
|
1927
|
+
this.error(403);
|
|
1928
|
+
return res;
|
|
1929
|
+
}
|
|
1930
|
+
parts = normalize(path).split(sep);
|
|
1931
|
+
path = resolve(path);
|
|
1932
|
+
}
|
|
1933
|
+
if (containsDotFile(parts)) {
|
|
1934
|
+
debug("%s dotfile \"%s\"", this._dotfiles, path);
|
|
1935
|
+
switch (this._dotfiles) {
|
|
1936
|
+
case "allow": break;
|
|
1937
|
+
case "deny":
|
|
1938
|
+
this.error(403);
|
|
1939
|
+
return res;
|
|
1940
|
+
default:
|
|
1941
|
+
this.error(404);
|
|
1942
|
+
return res;
|
|
1943
|
+
}
|
|
1944
|
+
}
|
|
1945
|
+
if (this._index.length && this.hasTrailingSlash()) {
|
|
1946
|
+
this.sendIndex(path);
|
|
1947
|
+
return res;
|
|
1948
|
+
}
|
|
1949
|
+
this.sendFile(path);
|
|
1950
|
+
return res;
|
|
1951
|
+
};
|
|
1952
|
+
/**
|
|
1953
|
+
* Transfer `path`.
|
|
1954
|
+
*
|
|
1955
|
+
* @param {String} path
|
|
1956
|
+
* @api public
|
|
1957
|
+
*/
|
|
1958
|
+
SendStream.prototype.send = function send(path, stat) {
|
|
1959
|
+
var len = stat.size;
|
|
1960
|
+
var options = this.options;
|
|
1961
|
+
var opts = {};
|
|
1962
|
+
var res = this.res;
|
|
1963
|
+
var req = this.req;
|
|
1964
|
+
var ranges = req.headers.range;
|
|
1965
|
+
var offset = options.start || 0;
|
|
1966
|
+
if (res.headersSent) {
|
|
1967
|
+
this.headersAlreadySent();
|
|
1968
|
+
return;
|
|
1969
|
+
}
|
|
1970
|
+
debug("pipe \"%s\"", path);
|
|
1971
|
+
this.setHeader(path, stat);
|
|
1972
|
+
this.type(path);
|
|
1973
|
+
if (this.isConditionalGET()) {
|
|
1974
|
+
if (this.isPreconditionFailure()) {
|
|
1975
|
+
this.error(412);
|
|
1976
|
+
return;
|
|
1977
|
+
}
|
|
1978
|
+
if (this.isCachable() && this.isFresh()) {
|
|
1979
|
+
this.notModified();
|
|
1980
|
+
return;
|
|
1981
|
+
}
|
|
1982
|
+
}
|
|
1983
|
+
len = Math.max(0, len - offset);
|
|
1984
|
+
if (options.end !== void 0) {
|
|
1985
|
+
var bytes = options.end - offset + 1;
|
|
1986
|
+
if (len > bytes) len = bytes;
|
|
1987
|
+
}
|
|
1988
|
+
if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) {
|
|
1989
|
+
ranges = parseRange(len, ranges, { combine: true });
|
|
1990
|
+
if (!this.isRangeFresh()) {
|
|
1991
|
+
debug("range stale");
|
|
1992
|
+
ranges = -2;
|
|
1993
|
+
}
|
|
1994
|
+
if (ranges === -1) {
|
|
1995
|
+
debug("range unsatisfiable");
|
|
1996
|
+
res.setHeader("Content-Range", contentRange("bytes", len));
|
|
1997
|
+
return this.error(416, { headers: { "Content-Range": res.getHeader("Content-Range") } });
|
|
1998
|
+
}
|
|
1999
|
+
if (ranges !== -2 && ranges.length === 1) {
|
|
2000
|
+
debug("range %j", ranges);
|
|
2001
|
+
res.statusCode = 206;
|
|
2002
|
+
res.setHeader("Content-Range", contentRange("bytes", len, ranges[0]));
|
|
2003
|
+
offset += ranges[0].start;
|
|
2004
|
+
len = ranges[0].end - ranges[0].start + 1;
|
|
2005
|
+
}
|
|
2006
|
+
}
|
|
2007
|
+
for (var prop in options) opts[prop] = options[prop];
|
|
2008
|
+
opts.start = offset;
|
|
2009
|
+
opts.end = Math.max(offset, offset + len - 1);
|
|
2010
|
+
res.setHeader("Content-Length", len);
|
|
2011
|
+
if (req.method === "HEAD") {
|
|
2012
|
+
res.end();
|
|
2013
|
+
return;
|
|
2014
|
+
}
|
|
2015
|
+
this.stream(path, opts);
|
|
2016
|
+
};
|
|
2017
|
+
/**
|
|
2018
|
+
* Transfer file for `path`.
|
|
2019
|
+
*
|
|
2020
|
+
* @param {String} path
|
|
2021
|
+
* @api private
|
|
2022
|
+
*/
|
|
2023
|
+
SendStream.prototype.sendFile = function sendFile(path) {
|
|
2024
|
+
var i = 0;
|
|
2025
|
+
var self = this;
|
|
2026
|
+
debug("stat \"%s\"", path);
|
|
2027
|
+
fs.stat(path, function onstat(err, stat) {
|
|
2028
|
+
var pathEndsWithSep = path[path.length - 1] === sep;
|
|
2029
|
+
if (err && err.code === "ENOENT" && !extname(path) && !pathEndsWithSep) return next(err);
|
|
2030
|
+
if (err) return self.onStatError(err);
|
|
2031
|
+
if (stat.isDirectory()) return self.redirect(path);
|
|
2032
|
+
if (pathEndsWithSep) return self.error(404);
|
|
2033
|
+
self.emit("file", path, stat);
|
|
2034
|
+
self.send(path, stat);
|
|
2035
|
+
});
|
|
2036
|
+
function next(err) {
|
|
2037
|
+
if (self._extensions.length <= i) return err ? self.onStatError(err) : self.error(404);
|
|
2038
|
+
var p = path + "." + self._extensions[i++];
|
|
2039
|
+
debug("stat \"%s\"", p);
|
|
2040
|
+
fs.stat(p, function(err, stat) {
|
|
2041
|
+
if (err) return next(err);
|
|
2042
|
+
if (stat.isDirectory()) return next();
|
|
2043
|
+
self.emit("file", p, stat);
|
|
2044
|
+
self.send(p, stat);
|
|
2045
|
+
});
|
|
2046
|
+
}
|
|
2047
|
+
};
|
|
2048
|
+
/**
|
|
2049
|
+
* Transfer index for `path`.
|
|
2050
|
+
*
|
|
2051
|
+
* @param {String} path
|
|
2052
|
+
* @api private
|
|
2053
|
+
*/
|
|
2054
|
+
SendStream.prototype.sendIndex = function sendIndex(path) {
|
|
2055
|
+
var i = -1;
|
|
2056
|
+
var self = this;
|
|
2057
|
+
function next(err) {
|
|
2058
|
+
if (++i >= self._index.length) {
|
|
2059
|
+
if (err) return self.onStatError(err);
|
|
2060
|
+
return self.error(404);
|
|
2061
|
+
}
|
|
2062
|
+
var p = join(path, self._index[i]);
|
|
2063
|
+
debug("stat \"%s\"", p);
|
|
2064
|
+
fs.stat(p, function(err, stat) {
|
|
2065
|
+
if (err) return next(err);
|
|
2066
|
+
if (stat.isDirectory()) return next();
|
|
2067
|
+
self.emit("file", p, stat);
|
|
2068
|
+
self.send(p, stat);
|
|
2069
|
+
});
|
|
2070
|
+
}
|
|
2071
|
+
next();
|
|
2072
|
+
};
|
|
2073
|
+
/**
|
|
2074
|
+
* Stream `path` to the response.
|
|
2075
|
+
*
|
|
2076
|
+
* @param {String} path
|
|
2077
|
+
* @param {Object} options
|
|
2078
|
+
* @api private
|
|
2079
|
+
*/
|
|
2080
|
+
SendStream.prototype.stream = function stream(path, options) {
|
|
2081
|
+
var self = this;
|
|
2082
|
+
var res = this.res;
|
|
2083
|
+
var stream = fs.createReadStream(path, options);
|
|
2084
|
+
this.emit("stream", stream);
|
|
2085
|
+
stream.pipe(res);
|
|
2086
|
+
function cleanup() {
|
|
2087
|
+
stream.destroy();
|
|
2088
|
+
}
|
|
2089
|
+
onFinished(res, cleanup);
|
|
2090
|
+
stream.on("error", function onerror(err) {
|
|
2091
|
+
cleanup();
|
|
2092
|
+
self.onStatError(err);
|
|
2093
|
+
});
|
|
2094
|
+
stream.on("end", function onend() {
|
|
2095
|
+
self.emit("end");
|
|
2096
|
+
});
|
|
2097
|
+
};
|
|
2098
|
+
/**
|
|
2099
|
+
* Set content-type based on `path`
|
|
2100
|
+
* if it hasn't been explicitly set.
|
|
2101
|
+
*
|
|
2102
|
+
* @param {String} path
|
|
2103
|
+
* @api private
|
|
2104
|
+
*/
|
|
2105
|
+
SendStream.prototype.type = function type(path) {
|
|
2106
|
+
var res = this.res;
|
|
2107
|
+
if (res.getHeader("Content-Type")) return;
|
|
2108
|
+
var ext = extname(path);
|
|
2109
|
+
var type = mime.contentType(ext) || "application/octet-stream";
|
|
2110
|
+
debug("content-type %s", type);
|
|
2111
|
+
res.setHeader("Content-Type", type);
|
|
2112
|
+
};
|
|
2113
|
+
/**
|
|
2114
|
+
* Set response header fields, most
|
|
2115
|
+
* fields may be pre-defined.
|
|
2116
|
+
*
|
|
2117
|
+
* @param {String} path
|
|
2118
|
+
* @param {Object} stat
|
|
2119
|
+
* @api private
|
|
2120
|
+
*/
|
|
2121
|
+
SendStream.prototype.setHeader = function setHeader(path, stat) {
|
|
2122
|
+
var res = this.res;
|
|
2123
|
+
this.emit("headers", res, path, stat);
|
|
2124
|
+
if (this._acceptRanges && !res.getHeader("Accept-Ranges")) {
|
|
2125
|
+
debug("accept ranges");
|
|
2126
|
+
res.setHeader("Accept-Ranges", "bytes");
|
|
2127
|
+
}
|
|
2128
|
+
if (this._cacheControl && !res.getHeader("Cache-Control")) {
|
|
2129
|
+
var cacheControl = "public, max-age=" + Math.floor(this._maxage / 1e3);
|
|
2130
|
+
if (this._immutable) cacheControl += ", immutable";
|
|
2131
|
+
debug("cache-control %s", cacheControl);
|
|
2132
|
+
res.setHeader("Cache-Control", cacheControl);
|
|
2133
|
+
}
|
|
2134
|
+
if (this._lastModified && !res.getHeader("Last-Modified")) {
|
|
2135
|
+
var modified = stat.mtime.toUTCString();
|
|
2136
|
+
debug("modified %s", modified);
|
|
2137
|
+
res.setHeader("Last-Modified", modified);
|
|
2138
|
+
}
|
|
2139
|
+
if (this._etag && !res.getHeader("ETag")) {
|
|
2140
|
+
var val = etag(stat);
|
|
2141
|
+
debug("etag %s", val);
|
|
2142
|
+
res.setHeader("ETag", val);
|
|
2143
|
+
}
|
|
2144
|
+
};
|
|
2145
|
+
/**
|
|
2146
|
+
* Clear all headers from a response.
|
|
2147
|
+
*
|
|
2148
|
+
* @param {object} res
|
|
2149
|
+
* @private
|
|
2150
|
+
*/
|
|
2151
|
+
function clearHeaders(res) {
|
|
2152
|
+
for (const header of res.getHeaderNames()) res.removeHeader(header);
|
|
2153
|
+
}
|
|
2154
|
+
/**
|
|
2155
|
+
* Collapse all leading slashes into a single slash
|
|
2156
|
+
*
|
|
2157
|
+
* @param {string} str
|
|
2158
|
+
* @private
|
|
2159
|
+
*/
|
|
2160
|
+
function collapseLeadingSlashes(str) {
|
|
2161
|
+
for (var i = 0; i < str.length; i++) if (str[i] !== "/") break;
|
|
2162
|
+
return i > 1 ? "/" + str.substr(i) : str;
|
|
2163
|
+
}
|
|
2164
|
+
/**
|
|
2165
|
+
* Determine if path parts contain a dotfile.
|
|
2166
|
+
*
|
|
2167
|
+
* @api private
|
|
2168
|
+
*/
|
|
2169
|
+
function containsDotFile(parts) {
|
|
2170
|
+
for (var i = 0; i < parts.length; i++) {
|
|
2171
|
+
var part = parts[i];
|
|
2172
|
+
if (part.length > 1 && part[0] === ".") return true;
|
|
2173
|
+
}
|
|
2174
|
+
return false;
|
|
2175
|
+
}
|
|
2176
|
+
/**
|
|
2177
|
+
* Create a Content-Range header.
|
|
2178
|
+
*
|
|
2179
|
+
* @param {string} type
|
|
2180
|
+
* @param {number} size
|
|
2181
|
+
* @param {array} [range]
|
|
2182
|
+
*/
|
|
2183
|
+
function contentRange(type, size, range) {
|
|
2184
|
+
return type + " " + (range ? range.start + "-" + range.end : "*") + "/" + size;
|
|
2185
|
+
}
|
|
2186
|
+
/**
|
|
2187
|
+
* Create a minimal HTML document.
|
|
2188
|
+
*
|
|
2189
|
+
* @param {string} title
|
|
2190
|
+
* @param {string} body
|
|
2191
|
+
* @private
|
|
2192
|
+
*/
|
|
2193
|
+
function createHtmlDocument(title, body) {
|
|
2194
|
+
return "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>" + title + "</title>\n</head>\n<body>\n<pre>" + body + "</pre>\n</body>\n</html>\n";
|
|
2195
|
+
}
|
|
2196
|
+
/**
|
|
2197
|
+
* Create a HttpError object from simple arguments.
|
|
2198
|
+
*
|
|
2199
|
+
* @param {number} status
|
|
2200
|
+
* @param {Error|object} err
|
|
2201
|
+
* @private
|
|
2202
|
+
*/
|
|
2203
|
+
function createHttpError(status, err) {
|
|
2204
|
+
if (!err) return createError(status);
|
|
2205
|
+
return err instanceof Error ? createError(status, err, { expose: false }) : createError(status, err);
|
|
2206
|
+
}
|
|
2207
|
+
/**
|
|
2208
|
+
* decodeURIComponent.
|
|
2209
|
+
*
|
|
2210
|
+
* Allows V8 to only deoptimize this fn instead of all
|
|
2211
|
+
* of send().
|
|
2212
|
+
*
|
|
2213
|
+
* @param {String} path
|
|
2214
|
+
* @api private
|
|
2215
|
+
*/
|
|
2216
|
+
function decode(path) {
|
|
2217
|
+
try {
|
|
2218
|
+
return decodeURIComponent(path);
|
|
2219
|
+
} catch (err) {
|
|
2220
|
+
return -1;
|
|
2221
|
+
}
|
|
2222
|
+
}
|
|
2223
|
+
/**
|
|
2224
|
+
* Determine if emitter has listeners of a given type.
|
|
2225
|
+
*
|
|
2226
|
+
* The way to do this check is done three different ways in Node.js >= 0.10
|
|
2227
|
+
* so this consolidates them into a minimal set using instance methods.
|
|
2228
|
+
*
|
|
2229
|
+
* @param {EventEmitter} emitter
|
|
2230
|
+
* @param {string} type
|
|
2231
|
+
* @returns {boolean}
|
|
2232
|
+
* @private
|
|
2233
|
+
*/
|
|
2234
|
+
function hasListeners(emitter, type) {
|
|
2235
|
+
return (typeof emitter.listenerCount !== "function" ? emitter.listeners(type).length : emitter.listenerCount(type)) > 0;
|
|
2236
|
+
}
|
|
2237
|
+
/**
|
|
2238
|
+
* Normalize the index option into an array.
|
|
2239
|
+
*
|
|
2240
|
+
* @param {boolean|string|array} val
|
|
2241
|
+
* @param {string} name
|
|
2242
|
+
* @private
|
|
2243
|
+
*/
|
|
2244
|
+
function normalizeList(val, name) {
|
|
2245
|
+
var list = [].concat(val || []);
|
|
2246
|
+
for (var i = 0; i < list.length; i++) if (typeof list[i] !== "string") throw new TypeError(name + " must be array of strings or false");
|
|
2247
|
+
return list;
|
|
2248
|
+
}
|
|
2249
|
+
/**
|
|
2250
|
+
* Parse an HTTP Date into a number.
|
|
2251
|
+
*
|
|
2252
|
+
* @param {string} date
|
|
2253
|
+
* @private
|
|
2254
|
+
*/
|
|
2255
|
+
function parseHttpDate(date) {
|
|
2256
|
+
var timestamp = date && Date.parse(date);
|
|
2257
|
+
return typeof timestamp === "number" ? timestamp : NaN;
|
|
2258
|
+
}
|
|
2259
|
+
/**
|
|
2260
|
+
* Parse a HTTP token list.
|
|
2261
|
+
*
|
|
2262
|
+
* @param {string} str
|
|
2263
|
+
* @private
|
|
2264
|
+
*/
|
|
2265
|
+
function parseTokenList(str) {
|
|
2266
|
+
var end = 0;
|
|
2267
|
+
var list = [];
|
|
2268
|
+
var start = 0;
|
|
2269
|
+
for (var i = 0, len = str.length; i < len; i++) switch (str.charCodeAt(i)) {
|
|
2270
|
+
case 32:
|
|
2271
|
+
if (start === end) start = end = i + 1;
|
|
2272
|
+
break;
|
|
2273
|
+
case 44:
|
|
2274
|
+
if (start !== end) list.push(str.substring(start, end));
|
|
2275
|
+
start = end = i + 1;
|
|
2276
|
+
break;
|
|
2277
|
+
default: end = i + 1;
|
|
2278
|
+
}
|
|
2279
|
+
if (start !== end) list.push(str.substring(start, end));
|
|
2280
|
+
return list;
|
|
2281
|
+
}
|
|
2282
|
+
/**
|
|
2283
|
+
* Set an object of headers on a response.
|
|
2284
|
+
*
|
|
2285
|
+
* @param {object} res
|
|
2286
|
+
* @param {object} headers
|
|
2287
|
+
* @private
|
|
2288
|
+
*/
|
|
2289
|
+
function setHeaders(res, headers) {
|
|
2290
|
+
var keys = Object.keys(headers);
|
|
2291
|
+
for (var i = 0; i < keys.length; i++) {
|
|
2292
|
+
var key = keys[i];
|
|
2293
|
+
res.setHeader(key, headers[key]);
|
|
2294
|
+
}
|
|
2295
|
+
}
|
|
2296
|
+
}));
|
|
2297
|
+
//#endregion
|
|
2298
|
+
//#region node_modules/.pnpm/serve-static@2.2.1_supports-color@10.2.2/node_modules/serve-static/index.js
|
|
2299
|
+
/*!
|
|
2300
|
+
* serve-static
|
|
2301
|
+
* Copyright(c) 2010 Sencha Inc.
|
|
2302
|
+
* Copyright(c) 2011 TJ Holowaychuk
|
|
2303
|
+
* Copyright(c) 2014-2016 Douglas Christopher Wilson
|
|
2304
|
+
* MIT Licensed
|
|
2305
|
+
*/
|
|
2306
|
+
var require_serve_static = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
2307
|
+
/**
|
|
2308
|
+
* Module dependencies.
|
|
2309
|
+
* @private
|
|
2310
|
+
*/
|
|
2311
|
+
var encodeUrl = require_encodeurl();
|
|
2312
|
+
var escapeHtml = require_escape_html();
|
|
2313
|
+
var parseUrl = require_parseurl();
|
|
2314
|
+
var resolve = __require("path").resolve;
|
|
2315
|
+
var send = require_send();
|
|
2316
|
+
var url = __require("url");
|
|
2317
|
+
/**
|
|
2318
|
+
* Module exports.
|
|
2319
|
+
* @public
|
|
2320
|
+
*/
|
|
2321
|
+
module.exports = serveStatic;
|
|
2322
|
+
/**
|
|
2323
|
+
* @param {string} root
|
|
2324
|
+
* @param {object} [options]
|
|
2325
|
+
* @return {function}
|
|
2326
|
+
* @public
|
|
2327
|
+
*/
|
|
2328
|
+
function serveStatic(root, options) {
|
|
2329
|
+
if (!root) throw new TypeError("root path required");
|
|
2330
|
+
if (typeof root !== "string") throw new TypeError("root path must be a string");
|
|
2331
|
+
var opts = Object.create(options || null);
|
|
2332
|
+
var fallthrough = opts.fallthrough !== false;
|
|
2333
|
+
var redirect = opts.redirect !== false;
|
|
2334
|
+
var setHeaders = opts.setHeaders;
|
|
2335
|
+
if (setHeaders && typeof setHeaders !== "function") throw new TypeError("option setHeaders must be function");
|
|
2336
|
+
opts.maxage = opts.maxage || opts.maxAge || 0;
|
|
2337
|
+
opts.root = resolve(root);
|
|
2338
|
+
var onDirectory = redirect ? createRedirectDirectoryListener() : createNotFoundDirectoryListener();
|
|
2339
|
+
return function serveStatic(req, res, next) {
|
|
2340
|
+
if (req.method !== "GET" && req.method !== "HEAD") {
|
|
2341
|
+
if (fallthrough) return next();
|
|
2342
|
+
res.statusCode = 405;
|
|
2343
|
+
res.setHeader("Allow", "GET, HEAD");
|
|
2344
|
+
res.setHeader("Content-Length", "0");
|
|
2345
|
+
res.end();
|
|
2346
|
+
return;
|
|
2347
|
+
}
|
|
2348
|
+
var forwardError = !fallthrough;
|
|
2349
|
+
var originalUrl = parseUrl.original(req);
|
|
2350
|
+
var path = parseUrl(req).pathname;
|
|
2351
|
+
if (path === "/" && originalUrl.pathname.substr(-1) !== "/") path = "";
|
|
2352
|
+
var stream = send(req, path, opts);
|
|
2353
|
+
stream.on("directory", onDirectory);
|
|
2354
|
+
if (setHeaders) stream.on("headers", setHeaders);
|
|
2355
|
+
if (fallthrough) stream.on("file", function onFile() {
|
|
2356
|
+
forwardError = true;
|
|
2357
|
+
});
|
|
2358
|
+
stream.on("error", function error(err) {
|
|
2359
|
+
if (forwardError || !(err.statusCode < 500)) {
|
|
2360
|
+
next(err);
|
|
2361
|
+
return;
|
|
2362
|
+
}
|
|
2363
|
+
next();
|
|
2364
|
+
});
|
|
2365
|
+
stream.pipe(res);
|
|
2366
|
+
};
|
|
2367
|
+
}
|
|
2368
|
+
/**
|
|
2369
|
+
* Collapse all leading slashes into a single slash
|
|
2370
|
+
* @private
|
|
2371
|
+
*/
|
|
2372
|
+
function collapseLeadingSlashes(str) {
|
|
2373
|
+
for (var i = 0; i < str.length; i++) if (str.charCodeAt(i) !== 47) break;
|
|
2374
|
+
return i > 1 ? "/" + str.substr(i) : str;
|
|
2375
|
+
}
|
|
2376
|
+
/**
|
|
2377
|
+
* Create a minimal HTML document.
|
|
2378
|
+
*
|
|
2379
|
+
* @param {string} title
|
|
2380
|
+
* @param {string} body
|
|
2381
|
+
* @private
|
|
2382
|
+
*/
|
|
2383
|
+
function createHtmlDocument(title, body) {
|
|
2384
|
+
return "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>" + title + "</title>\n</head>\n<body>\n<pre>" + body + "</pre>\n</body>\n</html>\n";
|
|
2385
|
+
}
|
|
2386
|
+
/**
|
|
2387
|
+
* Create a directory listener that just 404s.
|
|
2388
|
+
* @private
|
|
2389
|
+
*/
|
|
2390
|
+
function createNotFoundDirectoryListener() {
|
|
2391
|
+
return function notFound() {
|
|
2392
|
+
this.error(404);
|
|
2393
|
+
};
|
|
2394
|
+
}
|
|
2395
|
+
/**
|
|
2396
|
+
* Create a directory listener that performs a redirect.
|
|
2397
|
+
* @private
|
|
2398
|
+
*/
|
|
2399
|
+
function createRedirectDirectoryListener() {
|
|
2400
|
+
return function redirect(res) {
|
|
2401
|
+
if (this.hasTrailingSlash()) {
|
|
2402
|
+
this.error(404);
|
|
2403
|
+
return;
|
|
2404
|
+
}
|
|
2405
|
+
var originalUrl = parseUrl.original(this.req);
|
|
2406
|
+
originalUrl.path = null;
|
|
2407
|
+
originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + "/");
|
|
2408
|
+
var loc = encodeUrl(url.format(originalUrl));
|
|
2409
|
+
var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml(loc));
|
|
2410
|
+
res.statusCode = 301;
|
|
2411
|
+
res.setHeader("Content-Type", "text/html; charset=UTF-8");
|
|
2412
|
+
res.setHeader("Content-Length", Buffer.byteLength(doc));
|
|
2413
|
+
res.setHeader("Content-Security-Policy", "default-src 'none'");
|
|
2414
|
+
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
2415
|
+
res.setHeader("Location", loc);
|
|
2416
|
+
res.end(doc);
|
|
2417
|
+
};
|
|
2418
|
+
}
|
|
2419
|
+
}));
|
|
2420
|
+
//#endregion
|
|
2421
|
+
export default require_serve_static();
|
|
2422
|
+
export {};
|