@fgv/ts-web-extras 5.1.0-0 → 5.1.0-2

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 (332) hide show
  1. package/.rush/temp/chunked-rush-logs/ts-web-extras.build.chunks.jsonl +56 -33
  2. package/.rush/temp/chunked-rush-logs/ts-web-extras.test.chunks.jsonl +75 -0
  3. package/.rush/temp/operation/build/all.log +56 -33
  4. package/.rush/temp/operation/build/error.log +18 -0
  5. package/.rush/temp/operation/build/log-chunks.jsonl +56 -33
  6. package/.rush/temp/operation/build/state.json +1 -1
  7. package/.rush/temp/operation/test/all.log +75 -0
  8. package/.rush/temp/operation/test/error.log +18 -0
  9. package/.rush/temp/operation/test/log-chunks.jsonl +75 -0
  10. package/.rush/temp/operation/test/state.json +3 -0
  11. package/dist/packlets/file-tree/fileApiTreeAccessors.js +15 -0
  12. package/dist/packlets/file-tree/fileApiTreeAccessors.js.map +1 -1
  13. package/dist/packlets/file-tree/fileSystemAccessTreeAccessors.js +79 -10
  14. package/dist/packlets/file-tree/fileSystemAccessTreeAccessors.js.map +1 -1
  15. package/dist/packlets/file-tree/httpTreeAccessors.js +336 -0
  16. package/dist/packlets/file-tree/httpTreeAccessors.js.map +1 -0
  17. package/dist/packlets/file-tree/index.js +1 -0
  18. package/dist/packlets/file-tree/index.js.map +1 -1
  19. package/dist/packlets/file-tree/localStorageTreeAccessors.js +51 -0
  20. package/dist/packlets/file-tree/localStorageTreeAccessors.js.map +1 -1
  21. package/dist/test/unit/fileApiTreeAccessors.test.js +51 -0
  22. package/dist/test/unit/fileApiTreeAccessors.test.js.map +1 -1
  23. package/dist/test/unit/fileSystemAccessTreeAccessors.test.js +265 -160
  24. package/dist/test/unit/fileSystemAccessTreeAccessors.test.js.map +1 -1
  25. package/dist/test/unit/httpTreeAccessors.test.js +1229 -0
  26. package/dist/test/unit/httpTreeAccessors.test.js.map +1 -0
  27. package/dist/test/unit/localStorageTreeAccessors.test.js +218 -1
  28. package/dist/test/unit/localStorageTreeAccessors.test.js.map +1 -1
  29. package/dist/ts-web-extras.d.ts +138 -0
  30. package/docs/@fgv/namespaces/CryptoUtils/README.md +18 -0
  31. package/docs/@fgv/namespaces/CryptoUtils/classes/BrowserCryptoProvider.md +203 -0
  32. package/docs/@fgv/namespaces/CryptoUtils/classes/BrowserHashProvider.md +63 -0
  33. package/docs/@fgv/namespaces/CryptoUtils/functions/createBrowserCryptoProvider.md +18 -0
  34. package/docs/@fgv/namespaces/FileTreeHelpers/README.md +19 -0
  35. package/docs/@fgv/namespaces/FileTreeHelpers/functions/extractFileListMetadata.md +23 -0
  36. package/docs/@fgv/namespaces/FileTreeHelpers/functions/extractFileMetadata.md +23 -0
  37. package/docs/@fgv/namespaces/FileTreeHelpers/functions/fromDirectoryUpload.md +33 -0
  38. package/docs/@fgv/namespaces/FileTreeHelpers/functions/fromFileList.md +33 -0
  39. package/docs/@fgv/namespaces/FileTreeHelpers/functions/getOriginalFile.md +25 -0
  40. package/docs/@fgv/namespaces/FileTreeHelpers/variables/defaultFileApiTreeInitParams.md +11 -0
  41. package/docs/README.md +78 -0
  42. package/docs/classes/DirectoryHandleStore.md +116 -0
  43. package/docs/classes/FileApiTreeAccessors.md +286 -0
  44. package/docs/classes/FileSystemAccessTreeAccessors.md +557 -0
  45. package/docs/classes/HttpTreeAccessors.md +508 -0
  46. package/docs/classes/LocalStorageTreeAccessors.md +520 -0
  47. package/docs/functions/exportAsJson.md +23 -0
  48. package/docs/functions/exportUsingFileSystemAPI.md +26 -0
  49. package/docs/functions/extractDirectoryPath.md +23 -0
  50. package/docs/functions/isDirectoryHandle.md +23 -0
  51. package/docs/functions/isFileHandle.md +23 -0
  52. package/docs/functions/isFilePath.md +21 -0
  53. package/docs/functions/parseContextFilter.md +22 -0
  54. package/docs/functions/parseQualifierDefaults.md +22 -0
  55. package/docs/functions/parseResourceTypes.md +22 -0
  56. package/docs/functions/parseUrlParameters.md +15 -0
  57. package/docs/functions/safeShowDirectoryPicker.md +24 -0
  58. package/docs/functions/safeShowOpenFilePicker.md +24 -0
  59. package/docs/functions/safeShowSaveFilePicker.md +24 -0
  60. package/docs/functions/supportsFileSystemAccess.md +23 -0
  61. package/docs/interfaces/FilePickerAcceptType.md +16 -0
  62. package/docs/interfaces/FileSystemCreateWritableOptions.md +15 -0
  63. package/docs/interfaces/FileSystemDirectoryHandle.md +187 -0
  64. package/docs/interfaces/FileSystemFileHandle.md +106 -0
  65. package/docs/interfaces/FileSystemGetDirectoryOptions.md +15 -0
  66. package/docs/interfaces/FileSystemGetFileOptions.md +15 -0
  67. package/docs/interfaces/FileSystemHandle.md +69 -0
  68. package/docs/interfaces/FileSystemHandlePermissionDescriptor.md +15 -0
  69. package/docs/interfaces/FileSystemRemoveOptions.md +15 -0
  70. package/docs/interfaces/FileSystemWritableFileStream.md +127 -0
  71. package/docs/interfaces/IDirectoryHandleTreeInitializer.md +17 -0
  72. package/docs/interfaces/IFileHandleTreeInitializer.md +16 -0
  73. package/docs/interfaces/IFileListTreeInitializer.md +15 -0
  74. package/docs/interfaces/IFileMetadata.md +19 -0
  75. package/docs/interfaces/IFileSystemAccessTreeParams.md +30 -0
  76. package/docs/interfaces/IFsAccessApis.md +57 -0
  77. package/docs/interfaces/IHttpTreeParams.md +32 -0
  78. package/docs/interfaces/ILocalStorageTreeParams.md +30 -0
  79. package/docs/interfaces/IUrlConfigOptions.md +27 -0
  80. package/docs/interfaces/ShowDirectoryPickerOptions.md +17 -0
  81. package/docs/interfaces/ShowOpenFilePickerOptions.md +19 -0
  82. package/docs/interfaces/ShowSaveFilePickerOptions.md +19 -0
  83. package/docs/type-aliases/TreeInitializer.md +11 -0
  84. package/docs/type-aliases/WellKnownDirectory.md +11 -0
  85. package/docs/type-aliases/WindowWithFsAccess.md +11 -0
  86. package/docs/variables/DEFAULT_DIRECTORY_HANDLE_DB.md +11 -0
  87. package/docs/variables/DEFAULT_DIRECTORY_HANDLE_STORE.md +11 -0
  88. package/etc/ts-web-extras.api.md +33 -0
  89. package/lib/packlets/file-tree/fileApiTreeAccessors.d.ts +9 -0
  90. package/lib/packlets/file-tree/fileApiTreeAccessors.d.ts.map +1 -1
  91. package/lib/packlets/file-tree/fileApiTreeAccessors.js +15 -0
  92. package/lib/packlets/file-tree/fileApiTreeAccessors.js.map +1 -1
  93. package/lib/packlets/file-tree/fileSystemAccessTreeAccessors.d.ts +17 -1
  94. package/lib/packlets/file-tree/fileSystemAccessTreeAccessors.d.ts.map +1 -1
  95. package/lib/packlets/file-tree/fileSystemAccessTreeAccessors.js +78 -9
  96. package/lib/packlets/file-tree/fileSystemAccessTreeAccessors.js.map +1 -1
  97. package/lib/packlets/file-tree/httpTreeAccessors.d.ts +102 -0
  98. package/lib/packlets/file-tree/httpTreeAccessors.d.ts.map +1 -0
  99. package/lib/packlets/file-tree/httpTreeAccessors.js +340 -0
  100. package/lib/packlets/file-tree/httpTreeAccessors.js.map +1 -0
  101. package/lib/packlets/file-tree/index.d.ts +1 -0
  102. package/lib/packlets/file-tree/index.d.ts.map +1 -1
  103. package/lib/packlets/file-tree/index.js +1 -0
  104. package/lib/packlets/file-tree/index.js.map +1 -1
  105. package/lib/packlets/file-tree/localStorageTreeAccessors.d.ts +12 -0
  106. package/lib/packlets/file-tree/localStorageTreeAccessors.d.ts.map +1 -1
  107. package/lib/packlets/file-tree/localStorageTreeAccessors.js +51 -0
  108. package/lib/packlets/file-tree/localStorageTreeAccessors.js.map +1 -1
  109. package/lib/test/unit/fileApiTreeAccessors.test.js +51 -0
  110. package/lib/test/unit/fileApiTreeAccessors.test.js.map +1 -1
  111. package/lib/test/unit/fileSystemAccessTreeAccessors.test.js +265 -160
  112. package/lib/test/unit/fileSystemAccessTreeAccessors.test.js.map +1 -1
  113. package/lib/test/unit/httpTreeAccessors.test.d.ts +2 -0
  114. package/lib/test/unit/httpTreeAccessors.test.d.ts.map +1 -0
  115. package/lib/test/unit/httpTreeAccessors.test.js +1231 -0
  116. package/lib/test/unit/httpTreeAccessors.test.js.map +1 -0
  117. package/lib/test/unit/localStorageTreeAccessors.test.js +218 -1
  118. package/lib/test/unit/localStorageTreeAccessors.test.js.map +1 -1
  119. package/package.json +25 -25
  120. package/rush-logs/ts-web-extras.build.cache.log +0 -3
  121. package/rush-logs/ts-web-extras.build.error.log +18 -0
  122. package/rush-logs/ts-web-extras.build.log +56 -33
  123. package/rush-logs/ts-web-extras.test.cache.log +1 -0
  124. package/rush-logs/ts-web-extras.test.error.log +18 -0
  125. package/rush-logs/ts-web-extras.test.log +75 -0
  126. package/src/packlets/file-tree/fileApiTreeAccessors.ts +18 -0
  127. package/src/packlets/file-tree/fileSystemAccessTreeAccessors.ts +100 -8
  128. package/src/packlets/file-tree/httpTreeAccessors.ts +448 -0
  129. package/src/packlets/file-tree/index.ts +1 -0
  130. package/src/packlets/file-tree/localStorageTreeAccessors.ts +53 -0
  131. package/src/test/unit/fileApiTreeAccessors.test.ts +69 -0
  132. package/src/test/unit/fileSystemAccessTreeAccessors.test.ts +341 -188
  133. package/src/test/unit/httpTreeAccessors.test.ts +1571 -0
  134. package/src/test/unit/localStorageTreeAccessors.test.ts +269 -1
  135. package/temp/build/typescript/ts_8nwakTlr.json +1 -1
  136. package/temp/coverage/crypto/browserHashProvider.ts.html +304 -0
  137. package/temp/coverage/crypto/index.html +116 -0
  138. package/temp/coverage/crypto-utils/browserCryptoProvider.ts.html +1 -1
  139. package/temp/coverage/crypto-utils/browserHashProvider.ts.html +1 -1
  140. package/temp/coverage/crypto-utils/index.html +1 -1
  141. package/temp/coverage/file-tree/directoryHandleStore.ts.html +1 -1
  142. package/temp/coverage/file-tree/fileApiTreeAccessors.ts.html +60 -6
  143. package/temp/coverage/file-tree/fileSystemAccessTreeAccessors.ts.html +410 -134
  144. package/temp/coverage/file-tree/httpTreeAccessors.ts.html +1429 -0
  145. package/temp/coverage/file-tree/index.html +35 -20
  146. package/temp/coverage/file-tree/localStorageTreeAccessors.ts.html +318 -159
  147. package/temp/coverage/helpers/fileTreeHelpers.ts.html +1 -1
  148. package/temp/coverage/helpers/index.html +1 -1
  149. package/temp/coverage/index.html +11 -11
  150. package/temp/coverage/lcov-report/crypto/browserHashProvider.ts.html +304 -0
  151. package/temp/coverage/lcov-report/crypto/index.html +116 -0
  152. package/temp/coverage/lcov-report/crypto-utils/browserCryptoProvider.ts.html +1 -1
  153. package/temp/coverage/lcov-report/crypto-utils/browserHashProvider.ts.html +1 -1
  154. package/temp/coverage/lcov-report/crypto-utils/index.html +1 -1
  155. package/temp/coverage/lcov-report/file-tree/directoryHandleStore.ts.html +1 -1
  156. package/temp/coverage/lcov-report/file-tree/fileApiTreeAccessors.ts.html +60 -6
  157. package/temp/coverage/lcov-report/file-tree/fileSystemAccessTreeAccessors.ts.html +410 -134
  158. package/temp/coverage/lcov-report/file-tree/httpTreeAccessors.ts.html +1429 -0
  159. package/temp/coverage/lcov-report/file-tree/index.html +35 -20
  160. package/temp/coverage/lcov-report/file-tree/localStorageTreeAccessors.ts.html +318 -159
  161. package/temp/coverage/lcov-report/helpers/fileTreeHelpers.ts.html +1 -1
  162. package/temp/coverage/lcov-report/helpers/index.html +1 -1
  163. package/temp/coverage/lcov-report/index.html +11 -11
  164. package/temp/coverage/lcov-report/url-utils/index.html +1 -1
  165. package/temp/coverage/lcov-report/url-utils/urlParams.ts.html +1 -1
  166. package/temp/coverage/lcov.info +2021 -1197
  167. package/temp/coverage/url-utils/index.html +1 -1
  168. package/temp/coverage/url-utils/urlParams.ts.html +1 -1
  169. package/temp/test/jest/haste-map-b931e4e63102f86c5bd4949f7dced44f-9d713eb41149188b4e5c0ae3d86d0a57-2ad8e16b24e391b8cdbe50b55c137169 +0 -0
  170. package/temp/test/jest/perf-cache-b931e4e63102f86c5bd4949f7dced44f-da39a3ee5e6b4b0d3255bfef95601890 +1 -0
  171. package/temp/ts-web-extras.api.json +1313 -354
  172. package/temp/ts-web-extras.api.md +33 -0
  173. package/.rush/temp/81e0881271ff236956b2f52e8ca99da6574c6e1e.tar.log +0 -223
  174. package/docs/index.md +0 -34
  175. package/docs/ts-web-extras.cryptoutils.browsercryptoprovider._constructor_.md +0 -50
  176. package/docs/ts-web-extras.cryptoutils.browsercryptoprovider.decrypt.md +0 -104
  177. package/docs/ts-web-extras.cryptoutils.browsercryptoprovider.derivekey.md +0 -88
  178. package/docs/ts-web-extras.cryptoutils.browsercryptoprovider.encrypt.md +0 -72
  179. package/docs/ts-web-extras.cryptoutils.browsercryptoprovider.frombase64.md +0 -56
  180. package/docs/ts-web-extras.cryptoutils.browsercryptoprovider.generatekey.md +0 -19
  181. package/docs/ts-web-extras.cryptoutils.browsercryptoprovider.generaterandombytes.md +0 -56
  182. package/docs/ts-web-extras.cryptoutils.browsercryptoprovider.md +0 -169
  183. package/docs/ts-web-extras.cryptoutils.browsercryptoprovider.tobase64.md +0 -56
  184. package/docs/ts-web-extras.cryptoutils.browserhashprovider.hashparts.md +0 -88
  185. package/docs/ts-web-extras.cryptoutils.browserhashprovider.hashstring.md +0 -72
  186. package/docs/ts-web-extras.cryptoutils.browserhashprovider.md +0 -66
  187. package/docs/ts-web-extras.cryptoutils.createbrowsercryptoprovider.md +0 -19
  188. package/docs/ts-web-extras.cryptoutils.md +0 -71
  189. package/docs/ts-web-extras.exportasjson.md +0 -70
  190. package/docs/ts-web-extras.exportusingfilesystemapi.md +0 -104
  191. package/docs/ts-web-extras.extractdirectorypath.md +0 -52
  192. package/docs/ts-web-extras.fileapitreeaccessors.create.md +0 -72
  193. package/docs/ts-web-extras.fileapitreeaccessors.createfromlocalstorage.md +0 -74
  194. package/docs/ts-web-extras.fileapitreeaccessors.createpersistent.md +0 -76
  195. package/docs/ts-web-extras.fileapitreeaccessors.extractfilemetadata.md +0 -54
  196. package/docs/ts-web-extras.fileapitreeaccessors.fromdirectoryupload.md +0 -72
  197. package/docs/ts-web-extras.fileapitreeaccessors.fromfilelist.md +0 -72
  198. package/docs/ts-web-extras.fileapitreeaccessors.getoriginalfile.md +0 -72
  199. package/docs/ts-web-extras.fileapitreeaccessors.md +0 -146
  200. package/docs/ts-web-extras.filepickeraccepttype.accept.md +0 -11
  201. package/docs/ts-web-extras.filepickeraccepttype.description.md +0 -11
  202. package/docs/ts-web-extras.filepickeraccepttype.md +0 -75
  203. package/docs/ts-web-extras.filesystemaccesstreeaccessors._constructor_.md +0 -114
  204. package/docs/ts-web-extras.filesystemaccesstreeaccessors.fileismutable.md +0 -52
  205. package/docs/ts-web-extras.filesystemaccesstreeaccessors.fromdirectoryhandle.md +0 -72
  206. package/docs/ts-web-extras.filesystemaccesstreeaccessors.getdirtypaths.md +0 -17
  207. package/docs/ts-web-extras.filesystemaccesstreeaccessors.isdirty.md +0 -17
  208. package/docs/ts-web-extras.filesystemaccesstreeaccessors.md +0 -159
  209. package/docs/ts-web-extras.filesystemaccesstreeaccessors.savefilecontents.md +0 -66
  210. package/docs/ts-web-extras.filesystemaccesstreeaccessors.synctodisk.md +0 -17
  211. package/docs/ts-web-extras.filesystemcreatewritableoptions_2.keepexistingdata.md +0 -11
  212. package/docs/ts-web-extras.filesystemcreatewritableoptions_2.md +0 -58
  213. package/docs/ts-web-extras.filesystemdirectoryhandle_2._symbol.asynciterator_.md +0 -15
  214. package/docs/ts-web-extras.filesystemdirectoryhandle_2.entries.md +0 -15
  215. package/docs/ts-web-extras.filesystemdirectoryhandle_2.getdirectoryhandle.md +0 -66
  216. package/docs/ts-web-extras.filesystemdirectoryhandle_2.getfilehandle.md +0 -66
  217. package/docs/ts-web-extras.filesystemdirectoryhandle_2.keys.md +0 -15
  218. package/docs/ts-web-extras.filesystemdirectoryhandle_2.kind.md +0 -11
  219. package/docs/ts-web-extras.filesystemdirectoryhandle_2.md +0 -146
  220. package/docs/ts-web-extras.filesystemdirectoryhandle_2.removeentry.md +0 -66
  221. package/docs/ts-web-extras.filesystemdirectoryhandle_2.resolve.md +0 -50
  222. package/docs/ts-web-extras.filesystemdirectoryhandle_2.values.md +0 -15
  223. package/docs/ts-web-extras.filesystemfilehandle_2.createwritable.md +0 -52
  224. package/docs/ts-web-extras.filesystemfilehandle_2.getfile.md +0 -15
  225. package/docs/ts-web-extras.filesystemfilehandle_2.kind.md +0 -11
  226. package/docs/ts-web-extras.filesystemfilehandle_2.md +0 -92
  227. package/docs/ts-web-extras.filesystemgetdirectoryoptions_2.create.md +0 -11
  228. package/docs/ts-web-extras.filesystemgetdirectoryoptions_2.md +0 -58
  229. package/docs/ts-web-extras.filesystemgetfileoptions_2.create.md +0 -11
  230. package/docs/ts-web-extras.filesystemgetfileoptions_2.md +0 -58
  231. package/docs/ts-web-extras.filesystemhandle_2.issameentry.md +0 -50
  232. package/docs/ts-web-extras.filesystemhandle_2.kind.md +0 -11
  233. package/docs/ts-web-extras.filesystemhandle_2.md +0 -119
  234. package/docs/ts-web-extras.filesystemhandle_2.name.md +0 -11
  235. package/docs/ts-web-extras.filesystemhandle_2.querypermission.md +0 -52
  236. package/docs/ts-web-extras.filesystemhandle_2.requestpermission.md +0 -52
  237. package/docs/ts-web-extras.filesystemhandlepermissiondescriptor.md +0 -58
  238. package/docs/ts-web-extras.filesystemhandlepermissiondescriptor.mode.md +0 -11
  239. package/docs/ts-web-extras.filesystemremoveoptions_2.md +0 -58
  240. package/docs/ts-web-extras.filesystemremoveoptions_2.recursive.md +0 -11
  241. package/docs/ts-web-extras.filesystemwritablefilestream_2.md +0 -57
  242. package/docs/ts-web-extras.filesystemwritablefilestream_2.seek.md +0 -50
  243. package/docs/ts-web-extras.filesystemwritablefilestream_2.truncate.md +0 -50
  244. package/docs/ts-web-extras.filesystemwritablefilestream_2.write.md +0 -50
  245. package/docs/ts-web-extras.filetreehelpers.defaultfileapitreeinitparams.md +0 -13
  246. package/docs/ts-web-extras.filetreehelpers.extractfilelistmetadata.md +0 -56
  247. package/docs/ts-web-extras.filetreehelpers.extractfilemetadata.md +0 -56
  248. package/docs/ts-web-extras.filetreehelpers.fromdirectoryupload.md +0 -76
  249. package/docs/ts-web-extras.filetreehelpers.fromfilelist.md +0 -76
  250. package/docs/ts-web-extras.filetreehelpers.getoriginalfile.md +0 -72
  251. package/docs/ts-web-extras.filetreehelpers.md +0 -102
  252. package/docs/ts-web-extras.idirectoryhandletreeinitializer.dirhandles.md +0 -11
  253. package/docs/ts-web-extras.idirectoryhandletreeinitializer.md +0 -100
  254. package/docs/ts-web-extras.idirectoryhandletreeinitializer.nonrecursive.md +0 -11
  255. package/docs/ts-web-extras.idirectoryhandletreeinitializer.prefix.md +0 -11
  256. package/docs/ts-web-extras.ifilehandletreeinitializer.filehandles.md +0 -11
  257. package/docs/ts-web-extras.ifilehandletreeinitializer.md +0 -79
  258. package/docs/ts-web-extras.ifilehandletreeinitializer.prefix.md +0 -11
  259. package/docs/ts-web-extras.ifilelisttreeinitializer.filelist.md +0 -11
  260. package/docs/ts-web-extras.ifilelisttreeinitializer.md +0 -58
  261. package/docs/ts-web-extras.ifilemetadata.lastmodified.md +0 -11
  262. package/docs/ts-web-extras.ifilemetadata.md +0 -124
  263. package/docs/ts-web-extras.ifilemetadata.name.md +0 -11
  264. package/docs/ts-web-extras.ifilemetadata.path.md +0 -11
  265. package/docs/ts-web-extras.ifilemetadata.size.md +0 -11
  266. package/docs/ts-web-extras.ifilemetadata.type.md +0 -11
  267. package/docs/ts-web-extras.ifilesystemaccesstreeparams.autosync.md +0 -13
  268. package/docs/ts-web-extras.ifilesystemaccesstreeparams.md +0 -78
  269. package/docs/ts-web-extras.ifilesystemaccesstreeparams.requirewritepermission.md +0 -13
  270. package/docs/ts-web-extras.ifsaccessapis.md +0 -56
  271. package/docs/ts-web-extras.ifsaccessapis.showdirectorypicker.md +0 -52
  272. package/docs/ts-web-extras.ifsaccessapis.showopenfilepicker.md +0 -52
  273. package/docs/ts-web-extras.ifsaccessapis.showsavefilepicker.md +0 -52
  274. package/docs/ts-web-extras.ilocalstoragetreeparams.autosync.md +0 -13
  275. package/docs/ts-web-extras.ilocalstoragetreeparams.md +0 -97
  276. package/docs/ts-web-extras.ilocalstoragetreeparams.pathtokeymap.md +0 -13
  277. package/docs/ts-web-extras.ilocalstoragetreeparams.storage.md +0 -13
  278. package/docs/ts-web-extras.isdirectoryhandle.md +0 -56
  279. package/docs/ts-web-extras.isfilehandle.md +0 -56
  280. package/docs/ts-web-extras.isfilepath.md +0 -52
  281. package/docs/ts-web-extras.iurlconfigoptions.config.md +0 -13
  282. package/docs/ts-web-extras.iurlconfigoptions.configstartdir.md +0 -13
  283. package/docs/ts-web-extras.iurlconfigoptions.contextfilter.md +0 -13
  284. package/docs/ts-web-extras.iurlconfigoptions.input.md +0 -13
  285. package/docs/ts-web-extras.iurlconfigoptions.inputstartdir.md +0 -13
  286. package/docs/ts-web-extras.iurlconfigoptions.interactive.md +0 -13
  287. package/docs/ts-web-extras.iurlconfigoptions.loadzip.md +0 -13
  288. package/docs/ts-web-extras.iurlconfigoptions.maxdistance.md +0 -13
  289. package/docs/ts-web-extras.iurlconfigoptions.md +0 -286
  290. package/docs/ts-web-extras.iurlconfigoptions.qualifierdefaults.md +0 -13
  291. package/docs/ts-web-extras.iurlconfigoptions.reducequalifiers.md +0 -13
  292. package/docs/ts-web-extras.iurlconfigoptions.resourcetypes.md +0 -13
  293. package/docs/ts-web-extras.iurlconfigoptions.zipfile.md +0 -13
  294. package/docs/ts-web-extras.iurlconfigoptions.zippath.md +0 -13
  295. package/docs/ts-web-extras.localstoragetreeaccessors.fileismutable.md +0 -56
  296. package/docs/ts-web-extras.localstoragetreeaccessors.fromstorage.md +0 -56
  297. package/docs/ts-web-extras.localstoragetreeaccessors.getdirtypaths.md +0 -19
  298. package/docs/ts-web-extras.localstoragetreeaccessors.isdirty.md +0 -19
  299. package/docs/ts-web-extras.localstoragetreeaccessors.md +0 -131
  300. package/docs/ts-web-extras.localstoragetreeaccessors.savefilecontents.md +0 -72
  301. package/docs/ts-web-extras.localstoragetreeaccessors.synctodisk.md +0 -19
  302. package/docs/ts-web-extras.md +0 -558
  303. package/docs/ts-web-extras.parsecontextfilter.md +0 -52
  304. package/docs/ts-web-extras.parsequalifierdefaults.md +0 -52
  305. package/docs/ts-web-extras.parseresourcetypes.md +0 -52
  306. package/docs/ts-web-extras.parseurlparameters.md +0 -17
  307. package/docs/ts-web-extras.safeshowdirectorypicker.md +0 -72
  308. package/docs/ts-web-extras.safeshowopenfilepicker.md +0 -72
  309. package/docs/ts-web-extras.safeshowsavefilepicker.md +0 -72
  310. package/docs/ts-web-extras.showdirectorypickeroptions.id.md +0 -11
  311. package/docs/ts-web-extras.showdirectorypickeroptions.md +0 -96
  312. package/docs/ts-web-extras.showdirectorypickeroptions.mode.md +0 -11
  313. package/docs/ts-web-extras.showdirectorypickeroptions.startin.md +0 -11
  314. package/docs/ts-web-extras.showopenfilepickeroptions.excludeacceptalloption.md +0 -11
  315. package/docs/ts-web-extras.showopenfilepickeroptions.id.md +0 -11
  316. package/docs/ts-web-extras.showopenfilepickeroptions.md +0 -134
  317. package/docs/ts-web-extras.showopenfilepickeroptions.multiple.md +0 -11
  318. package/docs/ts-web-extras.showopenfilepickeroptions.startin.md +0 -11
  319. package/docs/ts-web-extras.showopenfilepickeroptions.types.md +0 -11
  320. package/docs/ts-web-extras.showsavefilepickeroptions.excludeacceptalloption.md +0 -11
  321. package/docs/ts-web-extras.showsavefilepickeroptions.id.md +0 -11
  322. package/docs/ts-web-extras.showsavefilepickeroptions.md +0 -134
  323. package/docs/ts-web-extras.showsavefilepickeroptions.startin.md +0 -11
  324. package/docs/ts-web-extras.showsavefilepickeroptions.suggestedname.md +0 -11
  325. package/docs/ts-web-extras.showsavefilepickeroptions.types.md +0 -11
  326. package/docs/ts-web-extras.supportsfilesystemaccess.md +0 -56
  327. package/docs/ts-web-extras.treeinitializer.md +0 -15
  328. package/docs/ts-web-extras.wellknowndirectory.md +0 -13
  329. package/docs/ts-web-extras.windowwithfsaccess.md +0 -15
  330. package/temp/test/jest/haste-map-7492f1b44480e0cdd1f220078fb3afd8-c8dd6c3430605adeb2f1cadf4f75e791-8c9336785555d572065b28c111982ba4 +0 -0
  331. package/temp/test/jest/perf-cache-7492f1b44480e0cdd1f220078fb3afd8-da39a3ee5e6b4b0d3255bfef95601890 +0 -1
  332. /package/temp/test/jest/{jest-transform-cache-7492f1b44480e0cdd1f220078fb3afd8-79ef2876fae7ca75eedb2aa53dc48338/8d/package_8dcbedef69e4299f0f51fcda8f4f1c8e → jest-transform-cache-b931e4e63102f86c5bd4949f7dced44f-79ef2876fae7ca75eedb2aa53dc48338/b5/package_b5f57afc9ec2c011239b1608ee5bdfa5} +0 -0
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>427/427</span>
28
+ <span class='fraction'>519/519</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">93.06% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>94/101</span>
35
+ <span class='fraction'>123/123</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>14/14</span>
42
+ <span class='fraction'>17/17</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>427/427</span>
49
+ <span class='fraction'>519/519</span>
50
50
  </div>
