@simplysm/capacitor-plugin-file-system 13.0.0-beta.7 β†’ 13.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 (95) hide show
  1. package/README.md +15 -2
  2. package/dist/FileSystem.d.ts.map +1 -0
  3. package/dist/FileSystem.js.map +0 -1
  4. package/dist/IFileSystemPlugin.d.ts.map +1 -0
  5. package/dist/IFileSystemPlugin.js.map +0 -1
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +2 -2
  8. package/dist/index.js.map +0 -1
  9. package/dist/web/FileSystemWeb.d.ts.map +1 -0
  10. package/dist/web/FileSystemWeb.js +1 -1
  11. package/dist/web/FileSystemWeb.js.map +0 -1
  12. package/dist/web/IndexedDbStore.d.ts.map +1 -0
  13. package/dist/web/IndexedDbStore.js.map +0 -1
  14. package/dist/web/VirtualFileSystem.d.ts.map +1 -0
  15. package/dist/web/VirtualFileSystem.js +1 -1
  16. package/dist/web/VirtualFileSystem.js.map +0 -1
  17. package/package.json +3 -3
  18. package/dist/capacitor-plugin-file-system/src/FileSystem.d.ts.map +0 -1
  19. package/dist/capacitor-plugin-file-system/src/IFileSystemPlugin.d.ts.map +0 -1
  20. package/dist/capacitor-plugin-file-system/src/index.d.ts.map +0 -1
  21. package/dist/capacitor-plugin-file-system/src/web/FileSystemWeb.d.ts.map +0 -1
  22. package/dist/capacitor-plugin-file-system/src/web/IndexedDbStore.d.ts.map +0 -1
  23. package/dist/capacitor-plugin-file-system/src/web/VirtualFileSystem.d.ts.map +0 -1
  24. package/dist/core-common/src/common.types.d.ts +0 -74
  25. package/dist/core-common/src/common.types.d.ts.map +0 -1
  26. package/dist/core-common/src/env.d.ts +0 -6
  27. package/dist/core-common/src/env.d.ts.map +0 -1
  28. package/dist/core-common/src/errors/argument-error.d.ts +0 -25
  29. package/dist/core-common/src/errors/argument-error.d.ts.map +0 -1
  30. package/dist/core-common/src/errors/not-implemented-error.d.ts +0 -29
  31. package/dist/core-common/src/errors/not-implemented-error.d.ts.map +0 -1
  32. package/dist/core-common/src/errors/sd-error.d.ts +0 -27
  33. package/dist/core-common/src/errors/sd-error.d.ts.map +0 -1
  34. package/dist/core-common/src/errors/timeout-error.d.ts +0 -31
  35. package/dist/core-common/src/errors/timeout-error.d.ts.map +0 -1
  36. package/dist/core-common/src/extensions/arr-ext.d.ts +0 -15
  37. package/dist/core-common/src/extensions/arr-ext.d.ts.map +0 -1
  38. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +0 -19
  39. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +0 -1
  40. package/dist/core-common/src/extensions/arr-ext.types.d.ts +0 -215
  41. package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +0 -1
  42. package/dist/core-common/src/extensions/map-ext.d.ts +0 -57
  43. package/dist/core-common/src/extensions/map-ext.d.ts.map +0 -1
  44. package/dist/core-common/src/extensions/set-ext.d.ts +0 -36
  45. package/dist/core-common/src/extensions/set-ext.d.ts.map +0 -1
  46. package/dist/core-common/src/features/debounce-queue.d.ts +0 -53
  47. package/dist/core-common/src/features/debounce-queue.d.ts.map +0 -1
  48. package/dist/core-common/src/features/event-emitter.d.ts +0 -66
  49. package/dist/core-common/src/features/event-emitter.d.ts.map +0 -1
  50. package/dist/core-common/src/features/serial-queue.d.ts +0 -47
  51. package/dist/core-common/src/features/serial-queue.d.ts.map +0 -1
  52. package/dist/core-common/src/index.d.ts +0 -32
  53. package/dist/core-common/src/index.d.ts.map +0 -1
  54. package/dist/core-common/src/types/date-only.d.ts +0 -152
  55. package/dist/core-common/src/types/date-only.d.ts.map +0 -1
  56. package/dist/core-common/src/types/date-time.d.ts +0 -96
  57. package/dist/core-common/src/types/date-time.d.ts.map +0 -1
  58. package/dist/core-common/src/types/lazy-gc-map.d.ts +0 -80
  59. package/dist/core-common/src/types/lazy-gc-map.d.ts.map +0 -1
  60. package/dist/core-common/src/types/time.d.ts +0 -68
  61. package/dist/core-common/src/types/time.d.ts.map +0 -1
  62. package/dist/core-common/src/types/uuid.d.ts +0 -35
  63. package/dist/core-common/src/types/uuid.d.ts.map +0 -1
  64. package/dist/core-common/src/utils/bytes.d.ts +0 -51
  65. package/dist/core-common/src/utils/bytes.d.ts.map +0 -1
  66. package/dist/core-common/src/utils/date-format.d.ts +0 -90
  67. package/dist/core-common/src/utils/date-format.d.ts.map +0 -1
  68. package/dist/core-common/src/utils/json.d.ts +0 -34
  69. package/dist/core-common/src/utils/json.d.ts.map +0 -1
  70. package/dist/core-common/src/utils/num.d.ts +0 -60
  71. package/dist/core-common/src/utils/num.d.ts.map +0 -1
  72. package/dist/core-common/src/utils/obj.d.ts +0 -258
  73. package/dist/core-common/src/utils/obj.d.ts.map +0 -1
  74. package/dist/core-common/src/utils/path.d.ts +0 -23
  75. package/dist/core-common/src/utils/path.d.ts.map +0 -1
  76. package/dist/core-common/src/utils/primitive.d.ts +0 -18
  77. package/dist/core-common/src/utils/primitive.d.ts.map +0 -1
  78. package/dist/core-common/src/utils/str.d.ts +0 -103
  79. package/dist/core-common/src/utils/str.d.ts.map +0 -1
  80. package/dist/core-common/src/utils/template-strings.d.ts +0 -84
  81. package/dist/core-common/src/utils/template-strings.d.ts.map +0 -1
  82. package/dist/core-common/src/utils/transferable.d.ts +0 -47
  83. package/dist/core-common/src/utils/transferable.d.ts.map +0 -1
  84. package/dist/core-common/src/utils/wait.d.ts +0 -19
  85. package/dist/core-common/src/utils/wait.d.ts.map +0 -1
  86. package/dist/core-common/src/utils/xml.d.ts +0 -36
  87. package/dist/core-common/src/utils/xml.d.ts.map +0 -1
  88. package/dist/core-common/src/zip/sd-zip.d.ts +0 -80
  89. package/dist/core-common/src/zip/sd-zip.d.ts.map +0 -1
  90. /package/dist/{capacitor-plugin-file-system/src/FileSystem.d.ts β†’ FileSystem.d.ts} +0 -0
  91. /package/dist/{capacitor-plugin-file-system/src/IFileSystemPlugin.d.ts β†’ IFileSystemPlugin.d.ts} +0 -0
  92. /package/dist/{capacitor-plugin-file-system/src/index.d.ts β†’ index.d.ts} +0 -0
  93. /package/dist/{capacitor-plugin-file-system/src/web β†’ web}/FileSystemWeb.d.ts +0 -0
  94. /package/dist/{capacitor-plugin-file-system/src/web β†’ web}/IndexedDbStore.d.ts +0 -0
  95. /package/dist/{capacitor-plugin-file-system/src/web β†’ web}/VirtualFileSystem.d.ts +0 -0
