hfs 3.3.0-alpha1 → 3.3.0-beta3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/admin/assets/AccountsPage-DB7ljNHT.js +3 -0
  2. package/admin/assets/ArrayField-Qj2iHD7I.js +2 -0
  3. package/admin/assets/ConfigFilePage-TErmt0PK.js +4 -0
  4. package/admin/assets/CustomHtmlPage-CVmk-_JS.js +2 -0
  5. package/admin/assets/DataTable-DmnQXyFO.js +119 -0
  6. package/admin/assets/DateTimeField-BUWd2w9-.js +1 -0
  7. package/admin/assets/EventManager-9vwKg8as.js +1 -0
  8. package/admin/assets/FileField-DoBaSTxF.js +117 -0
  9. package/admin/assets/InternetPage-Biuer1tb.js +8 -0
  10. package/admin/assets/LangPage-Vd24DNK5.js +2 -0
  11. package/admin/assets/LogsPage-BdvttEqM.js +3 -0
  12. package/admin/assets/MenuButton-CHLgqU5W.js +1 -0
  13. package/admin/assets/MonitorPage-DlXkZUmT.js +2 -0
  14. package/admin/assets/OptionsPage-Zi8FmrjE.js +3 -0
  15. package/admin/assets/PluginsPage-BzwEIFt5.js +1 -0
  16. package/admin/assets/Tabs-CVipqhB9.js +1 -0
  17. package/admin/assets/TextEditor-BeS-mR2I.css +1 -0
  18. package/admin/assets/TextEditor-clbVugYM.js +34 -0
  19. package/admin/assets/VfsPathField-YUCV9PfL.js +1 -0
  20. package/admin/assets/{af-CevhRske.js → af-B1Gi_bpo.js} +1 -1
  21. package/admin/assets/agentIcons-DW9QViyx.js +1 -0
  22. package/admin/assets/{am-4ouVTwuo.js → am-B-dZnhsM.js} +1 -1
  23. package/admin/assets/{ar-71cK8dbb.js → ar-DsQGp6kZ.js} +1 -1
  24. package/admin/assets/{ar-dz-CO7oh1gG.js → ar-dz-CxlYiKtP.js} +1 -1
  25. package/admin/assets/{ar-iq-CjG6db8J.js → ar-iq-y4_Puo4B.js} +1 -1
  26. package/admin/assets/{ar-kw-DMsdR225.js → ar-kw-DTOZ0VC7.js} +1 -1
  27. package/admin/assets/{ar-ly-ZhxIwUOA.js → ar-ly-lPV9gApv.js} +1 -1
  28. package/admin/assets/{ar-ma-Bo3Z1RyK.js → ar-ma-DZqLSpeB.js} +1 -1
  29. package/admin/assets/{ar-sa-Db44biae.js → ar-sa-v-5vsIOR.js} +1 -1
  30. package/admin/assets/{ar-tn-DNWRixE0.js → ar-tn-a4q8lhXy.js} +1 -1
  31. package/admin/assets/{az-B6LcmVzB.js → az-Cj4yq-j-.js} +1 -1
  32. package/admin/assets/baseUrl-Do5CYuBZ.js +2 -0
  33. package/admin/assets/{be-Dp0KhO5x.js → be-B-3QlFM8.js} +1 -1
  34. package/admin/assets/{bg-TsOJJvBm.js → bg-A8-93xdK.js} +1 -1
  35. package/admin/assets/{bi-DstczOGo.js → bi-bwwEWGG2.js} +1 -1
  36. package/admin/assets/{bm-Bf09NN15.js → bm-DpLmtYXC.js} +1 -1
  37. package/admin/assets/{bn-Da3tHLgx.js → bn-DPL_BgLw.js} +1 -1
  38. package/admin/assets/{bn-bd-CeSalisC.js → bn-bd-DukmY_R5.js} +1 -1
  39. package/admin/assets/{bo-Ctxe0IKQ.js → bo-68KDEKGI.js} +1 -1
  40. package/admin/assets/{br-Y3dPq3Tj.js → br-gA86uwqY.js} +1 -1
  41. package/admin/assets/{bs-BbAlSeZx.js → bs-SfthSp42.js} +1 -1
  42. package/admin/assets/{ca-8-Nn97gi.js → ca-8qUtZKFe.js} +1 -1
  43. package/admin/assets/{cs-BD5ArFNW.js → cs-CTHcqPCX.js} +1 -1
  44. package/admin/assets/{cv-CdMFVXGr.js → cv-BhBW7hcO.js} +1 -1
  45. package/admin/assets/{cy-B3QEYlIT.js → cy-BYTS4PNY.js} +1 -1
  46. package/admin/assets/{da-Bju2YQ9G.js → da-BiwfOrRd.js} +1 -1
  47. package/admin/assets/{de-DdzCTquR.js → de-BFqyDxvo.js} +1 -1
  48. package/admin/assets/{de-at-DgyKCkPl.js → de-at-C7zUXXVL.js} +1 -1
  49. package/admin/assets/{de-ch-Dk9qkzvn.js → de-ch-BVHosAzt.js} +1 -1
  50. package/admin/assets/dist-DC2A6cD2.js +1 -0
  51. package/admin/assets/{dv-C5KWK8o4.js → dv-dvig99nB.js} +1 -1
  52. package/admin/assets/{el-BDL_lPlM.js → el-BtJcYjoT.js} +1 -1
  53. package/admin/assets/en-B26lXzkx.js +1 -0
  54. package/admin/assets/{en-au-CgltfNUb.js → en-au-CWzJ565h.js} +1 -1
  55. package/admin/assets/{en-ca-DEsKzbWO.js → en-ca-nou5bZ6q.js} +1 -1
  56. package/admin/assets/{en-in-C7Kv4c3w.js → en-gb-kl3giCnh.js} +1 -1
  57. package/admin/assets/{en-ie-aN3g-yqK.js → en-ie-C55e3apX.js} +1 -1
  58. package/admin/assets/{en-il-CZl2d7NK.js → en-il-HYabE6j7.js} +1 -1
  59. package/admin/assets/{en-tt-B5vDLhL7.js → en-in-Bri93cNM.js} +1 -1
  60. package/admin/assets/{en-nz-DA_sIaGR.js → en-nz-BqhpzeuX.js} +1 -1
  61. package/admin/assets/{en-sg-CP5PJpZf.js → en-sg-q8xv-C8V.js} +1 -1
  62. package/admin/assets/{en-gb-21AYC3Ik.js → en-tt-BqzQXPA5.js} +1 -1
  63. package/admin/assets/{eo-VE1KDD1u.js → eo-5Y962E4S.js} +1 -1
  64. package/admin/assets/{es-SUzi5oTU.js → es-DOQ7swrW.js} +1 -1
  65. package/admin/assets/{es-do-Iri0eWm8.js → es-do-Diob7juh.js} +1 -1
  66. package/admin/assets/{es-mx-DwneKeOc.js → es-mx-miy7RFDh.js} +1 -1
  67. package/admin/assets/{es-pr-C4zPUdA1.js → es-pr-CZa5Iw2n.js} +1 -1
  68. package/admin/assets/{es-us-BPS67etc.js → es-us-BX03CBQf.js} +1 -1
  69. package/admin/assets/{esm-CyNQ7bBW.js → esm-Dtaf0rWK.js} +1 -1
  70. package/admin/assets/{et-Ciqbfae0.js → et-DGWOmMlC.js} +1 -1
  71. package/admin/assets/{eu-CGhOwQpe.js → eu-D1Qj8RMh.js} +1 -1
  72. package/admin/assets/{fa-BWZiAv_E.js → fa--TfwKnl9.js} +1 -1
  73. package/admin/assets/{fi-DJmgkVsJ.js → fi-Dcbkv925.js} +1 -1
  74. package/admin/assets/{fo-DVez5N-g.js → fo-BPGX_WF4.js} +1 -1
  75. package/admin/assets/{fr-D206itJo.js → fr-CNsDHzNh.js} +1 -1
  76. package/admin/assets/{fr-ca-C6JiEHfi.js → fr-ca-BsNs3KIJ.js} +1 -1
  77. package/admin/assets/{fr-ch-DUTEuSU_.js → fr-ch-BBmdtvlB.js} +1 -1
  78. package/admin/assets/{fy-C_r06zH-.js → fy-q3UE-mqp.js} +1 -1
  79. package/admin/assets/{ga-CrdQqAN5.js → ga-C-DOgnYh.js} +1 -1
  80. package/admin/assets/{gd-iWHfhKAH.js → gd-mLMfry_l.js} +1 -1
  81. package/admin/assets/{gl-zgfy-pQ0.js → gl-CO8Bj9I_.js} +1 -1
  82. package/admin/assets/{gom-latn-CMZ7Vj7V.js → gom-latn-myglMmHV.js} +1 -1
  83. package/admin/assets/{gu-DNqIMjZc.js → gu-Bdz1OpMU.js} +1 -1
  84. package/admin/assets/{he-OJBbYFzL.js → he-C4lqk2AA.js} +1 -1
  85. package/admin/assets/{hi-ByrMhKpX.js → hi-h0Byc_UN.js} +1 -1
  86. package/admin/assets/{hr-CfRZXzCu.js → hr-CZV7Za1n.js} +1 -1
  87. package/admin/assets/{ht-DDrMtLzJ.js → ht-Dg2blNvl.js} +1 -1
  88. package/admin/assets/{hu-Ckeq3R6_.js → hu-DbOVhd9K.js} +1 -1
  89. package/admin/assets/{hy-am-OpZy7Nvg.js → hy-am-E48Q7kWE.js} +1 -1
  90. package/admin/assets/icons-3rupj9Xr.js +1 -0
  91. package/admin/assets/{id-BE8-Ys79.js → id-Cd4yWevW.js} +1 -1
  92. package/admin/assets/{index-eeRX25da.css → index-11n5z0Ez.css} +1 -1
  93. package/admin/assets/index-Dsq-sVu9.js +477 -0
  94. package/admin/assets/{is-BOxJcH5N.js → is-BJZYSfrA.js} +1 -1
  95. package/admin/assets/{it-BFlrIXvP.js → it-BRaqqFz4.js} +1 -1
  96. package/admin/assets/{it-ch-ILAp-lZZ.js → it-ch-BkLqxaff.js} +1 -1
  97. package/admin/assets/{ja-CbbYAYyn.js → ja-X_I-25cD.js} +1 -1
  98. package/admin/assets/{jv-CuLkRQCH.js → jv-BBBx3R3v.js} +1 -1
  99. package/admin/assets/{ka-BFeRDN-I.js → ka-D9Yrujqk.js} +1 -1
  100. package/admin/assets/{kk-CMvQxaPk.js → kk-Bz450_o8.js} +1 -1
  101. package/admin/assets/{km-BdQbDUNF.js → km-CKOAqvHM.js} +1 -1
  102. package/admin/assets/{kn-CE5AS6Nx.js → kn-k2xTBR7a.js} +1 -1
  103. package/admin/assets/{ko-Ctl1mHOt.js → ko-BCvoCYib.js} +1 -1
  104. package/admin/assets/{ku-Blbo7opr.js → ku-D6Rloctr.js} +1 -1
  105. package/admin/assets/{ky-iCha_cZX.js → ky-C54qnEzk.js} +1 -1
  106. package/admin/assets/{lb-BaP0S6h1.js → lb-y3rkrWB2.js} +1 -1
  107. package/admin/assets/{lo-B_Q4zUMa.js → lo-nA_dPnOU.js} +1 -1
  108. package/admin/assets/{lt-BOaP1KGX.js → lt-hjPmCCML.js} +1 -1
  109. package/admin/assets/{lv-S1XMSUX1.js → lv-Bh4qmUa_.js} +1 -1
  110. package/admin/assets/{me-ChOLVJHC.js → me-e32suC_n.js} +1 -1
  111. package/admin/assets/{mi-CnoIUOGl.js → mi-Dwbsuyr9.js} +1 -1
  112. package/admin/assets/{mk-BoEaxVXE.js → mk-DjUXwKRn.js} +1 -1
  113. package/admin/assets/{ml-BuvmVn6P.js → ml-CWjFAViF.js} +1 -1
  114. package/admin/assets/{mn-2bvGd1HI.js → mn-BU4qTvEl.js} +1 -1
  115. package/admin/assets/{mr-BAoAWQmy.js → mr-Bvnduzfb.js} +1 -1
  116. package/admin/assets/{ms-C2eT9r-f.js → ms-XuKVAni7.js} +1 -1
  117. package/admin/assets/{ms-my-D2ZXdcAf.js → ms-my-CDbnYp0g.js} +1 -1
  118. package/admin/assets/{mt-BL5JZC4T.js → mt-PDuxJf8J.js} +1 -1
  119. package/admin/assets/{my-CuJ4L0Ji.js → my-7N6SHnsD.js} +1 -1
  120. package/admin/assets/{nb-CjE6cT80.js → nb-Cu3KUtTR.js} +1 -1
  121. package/admin/assets/{ne-BL9I0cb1.js → ne-CYW0uI2a.js} +1 -1
  122. package/admin/assets/{nl-Dt3mtMln.js → nl-DL7cw699.js} +1 -1
  123. package/admin/assets/{nl-be-Am1mjZK9.js → nl-be-B3NSF-2w.js} +1 -1
  124. package/admin/assets/{nn-ChSewyYy.js → nn-BHITVkGB.js} +1 -1
  125. package/admin/assets/{oc-lnc-x6_ChCE9.js → oc-lnc-dp3c4Bty.js} +1 -1
  126. package/admin/assets/{pa-in-DVyN8o2P.js → pa-in-BxgIlP1T.js} +1 -1
  127. package/admin/assets/{pl-CqcuAUGV.js → pl-GrG6yjkB.js} +1 -1
  128. package/admin/assets/{pt-br-oBVRyUzP.js → pt-br-BxTgeF95.js} +1 -1
  129. package/admin/assets/{pt-B2BPpD7K.js → pt-cVbj6hL6.js} +1 -1
  130. package/admin/assets/{rn-B3e3nkfp.js → rn-DiVJ2_Jy.js} +1 -1
  131. package/admin/assets/{ro-C2tWFx0Q.js → ro-D1WeRyXR.js} +1 -1
  132. package/admin/assets/rolldown-runtime-CacB07dV.js +1 -0
  133. package/admin/assets/routing-Cjyek7O_.js +1 -0
  134. package/admin/assets/{ru-CCsEUnFL.js → ru-DZCu4V9W.js} +1 -1
  135. package/admin/assets/{rw-CaCkWlGA.js → rw-DfFpVc_g.js} +1 -1
  136. package/admin/assets/{sd-90Zixcez.js → sd-yDyBYxtQ.js} +1 -1
  137. package/admin/assets/{se-DaZXpLsK.js → se-EJKibocp.js} +1 -1
  138. package/admin/assets/sha512-DJtGRwVu.js +1 -0
  139. package/admin/assets/{si-CSoBAkgi.js → si-BCBV00rO.js} +1 -1
  140. package/admin/assets/{sk-pgQaqa2z.js → sk-B2VvG_mo.js} +1 -1
  141. package/admin/assets/{sl-Cr5kSdA7.js → sl-BTYmt65M.js} +1 -1
  142. package/admin/assets/{sq-Pxi2MZOP.js → sq-BaLGKAHu.js} +1 -1
  143. package/admin/assets/{sr-Fdc9-lC-.js → sr-DarE-95b.js} +1 -1
  144. package/admin/assets/{sr-cyrl-06jNWqpg.js → sr-cyrl-CrwXFtkw.js} +1 -1
  145. package/admin/assets/{ss-BjEzSMit.js → ss-CbBe1RUs.js} +1 -1
  146. package/admin/assets/{sv-CqWqUpcA.js → sv-Baw7Je9j.js} +1 -1
  147. package/admin/assets/{sv-fi-CsO2xQHd.js → sv-fi-CVHORXkw.js} +1 -1
  148. package/admin/assets/{sw-xQUdgYhn.js → sw-k1H_OzIi.js} +1 -1
  149. package/admin/assets/{ta-epbFrZ1M.js → ta-Bc4ZaZT9.js} +1 -1
  150. package/admin/assets/{te-DusTwU6q.js → te-ClciACZi.js} +1 -1
  151. package/admin/assets/{tet-ylc9v4gl.js → tet-B75w1oSG.js} +1 -1
  152. package/admin/assets/{tg-2QfVTAJf.js → tg-CuH2ARRk.js} +1 -1
  153. package/admin/assets/{th-QIm0Mh7I.js → th-LvExAoJ6.js} +1 -1
  154. package/admin/assets/{tk-140KMZeW.js → tk-2CFwTMKo.js} +1 -1
  155. package/admin/assets/{tl-ph-S7IZkbx3.js → tl-ph-CNJ_lViV.js} +1 -1
  156. package/admin/assets/{tlh-C2fYb34-.js → tlh-9UbKQkHo.js} +1 -1
  157. package/admin/assets/{tr-Be-IM6i4.js → tr-Cu4P4OMe.js} +1 -1
  158. package/admin/assets/{tzl-DMy30zde.js → tzl-D97WsZW-.js} +1 -1
  159. package/admin/assets/{tzm-Cu882cHO.js → tzm-CURkYgMY.js} +1 -1
  160. package/admin/assets/{tzm-latn-BYxpYHet.js → tzm-latn-BRGsWK-9.js} +1 -1
  161. package/admin/assets/{ug-cn-Cl8Jqk2E.js → ug-cn-Cd4exKOc.js} +1 -1
  162. package/admin/assets/{uk-B-8XymtC.js → uk-DEXM3PIH.js} +1 -1
  163. package/admin/assets/{ur-ChGuAlvQ.js → ur-DpUycj07.js} +1 -1
  164. package/admin/assets/{uz-QbfaW7fT.js → uz-CznjzufA.js} +1 -1
  165. package/admin/assets/{uz-latn-DIQivLCy.js → uz-latn-Baga58FN.js} +1 -1
  166. package/admin/assets/{vi-C2CmYlDu.js → vi-BrZWcL2C.js} +1 -1
  167. package/admin/assets/{x-pseudo-BWgm1XlP.js → x-pseudo-BY6J4I7_.js} +1 -1
  168. package/admin/assets/{yo-8bNbPP6u.js → yo-Dkeaym0x.js} +1 -1
  169. package/admin/assets/{zh-CeNSRZ4r.js → zh-C2fOZUKR.js} +1 -1
  170. package/admin/assets/{zh-cn-BlbF5C_X.js → zh-cn-CiA7hMZm.js} +1 -1
  171. package/admin/assets/{zh-hk-kg1c_VSK.js → zh-hk-EkoniWh0.js} +1 -1
  172. package/admin/assets/{zh-tw-BCl4UsPA.js → zh-tw-KDgos-kB.js} +1 -1
  173. package/admin/index.html +3 -2
  174. package/frontend/assets/{dist-legacy-DYE1EOcc.js → dist-legacy-BNFW04Ss.js} +1 -1
  175. package/frontend/assets/index-legacy-2akkos6t.js +1 -0
  176. package/frontend/assets/{lib-legacy-C4Gw_0kX.js → lib-legacy-CO5spnaN.js} +1 -1
  177. package/frontend/assets/{sha512-legacy-D3RbPSpl.js → sha512-legacy-BuJAJxVV.js} +1 -1
  178. package/frontend/index.html +1 -1
  179. package/npm-shrinkwrap.json +9 -9
  180. package/package.json +1 -1
  181. package/src/api.get_file_list.js +10 -8
  182. package/src/api.vfs.js +4 -8
  183. package/src/basicWeb.js +2 -1
  184. package/src/consoleLog.js +9 -11
  185. package/src/const.js +1 -1
  186. package/src/cross.js +5 -1
  187. package/src/index.js +1 -0
  188. package/src/plugins.js +2 -1
  189. package/src/serveGuiFiles.js +2 -1
  190. package/src/vfs.js +41 -6
  191. package/src/watchLoad.js +4 -1
  192. package/src/webdav.js +45 -42
  193. package/admin/assets/dist-KY_8edrw.js +0 -1
  194. package/admin/assets/en-Ds3H1Wec.js +0 -1
  195. package/admin/assets/index-34fRsXFH.js +0 -765
  196. package/admin/assets/sha512-DlGRFb_l.js +0 -1
  197. package/frontend/assets/index-legacy-Br-Lpsst.js +0 -1