51
51
 
52
52
 
@@ -490,7 +490,99 @@
490
490
  <a name='L425'></a><a href='#L425'>425</a>
491
491
  <a name='L426'></a><a href='#L426'>426</a>
492
492
  <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
545
+ <a name='L480'></a><a href='#L480'>480</a>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a>
558
+ <a name='L493'></a><a href='#L493'>493</a>
559
+ <a name='L494'></a><a href='#L494'>494</a>
560
+ <a name='L495'></a><a href='#L495'>495</a>
561
+ <a name='L496'></a><a href='#L496'>496</a>
562
+ <a name='L497'></a><a href='#L497'>497</a>
563
+ <a name='L498'></a><a href='#L498'>498</a>
564
+ <a name='L499'></a><a href='#L499'>499</a>
565
+ <a name='L500'></a><a href='#L500'>500</a>
566
+ <a name='L501'></a><a href='#L501'>501</a>
567
+ <a name='L502'></a><a href='#L502'>502</a>
568
+ <a name='L503'></a><a href='#L503'>503</a>
569
+ <a name='L504'></a><a href='#L504'>504</a>
570
+ <a name='L505'></a><a href='#L505'>505</a>
571
+ <a name='L506'></a><a href='#L506'>506</a>
572
+ <a name='L507'></a><a href='#L507'>507</a>
573
+ <a name='L508'></a><a href='#L508'>508</a>
574
+ <a name='L509'></a><a href='#L509'>509</a>
575
+ <a name='L510'></a><a href='#L510'>510</a>
576
+ <a name='L511'></a><a href='#L511'>511</a>
577
+ <a name='L512'></a><a href='#L512'>512</a>
578
+ <a name='L513'></a><a href='#L513'>513</a>
579
+ <a name='L514'></a><a href='#L514'>514</a>
580
+ <a name='L515'></a><a href='#L515'>515</a>
581
+ <a name='L516'></a><a href='#L516'>516</a>
582
+ <a name='L517'></a><a href='#L517'>517</a>
583
+ <a name='L518'></a><a href='#L518'>518</a>
584
+ <a name='L519'></a><a href='#L519'>519</a>
585
+ <a name='L520'></a><a href='#L520'>520</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
494
586
  <span class="cline-any cline-yes">1x</span>