package/README.md CHANGED
@@ -66,6 +66,10 @@ import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
66
66
 
67
67
  ### Type Definitions
68
68
 
69
+ ```typescript
70
+ import type { TStorage, IFileInfo } from "@simplysm/capacitor-plugin-file-system";
71
+ ```
72
+
69
73
  #### `TStorage`
70
74
 
71
75
  A string literal type representing storage types.
@@ -89,6 +93,14 @@ interface IFileInfo {
89
93
  }
90
94
  ```
91
95
 
96
+ #### `IFileSystemPlugin`
97
+
98
+ The low-level Capacitor plugin interface. Not intended for direct use -- use the `FileSystem` static class instead.
99
+
100
+ ```typescript
101
+ import type { IFileSystemPlugin } from "@simplysm/capacitor-plugin-file-system";
102
+ ```
103
+
92
104
  ## Usage Examples
93
105
 
94
106
  ### Check and Request Permission
@@ -132,6 +144,7 @@ async function textFileExample(): Promise<void> {
132
144
 
133
145
  ```typescript
134
146
  import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
147
+ import type { Bytes } from "@simplysm/core-common";
135
148
 
136
149
  async function binaryFileExample(): Promise<void> {
137
150
  const storagePath = await FileSystem.getStoragePath("appFiles");
@@ -141,8 +154,8 @@ async function binaryFileExample(): Promise<void> {
141
154
  const bytes = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f]);
142
155
  await FileSystem.writeFile(filePath, bytes);
143
156
 
144
- // Read as binary
145
- const readBytes = await FileSystem.readFileBytes(filePath);
157
+ // Read as Bytes (Uint8Array alias from @simplysm/core-common)
158
+ const readBytes: Bytes = await FileSystem.readFileBytes(filePath);
146
159
  console.log(readBytes.length); // 5
147
160
  }