package/src/webdav.js CHANGED
@@ -317,33 +317,33 @@ const webdav = async (ctx, next) => {
317
317
  ctx.status = 207;
318
318
  const outPath = webdavHrefPath(path, node, ctx);
319
319
  const res = ctx.body = new stream_1.PassThrough({ encoding: 'utf8' });
320
- res.write(`<?xml version="1.0" encoding="utf-8" ?><multistatus xmlns="DAV:">`);
320
+ res.write(`<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">`);
321
321
  await sendEntry(node);
322
322
  if (isList) {
323
323
  depth = Math.max(0, depth - 1);
324
324
  for await (const n of (0, vfs_1.walkNode)(node, { ctx, depth }))
325
325
  await sendEntry(n, true);
326
326
  }
327
- res.write(`</multistatus>`);
327
+ res.write(`</D:multistatus>`);
328
328
  res.end();
329
329
  async function sendEntry(node, append = false) {
330
330
  if ((0, vfs_1.nodeIsLink)(node))
331
331
  return;
332
332
  const name = (0, vfs_1.getNodeName)(node);
333
333
  const isDir = await (0, vfs_1.nodeIsFolder)(node);
334
- const st = await (0, vfs_1.nodeStats)(node);
335
- res.write(`<response>
336
- <href>${lodash_1.default.escape(outPath + (append ? (0, cross_1.pathEncode)(name, true) + (isDir ? '/' : '') : ''))}</href>
337
- <propstat>
338
- <prop>
339
- ${(0, cross_1.prefix)('<getlastmodified>', st?.mtime?.toGMTString(), '</getlastmodified>')}
340
- ${(0, cross_1.prefix)('<creationdate>', (st?.birthtime || st?.ctime)?.toISOString().replace(/\..*/, '-00:00'), '</creationdate>')}
341
- ${isDir ? '<resourcetype><collection/></resourcetype>'
342
- : `<resourcetype/><getcontentlength>${st?.size}</getcontentlength>`}
343
- </prop>
344
- <status>HTTP/1.1 200 OK</status>
345
- </propstat>
346
- </response>
334
+ const st = append && node.see_without_probing ? undefined : await (0, vfs_1.nodeStats)(node);
335
+ res.write(`<D:response>
336
+ <D:href>${lodash_1.default.escape(outPath + (append ? (0, cross_1.pathEncode)(name, true) + (isDir ? '/' : '') : ''))}</D:href>
337
+ <D:propstat>
338
+ <D:prop>
339
+ ${(0, cross_1.prefix)('<D:getlastmodified>', st?.mtime?.toGMTString(), '</D:getlastmodified>')}
340
+ ${(0, cross_1.prefix)('<D:creationdate>', (st?.birthtime || st?.ctime)?.toISOString().replace(/\..*/, '-00:00'), '</D:creationdate>')}
341
+ ${isDir ? '<D:resourcetype><D:collection/></D:resourcetype>'
342
+ : `<D:resourcetype/><D:getcontentlength>${st?.size}</D:getcontentlength>`}
343
+ </D:prop>
344
+ <D:status>HTTP/1.1 200 OK</D:status>
345
+ </D:propstat>
346
+ </D:response>
347
347
  `);
348
348
  }
349
349
  }
@@ -407,14 +407,14 @@ const webdav = async (ctx, next) => {
407
407
  return /<([^>]+)>/.exec(ifHeader)?.[1] || '';
408
408
  }
409
409
  function renderLockResponse(token, seconds) {
410
- return `<?xml version="1.0" encoding="utf-8"?><prop xmlns="DAV:"><lockdiscovery><activelock>
411
- <locktype><write/></locktype>
412
- <lockscope><exclusive/></lockscope>
413
- <locktoken><href>${lodash_1.default.escape(token)}</href></locktoken>
414
- <lockroot><href>${lodash_1.default.escape(path)}</href></lockroot>
415
- <depth>0</depth>
416
- <timeout>Second-${seconds}</timeout>
417
- </activelock></lockdiscovery></prop>`;
410
+ return `<?xml version="1.0" encoding="utf-8"?><D:prop xmlns:D="DAV:"><D:lockdiscovery><D:activelock>
411
+ <D:locktype><D:write/></D:locktype>
412
+ <D:lockscope><D:exclusive/></D:lockscope>
413
+ <D:locktoken><D:href>${lodash_1.default.escape(token)}</D:href></D:locktoken>
414
+ <D:lockroot><D:href>${lodash_1.default.escape(path)}</D:href></D:lockroot>
415
+ <D:depth>0</D:depth>
416
+ <D:timeout>Second-${seconds}</D:timeout>
417
+ </D:activelock></D:lockdiscovery></D:prop>`;
418
418
  }
419
419
  };
420
420
  exports.webdav = webdav;
@@ -452,14 +452,18 @@ async function applyProppatchProp(prop, node, path, ctx) {
452
452
  const k = prop.name.toLowerCase();
453
453
  if (PROPPATCH_PROTECTED_LIVE_PROPS.has(k))
454
454
  return cross_1.HTTP_FORBIDDEN;
455
- if (node.source && (PROPPATCH_UTIME_PROPS.has(k) || const_1.IS_WINDOWS && k === 'win32fileattributes')) {
456
- // WebDAV clients patch metadata right after upload; outside that short same-username grace, metadata writes are file modifications
457
- const missingWritePerm = canOverwrite.has(path + (0, cross_1.prefix)('|', (0, auth_1.getCurrentUsername)(ctx))) ? 0
458
- : (0, vfs_1.statusCodeForMissingPerm)(node, 'can_delete', ctx, false);
459
- if (missingWritePerm)
460
- return missingWritePerm;
461
- }
462
- if (node.source && PROPPATCH_UTIME_PROPS.has(k)) {
455
+ if (!PROPPATCH_UTIME_PROPS.has(k)
456
+ && !(const_1.IS_WINDOWS && k === 'win32fileattributes'))
457
+ return cross_1.HTTP_OK; // PROPPATCH is only persisted when HFS gets real dead-property storage; no-op success keeps Windows and macOS clients from aborting writes
458
+ const { source } = node;
459
+ if (!source)
460
+ return cross_1.HTTP_FORBIDDEN;
461
+ // WebDAV clients patch metadata right after upload; outside that short same-username grace, metadata writes are file modifications
462
+ const missingWritePerm = canOverwrite.has(path + (0, cross_1.prefix)('|', (0, auth_1.getCurrentUsername)(ctx))) ? 0
463
+ : (0, vfs_1.statusCodeForMissingPerm)(node, 'can_delete', ctx, false);
464
+ if (missingWritePerm)
465
+ return missingWritePerm;
466
+ if (PROPPATCH_UTIME_PROPS.has(k)) {
463
467
  const date = new Date(String(prop.value));
464
468
  if (isNaN(Number(date)))
465
469
  return cross_1.HTTP_BAD_REQUEST;
@@ -467,18 +471,17 @@ async function applyProppatchProp(prop, node, path, ctx) {
467
471
  const atime = k === 'win32lastaccesstime' ? date : stats?.atime ?? new Date();
468
472
  const mtime = k === 'win32lastmodifiedtime' ? date : stats?.mtime ?? new Date();
469
473
  // WebDAV clients often use dead properties for file times; apply the portable subset instead of only pretending success
470
- await (0, promises_1.utimes)(node.source, atime, mtime);
474
+ await (0, promises_1.utimes)(source, atime, mtime);
471
475
  }
472
- if (node.source && const_1.IS_WINDOWS && k === 'win32fileattributes') {
476
+ else {
473
477
  const attributes = parseWindowsFileAttributes(prop.value);
474
478
  if (attributes === undefined)
475
479
  return cross_1.HTTP_BAD_REQUEST;
476
480
  // fswin is already our Windows attribute bridge; this keeps PROPPATCH metadata aligned with the actual filesystem
477
- const ok = await new Promise(resolve => fswin_1.default.setAttributes(node.source, lodash_1.default.mapValues(WINDOWS_FILE_ATTRIBUTE_FLAGS, flag => Boolean(attributes & flag)), ok => resolve(Boolean(ok))));
481
+ const ok = await new Promise(resolve => fswin_1.default.setAttributes(source, lodash_1.default.mapValues(WINDOWS_FILE_ATTRIBUTE_FLAGS, flag => Boolean(attributes & flag)), ok => resolve(Boolean(ok))));
478
482
  if (!ok)
479
483
  return cross_1.HTTP_SERVER_ERROR;
480
484
  }
481
- // PROPPATCH is only persisted when HFS gets real dead-property storage; no-op success keeps Windows and macOS clients from aborting writes
482
485
  return cross_1.HTTP_OK;
483
486
  }
484
487
  function parseWindowsFileAttributes(v) {
@@ -492,13 +495,13 @@ function parseWindowsFileAttributes(v) {
492
495
  }
493
496
  function renderProppatchResponse(path, statuses) {
494
497
  const byStatus = lodash_1.default.groupBy(statuses, 'status');
495
- return `<?xml version="1.0" encoding="utf-8" ?><multistatus xmlns="DAV:"><response>
496
- <href>${lodash_1.default.escape(path)}</href>
497
- ${lodash_1.default.map(byStatus, (items, status) => `<propstat>
498
- <prop>${items.map(({ prop }) => `<${prop}/>`).join('')}</prop>
499
- <status>HTTP/1.1 ${status} ${lodash_1.default.escape(cross_1.HTTP_MESSAGES[Number(status)] || http_1.STATUS_CODES[Number(status)] || '')}</status>
500
- </propstat>`).join('')}
501
- </response></multistatus>`;
498
+ return `<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:"><D:response>
499
+ <D:href>${lodash_1.default.escape(path)}</D:href>
500
+ ${lodash_1.default.map(byStatus, (items, status) => `<D:propstat>
501
+ <D:prop>${items.map(({ prop }) => `<D:${prop}/>`).join('')}</D:prop>
502
+ <D:status>HTTP/1.1 ${status} ${lodash_1.default.escape(cross_1.HTTP_MESSAGES[Number(status)] || http_1.STATUS_CODES[Number(status)] || '')}</D:status>
503
+ </D:propstat>`).join('')}
504
+ </D:response></D:multistatus>`;
502
505
  }
503
506
  function getXmlChildren(obj, name) {
504
507
  if (!obj || typeof obj !== 'object')
@@ -1 +0,0 @@
1
- import{t as e}from"./index-34fRsXFH.js";var t=e(((e,t)=>{t.exports={}})),n=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.crossEnvCrypto=void 0;try{let n=typeof window<`u`&&window.crypto||t().webcrypto;if(n){if(!n.subtle)throw Error(`Crypto.Subtle is undefined. Make sure you are using HTTPS in a compatible browser.`);let t=e=>t=>n.subtle.digest(e,t);e.crossEnvCrypto={randomBytes:n.getRandomValues.bind(n),hashFunctions:{SHA1:t(`SHA-1`),SHA256:t(`SHA-256`),SHA384:t(`SHA-384`),SHA512:t(`SHA-512`)}}}else{let n=t(),r=e=>t=>n.createHash(e).update(t).digest().buffer;e.crossEnvCrypto={randomBytes:n.randomFillSync,hashFunctions:{SHA1:r(`sha1`),SHA256:r(`sha256`),SHA384:r(`sha384`),SHA512:r(`sha512`)}}}}catch(e){throw console.error(e),Error(`No suitable crypto library was found. You may need a polyfill.`)}})),r=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.SRPParameters=void 0;var t=n(),r=class e{constructor(t=e.PrimeGroup[2048],n=e.H.SHA512){if(this.primeGroup=t,this.H=n,this.NBits=this.primeGroup.N.toString(2).length,!n)throw Error(`Hash function required`)}};e.SRPParameters=r,r.PrimeGroup={256:{N:BigInt(`125617018995153554710546479714086468244499594888726646874671447258204721048803`),g:BigInt(2)},512:{N:BigInt(`11144252439149533417835749556168991736939157778924947037200268358613863350040339017097790259154750906072491181606044774215413467851989724116331597513345603`),g:BigInt(2)},768:{N:BigInt(`1087179135105457859072065649059069760280540086975817629066444682366896187793570736574549981488868217843627094867924800342887096064844227836735667168319981288765377499806385489913341488724152562880918438701129530606139552645689583147`),g:BigInt(2)},1024:{N:BigInt(`167609434410335061345139523764350090260135525329813904557420930309800865859473551531551523800013916573891864789934747039010546328480848979516637673776605610374669426214776197828492691384519453218253702788022233205683635831626913357154941914129985489522629902540768368409482248290641036967659389658897350067939`),g:BigInt(2)},1536:{N:BigInt(`1486998185923128292816507353619409521152457662596380074614818966810244974827752411420380336514078832314731499938313197533147998565301020797040787428051479639316928015998415709101293902971072960487527411068082311763171549170528008620813391411445907584912865222076100726050255271567749213905330659264908657221124284665444825474741087704974475795505492821585749417639344967192301749033325359286273431675492866492416941152646940908101472416714421046022696100064262587`),g:BigInt(2)},2048:{N:BigInt(`21766174458617435773191008891802753781907668374255538511144643224689886235383840957210909013086056401571399717235807266581649606472148410291413364152197364477180887395655483738115072677402235101762521901569820740293149529620419333266262073471054548368736039519702486226506248861060256971802984953561121442680157668000761429988222457090413873973970171927093992114751765168063614761119615476233422096442783117971236371647333871414335895773474667308967050807005509320424799678417036867928316761272274230314067548291133582479583061439577559347101961771406173684378522703483495337037655006751328447510550299250924469288819`),g:BigInt(2)}},r.H={SHA1:t.crossEnvCrypto.hashFunctions.SHA1,SHA256:t.crossEnvCrypto.hashFunctions.SHA256,SHA384:t.crossEnvCrypto.hashFunctions.SHA384,SHA512:t.crossEnvCrypto.hashFunctions.SHA512}})),i=e((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,"__esModule",{value:!0}),e.modPow=e.hashBitCount=e.createVerifierAndSalt=e.createVerifier=e.generateRandomBigInt=e.generateRandomString=e.hashPadded=e.hash=e.padStartArrayBuffer=e.stringToArrayBuffer=e.arrayBufferToBigInt=e.bigIntToArrayBuffer=void 0;var r=n(),i=BigInt(0),a=BigInt(1),o=BigInt(2);e.bigIntToArrayBuffer=e=>{let t=e.toString(16),n=new ArrayBuffer(Math.ceil(t.length/2)),r=new Uint8Array(n),i=0;t.length%2!=0&&(r[0]=parseInt(t[0],16),i=1);for(let e=0;e<n.byteLength;e++)r[e+i]=parseInt(t.slice(2*e+i,2*e+2+i),16);return n},e.arrayBufferToBigInt=e=>{let t=[];return new Uint8Array(e).forEach(e=>{t.push((`0`+e.toString(16)).slice(-2))}),BigInt(`0x${t.join(``)}`)};function s(e){return new TextEncoder().encode(e).buffer}e.stringToArrayBuffer=s,e.padStartArrayBuffer=(e,t)=>{let n=new Uint8Array(e);if(n.length<t){let e=new Uint8Array(t);return e.fill(0,0,t-n.length),e.set(n,t-n.length),e}return n};function c(e,...t){let n=t.reduce((e,t)=>e+t.byteLength,0),r=new Uint8Array(n);for(let e=0,n=0;n<t.length;n++)r.set(new Uint8Array(t[n]),e),e+=t[n].byteLength;return e.H(r)}e.hash=c;function l(t,n,...r){return c(t,...r.map(t=>e.padStartArrayBuffer(t,n)))}e.hashPadded=l;function u(e=10){let t=new Uint8Array(Math.ceil(Math.ceil(e/2)));return r.crossEnvCrypto.randomBytes(t),t.reduce((e,t)=>{let n=t.toString(16).toString();return n.length===1?e+`0`+n:e+n},``).slice(0,e)}e.generateRandomString=u;function d(t=16){return e.arrayBufferToBigInt(h(t))}e.generateRandomBigInt=d;function f(e,n,r,i){return t(this,void 0,void 0,function*(){if(!n||!n.trim())throw Error(`Identity (I) must not be null or empty.`);if(!r)throw Error(`Salt (s) must not be null.`);if(!i)throw Error(`Password (P) must not be null`);let t=yield e.computeX(n,r,i);return e.computeVerifier(t)})}e.createVerifier=f;function p(e,n,r,i){return t(this,void 0,void 0,function*(){let t=yield e.generateRandomSalt(i);return{s:t,v:yield f(e,n,t,r)}})}e.createVerifierAndSalt=p,e.hashBitCount=n=>t(void 0,void 0,void 0,function*(){return(yield c(n,e.bigIntToArrayBuffer(BigInt(1)))).byteLength*8});function m(e,t,n){let r=a;for(;t>i;)t%o==a?(r=e*r%n,t-=a):(e=e*e%n,t/=o);return r}e.modPow=m;var h=e=>{let t=new Uint8Array(e);return r.crossEnvCrypto.randomBytes(t),t.buffer}})),a=e((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,"__esModule",{value:!0}),e.SRPRoutines=void 0;var n=i();e.SRPRoutines=class{constructor(e){this.parameters=e}hash(...e){return n.hash(this.parameters,...e)}hashPadded(...e){let t=Math.trunc((this.parameters.NBits+7)/8);return n.hashPadded(this.parameters,t,...e)}computeK(){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hashPadded(n.bigIntToArrayBuffer(this.parameters.primeGroup.N),n.bigIntToArrayBuffer(this.parameters.primeGroup.g)))})}generateRandomSalt(e){return t(this,void 0,void 0,function*(){let t=yield n.hashBitCount(this.parameters),r=e||2*t/8;return n.generateRandomBigInt(r)})}computeX(e,r,i){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hash(n.bigIntToArrayBuffer(r),yield this.computeIdentityHash(e,i)))})}computeXStep2(e,r){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hash(n.bigIntToArrayBuffer(e),r))})}computeIdentityHash(e,r){return t(this,void 0,void 0,function*(){return yield this.hash(n.stringToArrayBuffer(r))})}computeVerifier(e){return n.modPow(this.parameters.primeGroup.g,e,this.parameters.primeGroup.N)}generatePrivateValue(){let e=Math.max(256,this.parameters.NBits),t;do t=n.generateRandomBigInt(e/8)%this.parameters.primeGroup.N;while(t===BigInt(0));return t}computeClientPublicValue(e){return n.modPow(this.parameters.primeGroup.g,e,this.parameters.primeGroup.N)}isValidPublicValue(e){return e%this.parameters.primeGroup.N!==BigInt(0)}computeU(e,r){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hashPadded(n.bigIntToArrayBuffer(e),n.bigIntToArrayBuffer(r)))})}computeClientEvidence(e,r,i,a,o){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hash(n.bigIntToArrayBuffer(i),n.bigIntToArrayBuffer(a),n.bigIntToArrayBuffer(o)))})}computeServerEvidence(e,r,i){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hash(n.bigIntToArrayBuffer(e),n.bigIntToArrayBuffer(r),n.bigIntToArrayBuffer(i)))})}computeClientSessionKey(e,t,r,i,a){let o=this.parameters.primeGroup.N,s=r*t+i,c=n.modPow(this.parameters.primeGroup.g,t,o)*e%o;return n.modPow(a+o-c,s,o)}}})),o=e((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,"__esModule",{value:!0}),e.SRPClientSessionStep2=e.SRPClientSessionStep1=e.SRPClientSession=void 0,e.SRPClientSession=class{constructor(e){this.routines=e}step1(e,r){return t(this,void 0,void 0,function*(){if(!e||!e.trim())throw Error(`User identity must not be null nor empty`);if(!r)throw Error(`User password must not be null`);let t=yield this.routines.computeIdentityHash(e,r);return new n(this.routines,e,t)})}};var n=class e{constructor(e,t,n){this.routines=e,this.I=t,this.IH=n}step2(e,n){return t(this,void 0,void 0,function*(){if(!e)throw Error(`Salt (s) must not be null`);if(!n)throw Error(`Public server value (B) must not be null`);let t=yield this.routines.computeXStep2(e,this.IH),i=this.routines.generatePrivateValue(),a=this.routines.computeClientPublicValue(i),o=yield this.routines.computeK(),s=yield this.routines.computeU(a,n),c=this.routines.computeClientSessionKey(o,t,s,i,n),l=yield this.routines.computeClientEvidence(this.I,e,a,n,c);return new r(this.routines,a,l,c)})}toJSON(){return{I:this.I,IH:Array.from(new Uint8Array(this.IH))}}static fromState(t,n){return new e(t,n.I,new Uint8Array(n.IH).buffer)}};e.SRPClientSessionStep1=n;var r=class e{constructor(e,t,n,r){this.routines=e,this.A=t,this.M1=n,this.S=r}step3(e){return t(this,void 0,void 0,function*(){if(!e)throw Error(`Server evidence (M2) must not be null`);if((yield this.routines.computeServerEvidence(this.A,this.M1,this.S))!==e)throw Error(`Bad server credentials`)})}toJSON(){return{A:this.A.toString(16),M1:this.M1.toString(16),S:this.S.toString(16)}}static fromState(t,n){return new e(t,BigInt(`0x`+n.A),BigInt(`0x`+n.M1),BigInt(`0x`+n.S))}};e.SRPClientSessionStep2=r})),s=e((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,"__esModule",{value:!0}),e.SRPServerSessionStep1=e.SRPServerSession=void 0;var n=i();e.SRPServerSession=class{constructor(e){this.routines=e}step1(e,n,i){return t(this,void 0,void 0,function*(){let t=this.routines.generatePrivateValue(),o=yield this.routines.computeK(),s=a(this.routines.parameters,o,i,t);return new r(this.routines,e,n,i,t,s)})}};var r=class e{constructor(e,t,n,r,i,a){this.routines=e,this.identifier=t,this.salt=n,this.verifier=r,this.b=i,this.B=a}sessionKey(e){return t(this,void 0,void 0,function*(){if(e===null)throw Error(`Client public value (A) must not be null`);if(!this.routines.isValidPublicValue(e))throw Error(`Invalid Client public value (A): ${e.toString(16)}`);let t=yield this.routines.computeU(e,this.B);return o(this.routines.parameters.primeGroup.N,this.verifier,t,e,this.b)})}step2(e,n){return t(this,void 0,void 0,function*(){if(!n)throw Error(`Client evidence (M1) must not be null`);let t=yield this.sessionKey(e);if((yield this.routines.computeClientEvidence(this.identifier,this.salt,e,this.B,t))!==n)throw Error(`Bad client credentials`);return this.routines.computeServerEvidence(e,n,t)})}toJSON(){return{identifier:this.identifier,salt:this.salt.toString(16),verifier:this.verifier.toString(16),b:this.b.toString(16),B:this.B.toString(16)}}static fromState(t,n){return new e(t,n.identifier,BigInt(`0x`+n.salt),BigInt(`0x`+n.verifier),BigInt(`0x`+n.b),BigInt(`0x`+n.B))}};e.SRPServerSessionStep1=r;var a=(e,t,r,i)=>(n.modPow(e.primeGroup.g,i,e.primeGroup.N)+r*t)%e.primeGroup.N,o=(e,t,r,i,a)=>n.modPow(n.modPow(t,r,e)*i,a,e)})),c=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.generateRandomBigInt=e.arrayBufferToBigInt=e.bigIntToArrayBuffer=e.createVerifierAndSalt=e.SRPServerSessionStep1=e.SRPServerSession=e.SRPClientSessionStep2=e.SRPClientSessionStep1=e.SRPClientSession=e.SRPRoutines=e.SRPParameters=void 0;var t=r();Object.defineProperty(e,"SRPParameters",{enumerable:!0,get:function(){return t.SRPParameters}});var n=a();Object.defineProperty(e,"SRPRoutines",{enumerable:!0,get:function(){return n.SRPRoutines}});var c=o();Object.defineProperty(e,"SRPClientSession",{enumerable:!0,get:function(){return c.SRPClientSession}}),Object.defineProperty(e,"SRPClientSessionStep1",{enumerable:!0,get:function(){return c.SRPClientSessionStep1}}),Object.defineProperty(e,"SRPClientSessionStep2",{enumerable:!0,get:function(){return c.SRPClientSessionStep2}});var l=s();Object.defineProperty(e,"SRPServerSession",{enumerable:!0,get:function(){return l.SRPServerSession}}),Object.defineProperty(e,"SRPServerSessionStep1",{enumerable:!0,get:function(){return l.SRPServerSessionStep1}});var u=i();Object.defineProperty(e,"createVerifierAndSalt",{enumerable:!0,get:function(){return u.createVerifierAndSalt}}),Object.defineProperty(e,"bigIntToArrayBuffer",{enumerable:!0,get:function(){return u.bigIntToArrayBuffer}}),Object.defineProperty(e,"arrayBufferToBigInt",{enumerable:!0,get:function(){return u.arrayBufferToBigInt}}),Object.defineProperty(e,"generateRandomBigInt",{enumerable:!0,get:function(){return u.generateRandomBigInt}})}));export default c();
@@ -1 +0,0 @@
1
- import{n as e}from"./index-34fRsXFH.js";var t=e({default:()=>n}),n={name:`en`,weekdays:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),ordinal:function(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}};export{t as n,n as t};