495
587
  <span class="cline-any cline-yes">1x</span>
496
588
  <span class="cline-any cline-yes">1x</span>
@@ -569,19 +661,6 @@
569
661
  <span class="cline-any cline-yes">1x</span>
570
662
  <span class="cline-any cline-yes">1x</span>
571
663
  <span class="cline-any cline-yes">1x</span>
572
- <span class="cline-any cline-yes">33x</span>
573
- <span class="cline-any cline-yes">33x</span>
574
- <span class="cline-any cline-yes">33x</span>
575
- <span class="cline-any cline-yes">33x</span>
576
- <span class="cline-any cline-yes">33x</span>
577
- <span class="cline-any cline-yes">33x</span>
578
- <span class="cline-any cline-yes">33x</span>
579
- <span class="cline-any cline-yes">33x</span>
580
- <span class="cline-any cline-yes">33x</span>
581
- <span class="cline-any cline-yes">33x</span>
582
- <span class="cline-any cline-yes">33x</span>
583
- <span class="cline-any cline-yes">33x</span>
584
- <span class="cline-any cline-yes">33x</span>
585
664
  <span class="cline-any cline-yes">1x</span>
586
665
  <span class="cline-any cline-yes">1x</span>
587
666
  <span class="cline-any cline-yes">1x</span>
