react-native-nitro-storage 0.5.3 → 0.5.5
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/.watchmanconfig +6 -0
- package/README.md +45 -5
- package/android/build.gradle +5 -5
- package/android/src/main/java/com/nitrostorage/AndroidStorageAdapter.kt +12 -25
- package/app.plugin.js +114 -9
- package/docs/api-reference.md +39 -36
- package/docs/batch-transactions-migrations.md +1 -1
- package/docs/recipes.md +1 -1
- package/docs/secure-storage.md +15 -4
- package/docs/web-backends.md +5 -0
- package/lib/commonjs/index.js +129 -27
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +169 -32
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/indexeddb-backend.js +28 -0
- package/lib/commonjs/indexeddb-backend.js.map +1 -1
- package/lib/commonjs/web-storage-backend.js.map +1 -1
- package/lib/module/index.js +129 -27
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +169 -32
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/indexeddb-backend.js +28 -0
- package/lib/module/indexeddb-backend.js.map +1 -1
- package/lib/module/web-storage-backend.js.map +1 -1
- package/lib/typescript/index.d.ts +10 -3
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/index.web.d.ts +10 -3
- package/lib/typescript/index.web.d.ts.map +1 -1
- package/lib/typescript/indexeddb-backend.d.ts.map +1 -1
- package/lib/typescript/web-storage-backend.d.ts +1 -0
- package/lib/typescript/web-storage-backend.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/index.ts +197 -32
- package/src/index.web.ts +250 -37
- package/src/indexeddb-backend.ts +30 -0
- package/src/web-storage-backend.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export { StorageScope, AccessControl, BiometricLevel } from "./Storage.types";
|
|
|
6
6
|
export { migrateFromMMKV } from "./migration";
|
|
7
7
|
export { getStorageErrorCode, type SecureStorageMetadata, type SecurityCapabilities, type StorageCapabilities, type StorageErrorCode, } from "./storage-runtime";
|
|
8
8
|
export type { StorageBatchChangeEvent, StorageChangeEvent, StorageChangeOperation, StorageChangeSource, StorageEventListener, StorageKeyChangeEvent, } from "./storage-events";
|
|
9
|
-
export type { WebStorageBackend, WebStorageChangeEvent, WebStorageScope, } from "./web-storage-backend";
|
|
9
|
+
export type { WebDiskStorageBackend, WebSecureStorageBackend, WebStorageBackend, WebStorageChangeEvent, WebStorageScope, } from "./web-storage-backend";
|
|
10
10
|
export type Validator<T> = (value: unknown) => value is T;
|
|
11
11
|
export type ExpirationConfig = {
|
|
12
12
|
ttlMs: number;
|
|
@@ -23,6 +23,12 @@ export type StorageMetricsEvent = {
|
|
|
23
23
|
keysCount: number;
|
|
24
24
|
};
|
|
25
25
|
export type StorageMetricsObserver = (event: StorageMetricsEvent) => void;
|
|
26
|
+
export type StorageEventObserverOptions = {
|
|
27
|
+
redactSecureValues?: boolean;
|
|
28
|
+
};
|
|
29
|
+
export type StorageExportOptions = {
|
|
30
|
+
includeSecureValues?: boolean;
|
|
31
|
+
};
|
|
26
32
|
export type StorageMetricSummary = {
|
|
27
33
|
count: number;
|
|
28
34
|
totalDurationMs: number;
|
|
@@ -82,7 +88,7 @@ export declare const storage: {
|
|
|
82
88
|
subscribeKey: (scope: StorageScope, key: string, listener: StorageEventListener) => (() => void);
|
|
83
89
|
subscribePrefix: (scope: StorageScope, prefix: string, listener: StorageEventListener) => (() => void);
|
|
84
90
|
subscribeNamespace: (namespace: string, scope: StorageScope, listener: StorageEventListener) => (() => void);
|
|
85
|
-
setEventObserver: (observer?: StorageEventListener) => void;
|
|
91
|
+
setEventObserver: (observer?: StorageEventListener, options?: StorageEventObserverOptions) => void;
|
|
86
92
|
clear: (scope: StorageScope) => void;
|
|
87
93
|
clearAll: () => void;
|
|
88
94
|
clearNamespace: (namespace: string, scope: StorageScope) => void;
|
|
@@ -92,7 +98,8 @@ export declare const storage: {
|
|
|
92
98
|
getKeysByPrefix: (prefix: string, scope: StorageScope) => string[];
|
|
93
99
|
getByPrefix: (prefix: string, scope: StorageScope) => Record<string, string>;
|
|
94
100
|
getAll: (scope: StorageScope) => Record<string, string>;
|
|
95
|
-
export: (scope: StorageScope) => Record<string, string>;
|
|
101
|
+
export: (scope: StorageScope, options?: StorageExportOptions) => Record<string, string>;
|
|
102
|
+
exportSecureUnsafe: () => Record<string, string>;
|
|
96
103
|
size: (scope: StorageScope) => number;
|
|
97
104
|
setAccessControl: (level: AccessControl) => void;
|
|
98
105
|
setSecureWritesAsync: (_enabled: boolean) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../src/index.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAa9E,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAG7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAML,KAAK,oBAAoB,EAE1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC;AAC1D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AACpC,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAC1E,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,uBAAuB,CAAC,SAAS,IAAI,CAC/C,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,SAAS,KACrB,IAAI,CAAC;AACV,MAAM,MAAM,+BAA+B,CAAC,SAAS,IAAI;IACvD,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC;IACtE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC5C,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC5C,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,EACT,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,EACnD,KAAK,EAAE,CAAC,KACL,IAAI,CAAC;IACV,UAAU,EAAE,CACV,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC,KACzD,IAAI,CAAC;CACX,CAAC;
|
|
1
|
+
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../src/index.web.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexeddb-backend.d.ts","sourceRoot":"","sources":["../../src/indexeddb-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EAExB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC,CAAC;AA4BF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,SAAkB,EACxB,SAAS,SAAqB,EAC9B,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"indexeddb-backend.d.ts","sourceRoot":"","sources":["../../src/indexeddb-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EAExB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC,CAAC;AA4BF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,SAAkB,EACxB,SAAS,SAAqB,EAC9B,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,uBAAuB,CAAC,CA2PlC"}
|
|
@@ -16,6 +16,7 @@ export type WebStorageBackend = {
|
|
|
16
16
|
size?: () => number;
|
|
17
17
|
subscribe?: (listener: (event: WebStorageChangeEvent) => void) => () => void;
|
|
18
18
|
flush?: () => Promise<void>;
|
|
19
|
+
close?: () => void;
|
|
19
20
|
name?: string;
|
|
20
21
|
};
|
|
21
22
|
export type WebDiskStorageBackend = WebStorageBackend;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-storage-backend.d.ts","sourceRoot":"","sources":["../../src/web-storage-backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC;AAEtE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAChD,OAAO,CAAC,EAAE,CACR,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,KACxD,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAC7E,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AACtD,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAExD,KAAK,0BAA0B,GAAG;IAChC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC;CAC5C,CAAC;AAgBF,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,0BAA+B,GACvC,iBAAiB,CA6EnB"}
|
|
1
|
+
{"version":3,"file":"web-storage-backend.d.ts","sourceRoot":"","sources":["../../src/web-storage-backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC;AAEtE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAChD,OAAO,CAAC,EAAE,CACR,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,KACxD,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAC7E,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AACtD,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAExD,KAAK,0BAA0B,GAAG;IAChC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC;CAC5C,CAAC;AAgBF,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,0BAA+B,GACvC,iBAAiB,CA6EnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-nitro-storage",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.5",
|
|
4
4
|
"description": "Synchronous React Native storage powered by Nitro Modules and JSI: typed Memory, Disk, Keychain/Android Keystore secure storage, biometric auth, MMKV migration, Expo, Zustand/Jotai persistence, and web IndexedDB support.",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"*.podspec",
|
|
37
37
|
"SECURITY.md",
|
|
38
38
|
"app.plugin.js",
|
|
39
|
+
".watchmanconfig",
|
|
39
40
|
"!**/__tests__",
|
|
40
41
|
"!**/__fixtures__",
|
|
41
42
|
"!**/__mocks__",
|
|
@@ -50,6 +51,7 @@
|
|
|
50
51
|
"clean": "rimraf lib nitrogen/generated",
|
|
51
52
|
"codegen": "nitrogen --logLevel=\"debug\"",
|
|
52
53
|
"lint": "bunx eslint src --max-warnings=0 --fix",
|
|
54
|
+
"lint:check": "bunx eslint src --max-warnings=0",
|
|
53
55
|
"format": "bunx prettier --write \"src/**/*.{ts,tsx}\" \"../../README.md\" \"../../CHANGELOG.md\" \"../../SECURITY.md\" \"../../docs/**/*.md\"",
|
|
54
56
|
"format:check": "bunx prettier --check \"src/**/*.{ts,tsx}\" \"../../README.md\" \"../../CHANGELOG.md\" \"../../SECURITY.md\" \"../../docs/**/*.md\"",
|
|
55
57
|
"typecheck": "tsc --noEmit",
|
|
@@ -110,7 +112,7 @@
|
|
|
110
112
|
},
|
|
111
113
|
"devDependencies": {
|
|
112
114
|
"@expo/config-plugins": "^55.0.8",
|
|
113
|
-
"@react-native/babel-preset": "^0.83.
|
|
115
|
+
"@react-native/babel-preset": "^0.83.9",
|
|
114
116
|
"@testing-library/react-hooks": "^8.0.1",
|
|
115
117
|
"@testing-library/react-native": "^13.3.3",
|
|
116
118
|
"@types/react": "~19.2.0"
|
|
@@ -118,7 +120,7 @@
|
|
|
118
120
|
"peerDependencies": {
|
|
119
121
|
"react": ">=18.2.0",
|
|
120
122
|
"react-native": ">=0.75.0",
|
|
121
|
-
"react-native-nitro-modules": ">=0.35.
|
|
123
|
+
"react-native-nitro-modules": ">=0.35.6"
|
|
122
124
|
},
|
|
123
125
|
"react-native-builder-bob": {
|
|
124
126
|
"source": "src",
|
package/src/index.ts
CHANGED
|
@@ -55,6 +55,8 @@ export type {
|
|
|
55
55
|
StorageKeyChangeEvent,
|
|
56
56
|
} from "./storage-events";
|
|
57
57
|
export type {
|
|
58
|
+
WebDiskStorageBackend,
|
|
59
|
+
WebSecureStorageBackend,
|
|
58
60
|
WebStorageBackend,
|
|
59
61
|
WebStorageChangeEvent,
|
|
60
62
|
WebStorageScope,
|
|
@@ -76,6 +78,12 @@ export type StorageMetricsEvent = {
|
|
|
76
78
|
keysCount: number;
|
|
77
79
|
};
|
|
78
80
|
export type StorageMetricsObserver = (event: StorageMetricsEvent) => void;
|
|
81
|
+
export type StorageEventObserverOptions = {
|
|
82
|
+
redactSecureValues?: boolean;
|
|
83
|
+
};
|
|
84
|
+
export type StorageExportOptions = {
|
|
85
|
+
includeSecureValues?: boolean;
|
|
86
|
+
};
|
|
79
87
|
export type StorageMetricSummary = {
|
|
80
88
|
count: number;
|
|
81
89
|
totalDurationMs: number;
|
|
@@ -119,8 +127,24 @@ type RawBatchPathItem = {
|
|
|
119
127
|
_hasValidation?: boolean;
|
|
120
128
|
_hasExpiration?: boolean;
|
|
121
129
|
_isBiometric?: boolean;
|
|
130
|
+
_biometricLevel?: BiometricLevel;
|
|
122
131
|
_secureAccessControl?: AccessControl;
|
|
123
132
|
};
|
|
133
|
+
type RollbackRecord =
|
|
134
|
+
| {
|
|
135
|
+
kind: "memory";
|
|
136
|
+
value: unknown;
|
|
137
|
+
}
|
|
138
|
+
| {
|
|
139
|
+
kind: "raw";
|
|
140
|
+
value: string | undefined;
|
|
141
|
+
accessControl?: AccessControl;
|
|
142
|
+
}
|
|
143
|
+
| {
|
|
144
|
+
kind: "biometric";
|
|
145
|
+
value: string | undefined;
|
|
146
|
+
level: BiometricLevel;
|
|
147
|
+
};
|
|
124
148
|
|
|
125
149
|
function asInternal<T>(item: StorageItem<T>): StorageItemInternal<T> {
|
|
126
150
|
return item as StorageItemInternal<T>;
|
|
@@ -135,6 +159,27 @@ function isUpdater<T>(
|
|
|
135
159
|
function typedKeys<K extends string, V>(record: Record<K, V>): K[] {
|
|
136
160
|
return Object.keys(record) as K[];
|
|
137
161
|
}
|
|
162
|
+
function assertEnumInteger(
|
|
163
|
+
value: number,
|
|
164
|
+
min: number,
|
|
165
|
+
max: number,
|
|
166
|
+
label: string,
|
|
167
|
+
): void {
|
|
168
|
+
if (!Number.isFinite(value) || value < min || value > max) {
|
|
169
|
+
throw new Error(`NitroStorage: Invalid ${label}`);
|
|
170
|
+
}
|
|
171
|
+
if (value !== Math.trunc(value)) {
|
|
172
|
+
throw new Error(`NitroStorage: Invalid ${label}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function assertAccessControlLevel(level: number): void {
|
|
177
|
+
assertEnumInteger(level, 0, 4, "access control level");
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function assertBiometricLevel(level: number): void {
|
|
181
|
+
assertEnumInteger(level, 0, 2, "biometric level");
|
|
182
|
+
}
|
|
138
183
|
type NonMemoryScope = StorageScope.Disk | StorageScope.Secure;
|
|
139
184
|
type PendingDiskWrite = {
|
|
140
185
|
key: string;
|
|
@@ -192,6 +237,7 @@ const suppressedNativeEvents = new Map<NonMemoryScope, Map<string, number>>([
|
|
|
192
237
|
]);
|
|
193
238
|
let metricsObserver: StorageMetricsObserver | undefined;
|
|
194
239
|
let eventObserver: StorageEventListener | undefined;
|
|
240
|
+
let eventObserverRedactSecureValues = true;
|
|
195
241
|
const metricsCounters = new Map<
|
|
196
242
|
string,
|
|
197
243
|
{ count: number; totalDurationMs: number; maxDurationMs: number }
|
|
@@ -374,6 +420,49 @@ function hasStorageChangeObservers(scope: StorageScope): boolean {
|
|
|
374
420
|
return storageEvents.hasListeners(scope) || eventObserver !== undefined;
|
|
375
421
|
}
|
|
376
422
|
|
|
423
|
+
function shouldReadPreviousEventValues(scope: StorageScope): boolean {
|
|
424
|
+
if (storageEvents.hasListeners(scope)) {
|
|
425
|
+
return true;
|
|
426
|
+
}
|
|
427
|
+
if (!eventObserver) {
|
|
428
|
+
return false;
|
|
429
|
+
}
|
|
430
|
+
return scope !== StorageScope.Secure || !eventObserverRedactSecureValues;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
const SECURE_EVENT_REDACTED_VALUE = "[secure]";
|
|
434
|
+
|
|
435
|
+
function redactSecureKeyChange(
|
|
436
|
+
event: StorageKeyChangeEvent,
|
|
437
|
+
): StorageKeyChangeEvent {
|
|
438
|
+
if (event.scope !== StorageScope.Secure) {
|
|
439
|
+
return event;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
return {
|
|
443
|
+
...event,
|
|
444
|
+
oldValue:
|
|
445
|
+
event.oldValue === undefined ? undefined : SECURE_EVENT_REDACTED_VALUE,
|
|
446
|
+
newValue:
|
|
447
|
+
event.newValue === undefined ? undefined : SECURE_EVENT_REDACTED_VALUE,
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
function eventForGlobalObserver(event: StorageChangeEvent): StorageChangeEvent {
|
|
452
|
+
if (!eventObserverRedactSecureValues || event.scope !== StorageScope.Secure) {
|
|
453
|
+
return event;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
if (event.type === "key") {
|
|
457
|
+
return redactSecureKeyChange(event);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
return {
|
|
461
|
+
...event,
|
|
462
|
+
changes: event.changes.map(redactSecureKeyChange),
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
|
|
377
466
|
function emitKeyChange(
|
|
378
467
|
scope: StorageScope,
|
|
379
468
|
key: string,
|
|
@@ -399,7 +488,7 @@ function emitKeyChange(
|
|
|
399
488
|
source,
|
|
400
489
|
);
|
|
401
490
|
storageEvents.emitKey(event);
|
|
402
|
-
eventObserver?.(event);
|
|
491
|
+
eventObserver?.(eventForGlobalObserver(event));
|
|
403
492
|
}
|
|
404
493
|
|
|
405
494
|
function emitBatchChange(
|
|
@@ -429,7 +518,7 @@ function emitBatchChange(
|
|
|
429
518
|
changes,
|
|
430
519
|
};
|
|
431
520
|
storageEvents.emitBatch(event);
|
|
432
|
-
eventObserver?.(event);
|
|
521
|
+
eventObserver?.(eventForGlobalObserver(event));
|
|
433
522
|
}
|
|
434
523
|
|
|
435
524
|
function readPendingSecureWrite(key: string): string | undefined {
|
|
@@ -774,8 +863,12 @@ export const storage = {
|
|
|
774
863
|
): (() => void) => {
|
|
775
864
|
return storage.subscribePrefix(scope, prefixKey(namespace, ""), listener);
|
|
776
865
|
},
|
|
777
|
-
setEventObserver: (
|
|
866
|
+
setEventObserver: (
|
|
867
|
+
observer?: StorageEventListener,
|
|
868
|
+
options: StorageEventObserverOptions = {},
|
|
869
|
+
) => {
|
|
778
870
|
eventObserver = observer;
|
|
871
|
+
eventObserverRedactSecureValues = options.redactSecureValues !== false;
|
|
779
872
|
if (observer) {
|
|
780
873
|
ensureNativeScopeSubscription(StorageScope.Disk);
|
|
781
874
|
ensureNativeScopeSubscription(StorageScope.Secure);
|
|
@@ -786,7 +879,7 @@ export const storage = {
|
|
|
786
879
|
},
|
|
787
880
|
clear: (scope: StorageScope) => {
|
|
788
881
|
measureOperation("storage:clear", scope, () => {
|
|
789
|
-
const previousValues =
|
|
882
|
+
const previousValues = shouldReadPreviousEventValues(scope)
|
|
790
883
|
? storage.getAll(scope)
|
|
791
884
|
: {};
|
|
792
885
|
if (scope === StorageScope.Memory) {
|
|
@@ -890,7 +983,7 @@ export const storage = {
|
|
|
890
983
|
}
|
|
891
984
|
|
|
892
985
|
const keyPrefix = prefixKey(namespace, "");
|
|
893
|
-
const previousValues =
|
|
986
|
+
const previousValues = shouldReadPreviousEventValues(scope)
|
|
894
987
|
? storage.getByPrefix(keyPrefix, scope)
|
|
895
988
|
: {};
|
|
896
989
|
if (scope === StorageScope.Disk) {
|
|
@@ -1040,11 +1133,26 @@ export const storage = {
|
|
|
1040
1133
|
return result;
|
|
1041
1134
|
});
|
|
1042
1135
|
},
|
|
1043
|
-
export: (
|
|
1136
|
+
export: (
|
|
1137
|
+
scope: StorageScope,
|
|
1138
|
+
options: StorageExportOptions = {},
|
|
1139
|
+
): Record<string, string> => {
|
|
1140
|
+
if (scope === StorageScope.Secure && options.includeSecureValues !== true) {
|
|
1141
|
+
throw new Error(
|
|
1142
|
+
"NitroStorage: exporting Secure scope exposes raw secret values. Pass { includeSecureValues: true } or use exportSecureUnsafe().",
|
|
1143
|
+
);
|
|
1144
|
+
}
|
|
1044
1145
|
return measureOperation("storage:export", scope, () =>
|
|
1045
1146
|
storage.getAll(scope),
|
|
1046
1147
|
);
|
|
1047
1148
|
},
|
|
1149
|
+
exportSecureUnsafe: (): Record<string, string> => {
|
|
1150
|
+
return measureOperation(
|
|
1151
|
+
"storage:exportSecureUnsafe",
|
|
1152
|
+
StorageScope.Secure,
|
|
1153
|
+
() => storage.getAll(StorageScope.Secure),
|
|
1154
|
+
);
|
|
1155
|
+
},
|
|
1048
1156
|
size: (scope: StorageScope): number => {
|
|
1049
1157
|
return measureOperation("storage:size", scope, () => {
|
|
1050
1158
|
assertValidScope(scope);
|
|
@@ -1062,6 +1170,7 @@ export const storage = {
|
|
|
1062
1170
|
},
|
|
1063
1171
|
setAccessControl: (level: AccessControl) => {
|
|
1064
1172
|
measureOperation("storage:setAccessControl", StorageScope.Secure, () => {
|
|
1173
|
+
assertAccessControlLevel(level);
|
|
1065
1174
|
secureDefaultAccessControl = level;
|
|
1066
1175
|
getStorageModule().setSecureAccessControl(level);
|
|
1067
1176
|
});
|
|
@@ -1326,6 +1435,7 @@ type StorageItemInternal<T> = StorageItem<T> & {
|
|
|
1326
1435
|
_hasExpiration: boolean;
|
|
1327
1436
|
_readCacheEnabled: boolean;
|
|
1328
1437
|
_isBiometric: boolean;
|
|
1438
|
+
_biometricLevel: BiometricLevel;
|
|
1329
1439
|
_defaultValue: T;
|
|
1330
1440
|
_secureAccessControl?: AccessControl;
|
|
1331
1441
|
};
|
|
@@ -1396,6 +1506,12 @@ export function createStorageItem<T = undefined>(
|
|
|
1396
1506
|
if (expiration && expiration.ttlMs <= 0) {
|
|
1397
1507
|
throw new Error("expiration.ttlMs must be greater than 0.");
|
|
1398
1508
|
}
|
|
1509
|
+
if (config.scope === StorageScope.Secure) {
|
|
1510
|
+
assertBiometricLevel(resolvedBiometricLevel);
|
|
1511
|
+
if (secureAccessControl !== undefined) {
|
|
1512
|
+
assertAccessControlLevel(secureAccessControl);
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1399
1515
|
|
|
1400
1516
|
const listeners = new Set<() => void>();
|
|
1401
1517
|
let unsubscribe: (() => void) | null = null;
|
|
@@ -1907,6 +2023,7 @@ export function createStorageItem<T = undefined>(
|
|
|
1907
2023
|
_hasExpiration: expiration !== undefined,
|
|
1908
2024
|
_readCacheEnabled: readCache,
|
|
1909
2025
|
_isBiometric: isBiometric,
|
|
2026
|
+
_biometricLevel: resolvedBiometricLevel,
|
|
1910
2027
|
_defaultValue: defaultValue,
|
|
1911
2028
|
...(secureAccessControl !== undefined
|
|
1912
2029
|
? { _secureAccessControl: secureAccessControl }
|
|
@@ -2090,7 +2207,7 @@ export function setBatch<T>(
|
|
|
2090
2207
|
flushSecureWrites();
|
|
2091
2208
|
const storageModule = getStorageModule();
|
|
2092
2209
|
const keys = secureEntries.map(({ item }) => item.key);
|
|
2093
|
-
const oldValues =
|
|
2210
|
+
const oldValues = shouldReadPreviousEventValues(scope)
|
|
2094
2211
|
? (storageModule.getBatch(keys, scope) ?? [])
|
|
2095
2212
|
: [];
|
|
2096
2213
|
const groupedByAccessControl = new Map<
|
|
@@ -2147,7 +2264,7 @@ export function setBatch<T>(
|
|
|
2147
2264
|
|
|
2148
2265
|
const keys = items.map((entry) => entry.item.key);
|
|
2149
2266
|
const values = items.map((entry) => entry.item.serialize(entry.value));
|
|
2150
|
-
const oldValues =
|
|
2267
|
+
const oldValues = shouldReadPreviousEventValues(scope)
|
|
2151
2268
|
? (getStorageModule().getBatch(keys, scope) ?? [])
|
|
2152
2269
|
: [];
|
|
2153
2270
|
|
|
@@ -2206,7 +2323,7 @@ export function removeBatch(
|
|
|
2206
2323
|
if (scope === StorageScope.Secure) {
|
|
2207
2324
|
flushSecureWrites();
|
|
2208
2325
|
}
|
|
2209
|
-
const oldValues =
|
|
2326
|
+
const oldValues = shouldReadPreviousEventValues(scope)
|
|
2210
2327
|
? (getStorageModule().getBatch(keys, scope) ?? [])
|
|
2211
2328
|
: [];
|
|
2212
2329
|
getStorageModule().removeBatch(keys, scope);
|
|
@@ -2292,19 +2409,40 @@ export function runTransaction<T>(
|
|
|
2292
2409
|
}
|
|
2293
2410
|
|
|
2294
2411
|
const NOT_SET = Symbol();
|
|
2295
|
-
const rollback = new Map<string,
|
|
2412
|
+
const rollback = new Map<string, RollbackRecord>();
|
|
2296
2413
|
|
|
2297
|
-
const rememberRollback = (
|
|
2414
|
+
const rememberRollback = (
|
|
2415
|
+
key: string,
|
|
2416
|
+
item?: Pick<StorageItem<unknown>, "key" | "scope">,
|
|
2417
|
+
) => {
|
|
2298
2418
|
if (rollback.has(key)) {
|
|
2299
2419
|
return;
|
|
2300
2420
|
}
|
|
2301
2421
|
if (scope === StorageScope.Memory) {
|
|
2302
|
-
rollback.set(
|
|
2303
|
-
|
|
2304
|
-
memoryStore.has(key) ? memoryStore.get(key) : NOT_SET,
|
|
2305
|
-
);
|
|
2422
|
+
rollback.set(key, {
|
|
2423
|
+
kind: "memory",
|
|
2424
|
+
value: memoryStore.has(key) ? memoryStore.get(key) : NOT_SET,
|
|
2425
|
+
});
|
|
2306
2426
|
} else {
|
|
2307
|
-
|
|
2427
|
+
const internal = item
|
|
2428
|
+
? (item as StorageItemInternal<unknown>)
|
|
2429
|
+
: undefined;
|
|
2430
|
+
if (scope === StorageScope.Secure && internal?._isBiometric === true) {
|
|
2431
|
+
rollback.set(key, {
|
|
2432
|
+
kind: "biometric",
|
|
2433
|
+
value: getStorageModule().getSecureBiometric(key),
|
|
2434
|
+
level: internal._biometricLevel,
|
|
2435
|
+
});
|
|
2436
|
+
return;
|
|
2437
|
+
}
|
|
2438
|
+
rollback.set(key, {
|
|
2439
|
+
kind: "raw",
|
|
2440
|
+
value: getRawValue(key, scope),
|
|
2441
|
+
...(scope === StorageScope.Secure &&
|
|
2442
|
+
internal?._secureAccessControl !== undefined
|
|
2443
|
+
? { accessControl: internal._secureAccessControl }
|
|
2444
|
+
: {}),
|
|
2445
|
+
});
|
|
2308
2446
|
}
|
|
2309
2447
|
};
|
|
2310
2448
|
|
|
@@ -2325,12 +2463,12 @@ export function runTransaction<T>(
|
|
|
2325
2463
|
},
|
|
2326
2464
|
setItem: (item, value) => {
|
|
2327
2465
|
assertBatchScope([item], scope);
|
|
2328
|
-
rememberRollback(item.key);
|
|
2466
|
+
rememberRollback(item.key, item);
|
|
2329
2467
|
item.set(value);
|
|
2330
2468
|
},
|
|
2331
2469
|
removeItem: (item) => {
|
|
2332
2470
|
assertBatchScope([item], scope);
|
|
2333
|
-
rememberRollback(item.key);
|
|
2471
|
+
rememberRollback(item.key, item);
|
|
2334
2472
|
item.delete();
|
|
2335
2473
|
},
|
|
2336
2474
|
};
|
|
@@ -2340,25 +2478,49 @@ export function runTransaction<T>(
|
|
|
2340
2478
|
} catch (error) {
|
|
2341
2479
|
const rollbackEntries = Array.from(rollback.entries()).reverse();
|
|
2342
2480
|
if (scope === StorageScope.Memory) {
|
|
2343
|
-
rollbackEntries.forEach(([key,
|
|
2344
|
-
if (
|
|
2481
|
+
rollbackEntries.forEach(([key, record]) => {
|
|
2482
|
+
if (record.value === NOT_SET) {
|
|
2345
2483
|
memoryStore.delete(key);
|
|
2346
2484
|
} else {
|
|
2347
|
-
memoryStore.set(key,
|
|
2485
|
+
memoryStore.set(key, record.value);
|
|
2348
2486
|
}
|
|
2349
2487
|
notifyKeyListeners(memoryListeners, key);
|
|
2350
2488
|
});
|
|
2351
2489
|
} else {
|
|
2352
|
-
const
|
|
2353
|
-
|
|
2490
|
+
const groupedKeysToSet = new Map<
|
|
2491
|
+
AccessControl,
|
|
2492
|
+
{ keys: string[]; values: string[] }
|
|
2493
|
+
>();
|
|
2354
2494
|
const keysToRemove: string[] = [];
|
|
2355
2495
|
|
|
2356
|
-
rollbackEntries.forEach(([key,
|
|
2357
|
-
if (
|
|
2496
|
+
rollbackEntries.forEach(([key, record]) => {
|
|
2497
|
+
if (record.kind === "biometric") {
|
|
2498
|
+
if (record.value === undefined) {
|
|
2499
|
+
getStorageModule().deleteSecureBiometric(key);
|
|
2500
|
+
} else {
|
|
2501
|
+
getStorageModule().setSecureBiometricWithLevel(
|
|
2502
|
+
key,
|
|
2503
|
+
record.value,
|
|
2504
|
+
record.level,
|
|
2505
|
+
);
|
|
2506
|
+
}
|
|
2507
|
+
return;
|
|
2508
|
+
}
|
|
2509
|
+
if (record.kind !== "raw") {
|
|
2510
|
+
return;
|
|
2511
|
+
}
|
|
2512
|
+
if (record.value === undefined) {
|
|
2358
2513
|
keysToRemove.push(key);
|
|
2359
2514
|
} else {
|
|
2360
|
-
|
|
2361
|
-
|
|
2515
|
+
const accessControl =
|
|
2516
|
+
record.accessControl ?? secureDefaultAccessControl;
|
|
2517
|
+
const existingGroup = groupedKeysToSet.get(accessControl);
|
|
2518
|
+
const group = existingGroup ?? { keys: [], values: [] };
|
|
2519
|
+
group.keys.push(key);
|
|
2520
|
+
group.values.push(record.value);
|
|
2521
|
+
if (!existingGroup) {
|
|
2522
|
+
groupedKeysToSet.set(accessControl, group);
|
|
2523
|
+
}
|
|
2362
2524
|
}
|
|
2363
2525
|
});
|
|
2364
2526
|
|
|
@@ -2368,12 +2530,15 @@ export function runTransaction<T>(
|
|
|
2368
2530
|
if (scope === StorageScope.Secure) {
|
|
2369
2531
|
flushSecureWrites();
|
|
2370
2532
|
}
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2533
|
+
groupedKeysToSet.forEach((group, accessControl) => {
|
|
2534
|
+
if (scope === StorageScope.Secure) {
|
|
2535
|
+
getStorageModule().setSecureAccessControl(accessControl);
|
|
2536
|
+
}
|
|
2537
|
+
getStorageModule().setBatch(group.keys, group.values, scope);
|
|
2538
|
+
group.keys.forEach((key, index) =>
|
|
2539
|
+
cacheRawValue(scope, key, group.values[index]),
|
|
2375
2540
|
);
|
|
2376
|
-
}
|
|
2541
|
+
});
|
|
2377
2542
|
if (keysToRemove.length > 0) {
|
|
2378
2543
|
getStorageModule().removeBatch(keysToRemove, scope);
|
|
2379
2544
|
keysToRemove.forEach((key) => cacheRawValue(scope, key, undefined));
|