react-native-nitro-storage 0.7.0 → 0.9.0
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/CHANGELOG.md +54 -0
- package/README.md +89 -22
- package/SECURITY.md +2 -2
- package/cpp/bindings/HybridStorage.cpp +5 -12
- package/cpp/bindings/HybridStorage.hpp +1 -1
- package/docs/api-reference.md +11 -1
- package/docs/batch-transactions-migrations.md +8 -2
- package/docs/benchmarks.md +19 -15
- package/docs/web-backends.md +18 -1
- package/ios/IOSStorageAdapterCpp.mm +162 -17
- package/lib/commonjs/capabilities.js +26 -0
- package/lib/commonjs/capabilities.js.map +1 -0
- package/lib/commonjs/core/durability.js +137 -0
- package/lib/commonjs/core/durability.js.map +1 -0
- package/lib/commonjs/core/metrics.js +91 -0
- package/lib/commonjs/core/metrics.js.map +1 -0
- package/lib/commonjs/index.js +47 -22
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +118 -66
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/indexeddb-backend.js +73 -23
- package/lib/commonjs/indexeddb-backend.js.map +1 -1
- package/lib/commonjs/internal.js +27 -4
- package/lib/commonjs/internal.js.map +1 -1
- package/lib/commonjs/shared.js +2 -2
- package/lib/commonjs/shared.js.map +1 -1
- package/lib/commonjs/storage-core.js +224 -237
- package/lib/commonjs/storage-core.js.map +1 -1
- package/lib/commonjs/storage-events.js.map +1 -1
- package/lib/commonjs/storage-platform.js +6 -0
- package/lib/commonjs/storage-platform.js.map +1 -0
- package/lib/commonjs/storage-runtime.js +3 -21
- package/lib/commonjs/storage-runtime.js.map +1 -1
- package/lib/commonjs/testing.js +19 -4
- package/lib/commonjs/testing.js.map +1 -1
- package/lib/commonjs/web-backend-contract.js +27 -0
- package/lib/commonjs/web-backend-contract.js.map +1 -0
- package/lib/module/capabilities.js +21 -0
- package/lib/module/capabilities.js.map +1 -0
- package/lib/module/core/durability.js +133 -0
- package/lib/module/core/durability.js.map +1 -0
- package/lib/module/core/metrics.js +87 -0
- package/lib/module/core/metrics.js.map +1 -0
- package/lib/module/index.js +48 -23
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +103 -64
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/indexeddb-backend.js +73 -23
- package/lib/module/indexeddb-backend.js.map +1 -1
- package/lib/module/internal.js +24 -3
- package/lib/module/internal.js.map +1 -1
- package/lib/module/shared.js +2 -2
- package/lib/module/shared.js.map +1 -1
- package/lib/module/storage-core.js +225 -238
- package/lib/module/storage-core.js.map +1 -1
- package/lib/module/storage-events.js.map +1 -1
- package/lib/module/storage-platform.js +4 -0
- package/lib/module/storage-platform.js.map +1 -0
- package/lib/module/storage-runtime.js +3 -21
- package/lib/module/storage-runtime.js.map +1 -1
- package/lib/module/testing.js +5 -3
- package/lib/module/testing.js.map +1 -1
- package/lib/module/web-backend-contract.js +22 -0
- package/lib/module/web-backend-contract.js.map +1 -0
- package/lib/typescript/capabilities.d.ts +11 -0
- package/lib/typescript/capabilities.d.ts.map +1 -0
- package/lib/typescript/core/durability.d.ts +27 -0
- package/lib/typescript/core/durability.d.ts.map +1 -0
- package/lib/typescript/core/metrics.d.ts +12 -0
- package/lib/typescript/core/metrics.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +5 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/index.web.d.ts +8 -4
- package/lib/typescript/index.web.d.ts.map +1 -1
- package/lib/typescript/indexeddb-backend.d.ts.map +1 -1
- package/lib/typescript/internal.d.ts +3 -0
- package/lib/typescript/internal.d.ts.map +1 -1
- package/lib/typescript/shared.d.ts +2 -1
- package/lib/typescript/shared.d.ts.map +1 -1
- package/lib/typescript/storage-core.d.ts +6 -6
- package/lib/typescript/storage-core.d.ts.map +1 -1
- package/lib/typescript/storage-events.d.ts +2 -2
- package/lib/typescript/storage-events.d.ts.map +1 -1
- package/lib/typescript/storage-platform.d.ts +12 -0
- package/lib/typescript/storage-platform.d.ts.map +1 -0
- package/lib/typescript/storage-runtime.d.ts.map +1 -1
- package/lib/typescript/testing.d.ts +5 -1
- package/lib/typescript/testing.d.ts.map +1 -1
- package/lib/typescript/web-backend-contract.d.ts +10 -0
- package/lib/typescript/web-backend-contract.d.ts.map +1 -0
- package/lib/typescript/web-storage-backend.d.ts +1 -1
- package/lib/typescript/web-storage-backend.d.ts.map +1 -1
- package/nitrogen/generated/shared/c++/HybridStorageSpec.hpp +1 -1
- package/package.json +4 -3
- package/react-native-nitro-storage.podspec +3 -1
- package/src/capabilities.ts +36 -0
- package/src/core/durability.ts +170 -0
- package/src/core/metrics.ts +133 -0
- package/src/index.ts +66 -40
- package/src/index.web.ts +158 -86
- package/src/indexeddb-backend.ts +91 -20
- package/src/internal.ts +50 -4
- package/src/shared.ts +7 -6
- package/src/storage-core.ts +327 -292
- package/src/storage-events.ts +2 -1
- package/src/storage-platform.ts +16 -0
- package/src/storage-runtime.ts +13 -47
- package/src/testing.ts +14 -7
- package/src/web-backend-contract.ts +34 -0
- package/src/web-storage-backend.ts +1 -1
package/lib/commonjs/index.js
CHANGED
|
@@ -85,11 +85,13 @@ Object.defineProperty(exports, "useStorageValue", {
|
|
|
85
85
|
return _storageHooks.useStorageValue;
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
|
-
var
|
|
88
|
+
var _reactNative = require("react-native");
|
|
89
89
|
var _reactNativeNitroModules = require("react-native-nitro-modules");
|
|
90
|
-
var
|
|
90
|
+
var _capabilities = require("./capabilities");
|
|
91
91
|
var _internal = require("./internal");
|
|
92
|
+
var _shared = require("./shared");
|
|
92
93
|
var _storageCore = require("./storage-core");
|
|
94
|
+
var _Storage = require("./Storage.types");
|
|
93
95
|
var _migration = require("./migration");
|
|
94
96
|
var _storageRuntime = require("./storage-runtime");
|
|
95
97
|
var _storageHooks = require("./storage-hooks");
|
|
@@ -104,33 +106,56 @@ function getStorageModule() {
|
|
|
104
106
|
const nativeSecureBackend = "platform-secure-storage";
|
|
105
107
|
const nativeBackend = {
|
|
106
108
|
get: (key, scope) => getStorageModule().get(key, scope),
|
|
107
|
-
set: (key, value, scope) =>
|
|
108
|
-
|
|
109
|
-
|
|
109
|
+
set: (key, value, scope) => {
|
|
110
|
+
getStorageModule().set(key, value, scope);
|
|
111
|
+
},
|
|
112
|
+
remove: (key, scope) => {
|
|
113
|
+
getStorageModule().remove(key, scope);
|
|
114
|
+
},
|
|
115
|
+
clear: scope => {
|
|
116
|
+
getStorageModule().clear(scope);
|
|
117
|
+
},
|
|
110
118
|
has: (key, scope) => getStorageModule().has(key, scope),
|
|
111
119
|
getAllKeys: scope => getStorageModule().getAllKeys(scope) ?? [],
|
|
112
120
|
getKeysByPrefix: (prefix, scope) => getStorageModule().getKeysByPrefix(prefix, scope) ?? [],
|
|
113
121
|
size: scope => getStorageModule().size(scope),
|
|
114
|
-
setBatch: (keys, values, scope) =>
|
|
122
|
+
setBatch: (keys, values, scope) => {
|
|
123
|
+
getStorageModule().setBatch(keys, values, scope);
|
|
124
|
+
},
|
|
115
125
|
getBatch: (keys, scope) => (getStorageModule().getBatch(keys, scope) ?? []).map(value => (0, _internal.decodeNativeBatchValue)(value)),
|
|
116
|
-
removeBatch: (keys, scope) =>
|
|
117
|
-
|
|
118
|
-
|
|
126
|
+
removeBatch: (keys, scope) => {
|
|
127
|
+
getStorageModule().removeBatch(keys, scope);
|
|
128
|
+
},
|
|
129
|
+
removeByPrefix: (prefix, scope) => {
|
|
130
|
+
getStorageModule().removeByPrefix(prefix, scope);
|
|
131
|
+
},
|
|
132
|
+
setSecureAccessControl: level => {
|
|
133
|
+
getStorageModule().setSecureAccessControl(level);
|
|
134
|
+
},
|
|
119
135
|
getSecureBiometric: key => getStorageModule().getSecureBiometric(key),
|
|
120
|
-
setSecureBiometricWithLevel: (key, value, level) =>
|
|
121
|
-
|
|
136
|
+
setSecureBiometricWithLevel: (key, value, level) => {
|
|
137
|
+
getStorageModule().setSecureBiometricWithLevel(key, value, level);
|
|
138
|
+
},
|
|
139
|
+
deleteSecureBiometric: key => {
|
|
140
|
+
getStorageModule().deleteSecureBiometric(key);
|
|
141
|
+
},
|
|
122
142
|
hasSecureBiometric: key => getStorageModule().hasSecureBiometric(key),
|
|
123
|
-
clearSecureBiometric: () =>
|
|
143
|
+
clearSecureBiometric: () => {
|
|
144
|
+
getStorageModule().clearSecureBiometric();
|
|
145
|
+
}
|
|
124
146
|
};
|
|
125
147
|
function buildNativeAdapter(internals) {
|
|
126
148
|
const scopedUnsubscribers = new Map();
|
|
127
|
-
const suppressedNativeEvents =
|
|
149
|
+
const suppressedNativeEvents = {
|
|
150
|
+
[_Storage.StorageScope.Disk]: new Map(),
|
|
151
|
+
[_Storage.StorageScope.Secure]: new Map()
|
|
152
|
+
};
|
|
128
153
|
function suppressNativeEvent(scope, key) {
|
|
129
|
-
const suppressedEvents = suppressedNativeEvents
|
|
154
|
+
const suppressedEvents = suppressedNativeEvents[scope];
|
|
130
155
|
suppressedEvents.set(key, (suppressedEvents.get(key) ?? 0) + 1);
|
|
131
156
|
}
|
|
132
157
|
function consumeSuppressedNativeEvent(scope, key) {
|
|
133
|
-
const suppressedEvents = suppressedNativeEvents
|
|
158
|
+
const suppressedEvents = suppressedNativeEvents[scope];
|
|
134
159
|
const count = suppressedEvents.get(key);
|
|
135
160
|
if (count === undefined) {
|
|
136
161
|
return false;
|
|
@@ -172,7 +197,7 @@ function buildNativeAdapter(internals) {
|
|
|
172
197
|
if (consumeSuppressedNativeEvent(scope, key)) {
|
|
173
198
|
return;
|
|
174
199
|
}
|
|
175
|
-
internals.emitKeyChange(scope, key, oldValue, value, "external", "native");
|
|
200
|
+
internals.emitKeyChange(scope, key, oldValue === undefined ? undefined : (0, _internal.unescapeCollidingRawValue)(oldValue), value === undefined ? undefined : (0, _internal.unescapeCollidingRawValue)(value), "external", "native");
|
|
176
201
|
});
|
|
177
202
|
scopedUnsubscribers.set(scope, typeof unsubscribe === "function" ? unsubscribe : () => {});
|
|
178
203
|
}
|
|
@@ -192,12 +217,13 @@ function buildNativeAdapter(internals) {
|
|
|
192
217
|
backend: nativeBackend,
|
|
193
218
|
changeSource: "native",
|
|
194
219
|
applyAccessControlOnSecureRawWrite: true,
|
|
195
|
-
flushDiskWritesOnImport: false,
|
|
196
220
|
ensureScopeSubscription: ensureNativeScopeSubscription,
|
|
197
221
|
maybeCleanupScopeSubscription: maybeCleanupNativeScopeSubscription,
|
|
198
222
|
onWillEmitChanges: (scope, keys, operation, source) => {
|
|
199
223
|
if (source === "native" && operation !== "external" && scope !== _Storage.StorageScope.Memory && scopedUnsubscribers.has(scope)) {
|
|
200
|
-
keys.forEach(key =>
|
|
224
|
+
keys.forEach(key => {
|
|
225
|
+
suppressNativeEvent(scope, key);
|
|
226
|
+
});
|
|
201
227
|
}
|
|
202
228
|
},
|
|
203
229
|
getSecureMetadataProfile: () => ({
|
|
@@ -211,6 +237,7 @@ const core = (0, _storageCore.createStorageCore)(buildNativeAdapter);
|
|
|
211
237
|
const {
|
|
212
238
|
internals
|
|
213
239
|
} = core;
|
|
240
|
+
let secureWritesBuffered = false;
|
|
214
241
|
const storage = exports.storage = {
|
|
215
242
|
...core.storage,
|
|
216
243
|
setAccessControl: level => {
|
|
@@ -222,6 +249,7 @@ const storage = exports.storage = {
|
|
|
222
249
|
},
|
|
223
250
|
setSecureWritesAsync: enabled => {
|
|
224
251
|
internals.measureOperation("storage:setSecureWritesAsync", _Storage.StorageScope.Secure, () => {
|
|
252
|
+
secureWritesBuffered = enabled;
|
|
225
253
|
getStorageModule().setSecureWritesAsync(enabled);
|
|
226
254
|
});
|
|
227
255
|
},
|
|
@@ -236,10 +264,7 @@ const storage = exports.storage = {
|
|
|
236
264
|
disk: "platform-preferences",
|
|
237
265
|
secure: nativeSecureBackend
|
|
238
266
|
},
|
|
239
|
-
writeBuffering:
|
|
240
|
-
disk: true,
|
|
241
|
-
secure: true
|
|
242
|
-
},
|
|
267
|
+
writeBuffering: (0, _capabilities.resolveNativeWriteBuffering)(_reactNative.Platform.OS === "android" ? "android" : "ios", secureWritesBuffered),
|
|
243
268
|
errorClassification: true
|
|
244
269
|
}),
|
|
245
270
|
getSecurityCapabilities: () => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_shared","require","_reactNativeNitroModules","_Storage","_internal","_storageCore","_migration","_storageRuntime","_storageHooks","_indexeddbBackend","_storageModule","getStorageModule","NitroModules","createHybridObject","nativeSecureBackend","nativeBackend","get","key","scope","set","value","remove","clear","has","getAllKeys","getKeysByPrefix","prefix","size","setBatch","keys","values","getBatch","map","decodeNativeBatchValue","removeBatch","removeByPrefix","setSecureAccessControl","level","getSecureBiometric","setSecureBiometricWithLevel","deleteSecureBiometric","hasSecureBiometric","clearSecureBiometric","buildNativeAdapter","internals","scopedUnsubscribers","Map","suppressedNativeEvents","StorageScope","Disk","Secure","suppressNativeEvent","suppressedEvents","consumeSuppressedNativeEvent","count","undefined","delete","ensureNativeScopeSubscription","unsubscribe","addOnChange","clearAllPendingDiskWrites","clearPendingDiskWrite","clearAllPendingSecureWrites","clearPendingSecureWrite","clearScopeRawCache","notifyAllListeners","getScopedListeners","oldValue","readCachedRawValue","cacheRawValue","notifyKeyListeners","emitKeyChange","maybeCleanupNativeScopeSubscription","listeners","hasScopeEventListeners","hasEventObserver","backend","changeSource","applyAccessControlOnSecureRawWrite","flushDiskWritesOnImport","ensureScopeSubscription","maybeCleanupScopeSubscription","onWillEmitChanges","operation","source","Memory","forEach","getSecureMetadataProfile","encrypted","hardwareBacked","core","createStorageCore","storage","exports","setAccessControl","measureOperation","assertAccessControlLevel","setSecureDefaultAccessControl","setSecureWritesAsync","enabled","setKeychainAccessGroup","group","getCapabilities","platform","disk","secure","writeBuffering","errorClassification","getSecurityCapabilities","secureStorage","accessControl","keychainAccessGroup","biometric","prompt","biometryOnly","biometryOrPasscode","metadata","perKey","listsWithoutValues","persistsTimestamps","createStorageItem","memoryItem","diskItem","secureItem","createSetItem","registerMigration","migrateToLatest","runTransaction","createSecureAuthStorage","setWebSecureStorageBackend","_backend","getWebSecureStorageBackend","setWebDiskStorageBackend","getWebDiskStorageBackend","flushWebStorageBackends"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeNitroModules","_capabilities","_internal","_shared","_storageCore","_Storage","_migration","_storageRuntime","_storageHooks","_indexeddbBackend","_storageModule","getStorageModule","NitroModules","createHybridObject","nativeSecureBackend","nativeBackend","get","key","scope","set","value","remove","clear","has","getAllKeys","getKeysByPrefix","prefix","size","setBatch","keys","values","getBatch","map","decodeNativeBatchValue","removeBatch","removeByPrefix","setSecureAccessControl","level","getSecureBiometric","setSecureBiometricWithLevel","deleteSecureBiometric","hasSecureBiometric","clearSecureBiometric","buildNativeAdapter","internals","scopedUnsubscribers","Map","suppressedNativeEvents","StorageScope","Disk","Secure","suppressNativeEvent","suppressedEvents","consumeSuppressedNativeEvent","count","undefined","delete","ensureNativeScopeSubscription","unsubscribe","addOnChange","clearAllPendingDiskWrites","clearPendingDiskWrite","clearAllPendingSecureWrites","clearPendingSecureWrite","clearScopeRawCache","notifyAllListeners","getScopedListeners","oldValue","readCachedRawValue","cacheRawValue","notifyKeyListeners","emitKeyChange","unescapeCollidingRawValue","maybeCleanupNativeScopeSubscription","listeners","hasScopeEventListeners","hasEventObserver","backend","changeSource","applyAccessControlOnSecureRawWrite","ensureScopeSubscription","maybeCleanupScopeSubscription","onWillEmitChanges","operation","source","Memory","forEach","getSecureMetadataProfile","encrypted","hardwareBacked","core","createStorageCore","secureWritesBuffered","storage","exports","setAccessControl","measureOperation","assertAccessControlLevel","setSecureDefaultAccessControl","setSecureWritesAsync","enabled","setKeychainAccessGroup","group","getCapabilities","platform","disk","secure","writeBuffering","resolveNativeWriteBuffering","Platform","OS","errorClassification","getSecurityCapabilities","secureStorage","accessControl","keychainAccessGroup","biometric","prompt","biometryOnly","biometryOrPasscode","metadata","perKey","listsWithoutValues","persistsTimestamps","createStorageItem","memoryItem","diskItem","secureItem","createSetItem","registerMigration","migrateToLatest","runTransaction","createSecureAuthStorage","setWebSecureStorageBackend","_backend","getWebSecureStorageBackend","setWebDiskStorageBackend","getWebDiskStorageBackend","flushWebStorageBackends"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -27,7 +27,14 @@ Object.defineProperty(exports, "createIndexedDBBackend", {
|
|
|
27
27
|
return _indexeddbBackend.createIndexedDBBackend;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
-
exports.
|
|
30
|
+
exports.createStorageItem = exports.createSetItem = exports.createSecureAuthStorage = void 0;
|
|
31
|
+
Object.defineProperty(exports, "describeWebBackendCapabilities", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () {
|
|
34
|
+
return _webBackendContract.describeWebBackendCapabilities;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
exports.diskItem = void 0;
|
|
31
38
|
exports.flushWebStorageBackends = flushWebStorageBackends;
|
|
32
39
|
exports.getBatch = void 0;
|
|
33
40
|
Object.defineProperty(exports, "getStorageErrorCode", {
|
|
@@ -38,6 +45,12 @@ Object.defineProperty(exports, "getStorageErrorCode", {
|
|
|
38
45
|
});
|
|
39
46
|
exports.getWebDiskStorageBackend = getWebDiskStorageBackend;
|
|
40
47
|
exports.getWebSecureStorageBackend = getWebSecureStorageBackend;
|
|
48
|
+
Object.defineProperty(exports, "isIndexedDBWebBackend", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _webBackendContract.isIndexedDBWebBackend;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
41
54
|
Object.defineProperty(exports, "isKeychainLockedError", {
|
|
42
55
|
enumerable: true,
|
|
43
56
|
get: function () {
|
|
@@ -85,21 +98,33 @@ Object.defineProperty(exports, "useStorageValue", {
|
|
|
85
98
|
return _storageHooks.useStorageValue;
|
|
86
99
|
}
|
|
87
100
|
});
|
|
101
|
+
var _capabilities = require("./capabilities");
|
|
102
|
+
var _internal = require("./internal");
|
|
88
103
|
var _shared = require("./shared");
|
|
104
|
+
var _storageCore = require("./storage-core");
|
|
89
105
|
var _Storage = require("./Storage.types");
|
|
90
106
|
var _webStorageBackend = require("./web-storage-backend");
|
|
91
|
-
var _storageCore = require("./storage-core");
|
|
92
107
|
var _migration = require("./migration");
|
|
93
108
|
var _storageRuntime = require("./storage-runtime");
|
|
109
|
+
var _webBackendContract = require("./web-backend-contract");
|
|
94
110
|
var _storageHooks = require("./storage-hooks");
|
|
95
111
|
var _indexeddbBackend = require("./indexeddb-backend");
|
|
96
|
-
const webScopeKeyIndex =
|
|
112
|
+
const webScopeKeyIndex = {
|
|
113
|
+
[_Storage.StorageScope.Disk]: new Set(),
|
|
114
|
+
[_Storage.StorageScope.Secure]: new Set()
|
|
115
|
+
};
|
|
97
116
|
const hydratedWebScopeKeyIndex = new Set();
|
|
98
117
|
const SECURE_WEB_PREFIX = "__secure_";
|
|
99
118
|
const BIOMETRIC_WEB_PREFIX = "__bio_";
|
|
100
119
|
let hasWarnedAboutWebBiometricFallback = false;
|
|
101
120
|
let hasWindowStorageEventSubscription = false;
|
|
102
121
|
let internals;
|
|
122
|
+
function getInternals() {
|
|
123
|
+
if (internals === undefined) {
|
|
124
|
+
throw new Error("NitroStorage(web): storage core is not initialized.");
|
|
125
|
+
}
|
|
126
|
+
return internals;
|
|
127
|
+
}
|
|
103
128
|
function createDefaultDiskBackend() {
|
|
104
129
|
return (0, _webStorageBackend.createLocalStorageWebBackend)({
|
|
105
130
|
name: "localStorage:disk",
|
|
@@ -115,6 +140,7 @@ function createDefaultSecureBackend() {
|
|
|
115
140
|
let webDiskStorageBackend = createDefaultDiskBackend();
|
|
116
141
|
let webSecureStorageBackend = createDefaultSecureBackend();
|
|
117
142
|
const externalSyncUnsubscribers = new Map();
|
|
143
|
+
const retiredWebBackends = new Map();
|
|
118
144
|
function getBackendName(scope, backend) {
|
|
119
145
|
const scopeName = scope === _Storage.StorageScope.Disk ? "disk" : "secure";
|
|
120
146
|
return backend?.name ?? `web:${scopeName}`;
|
|
@@ -155,7 +181,7 @@ function fromBiometricStorageKey(key) {
|
|
|
155
181
|
return key.slice(BIOMETRIC_WEB_PREFIX.length);
|
|
156
182
|
}
|
|
157
183
|
function getWebScopeKeyIndex(scope) {
|
|
158
|
-
return webScopeKeyIndex
|
|
184
|
+
return webScopeKeyIndex[scope];
|
|
159
185
|
}
|
|
160
186
|
function hydrateWebScopeKeyIndex(scope) {
|
|
161
187
|
if (hydratedWebScopeKeyIndex.has(scope)) {
|
|
@@ -186,51 +212,51 @@ function ensureWebScopeKeyIndex(scope) {
|
|
|
186
212
|
}
|
|
187
213
|
function applyExternalChangeEvent(scope, key, newValue) {
|
|
188
214
|
if (key === null) {
|
|
189
|
-
|
|
215
|
+
getInternals().clearScopeRawCache(scope);
|
|
190
216
|
ensureWebScopeKeyIndex(scope).clear();
|
|
191
|
-
(0, _shared.notifyAllListeners)(
|
|
217
|
+
(0, _shared.notifyAllListeners)(getInternals().getScopedListeners(scope));
|
|
192
218
|
return;
|
|
193
219
|
}
|
|
194
220
|
if (scope === _Storage.StorageScope.Secure && key.startsWith(SECURE_WEB_PREFIX)) {
|
|
195
221
|
const plainKey = fromSecureStorageKey(key);
|
|
196
|
-
const oldValue =
|
|
222
|
+
const oldValue = getInternals().readCachedRawValue(_Storage.StorageScope.Secure, plainKey);
|
|
197
223
|
if (newValue === null) {
|
|
198
224
|
ensureWebScopeKeyIndex(_Storage.StorageScope.Secure).delete(plainKey);
|
|
199
|
-
|
|
225
|
+
getInternals().cacheRawValue(_Storage.StorageScope.Secure, plainKey, undefined);
|
|
200
226
|
} else {
|
|
201
227
|
ensureWebScopeKeyIndex(_Storage.StorageScope.Secure).add(plainKey);
|
|
202
|
-
|
|
228
|
+
getInternals().cacheRawValue(_Storage.StorageScope.Secure, plainKey, newValue);
|
|
203
229
|
}
|
|
204
|
-
(0, _shared.notifyKeyListeners)(
|
|
205
|
-
|
|
230
|
+
(0, _shared.notifyKeyListeners)(getInternals().getScopedListeners(_Storage.StorageScope.Secure), plainKey);
|
|
231
|
+
getInternals().emitKeyChange(_Storage.StorageScope.Secure, plainKey, oldValue === undefined ? undefined : (0, _internal.unescapeCollidingRawValue)(oldValue), newValue === null ? undefined : (0, _internal.unescapeCollidingRawValue)(newValue), "external", "external");
|
|
206
232
|
return;
|
|
207
233
|
}
|
|
208
234
|
if (scope === _Storage.StorageScope.Secure && key.startsWith(BIOMETRIC_WEB_PREFIX)) {
|
|
209
235
|
const plainKey = fromBiometricStorageKey(key);
|
|
210
|
-
const oldValue =
|
|
236
|
+
const oldValue = getInternals().readCachedRawValue(_Storage.StorageScope.Secure, plainKey);
|
|
211
237
|
if (newValue === null) {
|
|
212
238
|
if (withWebBackendOperation(_Storage.StorageScope.Secure, "external-sync:getItem", backend => backend.getItem(toSecureStorageKey(plainKey))) === null) {
|
|
213
239
|
ensureWebScopeKeyIndex(_Storage.StorageScope.Secure).delete(plainKey);
|
|
214
240
|
}
|
|
215
|
-
|
|
241
|
+
getInternals().cacheRawValue(_Storage.StorageScope.Secure, plainKey, undefined);
|
|
216
242
|
} else {
|
|
217
243
|
ensureWebScopeKeyIndex(_Storage.StorageScope.Secure).add(plainKey);
|
|
218
|
-
|
|
244
|
+
getInternals().cacheRawValue(_Storage.StorageScope.Secure, plainKey, newValue);
|
|
219
245
|
}
|
|
220
|
-
(0, _shared.notifyKeyListeners)(
|
|
221
|
-
|
|
246
|
+
(0, _shared.notifyKeyListeners)(getInternals().getScopedListeners(_Storage.StorageScope.Secure), plainKey);
|
|
247
|
+
getInternals().emitKeyChange(_Storage.StorageScope.Secure, plainKey, oldValue === undefined ? undefined : (0, _internal.unescapeCollidingRawValue)(oldValue), newValue === null ? undefined : (0, _internal.unescapeCollidingRawValue)(newValue), "external", "external");
|
|
222
248
|
return;
|
|
223
249
|
}
|
|
224
|
-
const oldValue =
|
|
250
|
+
const oldValue = getInternals().readCachedRawValue(scope, key);
|
|
225
251
|
if (newValue === null) {
|
|
226
252
|
ensureWebScopeKeyIndex(scope).delete(key);
|
|
227
|
-
|
|
253
|
+
getInternals().cacheRawValue(scope, key, undefined);
|
|
228
254
|
} else {
|
|
229
255
|
ensureWebScopeKeyIndex(scope).add(key);
|
|
230
|
-
|
|
256
|
+
getInternals().cacheRawValue(scope, key, newValue);
|
|
231
257
|
}
|
|
232
|
-
(0, _shared.notifyKeyListeners)(
|
|
233
|
-
|
|
258
|
+
(0, _shared.notifyKeyListeners)(getInternals().getScopedListeners(scope), key);
|
|
259
|
+
getInternals().emitKeyChange(scope, key, oldValue === undefined ? undefined : (0, _internal.unescapeCollidingRawValue)(oldValue), newValue === null ? undefined : (0, _internal.unescapeCollidingRawValue)(newValue), "external", "external");
|
|
234
260
|
}
|
|
235
261
|
function handleWebStorageEvent(event) {
|
|
236
262
|
const key = event.key;
|
|
@@ -272,6 +298,16 @@ function closeWebBackend(scope, backend) {
|
|
|
272
298
|
throw createWebStorageError(scope, "close", error, backend);
|
|
273
299
|
}
|
|
274
300
|
}
|
|
301
|
+
function retireWebBackend(scope, previousBackend, nextBackend) {
|
|
302
|
+
if (!previousBackend || previousBackend === nextBackend) {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
if (previousBackend.flush) {
|
|
306
|
+
retiredWebBackends.set(previousBackend, scope);
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
closeWebBackend(scope, previousBackend);
|
|
310
|
+
}
|
|
275
311
|
function ensureExternalSyncSubscriptions() {
|
|
276
312
|
if (!hasWindowStorageEventSubscription && typeof window !== "undefined" && typeof window.addEventListener === "function") {
|
|
277
313
|
window.addEventListener("storage", handleWebStorageEvent);
|
|
@@ -293,7 +329,7 @@ const WebStorage = {
|
|
|
293
329
|
backend.setItem(storageKey, value);
|
|
294
330
|
});
|
|
295
331
|
ensureWebScopeKeyIndex(scope).add(key);
|
|
296
|
-
(0, _shared.notifyKeyListeners)(
|
|
332
|
+
(0, _shared.notifyKeyListeners)(getInternals().getScopedListeners(scope), key);
|
|
297
333
|
},
|
|
298
334
|
get: (key, scope) => {
|
|
299
335
|
if (scope !== _Storage.StorageScope.Disk && scope !== _Storage.StorageScope.Secure) {
|
|
@@ -322,7 +358,7 @@ const WebStorage = {
|
|
|
322
358
|
});
|
|
323
359
|
}
|
|
324
360
|
ensureWebScopeKeyIndex(scope).delete(key);
|
|
325
|
-
(0, _shared.notifyKeyListeners)(
|
|
361
|
+
(0, _shared.notifyKeyListeners)(getInternals().getScopedListeners(scope), key);
|
|
326
362
|
},
|
|
327
363
|
clear: scope => {
|
|
328
364
|
if (scope !== _Storage.StorageScope.Disk && scope !== _Storage.StorageScope.Secure) {
|
|
@@ -332,7 +368,7 @@ const WebStorage = {
|
|
|
332
368
|
backend.clear();
|
|
333
369
|
});
|
|
334
370
|
ensureWebScopeKeyIndex(scope).clear();
|
|
335
|
-
(0, _shared.notifyAllListeners)(
|
|
371
|
+
(0, _shared.notifyAllListeners)(getInternals().getScopedListeners(scope));
|
|
336
372
|
},
|
|
337
373
|
setBatch: (keys, values, scope) => {
|
|
338
374
|
if (scope !== _Storage.StorageScope.Disk && scope !== _Storage.StorageScope.Secure) {
|
|
@@ -360,8 +396,10 @@ const WebStorage = {
|
|
|
360
396
|
});
|
|
361
397
|
const keyIndex = ensureWebScopeKeyIndex(scope);
|
|
362
398
|
entries.forEach(([storageKey]) => keyIndex.add(scope === _Storage.StorageScope.Secure ? storageKey.slice(SECURE_WEB_PREFIX.length) : storageKey));
|
|
363
|
-
const listeners =
|
|
364
|
-
keys.forEach(key =>
|
|
399
|
+
const listeners = getInternals().getScopedListeners(scope);
|
|
400
|
+
keys.forEach(key => {
|
|
401
|
+
(0, _shared.notifyKeyListeners)(listeners, key);
|
|
402
|
+
});
|
|
365
403
|
},
|
|
366
404
|
getBatch: (keys, scope) => {
|
|
367
405
|
if (scope !== _Storage.StorageScope.Disk && scope !== _Storage.StorageScope.Secure) {
|
|
@@ -404,8 +442,10 @@ const WebStorage = {
|
|
|
404
442
|
}
|
|
405
443
|
const keyIndex = ensureWebScopeKeyIndex(scope);
|
|
406
444
|
keys.forEach(key => keyIndex.delete(key));
|
|
407
|
-
const listeners =
|
|
408
|
-
keys.forEach(key =>
|
|
445
|
+
const listeners = getInternals().getScopedListeners(scope);
|
|
446
|
+
keys.forEach(key => {
|
|
447
|
+
(0, _shared.notifyKeyListeners)(listeners, key);
|
|
448
|
+
});
|
|
409
449
|
},
|
|
410
450
|
removeByPrefix: (prefix, scope) => {
|
|
411
451
|
if (scope !== _Storage.StorageScope.Disk && scope !== _Storage.StorageScope.Secure) {
|
|
@@ -461,27 +501,32 @@ const WebStorage = {
|
|
|
461
501
|
backend.setItem(toSecureStorageKey(key), value);
|
|
462
502
|
});
|
|
463
503
|
ensureWebScopeKeyIndex(_Storage.StorageScope.Secure).add(key);
|
|
464
|
-
(0, _shared.notifyKeyListeners)(
|
|
504
|
+
(0, _shared.notifyKeyListeners)(getInternals().getScopedListeners(_Storage.StorageScope.Secure), key);
|
|
465
505
|
return;
|
|
466
506
|
}
|
|
467
507
|
if (typeof __DEV__ !== "undefined" && __DEV__ && !hasWarnedAboutWebBiometricFallback) {
|
|
468
508
|
hasWarnedAboutWebBiometricFallback = true;
|
|
469
509
|
console.warn("[NitroStorage] Biometric storage is not supported on web. Using localStorage.");
|
|
470
510
|
}
|
|
471
|
-
withWebBackendOperation(_Storage.StorageScope.Secure, "setSecureBiometric", backend =>
|
|
511
|
+
withWebBackendOperation(_Storage.StorageScope.Secure, "setSecureBiometric", backend => {
|
|
512
|
+
backend.setItem(toBiometricStorageKey(key), value);
|
|
513
|
+
backend.removeItem(toSecureStorageKey(key));
|
|
514
|
+
});
|
|
472
515
|
ensureWebScopeKeyIndex(_Storage.StorageScope.Secure).add(key);
|
|
473
|
-
(0, _shared.notifyKeyListeners)(
|
|
516
|
+
(0, _shared.notifyKeyListeners)(getInternals().getScopedListeners(_Storage.StorageScope.Secure), key);
|
|
474
517
|
},
|
|
475
518
|
getSecureBiometric: key => {
|
|
476
519
|
const value = withWebBackendOperation(_Storage.StorageScope.Secure, "getSecureBiometric", backend => backend.getItem(toBiometricStorageKey(key)));
|
|
477
520
|
return value ?? undefined;
|
|
478
521
|
},
|
|
479
522
|
deleteSecureBiometric: key => {
|
|
480
|
-
withWebBackendOperation(_Storage.StorageScope.Secure, "deleteSecureBiometric", backend =>
|
|
523
|
+
withWebBackendOperation(_Storage.StorageScope.Secure, "deleteSecureBiometric", backend => {
|
|
524
|
+
backend.removeItem(toBiometricStorageKey(key));
|
|
525
|
+
});
|
|
481
526
|
if (withWebBackendOperation(_Storage.StorageScope.Secure, "deleteSecureBiometric:getItem", backend => backend.getItem(toSecureStorageKey(key))) === null) {
|
|
482
527
|
ensureWebScopeKeyIndex(_Storage.StorageScope.Secure).delete(key);
|
|
483
528
|
}
|
|
484
|
-
(0, _shared.notifyKeyListeners)(
|
|
529
|
+
(0, _shared.notifyKeyListeners)(getInternals().getScopedListeners(_Storage.StorageScope.Secure), key);
|
|
485
530
|
},
|
|
486
531
|
hasSecureBiometric: key => {
|
|
487
532
|
return withWebBackendOperation(_Storage.StorageScope.Secure, "hasSecureBiometric", backend => backend.getItem(toBiometricStorageKey(key))) !== null;
|
|
@@ -508,8 +553,10 @@ const WebStorage = {
|
|
|
508
553
|
keyIndex.delete(key);
|
|
509
554
|
}
|
|
510
555
|
});
|
|
511
|
-
const listeners =
|
|
512
|
-
keysToNotify.forEach(key =>
|
|
556
|
+
const listeners = getInternals().getScopedListeners(_Storage.StorageScope.Secure);
|
|
557
|
+
keysToNotify.forEach(key => {
|
|
558
|
+
(0, _shared.notifyKeyListeners)(listeners, key);
|
|
559
|
+
});
|
|
513
560
|
}
|
|
514
561
|
};
|
|
515
562
|
function buildWebAdapter(coreInternals) {
|
|
@@ -518,7 +565,6 @@ function buildWebAdapter(coreInternals) {
|
|
|
518
565
|
backend: WebStorage,
|
|
519
566
|
changeSource: "web",
|
|
520
567
|
applyAccessControlOnSecureRawWrite: false,
|
|
521
|
-
flushDiskWritesOnImport: true,
|
|
522
568
|
ensureScopeSubscription: () => {
|
|
523
569
|
ensureExternalSyncSubscriptions();
|
|
524
570
|
},
|
|
@@ -536,14 +582,14 @@ const storage = exports.storage = {
|
|
|
536
582
|
...core.storage,
|
|
537
583
|
setAccessControl: level => {
|
|
538
584
|
(0, _shared.assertAccessControlLevel)(level);
|
|
539
|
-
|
|
540
|
-
|
|
585
|
+
getInternals().setSecureDefaultAccessControl(level);
|
|
586
|
+
getInternals().recordMetric("storage:setAccessControl", _Storage.StorageScope.Secure, 0);
|
|
541
587
|
},
|
|
542
588
|
setSecureWritesAsync: _enabled => {
|
|
543
|
-
|
|
589
|
+
getInternals().recordMetric("storage:setSecureWritesAsync", _Storage.StorageScope.Secure, 0);
|
|
544
590
|
},
|
|
545
591
|
setKeychainAccessGroup: _group => {
|
|
546
|
-
|
|
592
|
+
getInternals().recordMetric("storage:setKeychainAccessGroup", _Storage.StorageScope.Secure, 0);
|
|
547
593
|
},
|
|
548
594
|
getCapabilities: () => ({
|
|
549
595
|
platform: "web",
|
|
@@ -551,10 +597,7 @@ const storage = exports.storage = {
|
|
|
551
597
|
disk: getBackendName(_Storage.StorageScope.Disk, webDiskStorageBackend),
|
|
552
598
|
secure: getBackendName(_Storage.StorageScope.Secure, webSecureStorageBackend)
|
|
553
599
|
},
|
|
554
|
-
writeBuffering:
|
|
555
|
-
disk: true,
|
|
556
|
-
secure: true
|
|
557
|
-
},
|
|
600
|
+
writeBuffering: (0, _capabilities.resolveWebWriteBuffering)(webDiskStorageBackend?.name, webSecureStorageBackend?.name),
|
|
558
601
|
errorClassification: true
|
|
559
602
|
}),
|
|
560
603
|
getSecurityCapabilities: () => {
|
|
@@ -597,15 +640,13 @@ const createSecureAuthStorage = exports.createSecureAuthStorage = core.createSec
|
|
|
597
640
|
function setWebSecureStorageBackend(backend) {
|
|
598
641
|
const previousBackend = webSecureStorageBackend;
|
|
599
642
|
const nextBackend = backend ?? createDefaultSecureBackend();
|
|
600
|
-
|
|
643
|
+
getInternals().flushSecureWrites();
|
|
601
644
|
resetBackendChangeSubscription(_Storage.StorageScope.Secure);
|
|
602
645
|
webSecureStorageBackend = nextBackend;
|
|
603
646
|
hydratedWebScopeKeyIndex.delete(_Storage.StorageScope.Secure);
|
|
604
|
-
|
|
647
|
+
getInternals().clearScopeRawCache(_Storage.StorageScope.Secure);
|
|
605
648
|
ensureExternalSyncSubscriptions();
|
|
606
|
-
|
|
607
|
-
closeWebBackend(_Storage.StorageScope.Secure, previousBackend);
|
|
608
|
-
}
|
|
649
|
+
retireWebBackend(_Storage.StorageScope.Secure, previousBackend, nextBackend);
|
|
609
650
|
}
|
|
610
651
|
function getWebSecureStorageBackend() {
|
|
611
652
|
return webSecureStorageBackend;
|
|
@@ -613,31 +654,42 @@ function getWebSecureStorageBackend() {
|
|
|
613
654
|
function setWebDiskStorageBackend(backend) {
|
|
614
655
|
const previousBackend = webDiskStorageBackend;
|
|
615
656
|
const nextBackend = backend ?? createDefaultDiskBackend();
|
|
616
|
-
|
|
657
|
+
getInternals().flushDiskWrites();
|
|
617
658
|
resetBackendChangeSubscription(_Storage.StorageScope.Disk);
|
|
618
659
|
webDiskStorageBackend = nextBackend;
|
|
619
660
|
hydratedWebScopeKeyIndex.delete(_Storage.StorageScope.Disk);
|
|
620
|
-
|
|
661
|
+
getInternals().clearScopeRawCache(_Storage.StorageScope.Disk);
|
|
621
662
|
ensureExternalSyncSubscriptions();
|
|
622
|
-
|
|
623
|
-
closeWebBackend(_Storage.StorageScope.Disk, previousBackend);
|
|
624
|
-
}
|
|
663
|
+
retireWebBackend(_Storage.StorageScope.Disk, previousBackend, nextBackend);
|
|
625
664
|
}
|
|
626
665
|
function getWebDiskStorageBackend() {
|
|
627
666
|
return webDiskStorageBackend;
|
|
628
667
|
}
|
|
629
668
|
async function flushWebStorageBackends() {
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
const
|
|
633
|
-
const
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
669
|
+
getInternals().flushDiskWrites();
|
|
670
|
+
getInternals().flushSecureWrites();
|
|
671
|
+
const backends = Array.from(new Set([webDiskStorageBackend, webSecureStorageBackend, ...retiredWebBackends.keys()])).filter(backend => backend !== undefined);
|
|
672
|
+
const results = await Promise.allSettled(backends.map(async backend => {
|
|
673
|
+
if (backend.flush) {
|
|
674
|
+
await backend.flush();
|
|
675
|
+
}
|
|
676
|
+
if (!retiredWebBackends.has(backend)) {
|
|
677
|
+
return;
|
|
678
|
+
}
|
|
679
|
+
if (backend === webDiskStorageBackend || backend === webSecureStorageBackend) {
|
|
680
|
+
retiredWebBackends.delete(backend);
|
|
681
|
+
return;
|
|
682
|
+
}
|
|
683
|
+
const scope = retiredWebBackends.get(backend);
|
|
684
|
+
if (scope === undefined) {
|
|
685
|
+
return;
|
|
686
|
+
}
|
|
687
|
+
closeWebBackend(scope, backend);
|
|
688
|
+
retiredWebBackends.delete(backend);
|
|
689
|
+
}));
|
|
690
|
+
const failure = results.find(result => result.status === "rejected");
|
|
691
|
+
if (failure) {
|
|
692
|
+
throw failure.reason;
|
|
693
|
+
}
|
|
642
694
|
}
|
|
643
695
|
//# sourceMappingURL=index.web.js.map
|