@@ -591,36 +670,80 @@
591
670
  <span class="cline-any cline-yes">1x</span>
592
671
  <span class="cline-any cline-yes">1x</span>
593
672
  <span class="cline-any cline-yes">1x</span>
594
- <span class="cline-any cline-yes">29x</span>
595
- <span class="cline-any cline-yes">29x</span>
596
- <span class="cline-any cline-yes">29x</span>
597
- <span class="cline-any cline-yes">29x</span>
598
- <span class="cline-any cline-yes">29x</span>
599
- <span class="cline-any cline-yes">29x</span>
600
- <span class="cline-any cline-yes">29x</span>
601
673
  <span class="cline-any cline-yes">1x</span>
602
674
  <span class="cline-any cline-yes">1x</span>
603
675
  <span class="cline-any cline-yes">1x</span>
604
676
  <span class="cline-any cline-yes">1x</span>
605
- <span class="cline-any cline-yes">27x</span>
606
- <span class="cline-any cline-yes">27x</span>
607
- <span class="cline-any cline-yes">27x</span>
608
- <span class="cline-any cline-yes">27x</span>
609
- <span class="cline-any cline-yes">27x</span>
610
- <span class="cline-any cline-yes">27x</span>
611
- <span class="cline-any cline-yes">27x</span>
612
- <span class="cline-any cline-yes">29x</span>
613
- <span class="cline-any cline-yes">29x</span>
614
- <span class="cline-any cline-yes">29x</span>
615
- <span class="cline-any cline-yes">29x</span>
616
- <span class="cline-any cline-yes">29x</span>
617
- <span class="cline-any cline-yes">29x</span>
677
+ <span class="cline-any cline-yes">39x</span>
678
+ <span class="cline-any cline-yes">39x</span>
679
+ <span class="cline-any cline-yes">39x</span>
680
+ <span class="cline-any cline-yes">39x</span>
681
+ <span class="cline-any cline-yes">39x</span>
682
+ <span class="cline-any cline-yes">39x</span>
683
+ <span class="cline-any cline-yes">39x</span>
684
+ <span class="cline-any cline-yes">39x</span>
685
+ <span class="cline-any cline-yes">39x</span>
686
+ <span class="cline-any cline-yes">39x</span>
687
+ <span class="cline-any cline-yes">39x</span>
618
688
  <span class="cline-any cline-yes">1x</span>
