strata-storage 2.6.1 → 2.7.1
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/AI-INTEGRATION-GUIDE.md +129 -11
- package/README.md +42 -64
- package/android/AGENTS.md +18 -3
- package/android/CLAUDE.md +36 -3
- package/android/build.gradle +5 -1
- package/android/src/main/java/com/strata/storage/EncryptedStorage.java +31 -18
- package/android/src/main/java/com/strata/storage/FilesystemStorage.java +62 -10
- package/android/src/main/java/com/strata/storage/SQLiteStorage.java +65 -13
- package/android/src/main/java/com/strata/storage/SharedPreferencesStorage.java +63 -51
- package/android/src/main/java/com/stratastorage/StrataStoragePlugin.java +80 -11
- package/dist/README.md +42 -64
- package/dist/adapters/capacitor/FilesystemAdapter.d.ts +2 -2
- package/dist/adapters/capacitor/FilesystemAdapter.d.ts.map +1 -1
- package/dist/adapters/capacitor/FilesystemAdapter.js +6 -2
- package/dist/adapters/capacitor/PreferencesAdapter.d.ts +2 -2
- package/dist/adapters/capacitor/PreferencesAdapter.d.ts.map +1 -1
- package/dist/adapters/capacitor/PreferencesAdapter.js +6 -2
- package/dist/adapters/capacitor/SecureAdapter.d.ts +3 -3
- package/dist/adapters/capacitor/SecureAdapter.d.ts.map +1 -1
- package/dist/adapters/capacitor/SecureAdapter.js +6 -2
- package/dist/adapters/capacitor/SqliteAdapter.d.ts +24 -3
- package/dist/adapters/capacitor/SqliteAdapter.d.ts.map +1 -1
- package/dist/adapters/capacitor/SqliteAdapter.js +105 -23
- package/dist/adapters/capacitor/index.d.ts +4 -4
- package/dist/adapters/web/CacheAdapter.d.ts +2 -2
- package/dist/adapters/web/CacheAdapter.d.ts.map +1 -1
- package/dist/adapters/web/CacheAdapter.js +20 -5
- package/dist/adapters/web/CookieAdapter.d.ts +2 -2
- package/dist/adapters/web/CookieAdapter.d.ts.map +1 -1
- package/dist/adapters/web/CookieAdapter.js +27 -3
- package/dist/adapters/web/IndexedDBAdapter.d.ts +10 -3
- package/dist/adapters/web/IndexedDBAdapter.d.ts.map +1 -1
- package/dist/adapters/web/IndexedDBAdapter.js +19 -4
- package/dist/adapters/web/LocalStorageAdapter.d.ts +2 -2
- package/dist/adapters/web/LocalStorageAdapter.d.ts.map +1 -1
- package/dist/adapters/web/LocalStorageAdapter.js +15 -1
- package/dist/adapters/web/MemoryAdapter.d.ts +9 -2
- package/dist/adapters/web/MemoryAdapter.d.ts.map +1 -1
- package/dist/adapters/web/MemoryAdapter.js +22 -5
- package/dist/adapters/web/SessionStorageAdapter.d.ts +10 -10
- package/dist/adapters/web/SessionStorageAdapter.d.ts.map +1 -1
- package/dist/adapters/web/SessionStorageAdapter.js +17 -3
- package/dist/adapters/web/URLAdapter.d.ts +2 -2
- package/dist/adapters/web/index.d.ts +7 -7
- package/dist/capacitor.d.ts +6 -6
- package/dist/capacitor.d.ts.map +1 -1
- package/dist/capacitor.js +5 -4
- package/dist/core/AdapterRegistry.d.ts +1 -1
- package/dist/core/BaseAdapter.d.ts +21 -5
- package/dist/core/BaseAdapter.d.ts.map +1 -1
- package/dist/core/BaseAdapter.js +29 -1
- package/dist/core/Strata.d.ts +53 -7
- package/dist/core/Strata.d.ts.map +1 -1
- package/dist/core/Strata.js +581 -125
- package/dist/features/compression/index.d.ts +1 -1
- package/dist/features/compression.d.ts +28 -9
- package/dist/features/compression.d.ts.map +1 -1
- package/dist/features/compression.js +164 -77
- package/dist/features/encryption/index.d.ts +1 -1
- package/dist/features/encryption.d.ts +55 -2
- package/dist/features/encryption.d.ts.map +1 -1
- package/dist/features/encryption.js +139 -26
- package/dist/features/migration.d.ts +1 -1
- package/dist/features/migration.d.ts.map +1 -1
- package/dist/features/migration.js +7 -2
- package/dist/features/observer/index.d.ts +1 -1
- package/dist/features/observer.d.ts +1 -1
- package/dist/features/query/index.d.ts +1 -1
- package/dist/features/query.d.ts +2 -1
- package/dist/features/query.d.ts.map +1 -1
- package/dist/features/query.js +32 -7
- package/dist/features/sync/index.d.ts +1 -1
- package/dist/features/sync.d.ts +19 -3
- package/dist/features/sync.d.ts.map +1 -1
- package/dist/features/sync.js +75 -12
- package/dist/features/ttl/index.d.ts +1 -1
- package/dist/features/ttl.d.ts +2 -2
- package/dist/features/ttl.d.ts.map +1 -1
- package/dist/features/ttl.js +4 -2
- package/dist/firebase.d.ts +1 -1
- package/dist/firebase.d.ts.map +1 -1
- package/dist/firebase.js +72 -10
- package/dist/index.d.ts +24 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/integrations/angular/index.d.ts +2 -2
- package/dist/integrations/angular/index.d.ts.map +1 -1
- package/dist/integrations/angular/index.js +7 -8
- package/dist/integrations/react/index.d.ts +3 -3
- package/dist/integrations/react/index.d.ts.map +1 -1
- package/dist/integrations/react/index.js +16 -4
- package/dist/integrations/vue/index.d.ts +2 -2
- package/dist/integrations/vue/index.d.ts.map +1 -1
- package/dist/integrations/vue/index.js +5 -2
- package/dist/package.json +11 -2
- package/dist/plugin/definitions.d.ts +29 -3
- package/dist/plugin/definitions.d.ts.map +1 -1
- package/dist/plugin/index.d.ts +2 -2
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +3 -0
- package/dist/plugin/web.d.ts +11 -2
- package/dist/plugin/web.d.ts.map +1 -1
- package/dist/plugin/web.js +23 -4
- package/dist/types/index.d.ts +50 -20
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -10
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +7 -0
- package/ios/AGENTS.md +14 -3
- package/ios/CLAUDE.md +25 -3
- package/ios/Plugin/FilesystemStorage.swift +19 -0
- package/ios/Plugin/SQLiteStorage.swift +59 -9
- package/ios/Plugin/StrataStoragePlugin.m +1 -0
- package/ios/Plugin/StrataStoragePlugin.swift +87 -34
- package/ios/Plugin/UserDefaultsStorage.swift +47 -46
- package/package.json +27 -24
- package/scripts/build.js +46 -27
- package/scripts/cli.js +1 -1
- package/scripts/configure.js +2 -2
- package/scripts/postinstall.js +3 -2
- package/dist/android/AGENTS.md +0 -51
- package/dist/android/CLAUDE.md +0 -89
- package/dist/android/build.gradle +0 -58
- package/dist/android/proguard-rules.pro +0 -11
- package/dist/android/settings.gradle +0 -2
- package/dist/android/src/main/AndroidManifest.xml +0 -2
- package/dist/android/src/main/java/com/strata/storage/EncryptedStorage.java +0 -218
- package/dist/android/src/main/java/com/strata/storage/FilesystemStorage.java +0 -287
- package/dist/android/src/main/java/com/strata/storage/SQLiteStorage.java +0 -371
- package/dist/android/src/main/java/com/strata/storage/SharedPreferencesStorage.java +0 -209
- package/dist/android/src/main/java/com/stratastorage/StrataStoragePlugin.java +0 -616
- package/dist/core/StorageStrategy.d.ts +0 -55
- package/dist/core/StorageStrategy.d.ts.map +0 -1
- package/dist/core/StorageStrategy.js +0 -200
- package/dist/ios/AGENTS.md +0 -48
- package/dist/ios/CLAUDE.md +0 -84
- package/dist/ios/Plugin/FilesystemStorage.swift +0 -218
- package/dist/ios/Plugin/KeychainStorage.swift +0 -233
- package/dist/ios/Plugin/SQLiteStorage.swift +0 -426
- package/dist/ios/Plugin/StrataStoragePlugin.m +0 -23
- package/dist/ios/Plugin/StrataStoragePlugin.swift +0 -411
- package/dist/ios/Plugin/UserDefaultsStorage.swift +0 -87
package/dist/firebase.d.ts
CHANGED
package/dist/firebase.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.d.ts","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"firebase.d.ts","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA4DD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,IAAI,CAAC,CAkPf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ5D"}
|
package/dist/firebase.js
CHANGED
|
@@ -1,4 +1,58 @@
|
|
|
1
1
|
import { StorageError } from "./utils/errors.js";
|
|
2
|
+
function isStorageValue(value) {
|
|
3
|
+
return (typeof value === 'object' &&
|
|
4
|
+
value !== null &&
|
|
5
|
+
'value' in value &&
|
|
6
|
+
'created' in value &&
|
|
7
|
+
'updated' in value);
|
|
8
|
+
}
|
|
9
|
+
function isPlainObject(value) {
|
|
10
|
+
if (typeof value !== 'object' || value === null)
|
|
11
|
+
return false;
|
|
12
|
+
const proto = Object.getPrototypeOf(value);
|
|
13
|
+
return proto === Object.prototype || proto === null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Recursively drop `undefined`-valued keys. Firestore `setDoc()` and Realtime
|
|
17
|
+
* Database `set()` both throw on `undefined` field values, and the StorageValue
|
|
18
|
+
* wrapper Strata builds always carries `expires`/`tags`/`metadata` keys that are
|
|
19
|
+
* `undefined` for a plain write — so writing it verbatim breaks the happy path.
|
|
20
|
+
* Only plain objects/arrays are traversed, so Dates and other class instances
|
|
21
|
+
* are preserved as-is.
|
|
22
|
+
*/
|
|
23
|
+
function stripUndefined(input) {
|
|
24
|
+
if (Array.isArray(input)) {
|
|
25
|
+
return input.map((item) => stripUndefined(item));
|
|
26
|
+
}
|
|
27
|
+
if (isPlainObject(input)) {
|
|
28
|
+
const out = {};
|
|
29
|
+
for (const [key, val] of Object.entries(input)) {
|
|
30
|
+
if (val === undefined)
|
|
31
|
+
continue;
|
|
32
|
+
out[key] = stripUndefined(val);
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
return input;
|
|
37
|
+
}
|
|
38
|
+
function normalizeRemoteValue(value) {
|
|
39
|
+
if (!value)
|
|
40
|
+
return null;
|
|
41
|
+
if (isStorageValue(value))
|
|
42
|
+
return value;
|
|
43
|
+
if (typeof value === 'object' && value !== null && 'value' in value) {
|
|
44
|
+
const now = Date.now();
|
|
45
|
+
const timestamp = value.timestamp;
|
|
46
|
+
const created = typeof timestamp === 'number' ? timestamp : now;
|
|
47
|
+
return {
|
|
48
|
+
value: value.value,
|
|
49
|
+
created,
|
|
50
|
+
updated: created,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const now = Date.now();
|
|
54
|
+
return { value, created: now, updated: now };
|
|
55
|
+
}
|
|
2
56
|
/**
|
|
3
57
|
* Enable Firebase sync for Strata Storage
|
|
4
58
|
* This dynamically imports Firebase SDK only when needed
|
|
@@ -42,11 +96,11 @@ export async function enableFirebaseSync(storage, config) {
|
|
|
42
96
|
async get(key) {
|
|
43
97
|
const docRef = doc(db, collectionName, key);
|
|
44
98
|
const docSnap = await getDoc(docRef);
|
|
45
|
-
return docSnap.exists() ? docSnap.data() : null;
|
|
99
|
+
return docSnap.exists() ? normalizeRemoteValue(docSnap.data()) : null;
|
|
46
100
|
},
|
|
47
101
|
async set(key, value) {
|
|
48
102
|
const docRef = doc(db, collectionName, key);
|
|
49
|
-
await setDoc(docRef,
|
|
103
|
+
await setDoc(docRef, stripUndefined(value));
|
|
50
104
|
},
|
|
51
105
|
async remove(key) {
|
|
52
106
|
const docRef = doc(db, collectionName, key);
|
|
@@ -99,11 +153,11 @@ export async function enableFirebaseSync(storage, config) {
|
|
|
99
153
|
snapshot
|
|
100
154
|
.docChanges()
|
|
101
155
|
.forEach((change) => {
|
|
102
|
-
const docData = change.doc.data();
|
|
156
|
+
const docData = normalizeRemoteValue(change.doc.data());
|
|
103
157
|
callback({
|
|
104
158
|
key: change.doc.id,
|
|
105
|
-
oldValue: change.type === 'removed' ? docData
|
|
106
|
-
newValue: change.type !== 'removed' ? docData
|
|
159
|
+
oldValue: change.type === 'removed' ? docData : undefined,
|
|
160
|
+
newValue: change.type !== 'removed' ? docData : undefined,
|
|
107
161
|
source: 'remote',
|
|
108
162
|
storage: 'firestore',
|
|
109
163
|
timestamp: Date.now(),
|
|
@@ -140,10 +194,10 @@ export async function enableFirebaseSync(storage, config) {
|
|
|
140
194
|
},
|
|
141
195
|
async get(key) {
|
|
142
196
|
const snapshot = await get(ref(db, `strata-storage/${key}`));
|
|
143
|
-
return snapshot.exists() ? snapshot.val() : null;
|
|
197
|
+
return snapshot.exists() ? normalizeRemoteValue(snapshot.val()) : null;
|
|
144
198
|
},
|
|
145
199
|
async set(key, value) {
|
|
146
|
-
await set(ref(db, `strata-storage/${key}`), value);
|
|
200
|
+
await set(ref(db, `strata-storage/${key}`), stripUndefined(value));
|
|
147
201
|
},
|
|
148
202
|
async remove(key) {
|
|
149
203
|
await remove(ref(db, `strata-storage/${key}`));
|
|
@@ -180,9 +234,9 @@ export async function enableFirebaseSync(storage, config) {
|
|
|
180
234
|
: {};
|
|
181
235
|
const allKeys = new Set([...Object.keys(previousData), ...Object.keys(currentData)]);
|
|
182
236
|
allKeys.forEach((key) => {
|
|
183
|
-
const oldValue = previousData[key];
|
|
184
|
-
const newValue = currentData[key];
|
|
185
|
-
if (oldValue !== newValue) {
|
|
237
|
+
const oldValue = normalizeRemoteValue(previousData[key]);
|
|
238
|
+
const newValue = normalizeRemoteValue(currentData[key]);
|
|
239
|
+
if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {
|
|
186
240
|
callback({
|
|
187
241
|
key,
|
|
188
242
|
oldValue,
|
|
@@ -205,6 +259,14 @@ export async function enableFirebaseSync(storage, config) {
|
|
|
205
259
|
// Cast to unknown first to bypass type checking for custom adapter
|
|
206
260
|
storage.registerAdapter(realtimeAdapter);
|
|
207
261
|
}
|
|
262
|
+
// Attach the freshly registered adapters to the active set so they join
|
|
263
|
+
// multi-adapter operations (subscribe/keys/clear/size) immediately — not
|
|
264
|
+
// only after an explicit `{ storage: 'firestore' }` call. Mirrors
|
|
265
|
+
// registerCapacitorAdapters(). Without this, a top-level subscribe() issued
|
|
266
|
+
// before any firestore op never wires up the onSnapshot listener.
|
|
267
|
+
if (config.firestore || config.realtimeDatabase) {
|
|
268
|
+
await storage.refreshAdapters();
|
|
269
|
+
}
|
|
208
270
|
// Firebase sync enabled successfully
|
|
209
271
|
}
|
|
210
272
|
catch (error) {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
export { Strata } from
|
|
2
|
-
export { BaseAdapter } from
|
|
3
|
-
export { AdapterRegistry } from
|
|
4
|
-
export { LocalStorageAdapter } from
|
|
5
|
-
export { SessionStorageAdapter } from
|
|
6
|
-
export { IndexedDBAdapter } from
|
|
7
|
-
export { CookieAdapter } from
|
|
8
|
-
export { CacheAdapter } from
|
|
9
|
-
export { MemoryAdapter } from
|
|
10
|
-
export { URLAdapter, type URLAdapterConfig } from
|
|
11
|
-
export { EncryptionManager } from
|
|
12
|
-
export { CompressionManager } from
|
|
13
|
-
export { TTLManager } from
|
|
14
|
-
export { QueryEngine } from
|
|
15
|
-
export { SyncManager } from
|
|
16
|
-
export { StorageObserver } from
|
|
17
|
-
export { computeChecksum, verifyChecksum } from
|
|
18
|
-
export {
|
|
19
|
-
export type {
|
|
20
|
-
export {
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
export { Strata } from "./core/Strata.js";
|
|
2
|
+
export { BaseAdapter } from "./core/BaseAdapter.js";
|
|
3
|
+
export { AdapterRegistry } from "./core/AdapterRegistry.js";
|
|
4
|
+
export { LocalStorageAdapter } from "./adapters/web/LocalStorageAdapter.js";
|
|
5
|
+
export { SessionStorageAdapter } from "./adapters/web/SessionStorageAdapter.js";
|
|
6
|
+
export { IndexedDBAdapter } from "./adapters/web/IndexedDBAdapter.js";
|
|
7
|
+
export { CookieAdapter } from "./adapters/web/CookieAdapter.js";
|
|
8
|
+
export { CacheAdapter } from "./adapters/web/CacheAdapter.js";
|
|
9
|
+
export { MemoryAdapter } from "./adapters/web/MemoryAdapter.js";
|
|
10
|
+
export { URLAdapter, type URLAdapterConfig } from "./adapters/web/URLAdapter.js";
|
|
11
|
+
export { EncryptionManager } from "./features/encryption.js";
|
|
12
|
+
export { CompressionManager } from "./features/compression.js";
|
|
13
|
+
export { TTLManager } from "./features/ttl.js";
|
|
14
|
+
export { QueryEngine } from "./features/query.js";
|
|
15
|
+
export { SyncManager } from "./features/sync.js";
|
|
16
|
+
export { StorageObserver } from "./features/observer.js";
|
|
17
|
+
export { computeChecksum, verifyChecksum } from "./features/integrity.js";
|
|
18
|
+
export { MigrationManager } from "./features/migration.js";
|
|
19
|
+
export type { Migration } from "./features/migration.js";
|
|
20
|
+
export { StrataError, StorageError, IntegrityError, QuotaExceededError, EncryptionError, CompressionError, SerializationError, ValidationError, NotSupportedError, AdapterNotAvailableError, } from "./utils/errors.js";
|
|
21
|
+
export type { StorageType, StorageOptions, StorageValue, StorageAdapter, AdapterConfig, QueryOptions, SyncConfig, EncryptionConfig, CompressionConfig, ObserverCallback, StorageEvent, StorageCapabilities, StorageMetadata, TTLConfig, StrataConfig, StorageChange, SubscriptionCallback, UnsubscribeFunction, } from "./types/index.js";
|
|
22
|
+
export { isValidKey, isValidValue, serializeValue, deserializeValue, generateId, createError, retry, debounce, throttle, } from "./utils/index.js";
|
|
23
|
+
import { Strata } from "./core/Strata.js";
|
|
24
|
+
import type { StrataConfig } from "./types/index.js";
|
|
23
25
|
/**
|
|
24
26
|
* Register the standard web storage adapters on a Strata instance: memory,
|
|
25
27
|
* localStorage, sessionStorage, indexedDB, cookies, and cache. Exported so any
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,WAAW,EACX,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,EACb,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAQvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY1D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAE3D;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,WAAW,EACX,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,EACb,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAQvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY1D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAE3D;AAMD,QAAA,MAAM,OAAO,QAEX,CAAC;AAEH;;;;GAIG;AACH,iBAAe,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEhD;AAGD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAGtC,eAAe,OAAO,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,9 @@ export { QueryEngine } from "./features/query.js";
|
|
|
18
18
|
export { SyncManager } from "./features/sync.js";
|
|
19
19
|
export { StorageObserver } from "./features/observer.js";
|
|
20
20
|
export { computeChecksum, verifyChecksum } from "./features/integrity.js";
|
|
21
|
+
// Migrations — standalone, adapter-level utility (experimental). Operates on a
|
|
22
|
+
// StorageAdapter, NOT via StrataConfig. See docs/api/features/migration.md.
|
|
23
|
+
export { MigrationManager } from "./features/migration.js";
|
|
21
24
|
// Error classes (exported as values so consumers can use `instanceof`)
|
|
22
25
|
export { StrataError, StorageError, IntegrityError, QuotaExceededError, EncryptionError, CompressionError, SerializationError, ValidationError, NotSupportedError, AdapterNotAvailableError, } from "./utils/errors.js";
|
|
23
26
|
// Utils
|
|
@@ -72,8 +75,10 @@ export function defineStorage(config) {
|
|
|
72
75
|
}
|
|
73
76
|
// Default singleton — created via the same factory so behavior is identical.
|
|
74
77
|
// It initializes lazily on first use, so importing the package has no I/O cost.
|
|
78
|
+
// Persistent backends are preferred first so default writes survive a reload;
|
|
79
|
+
// volatile `memory` is the last-resort fallback (e.g. SSR / no web storage).
|
|
75
80
|
const storage = defineStorage({
|
|
76
|
-
defaultStorages: ['
|
|
81
|
+
defaultStorages: ['localStorage', 'indexedDB', 'sessionStorage', 'memory'],
|
|
77
82
|
});
|
|
78
83
|
/**
|
|
79
84
|
* Force initialization of the default `storage` singleton and await readiness.
|
|
@@ -5,8 +5,8 @@ import { InjectionToken } from '@angular/core';
|
|
|
5
5
|
import type { OnDestroy, ModuleWithProviders, PipeTransform, OnInit, Provider } from '@angular/core';
|
|
6
6
|
import { NgControl } from '@angular/forms';
|
|
7
7
|
import { Observable } from 'rxjs';
|
|
8
|
-
import { Strata } from
|
|
9
|
-
import type { StrataConfig, StorageOptions, StorageChange, QueryCondition } from
|
|
8
|
+
import { Strata } from "../../core/Strata.js";
|
|
9
|
+
import type { StrataConfig, StorageOptions, StorageChange, QueryCondition } from "../../types/index.js";
|
|
10
10
|
export declare const STRATA_CONFIG: InjectionToken<StrataConfig>;
|
|
11
11
|
export declare const STRATA_INSTANCE: InjectionToken<Strata>;
|
|
12
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/angular/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAEL,cAAc,EAQf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,QAAQ,EACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/angular/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,9 +16,10 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
16
16
|
var StrataModule_1;
|
|
17
17
|
import { Injectable, InjectionToken, Inject, Optional, NgModule, Pipe, Directive, Input, HostListener, } from '@angular/core';
|
|
18
18
|
import { NgControl } from '@angular/forms';
|
|
19
|
-
import { Observable, BehaviorSubject, Subject, from, interval,
|
|
20
|
-
import {
|
|
19
|
+
import { Observable, BehaviorSubject, Subject, from, interval, merge, throwError } from 'rxjs';
|
|
20
|
+
import { switchMap, catchError, takeUntil, distinctUntilChanged, shareReplay, startWith, filter, } from 'rxjs/operators';
|
|
21
21
|
import { Strata } from "../../core/Strata.js";
|
|
22
|
+
import { registerWebAdapters } from "../../index.js";
|
|
22
23
|
import { logger } from "../../utils/logger.js";
|
|
23
24
|
// Configuration / instance injection tokens
|
|
24
25
|
export const STRATA_CONFIG = new InjectionToken('strata.config');
|
|
@@ -33,8 +34,9 @@ let StrataService = class StrataService {
|
|
|
33
34
|
changes$ = new Subject();
|
|
34
35
|
constructor(instance, config) {
|
|
35
36
|
// Prefer a caller-provided instance (provider-free pattern); otherwise build
|
|
36
|
-
// one from the optional config token
|
|
37
|
-
|
|
37
|
+
// one from the optional config token WITH the standard web adapters
|
|
38
|
+
// registered, so the classic service path works out of the box.
|
|
39
|
+
this.strata = instance ?? registerWebAdapters(new Strata(config));
|
|
38
40
|
this.initialize();
|
|
39
41
|
}
|
|
40
42
|
async initialize() {
|
|
@@ -127,10 +129,7 @@ let StrataService = class StrataService {
|
|
|
127
129
|
* Watch a specific key
|
|
128
130
|
*/
|
|
129
131
|
watch(key, options) {
|
|
130
|
-
return
|
|
131
|
-
this.get(key, options),
|
|
132
|
-
this.changes.pipe(filter((change) => change.key === key), map((change) => change.newValue)),
|
|
133
|
-
]).pipe(map(([initial]) => initial), distinctUntilChanged(), shareReplay(1), takeUntil(this.destroy$));
|
|
132
|
+
return this.ready$.pipe(switchMap(() => merge(from(this.strata.get(key, options)), this.changes.pipe(filter((change) => change.key === key), switchMap(() => from(this.strata.get(key, options)))))), distinctUntilChanged(), shareReplay(1), takeUntil(this.destroy$));
|
|
134
133
|
}
|
|
135
134
|
/**
|
|
136
135
|
* Get TTL for a key
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
* 2. Provider-based (classic): wrap the tree in <StrataProvider> and call the
|
|
17
17
|
* exported hooks, which read the instance from context.
|
|
18
18
|
*/
|
|
19
|
-
import { Strata } from
|
|
20
|
-
import type { StrataConfig, StorageOptions, QueryCondition } from
|
|
19
|
+
import { Strata } from "../../core/Strata.js";
|
|
20
|
+
import type { StrataConfig, StorageOptions, QueryCondition } from "../../types/index.js";
|
|
21
21
|
/**
|
|
22
22
|
* Bind the Strata hooks to a specific instance — the framework-agnostic,
|
|
23
23
|
* no-Provider pattern (mirrors Zustand's `create`). Call once at module scope
|
|
@@ -54,7 +54,7 @@ interface StrataProviderProps {
|
|
|
54
54
|
loadingComponent?: React.ReactNode;
|
|
55
55
|
fallback?: React.ReactNode;
|
|
56
56
|
}
|
|
57
|
-
export declare function StrataProvider({ children, config, instance, loadingComponent, fallback, }: StrataProviderProps): import("react
|
|
57
|
+
export declare function StrataProvider({ children, config, instance, loadingComponent, fallback, }: StrataProviderProps): import("react").JSX.Element;
|
|
58
58
|
export declare function useStrata(): Strata;
|
|
59
59
|
export declare function useStrataInitialized(): boolean;
|
|
60
60
|
export declare function useStorage<T = unknown>(key: string, defaultValue?: T, options?: StorageOptions): [T | null, (value: T | null, options?: StorageOptions) => Promise<void>, boolean];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/react/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/react/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAiB,cAAc,EAAE,MAAM,SAAS,CAAC;AAkI3F;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM;iBAC1B,CAAC,iBAAiB,MAAM,iBAAiB,CAAC,YAAY,cAAc,4CAjIhD,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC;sBAoI/C,CAAC,uBAAuB,cAAc,YAAY,cAAc;;iBAhFnE,MAAM;;;iBAAwB,OAAO;iBAAW,MAAM,OAAO,CAAC,IAAI,CAAC;;yBAmF7D,MAAM,YAAY,cAAc;;+BAtCxC,MAAM;;;EA0C3B;AAgBD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,QAAQ,GACT,EAAE,mBAAmB,+BAkCrB;AAED,wBAAgB,SAAS,IAAI,MAAM,CAalC;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,UAAU,CAAC,CAAC,GAAG,OAAO,EACpC,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,CAAC,EAChB,OAAO,CAAC,EAAE,cAAc,GACvB,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAEnF;AAED,wBAAgB,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,cAAc;;aArLxE,MAAM;;;aAAwB,OAAO;aAAW,MAAM,OAAO,CAAC,IAAI,CAAC;EAuL1F;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;;2BA5I7C,MAAM;;EA8I3B"}
|
|
@@ -19,6 +19,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
19
19
|
*/
|
|
20
20
|
import { createContext, useContext, useEffect, useState, useCallback, useMemo } from 'react';
|
|
21
21
|
import { Strata } from "../../core/Strata.js";
|
|
22
|
+
import { registerWebAdapters } from "../../index.js";
|
|
22
23
|
import { ValidationError } from "../../utils/errors.js";
|
|
23
24
|
// ---------------------------------------------------------------------------
|
|
24
25
|
// Shared hook implementations (the Strata instance is passed in explicitly).
|
|
@@ -43,12 +44,20 @@ function useStorageImpl(strata, key, defaultValue, options) {
|
|
|
43
44
|
}, [key, strata, options, defaultValue]);
|
|
44
45
|
// Subscribe to changes for this key.
|
|
45
46
|
useEffect(() => {
|
|
46
|
-
|
|
47
|
+
let active = true;
|
|
48
|
+
const unsubscribe = strata.subscribe((change) => {
|
|
47
49
|
if (change.key === key) {
|
|
48
|
-
|
|
50
|
+
void strata.get(key, options).then((val) => {
|
|
51
|
+
if (active)
|
|
52
|
+
setValue(val ?? defaultValue ?? null);
|
|
53
|
+
});
|
|
49
54
|
}
|
|
50
55
|
}, options);
|
|
51
|
-
|
|
56
|
+
return () => {
|
|
57
|
+
active = false;
|
|
58
|
+
unsubscribe();
|
|
59
|
+
};
|
|
60
|
+
}, [key, strata, options, defaultValue]);
|
|
52
61
|
const updateValue = useCallback(async (newValue, updateOptions) => {
|
|
53
62
|
if (newValue === null) {
|
|
54
63
|
await strata.remove(key, updateOptions ?? options);
|
|
@@ -141,7 +150,10 @@ const StrataContext = createContext({
|
|
|
141
150
|
initialized: false,
|
|
142
151
|
});
|
|
143
152
|
export function StrataProvider({ children, config, instance, loadingComponent, fallback, }) {
|
|
144
|
-
|
|
153
|
+
// A caller-provided instance is used as-is; otherwise build one WITH the
|
|
154
|
+
// standard web adapters registered, so the classic Provider path works without
|
|
155
|
+
// the caller having to register adapters (avoids "No available storage adapters").
|
|
156
|
+
const [strata] = useState(() => instance ?? registerWebAdapters(new Strata(config)));
|
|
145
157
|
const [initialized, setInitialized] = useState(strata.isInitialized);
|
|
146
158
|
useEffect(() => {
|
|
147
159
|
let active = true;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Vue 3 integration for Strata Storage
|
|
3
3
|
*/
|
|
4
4
|
import type { Ref, ComputedRef, App } from 'vue';
|
|
5
|
-
import { Strata } from
|
|
6
|
-
import type { StrataConfig, StorageOptions, QueryCondition } from
|
|
5
|
+
import { Strata } from "../../core/Strata.js";
|
|
6
|
+
import type { StrataConfig, StorageOptions, QueryCondition } from "../../types/index.js";
|
|
7
7
|
export declare const StrataPlugin: {
|
|
8
8
|
install(app: App, config?: StrataConfig): void;
|
|
9
9
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/vue/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAgB,GAAG,EAAE,MAAM,KAAK,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/vue/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { ref, computed, watch, onMounted, onUnmounted, inject } from 'vue';
|
|
5
5
|
import { Strata } from "../../core/Strata.js";
|
|
6
|
+
import { registerWebAdapters } from "../../index.js";
|
|
6
7
|
import { ValidationError } from "../../utils/errors.js";
|
|
7
8
|
import { logger } from "../../utils/logger.js";
|
|
8
9
|
// Injection key
|
|
@@ -10,7 +11,9 @@ const StrataKey = Symbol('strata');
|
|
|
10
11
|
// Plugin installation
|
|
11
12
|
export const StrataPlugin = {
|
|
12
13
|
install(app, config) {
|
|
13
|
-
|
|
14
|
+
// Register the standard web adapters so the classic plugin path works
|
|
15
|
+
// without the caller having to register adapters.
|
|
16
|
+
const strata = registerWebAdapters(new Strata(config));
|
|
14
17
|
// Initialize asynchronously
|
|
15
18
|
strata.initialize().catch(logger.error);
|
|
16
19
|
// Provide globally
|
|
@@ -94,7 +97,7 @@ export function useStorage(key, defaultValue, options, instance) {
|
|
|
94
97
|
refresh();
|
|
95
98
|
const unsubscribe = strata.subscribe((change) => {
|
|
96
99
|
if (change.key === key) {
|
|
97
|
-
|
|
100
|
+
void refresh();
|
|
98
101
|
}
|
|
99
102
|
}, options);
|
|
100
103
|
onUnmounted(unsubscribe);
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "strata-storage",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.1",
|
|
4
4
|
"description": "Zero-dependency universal storage plugin providing a unified API for all storage operations across web, Android, and iOS platforms",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"./angular": {
|
|
30
30
|
"types": "./integrations/angular/index.d.ts",
|
|
31
31
|
"default": "./integrations/angular/index.js"
|
|
32
|
-
}
|
|
32
|
+
},
|
|
33
|
+
"./package.json": "./package.json"
|
|
33
34
|
},
|
|
34
35
|
"author": "Ahsan Mahmood",
|
|
35
36
|
"license": "Apache-2.0",
|
|
@@ -37,6 +38,10 @@
|
|
|
37
38
|
"type": "git",
|
|
38
39
|
"url": "https://github.com/aoneahsan/strata-storage.git"
|
|
39
40
|
},
|
|
41
|
+
"bugs": {
|
|
42
|
+
"url": "https://stratastorage.aoneahsan.com/contact"
|
|
43
|
+
},
|
|
44
|
+
"homepage": "https://stratastorage.aoneahsan.com",
|
|
40
45
|
"keywords": [
|
|
41
46
|
"storage",
|
|
42
47
|
"capacitor",
|
|
@@ -59,6 +64,7 @@
|
|
|
59
64
|
"@angular/core": ">=21.0.6",
|
|
60
65
|
"@angular/forms": ">=21.0.6",
|
|
61
66
|
"@capacitor/core": ">=8.0.0",
|
|
67
|
+
"firebase": ">=10.0.0",
|
|
62
68
|
"react": ">=19.2.3",
|
|
63
69
|
"vue": ">=3.5.26"
|
|
64
70
|
},
|
|
@@ -72,6 +78,9 @@
|
|
|
72
78
|
"@capacitor/core": {
|
|
73
79
|
"optional": true
|
|
74
80
|
},
|
|
81
|
+
"firebase": {
|
|
82
|
+
"optional": true
|
|
83
|
+
},
|
|
75
84
|
"react": {
|
|
76
85
|
"optional": true
|
|
77
86
|
},
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Strata Storage Capacitor Plugin Definitions
|
|
3
3
|
* Interface definitions for native platform implementations
|
|
4
4
|
*/
|
|
5
|
-
import type { StorageValue } from
|
|
5
|
+
import type { StorageValue } from "../types/index.js";
|
|
6
6
|
/**
|
|
7
7
|
* Main plugin interface
|
|
8
8
|
*/
|
|
@@ -44,14 +44,32 @@ export interface StrataStoragePlugin {
|
|
|
44
44
|
*/
|
|
45
45
|
size(options: NativeSizeOptions): Promise<NativeSizeResult>;
|
|
46
46
|
/**
|
|
47
|
-
* Perform native query (if supported)
|
|
47
|
+
* Perform native query (if supported).
|
|
48
|
+
*
|
|
49
|
+
* The native layer enumerates non-expired candidate rows and returns the
|
|
50
|
+
* FULL `StorageValue` wrapper for each in a single round-trip, so the TS
|
|
51
|
+
* adapter can run the query filter in JS without an N+1 `get()` per key.
|
|
52
|
+
* `value` is optional for back-compat with older native builds that only
|
|
53
|
+
* surfaced keys; the adapter falls back to `get()` when it is absent.
|
|
48
54
|
*/
|
|
49
55
|
query?(options: NativeQueryOptions): Promise<{
|
|
50
56
|
results: Array<{
|
|
51
57
|
key: string;
|
|
52
|
-
value
|
|
58
|
+
value?: StorageValue<unknown>;
|
|
53
59
|
}>;
|
|
54
60
|
}>;
|
|
61
|
+
/**
|
|
62
|
+
* Delete every expired row for the target store in a single native
|
|
63
|
+
* round-trip, returning how many rows were removed.
|
|
64
|
+
*
|
|
65
|
+
* Optional: only the SQLite native backend implements it. Because `keys()`
|
|
66
|
+
* and `query()` now exclude expired rows in SQL (no lazy per-key deletion on
|
|
67
|
+
* read), this is what reclaims their physical storage. The TS adapter guards
|
|
68
|
+
* on its presence and falls back to the base per-key sweep otherwise.
|
|
69
|
+
*/
|
|
70
|
+
cleanupExpired?(options: NativeCleanupExpiredOptions): Promise<{
|
|
71
|
+
removed: number;
|
|
72
|
+
}>;
|
|
55
73
|
/**
|
|
56
74
|
* iOS-specific: Access UserDefaults
|
|
57
75
|
*/
|
|
@@ -187,6 +205,14 @@ export interface NativeQueryOptions {
|
|
|
187
205
|
table?: string;
|
|
188
206
|
condition: Record<string, unknown>;
|
|
189
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Native cleanup-expired options
|
|
210
|
+
*/
|
|
211
|
+
export interface NativeCleanupExpiredOptions {
|
|
212
|
+
storage: NativeStorageType;
|
|
213
|
+
database?: string;
|
|
214
|
+
table?: string;
|
|
215
|
+
}
|
|
190
216
|
/**
|
|
191
217
|
* iOS Keychain accessibility options
|
|
192
218
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/plugin/definitions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,iBAAiB,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAEtF;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAEjF;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAE9D;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE5D
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/plugin/definitions.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Main plugin registration and web implementation
|
|
4
4
|
* This is now optional and only loaded when Capacitor adapters are used
|
|
5
5
|
*/
|
|
6
|
-
import type { StrataStoragePlugin } from
|
|
6
|
+
import type { StrataStoragePlugin } from "./definitions.js";
|
|
7
7
|
export declare const StrataStorage: StrataStoragePlugin;
|
|
8
|
-
export * from
|
|
8
|
+
export * from "./definitions.js";
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,mBAAmB,EASpB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,mBAAmB,EASpB,MAAM,eAAe,CAAC;AAmJvB,eAAO,MAAM,aAAa,EAAE,mBAAmD,CAAC;AAEhF,cAAc,eAAe,CAAC"}
|
package/dist/plugin/index.js
CHANGED
package/dist/plugin/web.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Strata Storage Web Implementation
|
|
3
3
|
* Web platform implementation of the Capacitor plugin
|
|
4
4
|
*/
|
|
5
|
-
import type { StrataStoragePlugin, NativeStorageType, NativeGetOptions, NativeSetOptions, NativeRemoveOptions, NativeClearOptions, NativeKeysOptions, NativeSizeOptions, NativeSizeResult } from
|
|
6
|
-
import type { StorageValue } from
|
|
5
|
+
import type { StrataStoragePlugin, NativeStorageType, NativeGetOptions, NativeSetOptions, NativeRemoveOptions, NativeClearOptions, NativeKeysOptions, NativeSizeOptions, NativeSizeResult, NativeCleanupExpiredOptions } from "./definitions.js";
|
|
6
|
+
import type { StorageValue } from "../types/index.js";
|
|
7
7
|
export declare class StrataStorageWeb implements StrataStoragePlugin {
|
|
8
8
|
private adapters;
|
|
9
9
|
private initialized;
|
|
@@ -24,6 +24,15 @@ export declare class StrataStorageWeb implements StrataStoragePlugin {
|
|
|
24
24
|
keys: string[];
|
|
25
25
|
}>;
|
|
26
26
|
size(options: NativeSizeOptions): Promise<NativeSizeResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Web fallback for the native `cleanupExpired`. Delegates to the underlying
|
|
29
|
+
* web adapter's expired-only clear and reports a best-effort removed count
|
|
30
|
+
* (difference in key count). The real SQLite N+1 win is native-only; this
|
|
31
|
+
* keeps the bridge contract satisfied when running under Capacitor-web.
|
|
32
|
+
*/
|
|
33
|
+
cleanupExpired(options: NativeCleanupExpiredOptions): Promise<{
|
|
34
|
+
removed: number;
|
|
35
|
+
}>;
|
|
27
36
|
/**
|
|
28
37
|
* Get suggestion for web alternative based on native storage type
|
|
29
38
|
*/
|
package/dist/plugin/web.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/plugin/web.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/plugin/web.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,SAAS,CAAC;AAM5D,qBAAa,gBAAiB,YAAW,mBAAmB;IAC1D,OAAO,CAAC,QAAQ,CAAqD;IACrE,OAAO,CAAC,WAAW,CAAS;YAEd,kBAAkB;IAahC,OAAO,CAAC,UAAU;IAUZ,WAAW,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,iBAAiB,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAUrF,GAAG,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;KAAE,CAAC;IAOvE,GAAG,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjD,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAO7D,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAWjE;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IASxF;;OAEG;IACH,OAAO,CAAC,aAAa;CAatB"}
|