148
161
  ```
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSystem.d.ts","sourceRoot":"","sources":["../src/FileSystem.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAqB,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAUnD;;;;;GAKG;AACH,8BAAsB,UAAU;IAC9B;;OAEG;WACU,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAK9C;;;;OAIG;WACU,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;WACU,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK3D;;;;;;;;;;OAUG;WACU,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5D;;OAEG;WACU,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D;;OAEG;WACU,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7E;;OAEG;WACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9D;;OAEG;WACU,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAK5D;;OAEG;WACU,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD;;OAEG;WACU,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;WACU,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAI1D"}
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
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
4
  "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
5
  "names": []
7
6
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IFileSystemPlugin.d.ts","sourceRoot":"","sources":["../src/IFileSystemPlugin.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,UAAU,GACV,eAAe,GACf,eAAe,GACf,eAAe,GACf,SAAS,GACT,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC,CAAC;IACpE,cAAc,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,UAAU,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,SAAS,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7F,MAAM,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACjE"}
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": [],
4
- "sourcesContent": [],
5
4
  "mappings": "",
6
5
  "names": []
7
6
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export * from "./FileSystem";
2
- export * from "./IFileSystemPlugin";
1
+ export * from "./FileSystem.js";
2
+ export * from "./IFileSystemPlugin.js";
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["export * from \"./FileSystem\";\nexport * from \"./IFileSystemPlugin\";\n"],
5
4
  "mappings": "AAAA,cAAc;AACd,cAAc;",
6
5
  "names": []
7
6
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSystemWeb.d.ts","sourceRoot":"","sources":["../../src/web/FileSystemWeb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAInF,qBAAa,aAAc,SAAQ,SAAU,YAAW,iBAAiB;IACvE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqD;IACzE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAE5C,aAAa,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAI9C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC,OAAO,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC;IASnE,cAAc,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAgC5E;;;;OAIG;IACG,UAAU,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAU/D,SAAS,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/F,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAU5F,MAAM,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhD,KAAK,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,MAAM,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;CAItE"}
@@ -1,5 +1,5 @@
1
1
  import { WebPlugin } from "@capacitor/core";
2
- import { VirtualFileSystem } from "./VirtualFileSystem";
2
+ import { VirtualFileSystem } from "./VirtualFileSystem.js";
3
3
  import { bytesToBase64, bytesFromBase64 } from "@simplysm/core-common";
4
4
  class FileSystemWeb extends WebPlugin {
5
5
  _fs = new VirtualFileSystem("capacitor_web_virtual_fs");
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/web/FileSystemWeb.ts"],
4
- "sourcesContent": ["import { WebPlugin } from \"@capacitor/core\";\nimport type { IFileInfo, IFileSystemPlugin, TStorage } from \"../IFileSystemPlugin\";\nimport { VirtualFileSystem } from \"./VirtualFileSystem\";\nimport { bytesToBase64, bytesFromBase64 } from \"@simplysm/core-common\";\n\nexport class FileSystemWeb extends WebPlugin implements IFileSystemPlugin {\n private readonly _fs = new VirtualFileSystem(\"capacitor_web_virtual_fs\");\n private readonly _textEncoder = new TextEncoder();\n private readonly _textDecoder = new TextDecoder();\n\n async hasPermission(): Promise<{ granted: boolean }> {\n return Promise.resolve({ granted: true });\n }\n\n async requestPermission(): Promise<void> {}\n\n async readdir(options: { path: string }): Promise<{ files: IFileInfo[] }> {\n const entry = await this._fs.getEntry(options.path);\n if (!entry || entry.kind !== \"dir\") {\n throw new Error(\"Directory does not exist\");\n }\n const files = await this._fs.listChildren(options.path);\n return { files };\n }\n\n async getStoragePath(options: { type: TStorage }): Promise<{ path: string }> {\n const base = \"/webfs\";\n let storagePath: string;\n switch (options.type) {\n case \"external\":\n storagePath = base + \"/external\";\n break;\n case \"externalFiles\":\n storagePath = base + \"/externalFiles\";\n break;\n case \"externalCache\":\n storagePath = base + \"/externalCache\";\n break;\n case \"externalMedia\":\n storagePath = base + \"/externalMedia\";\n break;\n case \"appData\":\n storagePath = base + \"/appData\";\n break;\n case \"appFiles\":\n storagePath = base + \"/appFiles\";\n break;\n case \"appCache\":\n storagePath = base + \"/appCache\";\n break;\n default:\n throw new Error(\"Unknown storage type: \" + options.type);\n }\n await this._fs.ensureDir(storagePath);\n return { path: storagePath };\n }\n\n /**\n * \uD30C\uC77C\uC758 Blob URL\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @warning \uBC18\uD658\uB41C URI\uB294 \uC0AC\uC6A9 \uD6C4 \uBC18\uB4DC\uC2DC `URL.revokeObjectURL(uri)`\uB97C \uD638\uCD9C\uD558\uC5EC \uD574\uC81C\uD574\uC57C \uD569\uB2C8\uB2E4.\n * \uD574\uC81C\uD558\uC9C0 \uC54A\uC73C\uBA74 \uBA54\uBAA8\uB9AC \uB204\uC218\uAC00 \uBC1C\uC0DD\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\n async getFileUri(options: { path: string }): Promise<{ uri: string }> {\n const entry = await this._fs.getEntry(options.path);\n if (!entry || entry.kind !== \"file\" || entry.dataBase64 == null) {\n throw new Error(\"File not found: \" + options.path);\n }\n const bytes = bytesFromBase64(entry.dataBase64);\n const blob = new Blob([bytes as BlobPart]);\n return { uri: URL.createObjectURL(blob) };\n }\n\n async writeFile(options: { path: string; data: string; encoding?: \"utf8\" | \"base64\" }): Promise<void> {\n const idx = options.path.lastIndexOf(\"/\");\n const dir = idx === -1 ? \".\" : options.path.substring(0, idx) || \"/\";\n await this._fs.ensureDir(dir);\n const dataBase64 =\n options.encoding === \"base64\" ? options.data : bytesToBase64(this._textEncoder.encode(options.data));\n await this._fs.putEntry({ path: options.path, kind: \"file\", dataBase64 });\n }\n\n async readFile(options: { path: string; encoding?: \"utf8\" | \"base64\" }): Promise<{ data: string }> {\n const entry = await this._fs.getEntry(options.path);\n if (!entry || entry.kind !== \"file\" || entry.dataBase64 == null) {\n throw new Error(\"File not found: \" + options.path);\n }\n const data =\n options.encoding === \"base64\" ? entry.dataBase64 : this._textDecoder.decode(bytesFromBase64(entry.dataBase64));\n return { data };\n }\n\n async remove(options: { path: string }): Promise<void> {\n const ok = await this._fs.deleteByPrefix(options.path);\n if (!ok) {\n throw new Error(\"Deletion failed\");\n }\n }\n\n async mkdir(options: { path: string }): Promise<void> {\n await this._fs.ensureDir(options.path);\n }\n\n async exists(options: { path: string }): Promise<{ exists: boolean }> {\n const entry = await this._fs.getEntry(options.path);\n return { exists: !!entry };\n }\n}\n"],
5
4
  "mappings": "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",
6
5
  "names": []
7
6
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDbStore.d.ts","sourceRoot":"","sources":["../../src/web/IndexedDbStore.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,YAAY,EAAE;IAG1C,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;IAiB5B,SAAS,CAAC,CAAC,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,EACxB,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,CAAC,CAAC;IAyBP,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAUnE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrD,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CASjD"}
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/web/IndexedDbStore.ts"],
4
- "sourcesContent": ["export interface IStoreConfig {\n name: string;\n keyPath: string;\n}\n\nexport class IndexedDbStore {\n constructor(\n private readonly _dbName: string,\n private readonly _dbVersion: number,\n private readonly _storeConfigs: IStoreConfig[],\n ) {}\n\n async open(): Promise<IDBDatabase> {\n return new Promise((resolve, reject) => {\n const req = indexedDB.open(this._dbName, this._dbVersion);\n req.onupgradeneeded = () => {\n const db = req.result;\n for (const config of this._storeConfigs) {\n if (!db.objectStoreNames.contains(config.name)) {\n db.createObjectStore(config.name, { keyPath: config.keyPath });\n }\n }\n };\n req.onsuccess = () => resolve(req.result);\n req.onerror = () => reject(req.error);\n req.onblocked = () => reject(new Error(\"Database blocked by another connection\"));\n });\n }\n\n async withStore<T>(\n storeName: string,\n mode: IDBTransactionMode,\n fn: (store: IDBObjectStore) => Promise<T>,\n ): Promise<T> {\n const db = await this.open();\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, mode);\n const store = tx.objectStore(storeName);\n let result: T;\n Promise.resolve(fn(store))\n .then((r) => {\n result = r;\n })\n .catch((err) => {\n db.close();\n reject(err);\n });\n tx.oncomplete = () => {\n db.close();\n resolve(result);\n };\n tx.onerror = () => {\n db.close();\n reject(tx.error);\n };\n });\n }\n\n async get<T>(storeName: string, key: IDBValidKey): Promise<T | undefined> {\n return this.withStore(storeName, \"readonly\", async (store) => {\n return new Promise((resolve, reject) => {\n const req = store.get(key);\n req.onsuccess = () => resolve(req.result as T | undefined);\n req.onerror = () => reject(req.error);\n });\n });\n }\n\n async put(storeName: string, value: unknown): Promise<void> {\n return this.withStore(storeName, \"readwrite\", async (store) => {\n return new Promise((resolve, reject) => {\n const req = store.put(value);\n req.onsuccess = () => resolve();\n req.onerror = () => reject(req.error);\n });\n });\n }\n\n async getAll<T>(storeName: string): Promise<T[]> {\n return this.withStore(storeName, \"readonly\", async (store) => {\n return new Promise((resolve, reject) => {\n const req = store.getAll();\n req.onsuccess = () => resolve(req.result as T[]);\n req.onerror = () => reject(req.error);\n });\n });\n }\n}\n"],
5
4
  "mappings": "AAKO,MAAM,eAAe;AAAA,EAC1B,YACmB,SACA,YACA,eACjB;AAHiB;AACA;AACA;AAAA,EAChB;AAAA,EAEH,MAAM,OAA6B;AACjC,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,MAAM,UAAU,KAAK,KAAK,SAAS,KAAK,UAAU;AACxD,UAAI,kBAAkB,MAAM;AAC1B,cAAM,KAAK,IAAI;AACf,mBAAW,UAAU,KAAK,eAAe;AACvC,cAAI,CAAC,GAAG,iBAAiB,SAAS,OAAO,IAAI,GAAG;AAC9C,eAAG,kBAAkB,OAAO,MAAM,EAAE,SAAS,OAAO,QAAQ,CAAC;AAAA,UAC/D;AAAA,QACF;AAAA,MACF;AACA,UAAI,YAAY,MAAM,QAAQ,IAAI,MAAM;AACxC,UAAI,UAAU,MAAM,OAAO,IAAI,KAAK;AACpC,UAAI,YAAY,MAAM,OAAO,IAAI,MAAM,wCAAwC,CAAC;AAAA,IAClF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,UACJ,WACA,MACA,IACY;AACZ,UAAM,KAAK,MAAM,KAAK,KAAK;AAC3B,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,KAAK,GAAG,YAAY,WAAW,IAAI;AACzC,YAAM,QAAQ,GAAG,YAAY,SAAS;AACtC,UAAI;AACJ,cAAQ,QAAQ,GAAG,KAAK,CAAC,EACtB,KAAK,CAAC,MAAM;AACX,iBAAS;AAAA,MACX,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,WAAG,MAAM;AACT,eAAO,GAAG;AAAA,MACZ,CAAC;AACH,SAAG,aAAa,MAAM;AACpB,WAAG,MAAM;AACT,gBAAQ,MAAM;AAAA,MAChB;AACA,SAAG,UAAU,MAAM;AACjB,WAAG,MAAM;AACT,eAAO,GAAG,KAAK;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAO,WAAmB,KAA0C;AACxE,WAAO,KAAK,UAAU,WAAW,YAAY,OAAO,UAAU;AAC5D,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,cAAM,MAAM,MAAM,IAAI,GAAG;AACzB,YAAI,YAAY,MAAM,QAAQ,IAAI,MAAuB;AACzD,YAAI,UAAU,MAAM,OAAO,IAAI,KAAK;AAAA,MACtC,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,WAAmB,OAA+B;AAC1D,WAAO,KAAK,UAAU,WAAW,aAAa,OAAO,UAAU;AAC7D,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,cAAM,MAAM,MAAM,IAAI,KAAK;AAC3B,YAAI,YAAY,MAAM,QAAQ;AAC9B,YAAI,UAAU,MAAM,OAAO,IAAI,KAAK;AAAA,MACtC,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAU,WAAiC;AAC/C,WAAO,KAAK,UAAU,WAAW,YAAY,OAAO,UAAU;AAC5D,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,cAAM,MAAM,MAAM,OAAO;AACzB,YAAI,YAAY,MAAM,QAAQ,IAAI,MAAa;AAC/C,YAAI,UAAU,MAAM,OAAO,IAAI,KAAK;AAAA,MACtC,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;",
6
5
  "names": []
7
6
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualFileSystem.d.ts","sourceRoot":"","sources":["../../src/web/VirtualFileSystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiB;gBAEzB,MAAM,EAAE,MAAM;IAIpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAIxD,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB1D;;;;;;;OAOG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAiCnD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAehD"}
@@ -1,4 +1,4 @@
1
- import { IndexedDbStore } from "./IndexedDbStore";
1
+ import { IndexedDbStore } from "./IndexedDbStore.js";
2
2
  class VirtualFileSystem {
3
3
  _STORE_NAME = "entries";
4
4
  _db;
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/web/VirtualFileSystem.ts"],
4
- "sourcesContent": ["import type { IFileInfo } from \"../IFileSystemPlugin\";\nimport { IndexedDbStore } from \"./IndexedDbStore\";\n\ninterface FsEntry {\n path: string;\n kind: \"file\" | \"dir\";\n dataBase64?: string;\n}\n\nexport class VirtualFileSystem {\n private readonly _STORE_NAME = \"entries\";\n private readonly _db: IndexedDbStore;\n\n constructor(dbName: string) {\n this._db = new IndexedDbStore(dbName, 1, [{ name: this._STORE_NAME, keyPath: \"path\" }]);\n }\n\n async getEntry(filePath: string): Promise<FsEntry | undefined> {\n return this._db.get<FsEntry>(this._STORE_NAME, filePath);\n }\n\n async putEntry(entry: FsEntry): Promise<void> {\n return this._db.put(this._STORE_NAME, entry);\n }\n\n async deleteByPrefix(pathPrefix: string): Promise<boolean> {\n return this._db.withStore(this._STORE_NAME, \"readwrite\", async (store) => {\n return new Promise((resolve, reject) => {\n const req = store.openCursor();\n let found = false;\n req.onsuccess = () => {\n const cursor = req.result;\n if (!cursor) {\n resolve(found);\n return;\n }\n const key = String(cursor.key);\n if (key === pathPrefix || key.startsWith(pathPrefix + \"/\")) {\n found = true;\n cursor.delete();\n }\n cursor.continue();\n };\n req.onerror = () => reject(req.error);\n });\n });\n }\n\n /**\n * \uB514\uB809\uD1A0\uB9AC\uC758 \uC9C1\uC811 \uC790\uC2DD \uBAA9\uB85D\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param dirPath \uC870\uD68C\uD560 \uB514\uB809\uD1A0\uB9AC \uACBD\uB85C\n * @returns \uC790\uC2DD \uD30C\uC77C/\uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D\n * @note \uC554\uC2DC\uC801 \uB514\uB809\uD1A0\uB9AC \uCC98\uB9AC: \uD30C\uC77C \uACBD\uB85C\uB9CC \uC874\uC7AC\uD558\uACE0 \uB514\uB809\uD1A0\uB9AC \uC5D4\uD2B8\uB9AC\uAC00 \uC5C6\uB294 \uACBD\uC6B0\uC5D0\uB3C4\n * \uC911\uAC04 \uACBD\uB85C\uB294 \uB514\uB809\uD1A0\uB9AC\uB85C \uD310\uC815\uB429\uB2C8\uB2E4. \uC608: \"/a/b/c.txt\"\uB9CC \uC800\uC7A5\uB41C \uC0C1\uD0DC\uC5D0\uC11C\n * listChildren(\"/a\") \uD638\uCD9C \uC2DC \"b\"\uB294 isDirectory: true\uB85C \uBC18\uD658\uB429\uB2C8\uB2E4.\n */\n async listChildren(dirPath: string): Promise<IFileInfo[]> {\n const prefix = dirPath === \"/\" ? \"/\" : dirPath + \"/\";\n return this._db.withStore(this._STORE_NAME, \"readonly\", async (store) => {\n return new Promise((resolve, reject) => {\n const req = store.openCursor();\n const map = new Map<string, boolean>();\n req.onsuccess = () => {\n const cursor = req.result;\n if (!cursor) {\n resolve(Array.from(map.entries()).map(([name, isDirectory]) => ({ name, isDirectory })));\n return;\n }\n const key = String(cursor.key);\n if (key.startsWith(prefix)) {\n const rest = key.slice(prefix.length);\n if (rest) {\n const segments = rest.split(\"/\").filter(Boolean);\n if (segments.length > 0) {\n const firstSeg = segments[0];\n if (!map.has(firstSeg)) {\n const isDir = segments.length > 1 || (cursor.value as FsEntry).kind === \"dir\";\n map.set(firstSeg, isDir);\n }\n }\n }\n }\n cursor.continue();\n };\n req.onerror = () => reject(req.error);\n });\n });\n }\n\n async ensureDir(dirPath: string): Promise<void> {\n if (dirPath === \"/\") {\n await this.putEntry({ path: \"/\", kind: \"dir\" });\n return;\n }\n const segments = dirPath.split(\"/\").filter(Boolean);\n let acc = \"\";\n for (const seg of segments) {\n acc += \"/\" + seg;\n const existing = await this.getEntry(acc);\n if (!existing) {\n await this.putEntry({ path: acc, kind: \"dir\" });\n }\n }\n }\n}\n"],
5
4
  "mappings": "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",
6
5
  "names": []
7
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/capacitor-plugin-file-system",
3
- "version": "13.0.0-beta.7",
3
+ "version": "13.0.2",
4
4
  "description": "μ‹¬ν”Œλ¦¬μ¦˜ νŒ¨ν‚€μ§€ - Capacitor File System Plugin",
5
5
  "author": "κΉ€μ„λž˜",
6
6
  "repository": {
@@ -22,7 +22,7 @@
22
22
  }
23
23
  },
24
24
  "dependencies": {
25
- "@simplysm/core-common": "workspace:*"
25
+ "@simplysm/core-common": "13.0.2"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "@capacitor/core": "^7.4.4"
@@ -30,4 +30,4 @@
30
30
  "devDependencies": {
31
31
  "@capacitor/core": "^7.4.5"
32
32
  }
33
- }
33
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileSystem.d.ts","sourceRoot":"","sources":["../../../src/FileSystem.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAqB,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAUnD;;;;;GAKG;AACH,8BAAsB,UAAU;IAC9B;;OAEG;WACU,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAK9C;;;;OAIG;WACU,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;WACU,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK3D;;;;;;;;;;OAUG;WACU,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5D;;OAEG;WACU,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D;;OAEG;WACU,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7E;;OAEG;WACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9D;;OAEG;WACU,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAK5D;;OAEG;WACU,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD;;OAEG;WACU,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;WACU,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAI1D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IFileSystemPlugin.d.ts","sourceRoot":"","sources":["../../../src/IFileSystemPlugin.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,UAAU,GACV,eAAe,GACf,eAAe,GACf,eAAe,GACf,SAAS,GACT,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC,CAAC;IACpE,cAAc,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,UAAU,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,SAAS,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7F,MAAM,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACjE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileSystemWeb.d.ts","sourceRoot":"","sources":["../../../../src/web/FileSystemWeb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAInF,qBAAa,aAAc,SAAQ,SAAU,YAAW,iBAAiB;IACvE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqD;IACzE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAE5C,aAAa,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAI9C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC,OAAO,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC;IASnE,cAAc,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAgC5E;;;;OAIG;IACG,UAAU,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAU/D,SAAS,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/F,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAU5F,MAAM,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhD,KAAK,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,MAAM,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;CAItE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IndexedDbStore.d.ts","sourceRoot":"","sources":["../../../../src/web/IndexedDbStore.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,YAAY,EAAE;IAG1C,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;IAiB5B,SAAS,CAAC,CAAC,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,EACxB,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,CAAC,CAAC;IAyBP,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAUnE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrD,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CASjD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VirtualFileSystem.d.ts","sourceRoot":"","sources":["../../../../src/web/VirtualFileSystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiB;gBAEzB,MAAM,EAAE,MAAM;IAIpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAIxD,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB1D;;;;;;;OAOG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAiCnD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAehD"}
@@ -1,74 +0,0 @@
1
- import { DateTime } from "./types/date-time";
2
- import { DateOnly } from "./types/date-only";
3
- import { Time } from "./types/time";
4
- import { Uuid } from "./types/uuid";
5
- /**
6
- * Buffer λŒ€μ‹  μ‚¬μš©ν•˜λŠ” λ°”μ΄λ„ˆλ¦¬ νƒ€μž…
7
- */
8
- export type Bytes = Uint8Array;
9
- /**
10
- * Primitive νƒ€μž… λ§€ν•‘
11
- * orm-common과 곡유
12
- */
13
- export type PrimitiveTypeMap = {
14
- string: string;
15
- number: number;
16
- boolean: boolean;
17
- DateTime: DateTime;
18
- DateOnly: DateOnly;
19
- Time: Time;
20
- Uuid: Uuid;
21
- Bytes: Bytes;
22
- };
23
- /**
24
- * Primitive νƒ€μž… λ¬Έμžμ—΄ ν‚€
25
- */
26
- export type PrimitiveTypeStr = keyof PrimitiveTypeMap;
27
- /**
28
- * Primitive νƒ€μž… μœ λ‹ˆμ˜¨
29
- */
30
- export type PrimitiveType = PrimitiveTypeMap[PrimitiveTypeStr] | undefined;
31
- /**
32
- * κΉŠμ€ Partial νƒ€μž…
33
- *
34
- * 객체의 λͺ¨λ“  속성을 μž¬κ·€μ μœΌλ‘œ 선택적(optional)으둜 λ§Œλ“­λ‹ˆλ‹€.
35
- * Primitive νƒ€μž…(string, number, boolean λ“±)은 κ·ΈλŒ€λ‘œ μœ μ§€ν•˜κ³ ,
36
- * 객체/λ°°μ—΄ νƒ€μž…λ§Œ μž¬κ·€μ μœΌλ‘œ Partial을 μ μš©ν•©λ‹ˆλ‹€.
37
- *
38
- * @example
39
- * ```typescript
40
- * interface User {
41
- * name: string;
42
- * profile: {
43
- * age: number;
44
- * address: { city: string };
45
- * };
46
- * }
47
- *
48
- * // λͺ¨λ“  깊이의 속성이 선택적이 됨
49
- * const partial: DeepPartial<User> = {
50
- * profile: { address: {} }
51
- * };
52
- * ```
53
- */
54
- export type DeepPartial<T> = Partial<{
55
- [K in keyof T]: T[K] extends PrimitiveType ? T[K] : DeepPartial<T[K]>;
56
- }>;
57
- /**
58
- * μƒμ„±μž νƒ€μž…
59
- *
60
- * 클래슀 μƒμ„±μžλ₯Ό νƒ€μž…μœΌλ‘œ ν‘œν˜„ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
61
- * 주둜 μ˜μ‘΄μ„± μ£Όμž…, νŒ©ν† λ¦¬ νŒ¨ν„΄, instanceof 체크 λ“±μ—μ„œ ν™œμš©λ©λ‹ˆλ‹€.
62
- *
63
- * @example
64
- * function create<T>(ctor: Type<T>): T {
65
- * return new ctor();
66
- * }
67
- *
68
- * class MyClass { name = "test"; }
69
- * const instance = create(MyClass); // MyClass μΈμŠ€ν„΄μŠ€
70
- */
71
- export interface Type<T> extends Function {
72
- new (...args: unknown[]): T;
73
- }
74
- //# sourceMappingURL=common.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.types.d.ts","sourceRoot":"","sources":["../../../../core-common/src/common.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIpC;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC;AAM/B;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;AAM3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC;KAClC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtE,CAAC,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,CAAE,SAAQ,QAAQ;IACvC,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;CAC7B"}
@@ -1,6 +0,0 @@
1
- export declare const env: {
2
- DEV: boolean;
3
- VER?: string;
4
- [key: string]: unknown;
5
- };
6
- //# sourceMappingURL=env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../core-common/src/env.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,GAAG,EAAE;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAKxB,CAAC"}
@@ -1,25 +0,0 @@
1
- import { SdError } from "./sd-error";
2
- /**
3
- * 인수 였λ₯˜
4
- *
5
- * 잘λͺ»λœ 인수λ₯Ό λ°›μ•˜μ„ λ•Œ λ°œμƒμ‹œν‚€λŠ” μ—λŸ¬μ΄λ‹€.
6
- * 인수 객체λ₯Ό YAML ν˜•μ‹μœΌλ‘œ λ©”μ‹œμ§€μ— ν¬ν•¨ν•˜μ—¬ 디버깅을 μš©μ΄ν•˜κ²Œ ν•œλ‹€.
7
- *
8
- * @example
9
- * // 인수 객체만 전달
10
- * throw new ArgumentError({ userId: 123, name: null });
11
- * // κ²°κ³Ό λ©”μ‹œμ§€: "μΈμˆ˜κ°€ 잘λͺ»λ˜μ—ˆμŠ΅λ‹ˆλ‹€.\n\nuserId: 123\nname: null"
12
- *
13
- * @example
14
- * // μ»€μŠ€ν…€ λ©”μ‹œμ§€μ™€ 인수 객체 전달
15
- * throw new ArgumentError("μœ νš¨ν•˜μ§€ μ•Šμ€ μ‚¬μš©μž", { userId: 123 });
16
- * // κ²°κ³Ό λ©”μ‹œμ§€: "μœ νš¨ν•˜μ§€ μ•Šμ€ μ‚¬μš©μž\n\nuserId: 123"
17
- */
18
- export declare class ArgumentError extends SdError {
19
- /** κΈ°λ³Έ λ©”μ‹œμ§€("μΈμˆ˜κ°€ 잘λͺ»λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")와 ν•¨κ»˜ 인수 객체λ₯Ό YAML ν˜•μ‹μœΌλ‘œ 좜λ ₯ */
20
- constructor(argObj: Record<string, unknown>);
21
- /** μ»€μŠ€ν…€ λ©”μ‹œμ§€μ™€ ν•¨κ»˜ 인수 객체λ₯Ό YAML ν˜•μ‹μœΌλ‘œ 좜λ ₯ */
22
- constructor(message: string, argObj: Record<string, unknown>);
23
- constructor(arg1: Record<string, unknown> | string, arg2?: Record<string, unknown>);
24
- }
25
- //# sourceMappingURL=argument-error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"argument-error.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/errors/argument-error.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAc,SAAQ,OAAO;IACxC,qDAAqD;gBACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3C,sCAAsC;gBAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAChD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAYnF"}
@@ -1,29 +0,0 @@
1
- import { SdError } from "./sd-error";
2
- /**
3
- * λ―Έκ΅¬ν˜„ 였λ₯˜
4
- *
5
- * 아직 κ΅¬ν˜„λ˜μ§€ μ•Šμ€ κΈ°λŠ₯을 ν˜ΈμΆœν–ˆμ„ λ•Œ λ°œμƒμ‹œν‚€λŠ” μ—λŸ¬μ΄λ‹€.
6
- * 좔상 λ©”μ„œλ“œ μŠ€ν…, ν–₯ν›„ κ΅¬ν˜„ μ˜ˆμ •μΈ λΆ„κΈ° 등에 μ‚¬μš©ν•œλ‹€.
7
- *
8
- * @example
9
- * // 좔상 λ©”μ„œλ“œ κ΅¬ν˜„ μ „
10
- * class BaseService {
11
- * process(): void {
12
- * throw new NotImplementedError("μ„œλΈŒν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„ ν•„μš”");
13
- * }
14
- * }
15
- *
16
- * @example
17
- * // ν–₯ν›„ κ΅¬ν˜„ μ˜ˆμ • λΆ„κΈ°
18
- * switch (type) {
19
- * case "A": return handleA();
20
- * case "B": throw new NotImplementedError(`νƒ€μž… ${type} 처리`);
21
- * }
22
- */
23
- export declare class NotImplementedError extends SdError {
24
- /**
25
- * @param message μΆ”κ°€ μ„€λͺ… λ©”μ‹œμ§€
26
- */
27
- constructor(message?: string);
28
- }
29
- //# sourceMappingURL=not-implemented-error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"not-implemented-error.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/errors/not-implemented-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,mBAAoB,SAAQ,OAAO;IAC9C;;OAEG;gBACS,OAAO,CAAC,EAAE,MAAM;CAI7B"}
@@ -1,27 +0,0 @@
1
- /**
2
- * 였λ₯˜μ˜ Tree ꡬ쑰 ꡬ성이 κ°€λŠ₯ν•œ 였λ₯˜ 클래슀
3
- * ES2024 cause 속성 ν™œμš©
4
- *
5
- * @example
6
- * // 원인 μ—λŸ¬λ₯Ό κ°μ‹Έμ„œ 생성
7
- * try {
8
- * await fetch(url);
9
- * } catch (err) {
10
- * throw new SdError(err, "API 호좜 μ‹€νŒ¨", "μ‚¬μš©μž λ‘œλ“œ μ‹€νŒ¨");
11
- * }
12
- * // κ²°κ³Ό λ©”μ‹œμ§€: "μ‚¬μš©μž λ‘œλ“œ μ‹€νŒ¨ => API 호좜 μ‹€νŒ¨ => 원본 μ—λŸ¬ λ©”μ‹œμ§€"
13
- *
14
- * @example
15
- * // λ©”μ‹œμ§€λ§ŒμœΌλ‘œ 생성
16
- * throw new SdError("잘λͺ»λœ μƒνƒœ", "처리 λΆˆκ°€");
17
- * // κ²°κ³Ό λ©”μ‹œμ§€: "처리 λΆˆκ°€ => 잘λͺ»λœ μƒνƒœ"
18
- */
19
- export declare class SdError extends Error {
20
- cause?: Error;
21
- /** 원인 μ—λŸ¬λ₯Ό κ°μ‹Έμ„œ 생성. λ©”μ‹œμ§€λŠ” μ—­μˆœμœΌλ‘œ 연결됨 (μƒμœ„ λ©”μ‹œμ§€ => ν•˜μœ„ λ©”μ‹œμ§€ => 원인 λ©”μ‹œμ§€) */
22
- constructor(cause: Error, ...messages: string[]);
23
- /** λ©”μ‹œμ§€λ§ŒμœΌλ‘œ 생성. λ©”μ‹œμ§€λŠ” μ—­μˆœμœΌλ‘œ 연결됨 (μƒμœ„ λ©”μ‹œμ§€ => ν•˜μœ„ λ©”μ‹œμ§€) */
24
- constructor(...messages: string[]);
25
- constructor(arg1?: unknown, ...messages: string[]);
26
- }
27
- //# sourceMappingURL=sd-error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-error.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/errors/sd-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,OAAQ,SAAQ,KAAK;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;IAEvB,gEAAgE;gBACpD,KAAK,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE;IAC/C,kDAAkD;gBACtC,GAAG,QAAQ,EAAE,MAAM,EAAE;gBACrB,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE;CA2BlD"}
@@ -1,31 +0,0 @@
1
- import { SdError } from "./sd-error";
2
- /**
3
- * νƒ€μž„μ•„μ›ƒ 였λ₯˜
4
- *
5
- * λŒ€κΈ° μ‹œκ°„μ΄ μ΄ˆκ³Όλ˜μ—ˆμ„ λ•Œ λ°œμƒν•˜λŠ” μ—λŸ¬μ΄λ‹€.
6
- * Wait.until() λ“±μ˜ 비동기 λŒ€κΈ° ν•¨μˆ˜μ—μ„œ μ΅œλŒ€ μ‹œλ„ 횟수λ₯Ό μ΄ˆκ³Όν•˜λ©΄ μžλ™μœΌλ‘œ λ°œμƒν•œλ‹€.
7
- *
8
- * @example
9
- * // Wait.untilμ—μ„œ μžλ™ λ°œμƒ
10
- * try {
11
- * await Wait.until(() => isReady, 100, 50); // 100ms 간격, μ΅œλŒ€ 50회
12
- * } catch (err) {
13
- * if (err instanceof TimeoutError) {
14
- * console.log("μ‹œκ°„ 초과");
15
- * }
16
- * }
17
- *
18
- * @example
19
- * // 직접 λ°œμƒ
20
- * if (elapsed > maxTime) {
21
- * throw new TimeoutError(undefined, "API 응닡 λŒ€κΈ° 초과");
22
- * }
23
- */
24
- export declare class TimeoutError extends SdError {
25
- /**
26
- * @param count μ‹œλ„ 횟수
27
- * @param message μΆ”κ°€ λ©”μ‹œμ§€
28
- */
29
- constructor(count?: number, message?: string);
30
- }
31
- //# sourceMappingURL=timeout-error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timeout-error.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/errors/timeout-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,YAAa,SAAQ,OAAO;IACvC;;;OAGG;gBACS,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAM7C"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Array ν™•μž₯ λ©”μ„œλ“œ
3
- *
4
- * @remarks 각 λ©”μ„œλ“œμ˜ TSDoc은 νƒ€μž… μ •μ˜ 파일(arr-ext.types.ts) μ°Έμ‘°
5
- */
6
- import "./map-ext";
7
- import type { ReadonlyArrayExt, MutableArrayExt } from "./arr-ext.types";
8
- declare global {
9
- interface ReadonlyArray<T> extends ReadonlyArrayExt<T> {
10
- }
11
- interface Array<T> extends ReadonlyArrayExt<T>, MutableArrayExt<T> {
12
- }
13
- }
14
- export type { ArrayDiffsResult, ArrayDiffs2Result, TreeArray, ComparableType } from "./arr-ext.types";
15
- //# sourceMappingURL=arr-ext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arr-ext.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/extensions/arr-ext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,WAAW,CAAC;AAUnB,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AA2uBzB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,aAAa,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;KAAG;IACzD,UAAU,KAAK,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;KAAG;CACtE;AAID,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Array ν™•μž₯ 헬퍼 ν•¨μˆ˜
3
- */
4
- import type { ComparableType } from "./arr-ext.types";
5
- /**
6
- * DateTime, DateOnly, Time을 비ꡐ κ°€λŠ₯ν•œ primitive κ°’μœΌλ‘œ λ³€ν™˜
7
- */
8
- export declare function toComparable(value: ComparableType): string | number | boolean | undefined;
9
- /**
10
- * 정렬을 μœ„ν•œ 비ꡐ ν•¨μˆ˜
11
- *
12
- * @param pp 비ꡐ λŒ€μƒ 1
13
- * @param pn 비ꡐ λŒ€μƒ 2
14
- * @param desc true: λ‚΄λ¦Όμ°¨μˆœ, false: μ˜€λ¦„μ°¨μˆœ
15
- * @returns 음수: ppκ°€ μ•ž, 0: κ°™μŒ, μ–‘μˆ˜: pn이 μ•ž
16
- * @note null/undefined 값은 μ˜€λ¦„μ°¨μˆœ μ‹œ μ•žμœΌλ‘œ, λ‚΄λ¦Όμ°¨μˆœ μ‹œ λ’€λ‘œ 정렬됨
17
- */
18
- export declare function compareForOrder(pp: ComparableType, pn: ComparableType, desc: boolean): number;
19
- //# sourceMappingURL=arr-ext.helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arr-ext.helpers.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/extensions/arr-ext.helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAKzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAuB7F"}