619
689
  <span class="cline-any cline-yes">1x</span>
620
690
  <span class="cline-any cline-yes">1x</span>
621
691
  <span class="cline-any cline-yes">1x</span>
692
+ <span class="cline-any cline-yes">39x</span>
622
693
  <span class="cline-any cline-yes">1x</span>
623
- <span class="cline-any cline-yes">29x</span>
694
+ <span class="cline-any cline-yes">1x</span>
695
+ <span class="cline-any cline-yes">4x</span>
696
+ <span class="cline-any cline-yes">4x</span>
697
+ <span class="cline-any cline-yes">4x</span>
698
+ <span class="cline-any cline-yes">4x</span>
699
+ <span class="cline-any cline-yes">4x</span>
700
+ <span class="cline-any cline-yes">4x</span>
701
+ <span class="cline-any cline-yes">4x</span>
702
+ <span class="cline-any cline-yes">1x</span>
703
+ <span class="cline-any cline-yes">1x</span>
704
+ <span class="cline-any cline-yes">4x</span>
705
+ <span class="cline-any cline-yes">1x</span>
706
+ <span class="cline-any cline-yes">1x</span>
707
+ <span class="cline-any cline-yes">4x</span>
708
+ <span class="cline-any cline-yes">1x</span>
709
+ <span class="cline-any cline-yes">1x</span>
710
+ <span class="cline-any cline-yes">1x</span>
711
+ <span class="cline-any cline-yes">1x</span>
712
+ <span class="cline-any cline-yes">1x</span>
713
+ <span class="cline-any cline-yes">1x</span>
714
+ <span class="cline-any cline-yes">1x</span>
715
+ <span class="cline-any cline-yes">1x</span>
716
+ <span class="cline-any cline-yes">1x</span>
717
+ <span class="cline-any cline-yes">35x</span>
718
+ <span class="cline-any cline-yes">35x</span>
719
+ <span class="cline-any cline-yes">35x</span>
720
+ <span class="cline-any cline-yes">35x</span>
721
+ <span class="cline-any cline-yes">35x</span>
722
+ <span class="cline-any cline-yes">35x</span>
723
+ <span class="cline-any cline-yes">35x</span>
724
+ <span class="cline-any cline-yes">1x</span>
725
+ <span class="cline-any cline-yes">1x</span>
726
+ <span class="cline-any cline-yes">1x</span>
727
+ <span class="cline-any cline-yes">1x</span>
728
+ <span class="cline-any cline-yes">33x</span>
729
+ <span class="cline-any cline-yes">33x</span>
730
+ <span class="cline-any cline-yes">33x</span>
731
+ <span class="cline-any cline-yes">33x</span>
732
+ <span class="cline-any cline-yes">33x</span>
733
+ <span class="cline-any cline-yes">33x</span>
734
+ <span class="cline-any cline-yes">33x</span>
735
+ <span class="cline-any cline-yes">35x</span>
736
+ <span class="cline-any cline-yes">35x</span>
737
+ <span class="cline-any cline-yes">35x</span>
738
+ <span class="cline-any cline-yes">35x</span>
739
+ <span class="cline-any cline-yes">35x</span>
740
+ <span class="cline-any cline-yes">35x</span>
741
+ <span class="cline-any cline-yes">1x</span>
742
+ <span class="cline-any cline-yes">1x</span>
743
+ <span class="cline-any cline-yes">1x</span>
744
+ <span class="cline-any cline-yes">1x</span>
745
+ <span class="cline-any cline-yes">1x</span>
746
+ <span class="cline-any cline-yes">35x</span>
624
747
  <span class="cline-any cline-yes">1x</span>
625
748
  <span class="cline-any cline-yes">1x</span>
626
749
  <span class="cline-any cline-yes">1x</span>
@@ -641,13 +764,18 @@
641
764
  <span class="cline-any cline-yes">9x</span>
642
765
  <span class="cline-any cline-yes">9x</span>
643
766
  <span class="cline-any cline-yes">9x</span>
644
- <span class="cline-any cline-yes">9x</span>
767
+ <span class="cline-any cline-yes">1x</span>
768
+ <span class="cline-any cline-yes">1x</span>
645
769
  <span class="cline-any cline-yes">2x</span>
646
770
  <span class="cline-any cline-yes">2x</span>
647
771
  <span class="cline-any cline-yes">7x</span>
648
772
  <span class="cline-any cline-yes">7x</span>
649
773
  <span class="cline-any cline-yes">6x</span>
650
774
  <span class="cline-any cline-yes">9x</span>
775
+ <span class="cline-any cline-yes">1x</span>
776
+ <span class="cline-any cline-yes">1x</span>
777
+ <span class="cline-any cline-yes">1x</span>
778
+ <span class="cline-any cline-yes">1x</span>
651
779
  <span class="cline-any cline-yes">9x</span>
652
780
  <span class="cline-any cline-yes">9x</span>
653
781
  <span class="cline-any cline-yes">9x</span>
@@ -655,10 +783,8 @@
655
783
  <span class="cline-any cline-yes">9x</span>
656
784
  <span class="cline-any cline-yes">9x</span>
657
785
  <span class="cline-any cline-yes">9x</span>
658
- <span class="cline-any cline-yes">9x</span>
659
- <span class="cline-any cline-yes">9x</span>
660
- <span class="cline-any cline-yes">9x</span>
661
- <span class="cline-any cline-yes">9x</span>
786
+ <span class="cline-any cline-yes">1x</span>
787
+ <span class="cline-any cline-yes">1x</span>
662
788
  <span class="cline-any cline-yes">9x</span>
663
789
  <span class="cline-any cline-yes">9x</span>
664
790
  <span class="cline-any cline-yes">9x</span>
@@ -668,6 +794,7 @@
668
794
  <span class="cline-any cline-yes">1x</span>
669
795
  <span class="cline-any cline-yes">1x</span>
670
796
  <span class="cline-any cline-yes">1x</span>
797
+ <span class="cline-any cline-yes">1x</span>
671
798
  <span class="cline-any cline-yes">9x</span>
672
799
  <span class="cline-any cline-yes">1x</span>
673
800
  <span class="cline-any cline-yes">1x</span>
@@ -677,24 +804,24 @@
677
804
  <span class="cline-any cline-yes">1x</span>
678
805
  <span class="cline-any cline-yes">1x</span>
679
806
  <span class="cline-any cline-yes">1x</span>
680
- <span class="cline-any cline-yes">29x</span>
681
- <span class="cline-any cline-yes">29x</span>
807
+ <span class="cline-any cline-yes">35x</span>
808
+ <span class="cline-any cline-yes">35x</span>
809
+ <span class="cline-any cline-yes">34x</span>
810
+ <span class="cline-any cline-yes">35x</span>
811
+ <span class="cline-any cline-yes">28x</span>
682
812
  <span class="cline-any cline-yes">28x</span>
683
- <span class="cline-any cline-yes">29x</span>
684
- <span class="cline-any cline-yes">22x</span>
685
- <span class="cline-any cline-yes">22x</span>
686
813
  <span class="cline-any cline-yes">6x</span>
687
- <span class="cline-any cline-yes">29x</span>
814
+ <span class="cline-any cline-yes">35x</span>
688
815
  <span class="cline-any cline-yes">1x</span>
689
816
  <span class="cline-any cline-yes">1x</span>
690
817
  <span class="cline-any cline-yes">1x</span>
691
818
  <span class="cline-any cline-yes">5x</span>
692
819
  <span class="cline-any cline-yes">5x</span>
693
- <span class="cline-any cline-yes">29x</span>
820
+ <span class="cline-any cline-yes">35x</span>
694
821
  <span class="cline-any cline-yes">1x</span>
695
822
  <span class="cline-any cline-yes">1x</span>
696
823
  <span class="cline-any cline-yes">1x</span>
697
- <span class="cline-any cline-yes">29x</span>
824
+ <span class="cline-any cline-yes">35x</span>
698
825
  <span class="cline-any cline-yes">1x</span>
699
826
  <span class="cline-any cline-yes">1x</span>
700
827
  <span class="cline-any cline-yes">1x</span>
@@ -730,39 +857,39 @@
730
857
  <span class="cline-any cline-yes">1x</span>
731
858
  <span class="cline-any cline-yes">1x</span>
732
859
  <span class="cline-any cline-yes">1x</span>
