@simplysm/capacitor-plugin-file-system 12.16.27 → 13.0.0-beta.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.
- package/.cache/typecheck-browser.tsbuildinfo +1 -0
- package/README.md +226 -0
- package/android/src/main/java/kr/co/simplysm/capacitor/filesystem/FileSystemPlugin.java +17 -1
- package/dist/FileSystem.js +104 -106
- package/dist/FileSystem.js.map +7 -0
- package/dist/IFileSystemPlugin.js +1 -1
- package/dist/IFileSystemPlugin.js.map +7 -0
- package/dist/{FileSystem.d.ts → capacitor-plugin-file-system/src/FileSystem.d.ts} +15 -13
- package/dist/capacitor-plugin-file-system/src/FileSystem.d.ts.map +1 -0
- package/dist/{IFileSystemPlugin.d.ts → capacitor-plugin-file-system/src/IFileSystemPlugin.d.ts} +2 -1
- package/dist/capacitor-plugin-file-system/src/IFileSystemPlugin.d.ts.map +1 -0
- package/dist/{index.d.ts → capacitor-plugin-file-system/src/index.d.ts} +1 -0
- package/dist/capacitor-plugin-file-system/src/index.d.ts.map +1 -0
- package/dist/{web → capacitor-plugin-file-system/src/web}/FileSystemWeb.d.ts +10 -2
- package/dist/capacitor-plugin-file-system/src/web/FileSystemWeb.d.ts.map +1 -0
- package/dist/capacitor-plugin-file-system/src/web/IndexedDbStore.d.ts +16 -0
- package/dist/capacitor-plugin-file-system/src/web/IndexedDbStore.d.ts.map +1 -0
- package/dist/capacitor-plugin-file-system/src/web/VirtualFileSystem.d.ts +26 -0
- package/dist/capacitor-plugin-file-system/src/web/VirtualFileSystem.d.ts.map +1 -0
- package/dist/core-common/src/common.types.d.ts +74 -0
- package/dist/core-common/src/common.types.d.ts.map +1 -0
- package/dist/core-common/src/env.d.ts +6 -0
- package/dist/core-common/src/env.d.ts.map +1 -0
- package/dist/core-common/src/errors/argument-error.d.ts +25 -0
- package/dist/core-common/src/errors/argument-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts +29 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/sd-error.d.ts +27 -0
- package/dist/core-common/src/errors/sd-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/timeout-error.d.ts +31 -0
- package/dist/core-common/src/errors/timeout-error.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts +15 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +19 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts +215 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +1 -0
- package/dist/core-common/src/extensions/map-ext.d.ts +57 -0
- package/dist/core-common/src/extensions/map-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/set-ext.d.ts +36 -0
- package/dist/core-common/src/extensions/set-ext.d.ts.map +1 -0
- package/dist/core-common/src/features/debounce-queue.d.ts +53 -0
- package/dist/core-common/src/features/debounce-queue.d.ts.map +1 -0
- package/dist/core-common/src/features/event-emitter.d.ts +66 -0
- package/dist/core-common/src/features/event-emitter.d.ts.map +1 -0
- package/dist/core-common/src/features/serial-queue.d.ts +47 -0
- package/dist/core-common/src/features/serial-queue.d.ts.map +1 -0
- package/dist/core-common/src/index.d.ts +32 -0
- package/dist/core-common/src/index.d.ts.map +1 -0
- package/dist/core-common/src/types/date-only.d.ts +152 -0
- package/dist/core-common/src/types/date-only.d.ts.map +1 -0
- package/dist/core-common/src/types/date-time.d.ts +96 -0
- package/dist/core-common/src/types/date-time.d.ts.map +1 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts +80 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts.map +1 -0
- package/dist/core-common/src/types/time.d.ts +68 -0
- package/dist/core-common/src/types/time.d.ts.map +1 -0
- package/dist/core-common/src/types/uuid.d.ts +35 -0
- package/dist/core-common/src/types/uuid.d.ts.map +1 -0
- package/dist/core-common/src/utils/bytes.d.ts +51 -0
- package/dist/core-common/src/utils/bytes.d.ts.map +1 -0
- package/dist/core-common/src/utils/date-format.d.ts +90 -0
- package/dist/core-common/src/utils/date-format.d.ts.map +1 -0
- package/dist/core-common/src/utils/json.d.ts +34 -0
- package/dist/core-common/src/utils/json.d.ts.map +1 -0
- package/dist/core-common/src/utils/num.d.ts +60 -0
- package/dist/core-common/src/utils/num.d.ts.map +1 -0
- package/dist/core-common/src/utils/obj.d.ts +258 -0
- package/dist/core-common/src/utils/obj.d.ts.map +1 -0
- package/dist/core-common/src/utils/path.d.ts +23 -0
- package/dist/core-common/src/utils/path.d.ts.map +1 -0
- package/dist/core-common/src/utils/primitive.d.ts +18 -0
- package/dist/core-common/src/utils/primitive.d.ts.map +1 -0
- package/dist/core-common/src/utils/str.d.ts +103 -0
- package/dist/core-common/src/utils/str.d.ts.map +1 -0
- package/dist/core-common/src/utils/template-strings.d.ts +84 -0
- package/dist/core-common/src/utils/template-strings.d.ts.map +1 -0
- package/dist/core-common/src/utils/transferable.d.ts +47 -0
- package/dist/core-common/src/utils/transferable.d.ts.map +1 -0
- package/dist/core-common/src/utils/wait.d.ts +19 -0
- package/dist/core-common/src/utils/wait.d.ts.map +1 -0
- package/dist/core-common/src/utils/xml.d.ts +36 -0
- package/dist/core-common/src/utils/xml.d.ts.map +1 -0
- package/dist/core-common/src/zip/sd-zip.d.ts +80 -0
- package/dist/core-common/src/zip/sd-zip.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +7 -0
- package/dist/web/FileSystemWeb.js +90 -83
- package/dist/web/FileSystemWeb.js.map +7 -0
- package/dist/web/IndexedDbStore.js +76 -0
- package/dist/web/IndexedDbStore.js.map +7 -0
- package/dist/web/VirtualFileSystem.js +91 -115
- package/dist/web/VirtualFileSystem.js.map +7 -0
- package/package.json +5 -2
- package/src/FileSystem.ts +20 -17
- package/src/IFileSystemPlugin.ts +1 -1
- package/src/web/FileSystemWeb.ts +22 -22
- package/src/web/IndexedDbStore.ts +88 -0
- package/src/web/VirtualFileSystem.ts +27 -60
- package/dist/web/VirtualFileSystem.d.ts +0 -20
- package/tsconfig.json +0 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.webworker.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/csstype@3.2.3/node_modules/csstype/index.d.ts","../../../node_modules/.pnpm/solid-js@1.9.11/node_modules/solid-js/types/jsx.d.ts","../../../node_modules/.pnpm/@capacitor+core@7.4.5/node_modules/@capacitor/core/types/definitions-internal.d.ts","../../../node_modules/.pnpm/@capacitor+core@7.4.5/node_modules/@capacitor/core/types/util.d.ts","../../../node_modules/.pnpm/@capacitor+core@7.4.5/node_modules/@capacitor/core/types/definitions.d.ts","../../../node_modules/.pnpm/@capacitor+core@7.4.5/node_modules/@capacitor/core/types/global.d.ts","../../../node_modules/.pnpm/@capacitor+core@7.4.5/node_modules/@capacitor/core/types/web-plugin.d.ts","../../../node_modules/.pnpm/@capacitor+core@7.4.5/node_modules/@capacitor/core/types/core-plugins.d.ts","../../../node_modules/.pnpm/@capacitor+core@7.4.5/node_modules/@capacitor/core/types/index.d.ts","../src/IFileSystemPlugin.ts","../../core-common/src/extensions/map-ext.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/line-counter.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/errors.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/applyReviver.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/log.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/toJS.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Scalar.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringify.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Collection.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/YAMLSeq.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/types.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/common/map.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/common/seq.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/common/string.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/foldFlowLines.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyNumber.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyString.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/util.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/YAMLMap.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/identity.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/Schema.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/createNode.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Pair.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/tags.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/options.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Node.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-scalar.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-stringify.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-visit.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Alias.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/Document.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/directives.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/composer.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/lexer.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/parser.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/public-api.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/visit.d.ts","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/index.d.ts","../../core-common/src/errors/sd-error.ts","../../core-common/src/errors/argument-error.ts","../../core-common/src/utils/date-format.ts","../../core-common/src/types/date-time.ts","../../core-common/src/types/date-only.ts","../../core-common/src/types/time.ts","../../core-common/src/common.types.ts","../../core-common/src/types/uuid.ts","../../core-common/src/utils/obj.ts","../../core-common/src/extensions/arr-ext.types.ts","../../core-common/src/extensions/arr-ext.helpers.ts","../../core-common/src/extensions/arr-ext.ts","../../core-common/src/extensions/set-ext.ts","../../core-common/src/env.ts","../../core-common/src/errors/not-implemented-error.ts","../../core-common/src/errors/timeout-error.ts","../../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/core.d.mts","../../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/browser.d.mts","../../core-common/src/types/lazy-gc-map.ts","../../core-common/src/features/event-emitter.ts","../../core-common/src/features/debounce-queue.ts","../../core-common/src/utils/wait.ts","../../core-common/src/features/serial-queue.ts","../../core-common/src/utils/bytes.ts","../../core-common/src/utils/json.ts","../../core-common/src/utils/num.ts","../../core-common/src/utils/primitive.ts","../../core-common/src/utils/str.ts","../../core-common/src/utils/template-strings.ts","../../core-common/src/utils/transferable.ts","../../../node_modules/.pnpm/fast-xml-parser@5.3.3/node_modules/fast-xml-parser/src/fxp.d.ts","../../core-common/src/utils/xml.ts","../../core-common/src/utils/path.ts","../../../node_modules/.pnpm/@zip.js+zip.js@2.8.15/node_modules/@zip.js/zip.js/index.d.ts","../../core-common/src/zip/sd-zip.ts","../../core-common/src/index.ts","../src/web/IndexedDbStore.ts","../src/web/VirtualFileSystem.ts","../src/web/FileSystemWeb.ts","../src/FileSystem.ts","../src/index.ts","../../core-common/src/globals.ts"],"fileIdsList":[[86,88],[86],[85],[85,86,87,88,89],[84],[85,86],[150],[82],[94,117,118,122,124,125],[94,98,101,110,111,112,115,117,118,123,125],[102,112,118,124],[124],[93],[93,94,98,101,102,110,111,112,115,116,117,118,122,123,124,126,127,128,129,130,131,132],[97,98,99,101,110,118,122,124],[111,112,118],[97,98,99,101,110,111,117,122,123,124],[97,99,111,112,113,114,118,122],[97,118,122],[97,98,99,100,109,112,115,118,122],[97,98,99,100,112,113,115,118,122],[97,110,115],[98,101,110,115,118,123,124],[118,124],[93,95,96,98,102,112,115,116,118,125],[94,98,118,122],[122],[119,120,121],[95,117,118,124,126],[102,111,115,117],[102],[102,117],[98,99,101,110,112,113,117,118],[97,101,102,109,110,112],[97,98,99,102,109,110,112,115],[117,123,124],[98],[98,99],[96,97,99,103,104,105,106,107,108,110,113,115],[83,90,91,169,172],[83],[83,91,173],[83,90,91,169,171],[83,91,170],[83,137,138,139,141],[83,133,134],[83,134],[83,135,137,138,139,143],[83,92,134,135,137,138,139,140,141,142,143,144],[83,137,138,139,140],[83,134,151,153],[83,134,151,153,155],[83,92,134,135,136,137,138,139,140,141,142,145,146,147,148,149,152,153,154,155,156,157,158,159,160,161,162,163,165,166,168],[83,135,136],[83,151],[83,135,140],[83,134,137,138,139,141,142,147,157],[83,135,137,138,139,141],[83,135,137,138,139,140,141],[83,149],[83,164],[83,140,167]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","signature":false,"impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","signature":false,"impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","signature":false,"impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","signature":false,"impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","signature":false,"impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","signature":false,"impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","signature":false,"impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","signature":false,"impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","signature":false,"impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","signature":false,"impliedFormat":1},{"version":"8bf8b5e44e3c9c36f98e1007e8b7018c0f38d8adc07aecef42f5200114547c70","signature":false,"impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8ea22b76493fc658fe9b76a84e64c9618823608076ecee5ed3f93f7f0dde904e","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","signature":false,"impliedFormat":1},{"version":"5ad3e58181b335ff8794bcc3161a1506dbe8cebbce71a15b3dc7bfe56f076679","signature":false,"impliedFormat":99},{"version":"676166750527a2d0f685cd72a325f57cee8324e3a87c2466492d057332be2609","signature":false,"impliedFormat":1},{"version":"faf9680c348be133d1deebf9b65f0d527013f12bd52cfc1dfa91cf140a105c79","signature":false,"impliedFormat":1},{"version":"c1bf515bb8571ae22aed9f95484eda20dafe3e976a18e75fc202e109ddb90c79","signature":false,"impliedFormat":1},{"version":"0504724a0b391f837adbd89cbf451647b9c317c9f4eb1dff6144356b2e2580fb","signature":false,"impliedFormat":1},{"version":"9a08820b03bed0396aca9c00023ccfb5bd58493ba790a21419ce5ca47ed75d70","signature":false,"impliedFormat":1},{"version":"b19cc33ba9acf99826ae93551507755b4348ea59041a0b7a7c034f78624fad39","signature":false,"impliedFormat":1},{"version":"2092e5163496bee3920cf37f898ae05e2a70ec66c269662079ca733dc6711555","signature":false,"impliedFormat":1},{"version":"11f23c5eac3eafaacfaabd395f4b1bf85fe497899ef2d40d98169a345ee63cbd","signature":false},{"version":"19e32c366487628b39cbd3b2b2fceeb2fe4d18e514116d013ee1dafaaaba68ca","signature":false,"affectsGlobalScope":true},{"version":"3dfcd0a3bfa70b53135db3cf2e4ddcb7eccc3e4418ce833ae24eecd06928328f","signature":false,"impliedFormat":1},{"version":"33e12c9940a7f23d50742e5925a193bb4af9b23ee159251e6bc50bb9070618a1","signature":false,"impliedFormat":1},{"version":"bc41a8e33caf4d193b0c49ec70d1e8db5ce3312eafe5447c6c1d5a2084fece12","signature":false,"impliedFormat":1},{"version":"7c33f11a56ba4e79efc4ddae85f8a4a888e216d2bf66c863f344d403437ffc74","signature":false,"impliedFormat":1},{"version":"cbef1abd1f8987dee5c9ed8c768a880fbfbff7f7053e063403090f48335c8e4e","signature":false,"impliedFormat":1},{"version":"9249603c91a859973e8f481b67f50d8d0b3fa43e37878f9dfc4c70313ad63065","signature":false,"impliedFormat":1},{"version":"0132f67b7f128d4a47324f48d0918ec73cf4220a5e9ea8bd92b115397911254f","signature":false,"impliedFormat":1},{"version":"06b37153d512000a91cad6fcbae75ca795ecec00469effaa8916101a00d5b9e2","signature":false,"impliedFormat":1},{"version":"8a641e3402f2988bf993007bd814faba348b813fc4058fce5b06de3e81ed511a","signature":false,"impliedFormat":1},{"version":"281744305ba2dcb2d80e2021fae211b1b07e5d85cfc8e36f4520325fcf698dbb","signature":false,"impliedFormat":1},{"version":"e1b042779d17b69719d34f31822ddba8aa6f5eb15f221b02105785f4447e7f5b","signature":false,"impliedFormat":1},{"version":"6858337936b90bd31f1674c43bedda2edbab2a488d04adc02512aef47c792fd0","signature":false,"impliedFormat":1},{"version":"15cb3deecc635efb26133990f521f7f1cc95665d5db8d87e5056beaea564b0ce","signature":false,"impliedFormat":1},{"version":"e27605c8932e75b14e742558a4c3101d9f4fdd32e7e9a056b2ca83f37f973945","signature":false,"impliedFormat":1},{"version":"f0443725119ecde74b0d75c82555b1f95ee1c3cd371558e5528a83d1de8109de","signature":false,"impliedFormat":1},{"version":"7794810c4b3f03d2faa81189504b953a73eb80e5662a90e9030ea9a9a359a66f","signature":false,"impliedFormat":1},{"version":"b074516a691a30279f0fe6dff33cd76359c1daacf4ae024659e44a68756de602","signature":false,"impliedFormat":1},{"version":"57cbeb55ec95326d068a2ce33403e1b795f2113487f07c1f53b1eaf9c21ff2ce","signature":false,"impliedFormat":1},{"version":"a00362ee43d422bcd8239110b8b5da39f1122651a1809be83a518b1298fa6af8","signature":false,"impliedFormat":1},{"version":"a820499a28a5fcdbf4baec05cc069362041d735520ab5a94c38cc44db7df614c","signature":false,"impliedFormat":1},{"version":"33a6d7b07c85ac0cef9a021b78b52e2d901d2ebfd5458db68f229ca482c1910c","signature":false,"impliedFormat":1},{"version":"8f648847b52020c1c0cdfcc40d7bcab72ea470201a631004fde4d85ccbc0c4c7","signature":false,"impliedFormat":1},{"version":"7821d3b702e0c672329c4d036c7037ecf2e5e758eceb5e740dde1355606dc9f2","signature":false,"impliedFormat":1},{"version":"213e4f26ee5853e8ba314ecad3a73cd06ab244a0809749bb777cbc1619aa07d8","signature":false,"impliedFormat":1},{"version":"cafd6ef91d96228a618436c03d60fe5078f43d32df4c39ebd9f3f7d013dbe337","signature":false,"impliedFormat":1},{"version":"961fa18e1658f3f8e38c23e1a9bc3f4d7be75b056a94700291d5f82f57524ff0","signature":false,"impliedFormat":1},{"version":"079c02dc397960da2786db71d7c9e716475377bcedd81dede034f8a9f94c71b8","signature":false,"impliedFormat":1},{"version":"a7595cbb1b354b54dff14a6bb87d471e6d53b63de101a1b4d9d82d3d3f6eddec","signature":false,"impliedFormat":1},{"version":"1f49a85a97e01a26245fd74232b3b301ebe408fb4e969e72e537aa6ffbd3fe14","signature":false,"impliedFormat":1},{"version":"9c38563e4eabfffa597c4d6b9aa16e11e7f9a636f0dd80dd0a8bce1f6f0b2108","signature":false,"impliedFormat":1},{"version":"a971cba9f67e1c87014a2a544c24bc58bad1983970dfa66051b42ae441da1f46","signature":false,"impliedFormat":1},{"version":"df9b266bceb94167c2e8ae25db37d31a28de02ae89ff58e8174708afdec26738","signature":false,"impliedFormat":1},{"version":"9e5b8137b7ee679d31b35221503282561e764116d8b007c5419b6f9d60765683","signature":false,"impliedFormat":1},{"version":"3e7ae921a43416e155d7bbe5b4229b7686cfa6a20af0a3ae5a79dfe127355c21","signature":false,"impliedFormat":1},{"version":"c7200ae85e414d5ed1d3c9507ae38c097050161f57eb1a70bef021d796af87a7","signature":false,"impliedFormat":1},{"version":"4edb4ff36b17b2cf19014b2c901a6bdcdd0d8f732bcf3a11aa6fd0a111198e27","signature":false,"impliedFormat":1},{"version":"810f0d14ce416a343dcdd0d3074c38c094505e664c90636b113d048471c292e2","signature":false,"impliedFormat":1},{"version":"9c37dc73c97cd17686edc94cc534486509e479a1b8809ef783067b7dde5c6713","signature":false,"impliedFormat":1},{"version":"5fe2ef29b33889d3279d5bc92f8e554ffd32145a02f48d272d30fc1eea8b4c89","signature":false,"impliedFormat":1},{"version":"e39090ffe9c45c59082c3746e2aa2546dc53e3c5eeb4ad83f8210be7e2e58022","signature":false,"impliedFormat":1},{"version":"9f85a1810d42f75e1abb4fc94be585aae1fdac8ae752c76b912d95aef61bf5de","signature":false,"impliedFormat":1},{"version":"8b1f07cc0ca0bc5e3bc39e90a297d096f0556ac8a43078565d541ea22680e358","signature":false},{"version":"9d3c52e1b94e61b01cc70ff6d81472e9d3f1fbd188ba5b0dad77c1e24e452c3f","signature":false},{"version":"c23b4238fe649bc2aaef5cf291c18b6fbe05329e2a494878f907ea2796f5bbeb","signature":false},{"version":"29ff7c4f69f7c40cac5b855369981a2869dabc1a1dc11d69ce44a612845f518a","signature":false},{"version":"61e90a049a12534a76a536ac4063cc4a88e9508ae197ef5205c6f3baad835c3c","signature":false},{"version":"de07f5d4dc549eb82cfbf388275f03773a4ddd395bd64aa0b58afc8ae02ff2d0","signature":false},{"version":"01a1afd65a89eb25f409f7b595525b655da4e782e306c8354a592aff0dc9665f","signature":false},{"version":"0a2a260ab3b3c1729881dfa6401822dbdb9c7d61201e9ce2dc98d42185c88bea","signature":false},{"version":"dc6102430c2ac8b1bd27b89440d191c8847220efa09e5f6a972904513786855d","signature":false},{"version":"f97148a5f038b2a4d2657c31c382ff9178447e423e56e009c0a363c752dbfe35","signature":false},{"version":"adcfc555aab25f32209e4eae8c0819bed4e1e18dcd92ea57e96e58578498bb8e","signature":false},{"version":"6b654d8a64c2a32df89896eead59b9d7978e3ff9d5757386b8d2693ddd2a17a4","signature":false,"affectsGlobalScope":true},{"version":"9fdd17c82e784f9167f6684c29a0378fa347397b0eaab233ee4907b93323b894","signature":false,"affectsGlobalScope":true},{"version":"26eadb688461de21cdacf3fe504a381fe711634018db5dbf7eeec88b6dbf4763","signature":false},{"version":"77c4f3e58f0c5388eba941376e38d50440a066f79c248fd1f021d4d38b2a17c9","signature":false},{"version":"3265d9e870cc24694fb4643ff8b6c13f754275a6bf76d7179afb6e5bdeb4b55c","signature":false},{"version":"1c20c07324915c372d074a627114144edbb43df6f20431df5ccb06aec2c42e3a","signature":false,"impliedFormat":99},{"version":"da8145d4bea9c4067ba4c238747e082356b42d77a5d1481a163bb74e8e282f66","signature":false,"impliedFormat":99},{"version":"4e6cc0a54d85201823bf976816e351d73277a63c494192d9726d86fd8b6a596a","signature":false},{"version":"e7c9e09505187c59af8bbc6fe0e23974a6734e3fd997580b98d506363f3a9c21","signature":false},{"version":"6bebf05111f445661eb24e15258945998e308dfadedc30e72b73ebeb1121c4df","signature":false},{"version":"fdbbd53dda93988fb62ba9769111cdbd5b8f9d5d4e63e8fd9d5d98aa021add9b","signature":false},{"version":"bbb53c8c55ac8899e109b8fd103a5cbda06df3f0ea515edc377f226ad0e79edb","signature":false},{"version":"3c894f1bfcad70457f6e55193398f8e1eff7503eb1a170525c0c223d97b8f739","signature":false},{"version":"a21506576b4a568250360e472990d746dab2a8537ce31be9b7aafb9a113acc57","signature":false},{"version":"8dd146232f35b576e56587af95a20a470324ebc300a6f4b44466860c52b17dad","signature":false},{"version":"d2016ce22cc23592cfe8366b55a3318fbbebb753225402942e42bd0d83a4a62c","signature":false},{"version":"066eb376fc261f681af7abc02bad3374b5a3b4dcc1c50086734c40c7985011ce","signature":false},{"version":"bd165ffcfb9f26fff3e55a8720f8038ec248dfbf478c9c62c3c6d25e06cc9f6d","signature":false},{"version":"bb9ffb3c4f5792e37725898f9b28ecc81b23591efdac88cc98e4b83e3929b49f","signature":false},{"version":"e570f076ec6896bd5d12c7763055ee590f721d440416278ee0fad52685e78965","signature":false,"impliedFormat":99},{"version":"d91d500b31f3e2f4fd3f1fd184913553b24a6b90dad6db3f3e306cbffa389946","signature":false},{"version":"7bb5efb45cc44ca5d4f3090ec2cda9f336e58c86aea5b159dd4a94bdaafa20f2","signature":false},{"version":"049aaa5aa47746663b0d6a7503fb325cd3a01cf10c965f5b57dd10d6813f8f63","signature":false,"impliedFormat":99},{"version":"72115c2324f48942bf71cef787fc0f5c816beb4b0101e9a544ac54dba293cb95","signature":false},{"version":"a5c9394d0b08f97320fb2a7b34fa182355cae3b28509bd759232babcc7ac73be","signature":false},{"version":"b387ccf8c9f08a1b3ad5f75187346839e01d4717845d4728ed2a084a0dc60bea","signature":false},{"version":"4b6ff3de8aeea999049f7d66aba252975498f8253594f2eec6714cf2eaf629fe","signature":false},{"version":"7e9a87dbdaf6af52e603a5ff5409ab7e78a17d1ba2b6dd3320c0fb172586e601","signature":false},{"version":"0c2c9047ca567f1c7ed9b2371d448bf124d4ee1fb0bdaa8141951d5313086028","signature":false},{"version":"b02e74e34f4dfd7794baa6364d8abb0b1839e9af165cb303b59fb27f2e46a0af","signature":false}],"root":[91,[170,174]],"options":{"declaration":false,"declarationMap":false,"emitDeclarationOnly":false,"esModuleInterop":true,"importHelpers":true,"jsx":1,"jsxImportSource":"solid-js","module":99,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"skipLibCheck":true,"sourceMap":false,"strict":true,"target":99,"tsBuildInfoFile":"./typecheck-browser.tsbuildinfo","useDefineForClassFields":true,"useUnknownInCatchVariables":true,"verbatimModuleSyntax":true},"referencedMap":[[89,1],[84,2],[86,3],[87,2],[90,4],[85,5],[88,6],[151,7],[83,8],[126,9],[124,10],[113,11],[125,12],[94,13],[133,14],[123,15],[100,16],[118,17],[115,18],[98,19],[110,20],[101,21],[114,22],[111,23],[97,24],[117,25],[119,26],[120,27],[121,27],[122,28],[128,27],[129,29],[112,30],[103,31],[104,31],[105,31],[116,32],[102,33],[130,34],[131,35],[99,36],[107,37],[108,38],[109,39],[132,23],[173,40],[91,41],[174,42],[172,43],[170,41],[171,44],[140,45],[147,41],[135,46],[148,47],[134,41],[149,47],[144,48],[145,49],[143,50],[92,41],[146,41],[154,51],[153,41],[156,52],[169,53],[138,54],[137,54],[152,55],[139,54],[141,56],[157,56],[136,41],[158,57],[159,41],[142,58],[166,41],[160,59],[161,41],[162,41],[163,45],[155,60],[165,61],[168,62]],"changeFileSet":[89,84,86,87,90,85,88,167,151,150,82,164,83,80,81,13,14,17,16,2,18,19,20,21,22,23,24,25,3,26,27,4,28,32,29,30,31,33,34,35,5,36,37,38,39,6,43,40,41,42,44,7,45,50,51,46,47,48,49,8,55,52,53,54,56,9,57,58,59,61,60,62,63,10,64,65,66,11,67,68,69,70,71,1,72,73,12,77,75,79,74,78,76,15,126,124,95,113,125,94,133,96,123,100,118,115,98,110,101,114,111,97,117,119,120,121,122,127,93,128,129,112,103,104,105,116,102,130,131,106,99,107,108,109,132,173,91,174,172,170,171,140,147,135,148,134,149,144,145,143,92,146,154,153,156,175,169,138,137,152,139,141,157,136,158,159,142,166,160,161,162,163,155,165,168],"version":"5.8.3"}
|
package/README.md
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# @simplysm/capacitor-plugin-file-system
|
|
2
|
+
|
|
3
|
+
A Capacitor-based file system access plugin. On Android, it provides direct access to the native file system, while in web environments it operates as an IndexedDB-based virtual file system.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @simplysm/capacitor-plugin-file-system
|
|
9
|
+
npx cap sync
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### Peer Dependencies
|
|
13
|
+
|
|
14
|
+
| Package | Version |
|
|
15
|
+
|--------|------|
|
|
16
|
+
| `@capacitor/core` | `^7.4.4` |
|
|
17
|
+
|
|
18
|
+
### Internal Dependencies
|
|
19
|
+
|
|
20
|
+
| Package | Description |
|
|
21
|
+
|--------|------|
|
|
22
|
+
| `@simplysm/core-common` | Common utilities such as base64 conversion, `Bytes` type |
|
|
23
|
+
|
|
24
|
+
## Supported Platforms
|
|
25
|
+
|
|
26
|
+
| Platform | Supported | Implementation |
|
|
27
|
+
|--------|----------|----------|
|
|
28
|
+
| Android | Yes | Native Java (API 23+) |
|
|
29
|
+
| Web | Yes | IndexedDB-based virtual file system |
|
|
30
|
+
| iOS | No | - |
|
|
31
|
+
|
|
32
|
+
### Android Permissions
|
|
33
|
+
|
|
34
|
+
Different permission models are used depending on the Android version.
|
|
35
|
+
|
|
36
|
+
| Android Version | Permission | Behavior |
|
|
37
|
+
|-------------|------|------|
|
|
38
|
+
| Android 11+ (API 30+) | `MANAGE_EXTERNAL_STORAGE` | Navigate to settings screen to grant full file access permission |
|
|
39
|
+
| Android 10 and below | `READ_EXTERNAL_STORAGE`, `WRITE_EXTERNAL_STORAGE` | Display runtime permission dialog |
|
|
40
|
+
|
|
41
|
+
The plugin automatically declares the necessary permissions in `AndroidManifest.xml`, so you don't need to add them separately in your app's manifest.
|
|
42
|
+
|
|
43
|
+
## Main API
|
|
44
|
+
|
|
45
|
+
All APIs are provided as static methods of the `FileSystem` class.
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Method List
|
|
52
|
+
|
|
53
|
+
| Method | Return Type | Description |
|
|
54
|
+
|--------|----------|------|
|
|
55
|
+
| `hasPermission()` | `Promise<boolean>` | Check if file system access permission is granted |
|
|
56
|
+
| `requestPermission()` | `Promise<void>` | Request file system access permission |
|
|
57
|
+
| `readdir(dirPath)` | `Promise<IFileInfo[]>` | List files/folders in directory |
|
|
58
|
+
| `getStoragePath(type)` | `Promise<string>` | Return absolute path by storage type |
|
|
59
|
+
| `getFileUri(filePath)` | `Promise<string>` | Return FileProvider URI (Android) / Blob URL (Web) |
|
|
60
|
+
| `writeFile(filePath, data)` | `Promise<void>` | Write file (string or binary) |
|
|
61
|
+
| `readFileString(filePath)` | `Promise<string>` | Read file as UTF-8 string |
|
|
62
|
+
| `readFileBytes(filePath)` | `Promise<Bytes>` | Read file as binary (`Uint8Array`) |
|
|
63
|
+
| `remove(targetPath)` | `Promise<void>` | Recursively delete file or directory |
|
|
64
|
+
| `mkdir(targetPath)` | `Promise<void>` | Recursively create directory |
|
|
65
|
+
| `exists(targetPath)` | `Promise<boolean>` | Check if file or directory exists |
|
|
66
|
+
|
|
67
|
+
### Type Definitions
|
|
68
|
+
|
|
69
|
+
#### `TStorage`
|
|
70
|
+
|
|
71
|
+
A string literal type representing storage types.
|
|
72
|
+
|
|
73
|
+
| Value | Android Path | Description |
|
|
74
|
+
|----|-------------|------|
|
|
75
|
+
| `"external"` | `Environment.getExternalStorageDirectory()` | External storage root |
|
|
76
|
+
| `"externalFiles"` | `Context.getExternalFilesDir(null)` | App-specific external files directory |
|
|
77
|
+
| `"externalCache"` | `Context.getExternalCacheDir()` | App-specific external cache directory |
|
|
78
|
+
| `"externalMedia"` | `Context.getExternalMediaDirs()[0]` | App-specific external media directory |
|
|
79
|
+
| `"appData"` | `ApplicationInfo.dataDir` | App data directory |
|
|
80
|
+
| `"appFiles"` | `Context.getFilesDir()` | App internal files directory |
|
|
81
|
+
| `"appCache"` | `Context.getCacheDir()` | App internal cache directory |
|
|
82
|
+
|
|
83
|
+
#### `IFileInfo`
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
interface IFileInfo {
|
|
87
|
+
name: string; // File or directory name
|
|
88
|
+
isDirectory: boolean; // Whether it's a directory
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Usage Examples
|
|
93
|
+
|
|
94
|
+
### Check and Request Permission
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
|
|
98
|
+
|
|
99
|
+
async function ensurePermission(): Promise<boolean> {
|
|
100
|
+
const granted = await FileSystem.hasPermission();
|
|
101
|
+
if (!granted) {
|
|
102
|
+
await FileSystem.requestPermission();
|
|
103
|
+
// On Android 11+, it navigates to settings screen,
|
|
104
|
+
// so you need to check again after returning to the app.
|
|
105
|
+
return await FileSystem.hasPermission();
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Read/Write Text Files
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
|
|
115
|
+
|
|
116
|
+
async function textFileExample(): Promise<void> {
|
|
117
|
+
const storagePath = await FileSystem.getStoragePath("appFiles");
|
|
118
|
+
const filePath = storagePath + "/config.json";
|
|
119
|
+
|
|
120
|
+
// Write file
|
|
121
|
+
const config = { theme: "dark", lang: "ko" };
|
|
122
|
+
await FileSystem.writeFile(filePath, JSON.stringify(config, null, 2));
|
|
123
|
+
|
|
124
|
+
// Read file
|
|
125
|
+
const content = await FileSystem.readFileString(filePath);
|
|
126
|
+
const parsed = JSON.parse(content);
|
|
127
|
+
console.log(parsed.theme); // "dark"
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Read/Write Binary Files
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
|
|
135
|
+
|
|
136
|
+
async function binaryFileExample(): Promise<void> {
|
|
137
|
+
const storagePath = await FileSystem.getStoragePath("appFiles");
|
|
138
|
+
const filePath = storagePath + "/data.bin";
|
|
139
|
+
|
|
140
|
+
// Write as Uint8Array
|
|
141
|
+
const bytes = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f]);
|
|
142
|
+
await FileSystem.writeFile(filePath, bytes);
|
|
143
|
+
|
|
144
|
+
// Read as binary
|
|
145
|
+
const readBytes = await FileSystem.readFileBytes(filePath);
|
|
146
|
+
console.log(readBytes.length); // 5
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Directory Management
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
|
|
154
|
+
|
|
155
|
+
async function directoryExample(): Promise<void> {
|
|
156
|
+
const storagePath = await FileSystem.getStoragePath("appFiles");
|
|
157
|
+
const dirPath = storagePath + "/logs/2024";
|
|
158
|
+
|
|
159
|
+
// Recursively create directory
|
|
160
|
+
await FileSystem.mkdir(dirPath);
|
|
161
|
+
|
|
162
|
+
// Create file
|
|
163
|
+
await FileSystem.writeFile(dirPath + "/app.log", "Started\n");
|
|
164
|
+
|
|
165
|
+
// List directory contents
|
|
166
|
+
const files = await FileSystem.readdir(dirPath);
|
|
167
|
+
for (const file of files) {
|
|
168
|
+
console.log(`${file.name} (directory: ${file.isDirectory})`);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Check existence
|
|
172
|
+
const dirExists = await FileSystem.exists(dirPath);
|
|
173
|
+
console.log(dirExists); // true
|
|
174
|
+
|
|
175
|
+
// Recursively delete directory
|
|
176
|
+
await FileSystem.remove(dirPath);
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Get FileProvider URI
|
|
181
|
+
|
|
182
|
+
On Android, a `content://` URI is needed when sharing files with other apps.
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
|
|
186
|
+
|
|
187
|
+
async function shareFile(filePath: string): Promise<string> {
|
|
188
|
+
// Android: returns content:// URI
|
|
189
|
+
// Web: returns blob: URL (must call URL.revokeObjectURL() after use)
|
|
190
|
+
const uri = await FileSystem.getFileUri(filePath);
|
|
191
|
+
return uri;
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
> **Warning**: In web environments, the Blob URL returned by `getFileUri()` must be released by calling `URL.revokeObjectURL(uri)` after use to free memory.
|
|
196
|
+
|
|
197
|
+
## Android Configuration
|
|
198
|
+
|
|
199
|
+
### FileProvider
|
|
200
|
+
|
|
201
|
+
The plugin includes its own `FileSystemProvider`, and the authority is automatically set in the format `${applicationId}.filesystem.provider`. Shareable paths are:
|
|
202
|
+
|
|
203
|
+
- External storage (`external-path`)
|
|
204
|
+
- App-specific external files (`external-files-path`)
|
|
205
|
+
- App-specific external cache (`external-cache-path`)
|
|
206
|
+
- App internal files (`files-path`)
|
|
207
|
+
- App internal cache (`cache-path`)
|
|
208
|
+
|
|
209
|
+
### Minimum SDK Version
|
|
210
|
+
|
|
211
|
+
- `minSdkVersion`: 23 (Android 6.0)
|
|
212
|
+
- `compileSdkVersion`: 35
|
|
213
|
+
|
|
214
|
+
## Web Environment Behavior
|
|
215
|
+
|
|
216
|
+
In web environments, it operates as an IndexedDB-based virtual file system (`VirtualFileSystem`).
|
|
217
|
+
|
|
218
|
+
- Database name: `capacitor_web_virtual_fs`
|
|
219
|
+
- Permission-related methods (`hasPermission`, `requestPermission`) always succeed.
|
|
220
|
+
- `getStoragePath()` returns virtual paths in the format `/webfs/{type}`.
|
|
221
|
+
- `getFileUri()` returns a Blob URL, which must be released with `URL.revokeObjectURL()` after use.
|
|
222
|
+
- File data is base64-encoded and stored in IndexedDB.
|
|
223
|
+
|
|
224
|
+
## License
|
|
225
|
+
|
|
226
|
+
MIT
|
|
@@ -11,6 +11,7 @@ import android.provider.Settings;
|
|
|
11
11
|
import android.util.Base64;
|
|
12
12
|
import android.util.Log;
|
|
13
13
|
|
|
14
|
+
import androidx.core.app.ActivityCompat;
|
|
14
15
|
import androidx.core.content.ContextCompat;
|
|
15
16
|
import androidx.core.content.FileProvider;
|
|
16
17
|
|
|
@@ -28,9 +29,10 @@ import java.nio.charset.StandardCharsets;
|
|
|
28
29
|
public class FileSystemPlugin extends Plugin {
|
|
29
30
|
|
|
30
31
|
private static final String TAG = "FileSystemPlugin";
|
|
32
|
+
private static final int PERMISSION_REQUEST_CODE = 1001;
|
|
31
33
|
|
|
32
34
|
@PluginMethod
|
|
33
|
-
public void
|
|
35
|
+
public void hasPermission(PluginCall call) {
|
|
34
36
|
boolean granted;
|
|
35
37
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
|
36
38
|
granted = Environment.isExternalStorageManager();
|
|
@@ -52,6 +54,20 @@ public class FileSystemPlugin extends Plugin {
|
|
|
52
54
|
intent.setData(Uri.parse("package:" + getContext().getPackageName()));
|
|
53
55
|
getActivity().startActivity(intent);
|
|
54
56
|
}
|
|
57
|
+
} else {
|
|
58
|
+
boolean readGranted = ContextCompat.checkSelfPermission(getContext(),
|
|
59
|
+
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
|
|
60
|
+
boolean writeGranted = ContextCompat.checkSelfPermission(getContext(),
|
|
61
|
+
Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
|
|
62
|
+
|
|
63
|
+
if (!readGranted || !writeGranted) {
|
|
64
|
+
ActivityCompat.requestPermissions(getActivity(),
|
|
65
|
+
new String[]{
|
|
66
|
+
Manifest.permission.READ_EXTERNAL_STORAGE,
|
|
67
|
+
Manifest.permission.WRITE_EXTERNAL_STORAGE
|
|
68
|
+
},
|
|
69
|
+
PERMISSION_REQUEST_CODE);
|
|
70
|
+
}
|
|
55
71
|
}
|
|
56
72
|
call.resolve();
|
|
57
73
|
}
|
package/dist/FileSystem.js
CHANGED
|
@@ -1,111 +1,109 @@
|
|
|
1
1
|
import { registerPlugin } from "@capacitor/core";
|
|
2
|
+
import { bytesToBase64, bytesFromBase64 } from "@simplysm/core-common";
|
|
2
3
|
const FileSystemPlugin = registerPlugin("FileSystem", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
web: async () => {
|
|
5
|
+
const { FileSystemWeb } = await import("./web/FileSystemWeb");
|
|
6
|
+
return new FileSystemWeb();
|
|
7
|
+
}
|
|
7
8
|
});
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
await FileSystemPlugin.writeFile({
|
|
72
|
-
path: filePath,
|
|
73
|
-
data,
|
|
74
|
-
encoding: "utf8",
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* 파일 읽기 (UTF-8 문자열)
|
|
80
|
-
*/
|
|
81
|
-
static async readFileStringAsync(filePath) {
|
|
82
|
-
const result = await FileSystemPlugin.readFile({ path: filePath, encoding: "utf8" });
|
|
83
|
-
return result.data;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* 파일 읽기 (Buffer)
|
|
87
|
-
*/
|
|
88
|
-
static async readFileBufferAsync(filePath) {
|
|
89
|
-
const result = await FileSystemPlugin.readFile({ path: filePath, encoding: "base64" });
|
|
90
|
-
return Buffer.from(result.data, "base64");
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* 파일/디렉토리 삭제 (재귀)
|
|
94
|
-
*/
|
|
95
|
-
static async removeAsync(targetPath) {
|
|
96
|
-
await FileSystemPlugin.remove({ path: targetPath });
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* 디렉토리 생성 (재귀)
|
|
100
|
-
*/
|
|
101
|
-
static async mkdirsAsync(targetPath) {
|
|
102
|
-
await FileSystemPlugin.mkdir({ path: targetPath });
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* 존재 여부 확인
|
|
106
|
-
*/
|
|
107
|
-
static async existsAsync(targetPath) {
|
|
108
|
-
const result = await FileSystemPlugin.exists({ path: targetPath });
|
|
109
|
-
return result.exists;
|
|
9
|
+
class FileSystem {
|
|
10
|
+
/**
|
|
11
|
+
* 권한 확인
|
|
12
|
+
*/
|
|
13
|
+
static async hasPermission() {
|
|
14
|
+
const result = await FileSystemPlugin.hasPermission();
|
|
15
|
+
return result.granted;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 권한 요청
|
|
19
|
+
* - Android 11+: 설정 화면으로 이동
|
|
20
|
+
* - Android 10-: 권한 다이얼로그 표시
|
|
21
|
+
*/
|
|
22
|
+
static async requestPermission() {
|
|
23
|
+
await FileSystemPlugin.requestPermission();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 디렉토리 읽기
|
|
27
|
+
*/
|
|
28
|
+
static async readdir(dirPath) {
|
|
29
|
+
const result = await FileSystemPlugin.readdir({ path: dirPath });
|
|
30
|
+
return result.files;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 저장소 경로 얻기
|
|
34
|
+
* @param type 저장소 타입
|
|
35
|
+
* - external: 외부 저장소 루트 (Environment.getExternalStorageDirectory)
|
|
36
|
+
* - externalFiles: 앱 전용 외부 파일 디렉토리
|
|
37
|
+
* - externalCache: 앱 전용 외부 캐시 디렉토리
|
|
38
|
+
* - externalMedia: 앱 전용 외부 미디어 디렉토리
|
|
39
|
+
* - appData: 앱 데이터 디렉토리
|
|
40
|
+
* - appFiles: 앱 파일 디렉토리
|
|
41
|
+
* - appCache: 앱 캐시 디렉토리
|
|
42
|
+
*/
|
|
43
|
+
static async getStoragePath(type) {
|
|
44
|
+
const result = await FileSystemPlugin.getStoragePath({ type });
|
|
45
|
+
return result.path;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 파일 URI 얻기 (FileProvider)
|
|
49
|
+
*/
|
|
50
|
+
static async getFileUri(filePath) {
|
|
51
|
+
const result = await FileSystemPlugin.getFileUri({ path: filePath });
|
|
52
|
+
return result.uri;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 파일 쓰기
|
|
56
|
+
*/
|
|
57
|
+
static async writeFile(filePath, data) {
|
|
58
|
+
if (typeof data !== "string") {
|
|
59
|
+
await FileSystemPlugin.writeFile({
|
|
60
|
+
path: filePath,
|
|
61
|
+
data: bytesToBase64(data),
|
|
62
|
+
encoding: "base64"
|
|
63
|
+
});
|
|
64
|
+
} else {
|
|
65
|
+
await FileSystemPlugin.writeFile({
|
|
66
|
+
path: filePath,
|
|
67
|
+
data,
|
|
68
|
+
encoding: "utf8"
|
|
69
|
+
});
|
|
110
70
|
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 파일 읽기 (UTF-8 문자열)
|
|
74
|
+
*/
|
|
75
|
+
static async readFileString(filePath) {
|
|
76
|
+
const result = await FileSystemPlugin.readFile({ path: filePath, encoding: "utf8" });
|
|
77
|
+
return result.data;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 파일 읽기 (Bytes)
|
|
81
|
+
*/
|
|
82
|
+
static async readFileBytes(filePath) {
|
|
83
|
+
const result = await FileSystemPlugin.readFile({ path: filePath, encoding: "base64" });
|
|
84
|
+
return bytesFromBase64(result.data);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 파일/디렉토리 삭제 (재귀)
|
|
88
|
+
*/
|
|
89
|
+
static async remove(targetPath) {
|
|
90
|
+
await FileSystemPlugin.remove({ path: targetPath });
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 디렉토리 생성 (재귀)
|
|
94
|
+
*/
|
|
95
|
+
static async mkdir(targetPath) {
|
|
96
|
+
await FileSystemPlugin.mkdir({ path: targetPath });
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 존재 여부 확인
|
|
100
|
+
*/
|
|
101
|
+
static async exists(targetPath) {
|
|
102
|
+
const result = await FileSystemPlugin.exists({ path: targetPath });
|
|
103
|
+
return result.exists;
|
|
104
|
+
}
|
|
111
105
|
}
|
|
106
|
+
export {
|
|
107
|
+
FileSystem
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=FileSystem.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/FileSystem.ts"],
|
|
4
|
+
"sourcesContent": ["import { registerPlugin } from \"@capacitor/core\";\nimport type { IFileInfo, IFileSystemPlugin, TStorage } from \"./IFileSystemPlugin\";\nimport type { Bytes } from \"@simplysm/core-common\";\nimport { bytesToBase64, bytesFromBase64 } from \"@simplysm/core-common\";\n\nconst FileSystemPlugin = registerPlugin<IFileSystemPlugin>(\"FileSystem\", {\n web: async () => {\n const { FileSystemWeb } = await import(\"./web/FileSystemWeb\");\n return new FileSystemWeb();\n },\n});\n\n/**\n * \uD30C\uC77C \uC2DC\uC2A4\uD15C \uC811\uADFC \uD50C\uB7EC\uADF8\uC778\n * - Android 11+: MANAGE_EXTERNAL_STORAGE \uAD8C\uD55C\uC73C\uB85C \uC804\uCCB4 \uD30C\uC77C \uC2DC\uC2A4\uD15C \uC811\uADFC\n * - Android 10-: READ/WRITE_EXTERNAL_STORAGE \uAD8C\uD55C\n * - Browser: IndexedDB \uAE30\uBC18 \uC5D0\uBBAC\uB808\uC774\uC158\n */\nexport abstract class FileSystem {\n /**\n * \uAD8C\uD55C \uD655\uC778\n */\n static async hasPermission(): Promise<boolean> {\n const result = await FileSystemPlugin.hasPermission();\n return result.granted;\n }\n\n /**\n * \uAD8C\uD55C \uC694\uCCAD\n * - Android 11+: \uC124\uC815 \uD654\uBA74\uC73C\uB85C \uC774\uB3D9\n * - Android 10-: \uAD8C\uD55C \uB2E4\uC774\uC5BC\uB85C\uADF8 \uD45C\uC2DC\n */\n static async requestPermission(): Promise<void> {\n await FileSystemPlugin.requestPermission();\n }\n\n /**\n * \uB514\uB809\uD1A0\uB9AC \uC77D\uAE30\n */\n static async readdir(dirPath: string): Promise<IFileInfo[]> {\n const result = await FileSystemPlugin.readdir({ path: dirPath });\n return result.files;\n }\n\n /**\n * \uC800\uC7A5\uC18C \uACBD\uB85C \uC5BB\uAE30\n * @param type \uC800\uC7A5\uC18C \uD0C0\uC785\n * - external: \uC678\uBD80 \uC800\uC7A5\uC18C \uB8E8\uD2B8 (Environment.getExternalStorageDirectory)\n * - externalFiles: \uC571 \uC804\uC6A9 \uC678\uBD80 \uD30C\uC77C \uB514\uB809\uD1A0\uB9AC\n * - externalCache: \uC571 \uC804\uC6A9 \uC678\uBD80 \uCE90\uC2DC \uB514\uB809\uD1A0\uB9AC\n * - externalMedia: \uC571 \uC804\uC6A9 \uC678\uBD80 \uBBF8\uB514\uC5B4 \uB514\uB809\uD1A0\uB9AC\n * - appData: \uC571 \uB370\uC774\uD130 \uB514\uB809\uD1A0\uB9AC\n * - appFiles: \uC571 \uD30C\uC77C \uB514\uB809\uD1A0\uB9AC\n * - appCache: \uC571 \uCE90\uC2DC \uB514\uB809\uD1A0\uB9AC\n */\n static async getStoragePath(type: TStorage): Promise<string> {\n const result = await FileSystemPlugin.getStoragePath({ type });\n return result.path;\n }\n\n /**\n * \uD30C\uC77C URI \uC5BB\uAE30 (FileProvider)\n */\n static async getFileUri(filePath: string): Promise<string> {\n const result = await FileSystemPlugin.getFileUri({ path: filePath });\n return result.uri;\n }\n\n /**\n * \uD30C\uC77C \uC4F0\uAE30\n */\n static async writeFile(filePath: string, data: string | Bytes): Promise<void> {\n if (typeof data !== \"string\") {\n // Bytes (Uint8Array) - cross-realm \uD658\uACBD\uC5D0\uC11C\uB3C4 \uC548\uC804\uD558\uAC8C \uB3D9\uC791\n await FileSystemPlugin.writeFile({\n path: filePath,\n data: bytesToBase64(data),\n encoding: \"base64\",\n });\n } else {\n await FileSystemPlugin.writeFile({\n path: filePath,\n data,\n encoding: \"utf8\",\n });\n }\n }\n\n /**\n * \uD30C\uC77C \uC77D\uAE30 (UTF-8 \uBB38\uC790\uC5F4)\n */\n static async readFileString(filePath: string): Promise<string> {\n const result = await FileSystemPlugin.readFile({ path: filePath, encoding: \"utf8\" });\n return result.data;\n }\n\n /**\n * \uD30C\uC77C \uC77D\uAE30 (Bytes)\n */\n static async readFileBytes(filePath: string): Promise<Bytes> {\n const result = await FileSystemPlugin.readFile({ path: filePath, encoding: \"base64\" });\n return bytesFromBase64(result.data);\n }\n\n /**\n * \uD30C\uC77C/\uB514\uB809\uD1A0\uB9AC \uC0AD\uC81C (\uC7AC\uADC0)\n */\n static async remove(targetPath: string): Promise<void> {\n await FileSystemPlugin.remove({ path: targetPath });\n }\n\n /**\n * \uB514\uB809\uD1A0\uB9AC \uC0DD\uC131 (\uC7AC\uADC0)\n */\n static async mkdir(targetPath: string): Promise<void> {\n await FileSystemPlugin.mkdir({ path: targetPath });\n }\n\n /**\n * \uC874\uC7AC \uC5EC\uBD80 \uD655\uC778\n */\n static async exists(targetPath: string): Promise<boolean> {\n const result = await FileSystemPlugin.exists({ path: targetPath });\n return result.exists;\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,sBAAsB;AAG/B,SAAS,eAAe,uBAAuB;AAE/C,MAAM,mBAAmB,eAAkC,cAAc;AAAA,EACvE,KAAK,YAAY;AACf,UAAM,EAAE,cAAc,IAAI,MAAM,OAAO,qBAAqB;AAC5D,WAAO,IAAI,cAAc;AAAA,EAC3B;AACF,CAAC;AAQM,MAAe,WAAW;AAAA;AAAA;AAAA;AAAA,EAI/B,aAAa,gBAAkC;AAC7C,UAAM,SAAS,MAAM,iBAAiB,cAAc;AACpD,WAAO,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,oBAAmC;AAC9C,UAAM,iBAAiB,kBAAkB;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,QAAQ,SAAuC;AAC1D,UAAM,SAAS,MAAM,iBAAiB,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC/D,WAAO,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,aAAa,eAAe,MAAiC;AAC3D,UAAM,SAAS,MAAM,iBAAiB,eAAe,EAAE,KAAK,CAAC;AAC7D,WAAO,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,WAAW,UAAmC;AACzD,UAAM,SAAS,MAAM,iBAAiB,WAAW,EAAE,MAAM,SAAS,CAAC;AACnE,WAAO,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,UAAU,UAAkB,MAAqC;AAC5E,QAAI,OAAO,SAAS,UAAU;AAE5B,YAAM,iBAAiB,UAAU;AAAA,QAC/B,MAAM;AAAA,QACN,MAAM,cAAc,IAAI;AAAA,QACxB,UAAU;AAAA,MACZ,CAAC;AAAA,IACH,OAAO;AACL,YAAM,iBAAiB,UAAU;AAAA,QAC/B,MAAM;AAAA,QACN;AAAA,QACA,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,eAAe,UAAmC;AAC7D,UAAM,SAAS,MAAM,iBAAiB,SAAS,EAAE,MAAM,UAAU,UAAU,OAAO,CAAC;AACnF,WAAO,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,cAAc,UAAkC;AAC3D,UAAM,SAAS,MAAM,iBAAiB,SAAS,EAAE,MAAM,UAAU,UAAU,SAAS,CAAC;AACrF,WAAO,gBAAgB,OAAO,IAAI;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,OAAO,YAAmC;AACrD,UAAM,iBAAiB,OAAO,EAAE,MAAM,WAAW,CAAC;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,MAAM,YAAmC;AACpD,UAAM,iBAAiB,MAAM,EAAE,MAAM,WAAW,CAAC;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,OAAO,YAAsC;AACxD,UAAM,SAAS,MAAM,iBAAiB,OAAO,EAAE,MAAM,WAAW,CAAC;AACjE,WAAO,OAAO;AAAA,EAChB;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
//# sourceMappingURL=IFileSystemPlugin.js.map
|