@arkade-os/sdk 0.5.0-rc.2 → 0.5.0-rc.4

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 (118) hide show
  1. package/README.md +12 -67
  2. package/dist/adapters/expo.cjs +5 -6
  3. package/dist/adapters/expo.d.cts +2 -2
  4. package/dist/adapters/expo.d.ts +2 -2
  5. package/dist/adapters/expo.js +3 -4
  6. package/dist/{asyncStorageTaskQueue-C5rBYlru.d.ts → asyncStorageTaskQueue-BCiOgs5x.d.ts} +2 -2
  7. package/dist/{asyncStorageTaskQueue-BuDvgWh6.d.cts → asyncStorageTaskQueue-CTIwKrt5.d.cts} +2 -2
  8. package/dist/{chunk-3R476TDV.js → chunk-4EZOMPAO.js} +14 -38
  9. package/dist/chunk-4EZOMPAO.js.map +1 -0
  10. package/dist/{chunk-D25O4EGY.cjs → chunk-5NLJUXXQ.cjs} +10 -10
  11. package/dist/{chunk-D25O4EGY.cjs.map → chunk-5NLJUXXQ.cjs.map} +1 -1
  12. package/dist/{chunk-JZWLXNHV.cjs → chunk-C5Y2R63Z.cjs} +25 -71
  13. package/dist/chunk-C5Y2R63Z.cjs.map +1 -0
  14. package/dist/{chunk-6DNR46C7.js → chunk-CIBGIZUW.js} +4 -4
  15. package/dist/{chunk-6DNR46C7.js.map → chunk-CIBGIZUW.js.map} +1 -1
  16. package/dist/{chunk-43FKNLX4.cjs → chunk-F7HJO5GT.cjs} +61 -85
  17. package/dist/chunk-F7HJO5GT.cjs.map +1 -0
  18. package/dist/{chunk-ISO4TI5J.js → chunk-GLZNJFAT.js} +25 -67
  19. package/dist/chunk-GLZNJFAT.js.map +1 -0
  20. package/dist/{chunk-HLCGYOIH.cjs → chunk-GPJSGLWM.cjs} +17 -17
  21. package/dist/{chunk-HLCGYOIH.cjs.map → chunk-GPJSGLWM.cjs.map} +1 -1
  22. package/dist/{chunk-ZOTXDOS5.js → chunk-MOWSLXGO.js} +4 -4
  23. package/dist/{chunk-ZOTXDOS5.js.map → chunk-MOWSLXGO.js.map} +1 -1
  24. package/dist/{chunk-ZRNQV6HV.js → chunk-PYTAH2NY.js} +167 -703
  25. package/dist/chunk-PYTAH2NY.js.map +1 -0
  26. package/dist/{chunk-NVZJSKZS.cjs → chunk-SYRQJS5N.cjs} +18 -19
  27. package/dist/chunk-SYRQJS5N.cjs.map +1 -0
  28. package/dist/{chunk-4PKLULWT.js → chunk-XHASFSDU.js} +3 -4
  29. package/dist/chunk-XHASFSDU.js.map +1 -0
  30. package/dist/{chunk-GMZZQXV5.cjs → chunk-ZHLYFRYY.cjs} +583 -1128
  31. package/dist/chunk-ZHLYFRYY.cjs.map +1 -0
  32. package/dist/contracts/handlers/index.cjs +9 -10
  33. package/dist/contracts/handlers/index.d.cts +3 -3
  34. package/dist/contracts/handlers/index.d.ts +3 -3
  35. package/dist/contracts/handlers/index.js +2 -3
  36. package/dist/{delegate-1yp1HyP7.d.cts → delegate-CpQIgTs7.d.cts} +1 -1
  37. package/dist/{delegate-BAX5QftB.d.ts → delegate-Dv-us16c.d.ts} +1 -1
  38. package/dist/{hdWalletCapable-CmEU0NP1.d.ts → hdWalletCapable-BC4Fmmht.d.ts} +7 -25
  39. package/dist/{hdWalletCapable-eJgaT-ec.d.cts → hdWalletCapable-DotEa5rZ.d.cts} +7 -25
  40. package/dist/{index-DUxufw76.d.ts → index-Czz9HSqE.d.cts} +21 -220
  41. package/dist/{index-DUxufw76.d.cts → index-Czz9HSqE.d.ts} +21 -220
  42. package/dist/{index-Bem5vKzX.d.ts → index-DUkvXxpt.d.ts} +3 -3
  43. package/dist/{index-W_oMcOmG.d.cts → index-DdJt5fRc.d.cts} +3 -3
  44. package/dist/index.cjs +291 -340
  45. package/dist/index.d.cts +58 -223
  46. package/dist/index.d.ts +58 -223
  47. package/dist/index.js +4 -5
  48. package/dist/repositories/realm/index.cjs +57 -24
  49. package/dist/repositories/realm/index.cjs.map +1 -1
  50. package/dist/repositories/realm/index.d.cts +12 -4
  51. package/dist/repositories/realm/index.d.ts +12 -4
  52. package/dist/repositories/realm/index.js +43 -10
  53. package/dist/repositories/realm/index.js.map +1 -1
  54. package/dist/repositories/sqlite/index.cjs +103 -33
  55. package/dist/repositories/sqlite/index.cjs.map +1 -1
  56. package/dist/repositories/sqlite/index.d.cts +12 -2
  57. package/dist/repositories/sqlite/index.d.ts +12 -2
  58. package/dist/repositories/sqlite/index.js +90 -20
  59. package/dist/repositories/sqlite/index.js.map +1 -1
  60. package/dist/{taskRunner-Dr3NStc0.d.cts → taskRunner-7E_Rx8bD.d.cts} +2 -2
  61. package/dist/{taskRunner-D_iPiZIi.d.ts → taskRunner-DUId1UJ8.d.ts} +2 -2
  62. package/dist/wallet/expo/background.cjs +14 -15
  63. package/dist/wallet/expo/background.cjs.map +1 -1
  64. package/dist/wallet/expo/background.d.cts +3 -3
  65. package/dist/wallet/expo/background.d.ts +3 -3
  66. package/dist/wallet/expo/background.js +6 -7
  67. package/dist/wallet/expo/background.js.map +1 -1
  68. package/dist/wallet/expo/index.cjs +15 -23
  69. package/dist/wallet/expo/index.cjs.map +1 -1
  70. package/dist/wallet/expo/index.d.cts +4 -7
  71. package/dist/wallet/expo/index.d.ts +4 -7
  72. package/dist/wallet/expo/index.js +7 -15
  73. package/dist/wallet/expo/index.js.map +1 -1
  74. package/dist/worker/expo/index.cjs +9 -10
  75. package/dist/worker/expo/index.cjs.map +1 -1
  76. package/dist/worker/expo/index.d.cts +4 -4
  77. package/dist/worker/expo/index.d.ts +4 -4
  78. package/dist/worker/expo/index.js +5 -6
  79. package/dist/worker/expo/index.js.map +1 -1
  80. package/package.json +4 -42
  81. package/dist/adapters/asyncStorage.cjs +0 -48
  82. package/dist/adapters/asyncStorage.cjs.map +0 -1
  83. package/dist/adapters/asyncStorage.d.cts +0 -16
  84. package/dist/adapters/asyncStorage.d.ts +0 -16
  85. package/dist/adapters/asyncStorage.js +0 -46
  86. package/dist/adapters/asyncStorage.js.map +0 -1
  87. package/dist/adapters/fileSystem.cjs +0 -116
  88. package/dist/adapters/fileSystem.cjs.map +0 -1
  89. package/dist/adapters/fileSystem.d.cts +0 -17
  90. package/dist/adapters/fileSystem.d.ts +0 -17
  91. package/dist/adapters/fileSystem.js +0 -93
  92. package/dist/adapters/fileSystem.js.map +0 -1
  93. package/dist/adapters/indexedDB.cjs +0 -103
  94. package/dist/adapters/indexedDB.cjs.map +0 -1
  95. package/dist/adapters/indexedDB.d.cts +0 -18
  96. package/dist/adapters/indexedDB.d.ts +0 -18
  97. package/dist/adapters/indexedDB.js +0 -101
  98. package/dist/adapters/indexedDB.js.map +0 -1
  99. package/dist/adapters/localStorage.cjs +0 -50
  100. package/dist/adapters/localStorage.cjs.map +0 -1
  101. package/dist/adapters/localStorage.d.cts +0 -14
  102. package/dist/adapters/localStorage.d.ts +0 -14
  103. package/dist/adapters/localStorage.js +0 -48
  104. package/dist/adapters/localStorage.js.map +0 -1
  105. package/dist/chunk-3R476TDV.js.map +0 -1
  106. package/dist/chunk-43FKNLX4.cjs.map +0 -1
  107. package/dist/chunk-4PKLULWT.js.map +0 -1
  108. package/dist/chunk-5BLDMQED.cjs +0 -18
  109. package/dist/chunk-5BLDMQED.cjs.map +0 -1
  110. package/dist/chunk-GMZZQXV5.cjs.map +0 -1
  111. package/dist/chunk-ISO4TI5J.js.map +0 -1
  112. package/dist/chunk-JZWLXNHV.cjs.map +0 -1
  113. package/dist/chunk-NSBPE2FW.js +0 -15
  114. package/dist/chunk-NSBPE2FW.js.map +0 -1
  115. package/dist/chunk-NVZJSKZS.cjs.map +0 -1
  116. package/dist/chunk-ZRNQV6HV.js.map +0 -1
  117. package/dist/index-C0IanN1m.d.cts +0 -11
  118. package/dist/index-C0IanN1m.d.ts +0 -11
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/storage/indexedDB.ts"],"names":["DB_VERSION"],"mappings":"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","file":"indexedDB.cjs","sourcesContent":["import type { StorageAdapter } from \"./index\";\nimport { DB_VERSION } from \"../repositories/indexedDB/db\";\n\n/**\n * @deprecated Use repository implementations via `StorageConfig` instead.\n */\nexport class IndexedDBStorageAdapter implements StorageAdapter {\n private dbName: string;\n private version: number;\n private db: IDBDatabase | null = null;\n\n constructor(dbName: string, version: number = DB_VERSION) {\n this.dbName = dbName;\n this.version = version;\n }\n\n private async getDB(): Promise<IDBDatabase> {\n if (this.db) return this.db;\n\n const globalObject = typeof window === \"undefined\" ? self : window;\n\n if (!(globalObject && \"indexedDB\" in globalObject)) {\n throw new Error(\"IndexedDB is not available in this environment\");\n }\n\n return new Promise((resolve, reject) => {\n const request = globalObject.indexedDB.open(this.dbName, this.version);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n this.db = request.result;\n resolve(this.db);\n };\n\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(\"storage\")) {\n db.createObjectStore(\"storage\");\n }\n };\n });\n }\n\n async getItem(key: string): Promise<string | null> {\n try {\n const db = await this.getDB();\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"storage\"], \"readonly\");\n const store = transaction.objectStore(\"storage\");\n const request = store.get(key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n resolve(request.result || null);\n };\n });\n } catch (error) {\n console.error(`Failed to get item for key ${key}:`, error);\n return null;\n }\n }\n\n async setItem(key: string, value: string): Promise<void> {\n try {\n const db = await this.getDB();\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"storage\"], \"readwrite\");\n const store = transaction.objectStore(\"storage\");\n const request = store.put(value, key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n } catch (error) {\n console.error(`Failed to set item for key ${key}:`, error);\n throw error;\n }\n }\n\n async removeItem(key: string): Promise<void> {\n try {\n const db = await this.getDB();\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"storage\"], \"readwrite\");\n const store = transaction.objectStore(\"storage\");\n const request = store.delete(key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n } catch (error) {\n console.error(`Failed to remove item for key ${key}:`, error);\n }\n }\n\n async clear(): Promise<void> {\n try {\n const db = await this.getDB();\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"storage\"], \"readwrite\");\n const store = transaction.objectStore(\"storage\");\n const request = store.clear();\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n } catch (error) {\n console.error(\"Failed to clear storage:\", error);\n }\n }\n}\n"]}
@@ -1,18 +0,0 @@
1
- import { S as StorageAdapter } from '../index-C0IanN1m.cjs';
2
-
3
- /**
4
- * @deprecated Use repository implementations via `StorageConfig` instead.
5
- */
6
- declare class IndexedDBStorageAdapter implements StorageAdapter {
7
- private dbName;
8
- private version;
9
- private db;
10
- constructor(dbName: string, version?: number);
11
- private getDB;
12
- getItem(key: string): Promise<string | null>;
13
- setItem(key: string, value: string): Promise<void>;
14
- removeItem(key: string): Promise<void>;
15
- clear(): Promise<void>;
16
- }
17
-
18
- export { IndexedDBStorageAdapter, StorageAdapter };
@@ -1,18 +0,0 @@
1
- import { S as StorageAdapter } from '../index-C0IanN1m.js';
2
-
3
- /**
4
- * @deprecated Use repository implementations via `StorageConfig` instead.
5
- */
6
- declare class IndexedDBStorageAdapter implements StorageAdapter {
7
- private dbName;
8
- private version;
9
- private db;
10
- constructor(dbName: string, version?: number);
11
- private getDB;
12
- getItem(key: string): Promise<string | null>;
13
- setItem(key: string, value: string): Promise<void>;
14
- removeItem(key: string): Promise<void>;
15
- clear(): Promise<void>;
16
- }
17
-
18
- export { IndexedDBStorageAdapter, StorageAdapter };
@@ -1,101 +0,0 @@
1
- import { DB_VERSION } from '../chunk-ZRNQV6HV.js';
2
- import '../chunk-4PKLULWT.js';
3
- import '../chunk-3R476TDV.js';
4
- import '../chunk-ISO4TI5J.js';
5
- import '../chunk-NSBPE2FW.js';
6
-
7
- // src/storage/indexedDB.ts
8
- var IndexedDBStorageAdapter = class {
9
- dbName;
10
- version;
11
- db = null;
12
- constructor(dbName, version = DB_VERSION) {
13
- this.dbName = dbName;
14
- this.version = version;
15
- }
16
- async getDB() {
17
- if (this.db) return this.db;
18
- const globalObject = typeof window === "undefined" ? self : window;
19
- if (!(globalObject && "indexedDB" in globalObject)) {
20
- throw new Error("IndexedDB is not available in this environment");
21
- }
22
- return new Promise((resolve, reject) => {
23
- const request = globalObject.indexedDB.open(this.dbName, this.version);
24
- request.onerror = () => reject(request.error);
25
- request.onsuccess = () => {
26
- this.db = request.result;
27
- resolve(this.db);
28
- };
29
- request.onupgradeneeded = () => {
30
- const db = request.result;
31
- if (!db.objectStoreNames.contains("storage")) {
32
- db.createObjectStore("storage");
33
- }
34
- };
35
- });
36
- }
37
- async getItem(key) {
38
- try {
39
- const db = await this.getDB();
40
- return new Promise((resolve, reject) => {
41
- const transaction = db.transaction(["storage"], "readonly");
42
- const store = transaction.objectStore("storage");
43
- const request = store.get(key);
44
- request.onerror = () => reject(request.error);
45
- request.onsuccess = () => {
46
- resolve(request.result || null);
47
- };
48
- });
49
- } catch (error) {
50
- console.error(`Failed to get item for key ${key}:`, error);
51
- return null;
52
- }
53
- }
54
- async setItem(key, value) {
55
- try {
56
- const db = await this.getDB();
57
- return new Promise((resolve, reject) => {
58
- const transaction = db.transaction(["storage"], "readwrite");
59
- const store = transaction.objectStore("storage");
60
- const request = store.put(value, key);
61
- request.onerror = () => reject(request.error);
62
- request.onsuccess = () => resolve();
63
- });
64
- } catch (error) {
65
- console.error(`Failed to set item for key ${key}:`, error);
66
- throw error;
67
- }
68
- }
69
- async removeItem(key) {
70
- try {
71
- const db = await this.getDB();
72
- return new Promise((resolve, reject) => {
73
- const transaction = db.transaction(["storage"], "readwrite");
74
- const store = transaction.objectStore("storage");
75
- const request = store.delete(key);
76
- request.onerror = () => reject(request.error);
77
- request.onsuccess = () => resolve();
78
- });
79
- } catch (error) {
80
- console.error(`Failed to remove item for key ${key}:`, error);
81
- }
82
- }
83
- async clear() {
84
- try {
85
- const db = await this.getDB();
86
- return new Promise((resolve, reject) => {
87
- const transaction = db.transaction(["storage"], "readwrite");
88
- const store = transaction.objectStore("storage");
89
- const request = store.clear();
90
- request.onerror = () => reject(request.error);
91
- request.onsuccess = () => resolve();
92
- });
93
- } catch (error) {
94
- console.error("Failed to clear storage:", error);
95
- }
96
- }
97
- };
98
-
99
- export { IndexedDBStorageAdapter };
100
- //# sourceMappingURL=indexedDB.js.map
101
- //# sourceMappingURL=indexedDB.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/storage/indexedDB.ts"],"names":[],"mappings":"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","file":"indexedDB.js","sourcesContent":["import type { StorageAdapter } from \"./index\";\nimport { DB_VERSION } from \"../repositories/indexedDB/db\";\n\n/**\n * @deprecated Use repository implementations via `StorageConfig` instead.\n */\nexport class IndexedDBStorageAdapter implements StorageAdapter {\n private dbName: string;\n private version: number;\n private db: IDBDatabase | null = null;\n\n constructor(dbName: string, version: number = DB_VERSION) {\n this.dbName = dbName;\n this.version = version;\n }\n\n private async getDB(): Promise<IDBDatabase> {\n if (this.db) return this.db;\n\n const globalObject = typeof window === \"undefined\" ? self : window;\n\n if (!(globalObject && \"indexedDB\" in globalObject)) {\n throw new Error(\"IndexedDB is not available in this environment\");\n }\n\n return new Promise((resolve, reject) => {\n const request = globalObject.indexedDB.open(this.dbName, this.version);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n this.db = request.result;\n resolve(this.db);\n };\n\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(\"storage\")) {\n db.createObjectStore(\"storage\");\n }\n };\n });\n }\n\n async getItem(key: string): Promise<string | null> {\n try {\n const db = await this.getDB();\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"storage\"], \"readonly\");\n const store = transaction.objectStore(\"storage\");\n const request = store.get(key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n resolve(request.result || null);\n };\n });\n } catch (error) {\n console.error(`Failed to get item for key ${key}:`, error);\n return null;\n }\n }\n\n async setItem(key: string, value: string): Promise<void> {\n try {\n const db = await this.getDB();\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"storage\"], \"readwrite\");\n const store = transaction.objectStore(\"storage\");\n const request = store.put(value, key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n } catch (error) {\n console.error(`Failed to set item for key ${key}:`, error);\n throw error;\n }\n }\n\n async removeItem(key: string): Promise<void> {\n try {\n const db = await this.getDB();\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"storage\"], \"readwrite\");\n const store = transaction.objectStore(\"storage\");\n const request = store.delete(key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n } catch (error) {\n console.error(`Failed to remove item for key ${key}:`, error);\n }\n }\n\n async clear(): Promise<void> {\n try {\n const db = await this.getDB();\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"storage\"], \"readwrite\");\n const store = transaction.objectStore(\"storage\");\n const request = store.clear();\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n } catch (error) {\n console.error(\"Failed to clear storage:\", error);\n }\n }\n}\n"]}
@@ -1,50 +0,0 @@
1
- 'use strict';
2
-
3
- require('../chunk-5BLDMQED.cjs');
4
-
5
- // src/storage/localStorage.ts
6
- var LocalStorageAdapter = class {
7
- getSafeLocalStorage() {
8
- try {
9
- if (typeof window === "undefined" || !window.localStorage) {
10
- return null;
11
- }
12
- window.localStorage.length;
13
- return window.localStorage;
14
- } catch {
15
- return null;
16
- }
17
- }
18
- async getItem(key) {
19
- const localStorage = this.getSafeLocalStorage();
20
- if (!localStorage) {
21
- throw new Error("localStorage is not available in this environment");
22
- }
23
- return localStorage.getItem(key);
24
- }
25
- async setItem(key, value) {
26
- const localStorage = this.getSafeLocalStorage();
27
- if (!localStorage) {
28
- throw new Error("localStorage is not available in this environment");
29
- }
30
- localStorage.setItem(key, value);
31
- }
32
- async removeItem(key) {
33
- const localStorage = this.getSafeLocalStorage();
34
- if (!localStorage) {
35
- throw new Error("localStorage is not available in this environment");
36
- }
37
- localStorage.removeItem(key);
38
- }
39
- async clear() {
40
- const localStorage = this.getSafeLocalStorage();
41
- if (!localStorage) {
42
- throw new Error("localStorage is not available in this environment");
43
- }
44
- localStorage.clear();
45
- }
46
- };
47
-
48
- exports.LocalStorageAdapter = LocalStorageAdapter;
49
- //# sourceMappingURL=localStorage.cjs.map
50
- //# sourceMappingURL=localStorage.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/storage/localStorage.ts"],"names":[],"mappings":";;;;;AAKO,IAAM,sBAAN,MAAoD;AAAA,EAC/C,mBAAA,GAAsC;AAC1C,IAAA,IAAI;AACA,MAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,CAAC,OAAO,YAAA,EAAc;AACvD,QAAA,OAAO,IAAA;AAAA,MACX;AAEA,MAAA,MAAA,CAAO,YAAA,CAAa,MAAA;AACpB,MAAA,OAAO,MAAA,CAAO,YAAA;AAAA,IAClB,CAAA,CAAA,MAAQ;AAEJ,MAAA,OAAO,IAAA;AAAA,IACX;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ,GAAA,EAAqC;AAC/C,IAAA,MAAM,YAAA,GAAe,KAAK,mBAAA,EAAoB;AAC9C,IAAA,IAAI,CAAC,YAAA,EAAc;AACf,MAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,IACvE;AACA,IAAA,OAAO,YAAA,CAAa,QAAQ,GAAG,CAAA;AAAA,EACnC;AAAA,EAEA,MAAM,OAAA,CAAQ,GAAA,EAAa,KAAA,EAA8B;AACrD,IAAA,MAAM,YAAA,GAAe,KAAK,mBAAA,EAAoB;AAC9C,IAAA,IAAI,CAAC,YAAA,EAAc;AACf,MAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,IACvE;AACA,IAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA,EACnC;AAAA,EAEA,MAAM,WAAW,GAAA,EAA4B;AACzC,IAAA,MAAM,YAAA,GAAe,KAAK,mBAAA,EAAoB;AAC9C,IAAA,IAAI,CAAC,YAAA,EAAc;AACf,MAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,IACvE;AACA,IAAA,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA,EAC/B;AAAA,EAEA,MAAM,KAAA,GAAuB;AACzB,IAAA,MAAM,YAAA,GAAe,KAAK,mBAAA,EAAoB;AAC9C,IAAA,IAAI,CAAC,YAAA,EAAc;AACf,MAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,IACvE;AACA,IAAA,YAAA,CAAa,KAAA,EAAM;AAAA,EACvB;AACJ","file":"localStorage.cjs","sourcesContent":["import type { StorageAdapter } from \"./index\";\n\n/**\n * @deprecated Use repository implementations via `StorageConfig` instead.\n */\nexport class LocalStorageAdapter implements StorageAdapter {\n private getSafeLocalStorage(): Storage | null {\n try {\n if (typeof window === \"undefined\" || !window.localStorage) {\n return null;\n }\n // Test access to ensure localStorage is actually available\n window.localStorage.length;\n return window.localStorage;\n } catch {\n // localStorage may throw in some environments (e.g., private browsing, disabled storage)\n return null;\n }\n }\n\n async getItem(key: string): Promise<string | null> {\n const localStorage = this.getSafeLocalStorage();\n if (!localStorage) {\n throw new Error(\"localStorage is not available in this environment\");\n }\n return localStorage.getItem(key);\n }\n\n async setItem(key: string, value: string): Promise<void> {\n const localStorage = this.getSafeLocalStorage();\n if (!localStorage) {\n throw new Error(\"localStorage is not available in this environment\");\n }\n localStorage.setItem(key, value);\n }\n\n async removeItem(key: string): Promise<void> {\n const localStorage = this.getSafeLocalStorage();\n if (!localStorage) {\n throw new Error(\"localStorage is not available in this environment\");\n }\n localStorage.removeItem(key);\n }\n\n async clear(): Promise<void> {\n const localStorage = this.getSafeLocalStorage();\n if (!localStorage) {\n throw new Error(\"localStorage is not available in this environment\");\n }\n localStorage.clear();\n }\n}\n"]}
@@ -1,14 +0,0 @@
1
- import { S as StorageAdapter } from '../index-C0IanN1m.cjs';
2
-
3
- /**
4
- * @deprecated Use repository implementations via `StorageConfig` instead.
5
- */
6
- declare class LocalStorageAdapter implements StorageAdapter {
7
- private getSafeLocalStorage;
8
- getItem(key: string): Promise<string | null>;
9
- setItem(key: string, value: string): Promise<void>;
10
- removeItem(key: string): Promise<void>;
11
- clear(): Promise<void>;
12
- }
13
-
14
- export { LocalStorageAdapter, StorageAdapter };
@@ -1,14 +0,0 @@
1
- import { S as StorageAdapter } from '../index-C0IanN1m.js';
2
-
3
- /**
4
- * @deprecated Use repository implementations via `StorageConfig` instead.
5
- */
6
- declare class LocalStorageAdapter implements StorageAdapter {
7
- private getSafeLocalStorage;
8
- getItem(key: string): Promise<string | null>;
9
- setItem(key: string, value: string): Promise<void>;
10
- removeItem(key: string): Promise<void>;
11
- clear(): Promise<void>;
12
- }
13
-
14
- export { LocalStorageAdapter, StorageAdapter };
@@ -1,48 +0,0 @@
1
- import '../chunk-NSBPE2FW.js';
2
-
3
- // src/storage/localStorage.ts
4
- var LocalStorageAdapter = class {
5
- getSafeLocalStorage() {
6
- try {
7
- if (typeof window === "undefined" || !window.localStorage) {
8
- return null;
9
- }
10
- window.localStorage.length;
11
- return window.localStorage;
12
- } catch {
13
- return null;
14
- }
15
- }
16
- async getItem(key) {
17
- const localStorage = this.getSafeLocalStorage();
18
- if (!localStorage) {
19
- throw new Error("localStorage is not available in this environment");
20
- }
21
- return localStorage.getItem(key);
22
- }
23
- async setItem(key, value) {
24
- const localStorage = this.getSafeLocalStorage();
25
- if (!localStorage) {
26
- throw new Error("localStorage is not available in this environment");
27
- }
28
- localStorage.setItem(key, value);
29
- }
30
- async removeItem(key) {
31
- const localStorage = this.getSafeLocalStorage();
32
- if (!localStorage) {
33
- throw new Error("localStorage is not available in this environment");
34
- }
35
- localStorage.removeItem(key);
36
- }
37
- async clear() {
38
- const localStorage = this.getSafeLocalStorage();
39
- if (!localStorage) {
40
- throw new Error("localStorage is not available in this environment");
41
- }
42
- localStorage.clear();
43
- }
44
- };
45
-
46
- export { LocalStorageAdapter };
47
- //# sourceMappingURL=localStorage.js.map
48
- //# sourceMappingURL=localStorage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/storage/localStorage.ts"],"names":[],"mappings":";;;AAKO,IAAM,sBAAN,MAAoD;AAAA,EAC/C,mBAAA,GAAsC;AAC1C,IAAA,IAAI;AACA,MAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,CAAC,OAAO,YAAA,EAAc;AACvD,QAAA,OAAO,IAAA;AAAA,MACX;AAEA,MAAA,MAAA,CAAO,YAAA,CAAa,MAAA;AACpB,MAAA,OAAO,MAAA,CAAO,YAAA;AAAA,IAClB,CAAA,CAAA,MAAQ;AAEJ,MAAA,OAAO,IAAA;AAAA,IACX;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ,GAAA,EAAqC;AAC/C,IAAA,MAAM,YAAA,GAAe,KAAK,mBAAA,EAAoB;AAC9C,IAAA,IAAI,CAAC,YAAA,EAAc;AACf,MAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,IACvE;AACA,IAAA,OAAO,YAAA,CAAa,QAAQ,GAAG,CAAA;AAAA,EACnC;AAAA,EAEA,MAAM,OAAA,CAAQ,GAAA,EAAa,KAAA,EAA8B;AACrD,IAAA,MAAM,YAAA,GAAe,KAAK,mBAAA,EAAoB;AAC9C,IAAA,IAAI,CAAC,YAAA,EAAc;AACf,MAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,IACvE;AACA,IAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA,EACnC;AAAA,EAEA,MAAM,WAAW,GAAA,EAA4B;AACzC,IAAA,MAAM,YAAA,GAAe,KAAK,mBAAA,EAAoB;AAC9C,IAAA,IAAI,CAAC,YAAA,EAAc;AACf,MAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,IACvE;AACA,IAAA,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA,EAC/B;AAAA,EAEA,MAAM,KAAA,GAAuB;AACzB,IAAA,MAAM,YAAA,GAAe,KAAK,mBAAA,EAAoB;AAC9C,IAAA,IAAI,CAAC,YAAA,EAAc;AACf,MAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,IACvE;AACA,IAAA,YAAA,CAAa,KAAA,EAAM;AAAA,EACvB;AACJ","file":"localStorage.js","sourcesContent":["import type { StorageAdapter } from \"./index\";\n\n/**\n * @deprecated Use repository implementations via `StorageConfig` instead.\n */\nexport class LocalStorageAdapter implements StorageAdapter {\n private getSafeLocalStorage(): Storage | null {\n try {\n if (typeof window === \"undefined\" || !window.localStorage) {\n return null;\n }\n // Test access to ensure localStorage is actually available\n window.localStorage.length;\n return window.localStorage;\n } catch {\n // localStorage may throw in some environments (e.g., private browsing, disabled storage)\n return null;\n }\n }\n\n async getItem(key: string): Promise<string | null> {\n const localStorage = this.getSafeLocalStorage();\n if (!localStorage) {\n throw new Error(\"localStorage is not available in this environment\");\n }\n return localStorage.getItem(key);\n }\n\n async setItem(key: string, value: string): Promise<void> {\n const localStorage = this.getSafeLocalStorage();\n if (!localStorage) {\n throw new Error(\"localStorage is not available in this environment\");\n }\n localStorage.setItem(key, value);\n }\n\n async removeItem(key: string): Promise<void> {\n const localStorage = this.getSafeLocalStorage();\n if (!localStorage) {\n throw new Error(\"localStorage is not available in this environment\");\n }\n localStorage.removeItem(key);\n }\n\n async clear(): Promise<void> {\n const localStorage = this.getSafeLocalStorage();\n if (!localStorage) {\n throw new Error(\"localStorage is not available in this environment\");\n }\n localStorage.clear();\n }\n}\n"]}