733
- <span class="cline-any cline-yes">30x</span>
734
- <span class="cline-any cline-yes">30x</span>
735
- <span class="cline-any cline-yes">30x</span>
736
- <span class="cline-any cline-yes">30x</span>
737
- <span class="cline-any cline-yes">30x</span>
738
- <span class="cline-any cline-yes">30x</span>
739
- <span class="cline-any cline-yes">30x</span>
740
- <span class="cline-any cline-yes">30x</span>
741
- <span class="cline-any cline-yes">37x</span>
742
- <span class="cline-any cline-yes">34x</span>
743
- <span class="cline-any cline-yes">34x</span>
744
- <span class="cline-any cline-yes">34x</span>
745
- <span class="cline-any cline-yes">34x</span>
860
+ <span class="cline-any cline-yes">38x</span>
861
+ <span class="cline-any cline-yes">38x</span>
862
+ <span class="cline-any cline-yes">38x</span>
863
+ <span class="cline-any cline-yes">38x</span>
864
+ <span class="cline-any cline-yes">38x</span>
865
+ <span class="cline-any cline-yes">38x</span>
866
+ <span class="cline-any cline-yes">38x</span>
867
+ <span class="cline-any cline-yes">38x</span>
868
+ <span class="cline-any cline-yes">47x</span>
869
+ <span class="cline-any cline-yes">42x</span>
870
+ <span class="cline-any cline-yes">42x</span>
871
+ <span class="cline-any cline-yes">42x</span>
872
+ <span class="cline-any cline-yes">42x</span>
746
873
  <span class="cline-any cline-yes">1x</span>
747
874
  <span class="cline-any cline-yes">1x</span>
748
875
  <span class="cline-any cline-yes">1x</span>
749
- <span class="cline-any cline-yes">34x</span>
750
- <span class="cline-any cline-yes">34x</span>
751
- <span class="cline-any cline-yes">34x</span>
752
- <span class="cline-any cline-yes">34x</span>
753
- <span class="cline-any cline-yes">37x</span>
754
- <span class="cline-any cline-yes">3x</span>
755
- <span class="cline-any cline-yes">3x</span>
756
- <span class="cline-any cline-yes">3x</span>
757
- <span class="cline-any cline-yes">3x</span>
758
- <span class="cline-any cline-yes">3x</span>
759
- <span class="cline-any cline-yes">4x</span>
760
- <span class="cline-any cline-yes">4x</span>
761
- <span class="cline-any cline-yes">3x</span>
762
- <span class="cline-any cline-yes">37x</span>
763
- <span class="cline-any cline-yes">30x</span>
764
- <span class="cline-any cline-yes">30x</span>
765
- <span class="cline-any cline-yes">30x</span>
876
+ <span class="cline-any cline-yes">42x</span>
877
+ <span class="cline-any cline-yes">42x</span>
878
+ <span class="cline-any cline-yes">42x</span>
879
+ <span class="cline-any cline-yes">42x</span>
880
+ <span class="cline-any cline-yes">47x</span>
881
+ <span class="cline-any cline-yes">5x</span>
882
+ <span class="cline-any cline-yes">5x</span>
883
+ <span class="cline-any cline-yes">5x</span>
884
+ <span class="cline-any cline-yes">5x</span>
885
+ <span class="cline-any cline-yes">5x</span>
886
+ <span class="cline-any cline-yes">7x</span>
887
+ <span class="cline-any cline-yes">7x</span>
888
+ <span class="cline-any cline-yes">5x</span>
889
+ <span class="cline-any cline-yes">47x</span>
890
+ <span class="cline-any cline-yes">38x</span>
891
+ <span class="cline-any cline-yes">38x</span>
892
+ <span class="cline-any cline-yes">38x</span>
766
893
  <span class="cline-any cline-yes">1x</span>
767
894
  <span class="cline-any cline-yes">1x</span>
768
895
  <span class="cline-any cline-yes">1x</span>
@@ -772,82 +899,108 @@
772
899
  <span class="cline-any cline-yes">1x</span>
773
900
  <span class="cline-any cline-yes">1x</span>
774
901
  <span class="cline-any cline-yes">1x</span>
775
- <span class="cline-any cline-yes">37x</span>
776
- <span class="cline-any cline-yes">37x</span>
777
- <span class="cline-any cline-yes">37x</span>
902
+ <span class="cline-any cline-yes">47x</span>
903
+ <span class="cline-any cline-yes">47x</span>
904
+ <span class="cline-any cline-yes">47x</span>
778
905
  <span class="cline-any cline-yes">1x</span>
779
906
  <span class="cline-any cline-yes">1x</span>
780
907
  <span class="cline-any cline-yes">1x</span>
781
908
  <span class="cline-any cline-yes">1x</span>
782
909
  <span class="cline-any cline-yes">1x</span>
783
- <span class="cline-any cline-yes">11x</span>
910
+ <span class="cline-any cline-yes">15x</span>
784
911
  <span class="cline-any cline-yes">1x</span>
785
912
  <span class="cline-any cline-yes">1x</span>
786
- <span class="cline-any cline-yes">10x</span>
787
- <span class="cline-any cline-yes">10x</span>
788
- <span class="cline-any cline-yes">10x</span>
789
- <span class="cline-any cline-yes">11x</span>
913
+ <span class="cline-any cline-yes">14x</span>
914
+ <span class="cline-any cline-yes">14x</span>
915
+ <span class="cline-any cline-yes">14x</span>
916
+ <span class="cline-any cline-yes">14x</span>
917
+ <span class="cline-any cline-yes">15x</span>
918
+ <span class="cline-any cline-yes">4x</span>
919
+ <span class="cline-any cline-yes">4x</span>
920
+ <span class="cline-any cline-yes">2x</span>
921
+ <span class="cline-any cline-yes">2x</span>
922
+ <span class="cline-any cline-yes">4x</span>
923
+ <span class="cline-any cline-yes">14x</span>
924
+ <span class="cline-any cline-yes">15x</span>
790
925
  <span class="cline-any cline-yes">13x</span>
791
926
  <span class="cline-any cline-yes">13x</span>
792
927
  <span class="cline-any cline-yes">5x</span>
793
928
  <span class="cline-any cline-yes">5x</span>
794
929
  <span class="cline-any cline-yes">13x</span>
795
- <span class="cline-any cline-yes">10x</span>
796
- <span class="cline-any cline-yes">11x</span>
797
- <span class="cline-any cline-yes">4x</span>
798
- <span class="cline-any cline-yes">4x</span>
799
- <span class="cline-any cline-yes">6x</span>
800
- <span class="cline-any cline-yes">6x</span>
930
+ <span class="cline-any cline-yes">14x</span>
931
+ <span class="cline-any cline-yes">15x</span>
801
932
  <span class="cline-any cline-yes">6x</span>
802
933
  <span class="cline-any cline-yes">6x</span>
934
+ <span class="cline-any cline-yes">8x</span>
935
+ <span class="cline-any cline-yes">8x</span>
936
+ <span class="cline-any cline-yes">8x</span>
937
+ <span class="cline-any cline-yes">8x</span>
938
+ <span class="cline-any cline-yes">8x</span>
803
939
  <span class="cline-any cline-yes">1x</span>
804
940
  <span class="cline-any cline-yes">1x</span>
805
941
  <span class="cline-any cline-yes">1x</span>
806
942
  <span class="cline-any cline-yes">1x</span>
807
943
  <span class="cline-any cline-yes">1x</span>
808
- <span class="cline-any cline-yes">11x</span>
809
- <span class="cline-any cline-yes">11x</span>
944
+ <span class="cline-any cline-yes">14x</span>
945
+ <span class="cline-any cline-yes">14x</span>
810
946
  <span class="cline-any cline-yes">1x</span>
811
947
  <span class="cline-any cline-yes">1x</span>
812
948
  <span class="cline-any cline-yes">1x</span>
813
949
  <span class="cline-any cline-yes">1x</span>
814
950
  <span class="cline-any cline-yes">1x</span>
815
- <span class="cline-any cline-yes">6x</span>
816
- <span class="cline-any cline-yes">6x</span>
951
+ <span class="cline-any cline-yes">7x</span>
952
+ <span class="cline-any cline-yes">7x</span>
817
953
  <span class="cline-any cline-yes">1x</span>
818
954
  <span class="cline-any cline-yes">1x</span>
819
955
  <span class="cline-any cline-yes">1x</span>
820
956
  <span class="cline-any cline-yes">1x</span>
821
957
  <span class="cline-any cline-yes">1x</span>
822
- <span class="cline-any cline-yes">21x</span>
823
- <span class="cline-any cline-yes">21x</span>
824
- <span class="cline-any cline-yes">21x</span>
825
- <span class="cline-any cline-yes">21x</span>
826
- <span class="cline-any cline-yes">19x</span>
827
- <span class="cline-any cline-yes">19x</span>
828
- <span class="cline-any cline-yes">19x</span>
829
- <span class="cline-any cline-yes">19x</span>
830
- <span class="cline-any cline-yes">2x</span>
831
- <span class="cline-any cline-yes">2x</span>
958
+ <span class="cline-any cline-yes">5x</span>
959
+ <span class="cline-any cline-yes">5x</span>
960
+ <span class="cline-any cline-yes">5x</span>
961
+ <span class="cline-any cline-yes">5x</span>
962
+ <span class="cline-any cline-yes">5x</span>
963
+ <span class="cline-any cline-yes">5x</span>
964
+ <span class="cline-any cline-yes">5x</span>
965
+ <span class="cline-any cline-yes">5x</span>
966
+ <span class="cline-any cline-yes">5x</span>
832
967
  <span class="cline-any cline-yes">1x</span>
833
968
  <span class="cline-any cline-yes">1x</span>
834
- <span class="cline-any cline-yes">2x</span>
835
- <span class="cline-any cline-yes">2x</span>
836
- <span class="cline-any cline-yes">19x</span>
837
- <span class="cline-any cline-yes">21x</span>
838
- <span class="cline-any cline-yes">21x</span>
839
- <span class="cline-any cline-yes">21x</span>
969
+ <span class="cline-any cline-yes">5x</span>
970
+ <span class="cline-any cline-yes">5x</span>
971
+ <span class="cline-any cline-yes">5x</span>
972
+ <span class="cline-any cline-yes">5x</span>
840
973
  <span class="cline-any cline-yes">1x</span>
841
974
  <span class="cline-any cline-yes">1x</span>
842
975
  <span class="cline-any cline-yes">1x</span>
843
976
  <span class="cline-any cline-yes">1x</span>
844
977
  <span class="cline-any cline-yes">1x</span>
845
- <span class="cline-any cline-yes">25x</span>
846
- <span class="cline-any cline-yes">25x</span>
847
- <span class="cline-any cline-yes">25x</span>
848
978
  <span class="cline-any cline-yes">22x</span>
849
979
  <span class="cline-any cline-yes">22x</span>
850
980
  <span class="cline-any cline-yes">22x</span>
981
+ <span class="cline-any cline-yes">22x</span>
982
+ <span class="cline-any cline-yes">20x</span>
983
+ <span class="cline-any cline-yes">20x</span>
984
+ <span class="cline-any cline-yes">20x</span>
985
+ <span class="cline-any cline-yes">20x</span>
986
+ <span class="cline-any cline-yes">3x</span>
987
+ <span class="cline-any cline-yes">3x</span>
988
+ <span class="cline-any cline-yes">3x</span>
989
+ <span class="cline-any cline-yes">20x</span>
990
+ <span class="cline-any cline-yes">22x</span>
991
+ <span class="cline-any cline-yes">22x</span>
992
+ <span class="cline-any cline-yes">22x</span>
993
+ <span class="cline-any cline-yes">1x</span>
994
+ <span class="cline-any cline-yes">1x</span>
995
+ <span class="cline-any cline-yes">1x</span>
996
+ <span class="cline-any cline-yes">1x</span>
997
+ <span class="cline-any cline-yes">1x</span>
998
+ <span class="cline-any cline-yes">26x</span>
999
+ <span class="cline-any cline-yes">26x</span>
1000
+ <span class="cline-any cline-yes">26x</span>
1001
+ <span class="cline-any cline-yes">23x</span>
1002
+ <span class="cline-any cline-yes">23x</span>
1003
+ <span class="cline-any cline-yes">23x</span>
851
1004
  <span class="cline-any cline-yes">3x</span>
852
1005
  <span class="cline-any cline-yes">3x</span>
853
1006
  <span class="cline-any cline-yes">3x</span>
@@ -893,6 +1046,37 @@
893
1046
  <span class="cline-any cline-yes">4x</span>
894
1047
  <span class="cline-any cline-yes">4x</span>
895
1048
  <span class="cline-any cline-yes">4x</span>
1049
+ <span class="cline-any cline-yes">1x</span>
1050
+ <span class="cline-any cline-yes">1x</span>
1051
+ <span class="cline-any cline-yes">1x</span>
1052
+ <span class="cline-any cline-yes">1x</span>
1053
+ <span class="cline-any cline-yes">4x</span>
1054
+ <span class="cline-any cline-yes">4x</span>
1055
+ <span class="cline-any cline-yes">4x</span>
1056
+ <span class="cline-any cline-yes">4x</span>
1057
+ <span class="cline-any cline-yes">2x</span>
1058
+ <span class="cline-any cline-yes">2x</span>
1059
+ <span class="cline-any cline-yes">4x</span>
1060
+ <span class="cline-any cline-yes">4x</span>
1061
+ <span class="cline-any cline-yes">2x</span>
1062
+ <span class="cline-any cline-yes">2x</span>
1063
+ <span class="cline-any cline-yes">2x</span>
1064
+ <span class="cline-any cline-yes">2x</span>
1065
+ <span class="cline-any cline-yes">2x</span>
1066
+ <span class="cline-any cline-yes">4x</span>
1067
+ <span class="cline-any cline-yes">1x</span>
1068
+ <span class="cline-any cline-yes">1x</span>
1069
+ <span class="cline-any cline-yes">1x</span>
1070
+ <span class="cline-any cline-yes">1x</span>
1071
+ <span class="cline-any cline-yes">1x</span>
1072
+ <span class="cline-any cline-yes">1x</span>
1073
+ <span class="cline-any cline-yes">1x</span>
1074
+ <span class="cline-any cline-yes">1x</span>
1075
+ <span class="cline-any cline-yes">4x</span>
1076
+ <span class="cline-any cline-yes">4x</span>
1077
+ <span class="cline-any cline-yes">4x</span>
1078
+ <span class="cline-any cline-yes">4x</span>
1079
+ <span class="cline-any cline-yes">4x</span>
896
1080
  <span class="cline-any cline-yes">4x</span>
897
1081
  <span class="cline-any cline-yes">1x</span>
898
1082
  <span class="cline-any cline-yes">1x</span>
@@ -939,7 +1123,15 @@
939
1123
  * SOFTWARE.
940
1124
  */
941
1125
  &nbsp;
942
- import { Result, succeed, fail, captureResult, DetailedResult, succeedWithDetail } from '@fgv/ts-utils';
1126
+ import {
1127
+ Result,
1128
+ succeed,
1129
+ fail,
1130
+ captureResult,
1131
+ DetailedResult,
1132
+ succeedWithDetail,
1133
+ Logging
1134
+ } from '@fgv/ts-utils';
943
1135
  import { FileTree } from '@fgv/ts-json-base';
944
1136
  import { FileSystemDirectoryHandle, FileSystemFileHandle } from '../file-api-types';
945
1137
  &nbsp;
@@ -970,6 +1162,9 @@ export interface IFileSystemAccessTreeParams&lt;TCT extends string = string&gt;
970
1162
  * If omitted, defaults to `/&lt;filename&gt;`.
971
1163
  */
972
1164
  filePath?: string;
1165
+ &nbsp;
1166
+ /** Optional logger for auto-sync and persistence failures. */
1167
+ logger?: Logging.LogReporter&lt;unknown&gt;;
973
1168
  }
974
1169
  &nbsp;
975
1170
  /**
@@ -984,8 +1179,10 @@ export class FileSystemAccessTreeAccessors&lt;TCT extends string = string&gt;
984
1179
  private readonly _handles: Map&lt;string, FileSystemFileHandle&gt;;
985
1180
  private readonly _rootDir: FileSystemDirectoryHandle;
986
1181
  private readonly _dirtyFiles: Set&lt;string&gt;;
1182
+ private readonly _pendingDeletions: Set&lt;string&gt;;
987
1183
  private readonly _autoSync: boolean;
988
1184
  private readonly _hasWritePermission: boolean;
1185
+ private readonly _logger: Logging.LogReporter&lt;unknown&gt;;
989
1186
  &nbsp;
990
1187
  /**
991
1188
  * Protected constructor for FileSystemAccessTreeAccessors.
@@ -1006,8 +1203,26 @@ export class FileSystemAccessTreeAccessors&lt;TCT extends string = string&gt;
1006
1203
  this._rootDir = rootDir;
1007
1204
  this._handles = handles;
1008
1205
  this._dirtyFiles = new Set();
1009
- this._autoSync = params<span class="branch-0 cbranch-no" title="branch not covered" >?.a</span>utoSync ?? false;
1206
+ this._pendingDeletions = new Set();
1207
+ /* c8 ignore next 3 - intermittent branch coverage: ?? fallback branches in constructor */
1208
+ this._autoSync = params?.autoSync ?? false;
1010
1209
  this._hasWritePermission = hasWritePermission;
1210
+ this._logger = params?.logger ?? new Logging.LogReporter&lt;unknown&gt;();
1211
+ }
1212
+ &nbsp;
1213
+ private async _runAutoSyncTask(
1214
+ path: string,
1215
+ operation: 'save' | 'delete',
1216
+ action: () =&gt; Promise&lt;Result&lt;void&gt;&gt;
1217
+ ): Promise&lt;void&gt; {
1218
+ try {
1219
+ const result = await action();
1220
+ if (result.isFailure()) {
1221
+ this._logger.error(`Auto-${operation} failed for ${path}: ${result.message}`);
1222
+ }
1223
+ } catch (err) {
1224
+ this._logger.error(`Auto-${operation} threw for ${path}: ${String(err)}`);
1225
+ }
1011
1226
  }
1012
1227
  &nbsp;
1013
1228
  /**
@@ -1068,15 +1283,17 @@ export class FileSystemAccessTreeAccessors&lt;TCT extends string = string&gt;
1068
1283
  try {
1069
1284
  const hasWritePermission = await this._checkFileWritePermission(fileHandle);
1070
1285
  &nbsp;
1071
- if (!hasWritePermission &amp;&amp; (params<span class="branch-0 cbranch-no" title="branch not covered" >?.r</span>equireWritePermission<span class="branch-0 cbranch-no" title="branch not covered" > ?? true)</span>) {
1286
+ /* c8 ignore next 1 - intermittent branch coverage: ?? true fallback */
1287
+ if (!hasWritePermission &amp;&amp; (params?.requireWritePermission ?? true)) {
1072
1288
  return fail('Write permission required but not granted');
1073
1289
  }
1074
1290
  &nbsp;
1075
1291
  const file = await fileHandle.getFile();
1076
1292
  const contents = await file.text();
1077
1293
  const path = params?.filePath ?? `/${fileHandle.name}`;
1294
+ /* c8 ignore next 3 - intermittent branch coverage: ternary for inferContentType */
1078
1295
  const contentType = params?.inferContentType
1079
- <span class="branch-0 cbranch-no" title="branch not covered" > ? params.inferContentType(path, file.type).orDefault()</span>
1296
+ ? params.inferContentType(path, file.type).orDefault()
1080
1297
  : undefined;
1081
1298
  &nbsp;
1082
1299
  const files: FileTree.IInMemoryFile&lt;TCT&gt;[] = [{ path, contents, contentType }];
@@ -1085,14 +1302,16 @@ export class FileSystemAccessTreeAccessors&lt;TCT extends string = string&gt;
1085
1302
  const dummyRoot = {} as FileSystemDirectoryHandle;
1086
1303
  const effectiveParams: IFileSystemAccessTreeParams&lt;TCT&gt; = {
1087
1304
  ...params,
1088
- mutable: hasWritePermission ? true : params<span class="branch-0 cbranch-no" title="branch not covered" >?.m</span>utable<span class="branch-0 cbranch-no" title="branch not covered" > ?? f</span>alse
1305
+ /* c8 ignore next 1 - intermittent branch coverage: ?? false fallback */
1306
+ mutable: hasWritePermission ? true : params?.mutable ?? false
1089
1307
  };
1090
1308
  &nbsp;
1091
1309
  return succeed(
1092
1310
  new FileSystemAccessTreeAccessors&lt;TCT&gt;(files, dummyRoot, handles, effectiveParams, hasWritePermission)
1093
1311
  );
1094
1312
  } catch (error) {
1095
- const message = error instanceof Error ? error.message <span class="branch-0 cbranch-no" title="branch not covered" >: String(error);</span>
1313
+ /* c8 ignore next 1 - intermittent branch coverage: error instanceof Error false branch */
1314
+ const message = error instanceof Error ? error.message : String(error);
1096
1315
  return fail(`Failed to create FileSystemAccessTreeAccessors from file: ${message}`);
1097
1316
  }
1098
1317
  }
@@ -1212,6 +1431,14 @@ export class FileSystemAccessTreeAccessors&lt;TCT extends string = string&gt;
1212
1431
  }
1213
1432
  &nbsp;
1214
1433
  const errors: string[] = [];
1434
+ &nbsp;
1435
+ // Process pending deletions from disk
1436
+ for (const path of this._pendingDeletions) {
1437
+ const deleteResult = await this._deleteFileFromDisk(path);
1438
+ if (deleteResult.isFailure()) {
1439
+ errors.push(`delete ${path}: ${deleteResult.message}`);
1440
+ }
1441
+ }
1215
1442
  &nbsp;
1216
1443
  for (const path of this._dirtyFiles) {
1217
1444
  const syncResult = await this._syncFile(path);
@@ -1224,6 +1451,7 @@ export class FileSystemAccessTreeAccessors&lt;TCT extends string = string&gt;
1224
1451
  return fail(`Failed to sync ${errors.length} file(s):\n${errors.join('\n')}`);
1225
1452
  }
1226
1453
  &nbsp;
1454
+ this._pendingDeletions.clear();
1227
1455
  this._dirtyFiles.clear();
1228
1456
  return succeed(undefined);
1229
1457
  }
@@ -1232,14 +1460,34 @@ export class FileSystemAccessTreeAccessors&lt;TCT extends string = string&gt;
1232
1460
  * Implements `FileTree.IPersistentFileTreeAccessors.isDirty`
1233
1461
  */
1234
1462
  public isDirty(): boolean {
1235
- return this._dirtyFiles.size &gt; 0;
1463
+ return this._dirtyFiles.size &gt; 0 || this._pendingDeletions.size &gt; 0;
1236
1464
  }
1237
1465
  &nbsp;
1238
1466
  /**
1239
1467
  * Implements `FileTree.IPersistentFileTreeAccessors.getDirtyPaths`
1240
1468
  */
1241
1469
  public getDirtyPaths(): string[] {
1242
- return Array.from(this._dirtyFiles);
1470
+ return [...Array.from(this._dirtyFiles), ...Array.from(this._pendingDeletions)];
1471
+ }
1472
+ &nbsp;
1473
+ /**
1474
+ * Override deleteFile to track pending deletions for syncToDisk.
1475
+ */
1476
+ public deleteFile(path: string): Result&lt;boolean&gt; {
1477
+ const result = super.deleteFile(path);
1478
+ if (result.isSuccess()) {
1479
+ this._dirtyFiles.delete(path);
1480
+ this._handles.delete(path);
1481
+ &nbsp;
1482
+ if (this._hasWritePermission) {
1483
+ this._pendingDeletions.add(path);
1484
+ &nbsp;
1485
+ if (this._autoSync) {
1486
+ void this._runAutoSyncTask(path, 'delete', () =&gt; this._deleteFileFromDisk(path));
1487
+ }
1488
+ }
1489
+ }
1490
+ return result;
1243
1491
  }
1244
1492
  &nbsp;
1245
1493
  /**
@@ -1254,11 +1502,8 @@ export class FileSystemAccessTreeAccessors&lt;TCT extends string = string&gt;
1254
1502
  &nbsp;
1255
1503
  // Auto-sync if enabled
1256
1504
  if (this._autoSync) {
1257
- // Fire and forget - errors logged but don't block
1258
- this._syncFile(path).catch((err) =&gt; {
1259
- /* c8 ignore next 1 - defensive: async auto-sync error logging */
1260
- console.error(`Auto-sync failed for ${path}:`, err);
1261
- });
1505
+ // Fire and log-on-failure; don't block the save path.
1506
+ void this._runAutoSyncTask(path, 'save', () =&gt; this._syncFile(path));
1262
1507
  }
1263
1508
  }
1264
1509
  &nbsp;
@@ -1307,6 +1552,37 @@ export class FileSystemAccessTreeAccessors&lt;TCT extends string = string&gt;
1307
1552
  return fail(`Failed to write file: ${message}`);
1308
1553
  }
1309
1554
  }
1555
+ &nbsp;
1556
+ /**
1557
+ * Delete a file from disk using the File System Access API.
1558
+ * @param path - The path of the file to delete.
1559
+ * @returns Promise resolving to success or failure.
1560
+ * @internal
1561
+ */
1562
+ private async _deleteFileFromDisk(path: string): Promise&lt;Result&lt;void&gt;&gt; {
1563
+ try {
1564
+ const absolutePath = this.resolveAbsolutePath(path);
1565
+ const parts = absolutePath.split('/').filter((p) =&gt; p.length &gt; 0);
1566
+ const filename = parts.pop();
1567
+ &nbsp;
1568
+ /* c8 ignore next 3 - defensive: invalid path */
1569
+ if (!filename) {
1570
+ return fail(`Invalid file path: ${path}`);
1571
+ }
1572
+ &nbsp;
1573
+ // Navigate to the parent directory
1574
+ let currentDir = this._rootDir;
1575
+ for (const part of parts) {
1576
+ currentDir = await currentDir.getDirectoryHandle(part);
1577
+ }
1578
+ &nbsp;
1579
+ await currentDir.removeEntry(filename);
1580
+ return succeed(undefined);
1581
+ } catch (error) {
1582
+ const message = error instanceof Error ? error.message : String(error);
1583
+ return fail(`Failed to delete file ${path}: ${message}`);
1584
+ }
1585
+ }
1310
1586
  &nbsp;
1311
1587
  /**
1312
1588
  * Create a new file and write its contents.
@@ -1351,7 +1627,7 @@ export class FileSystemAccessTreeAccessors&lt;TCT extends string = string&gt;
1351
1627
  <div class='footer quiet pad2 space-top1 center small'>
1352
1628
  Code coverage generated by
1353
1629
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1354
- at 2026-03-09T21:03:54.408Z
1630
+ at 2026-03-24T18:05:41.460Z
1355
1631
  </div>
1356
1632
  <script src="../prettify.js"></script>
1357
1633
  <script>