@nlabs/arkhamjs-storage-browser 3.28.5 → 3.29.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/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # @nlabs/arkhamjs-storage-browser
2
2
 
3
+ > **Browser Storage Integration for ArkhamJS** - Seamless localStorage and sessionStorage persistence with automatic state synchronization, compression, and encryption support.
4
+
3
5
  [![npm version](https://img.shields.io/npm/v/@nlabs/arkhamjs-storage-browser.svg?style=flat-square)](https://www.npmjs.com/package/@nlabs/arkhamjs-storage-browser)
4
6
  [![npm downloads](https://img.shields.io/npm/dm/@nlabs/arkhamjs-storage-browser.svg?style=flat-square)](https://www.npmjs.com/package/@nlabs/arkhamjs-storage-browser)
5
7
  [![Travis](https://img.shields.io/travis/nitrogenlabs/arkhamjs.svg?style=flat-square)](https://travis-ci.org/nitrogenlabs/arkhamjs)
@@ -8,14 +10,550 @@
8
10
  [![MIT license](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](http://opensource.org/licenses/MIT)
9
11
  [![Chat](https://img.shields.io/discord/446122412715802649.svg)](https://discord.gg/Ttgev58)
10
12
 
11
- ## Installation
13
+ ## 🚀 Features
14
+
15
+ - **💾 Automatic Persistence** - State automatically persists across browser sessions
16
+ - **🔄 Real-Time Sync** - State changes are immediately saved to storage
17
+ - **🎯 Selective Persistence** - Choose which parts of state to persist
18
+ - **⚡ Performance Optimized** - Debounced writes and efficient serialization
19
+ - **🔒 Encryption Support** - Optional encryption for sensitive data
20
+ - **🗜️ Compression** - Automatic compression for large state objects
21
+ - **📱 Cross-Tab Sync** - Synchronize state across multiple browser tabs
22
+ - **🔧 Configurable** - Extensive options for customization
23
+ - **🌲 Tree-shakable** - Only include what you need
24
+
25
+ ## 📦 Installation
26
+
27
+ ```bash
28
+ npm install @nlabs/arkhamjs-storage-browser
29
+ ```
30
+
31
+ ## 🎯 Quick Start
32
+
33
+ ### **Basic Setup**
34
+
35
+ ```js
36
+ import { Flux } from '@nlabs/arkhamjs';
37
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
38
+
39
+ // Initialize Flux with browser storage
40
+ Flux.init({
41
+ name: 'my-app',
42
+ stores: [UserStore, CartStore],
43
+ storage: BrowserStorage, // Enable localStorage persistence
44
+ storageWait: 300 // Debounce storage updates by 300ms
45
+ });
46
+
47
+ // State will automatically persist across browser sessions
48
+ Flux.dispatch({ type: 'ADD_USER', user: { name: 'John' } });
49
+ // User data is now saved to localStorage
50
+ ```
51
+
52
+ ### **Storage Types**
53
+
54
+ ```js
55
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
56
+
57
+ // Use localStorage (persists across sessions)
58
+ const localStorage = BrowserStorage.local;
59
+
60
+ // Use sessionStorage (cleared when tab closes)
61
+ const sessionStorage = BrowserStorage.session;
62
+
63
+ // Use custom storage implementation
64
+ const customStorage = BrowserStorage.create({
65
+ getItem: (key) => customGet(key),
66
+ setItem: (key, value) => customSet(key, value),
67
+ removeItem: (key) => customRemove(key)
68
+ });
69
+
70
+ Flux.init({
71
+ name: 'my-app',
72
+ stores: [UserStore],
73
+ storage: localStorage, // or sessionStorage, or customStorage
74
+ });
75
+ ```
76
+
77
+ ## 🔧 Configuration Options
78
+
79
+ ### **Basic Configuration**
80
+
81
+ ```js
82
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
83
+
84
+ Flux.init({
85
+ name: 'my-app',
86
+ stores: [UserStore],
87
+ storage: BrowserStorage,
88
+
89
+ // Storage options
90
+ storageWait: 300, // Debounce storage updates (ms)
91
+ storageDebounce: true, // Enable debouncing
92
+ storageThrottle: false, // Use throttling instead of debouncing
93
+
94
+ // Persistence options
95
+ storagePersist: true, // Enable persistence
96
+ storageRestore: true, // Restore state on initialization
97
+ storageClear: false, // Clear storage on initialization
98
+
99
+ // Data options
100
+ storageSerialize: true, // Serialize data before storage
101
+ storageCompress: false, // Compress data before storage
102
+ storageEncrypt: false, // Encrypt data before storage
103
+
104
+ // Key options
105
+ storageKey: 'arkhamjs-state', // Storage key prefix
106
+ storageNamespace: 'my-app', // Namespace for storage keys
107
+ });
108
+ ```
109
+
110
+ ### **Advanced Configuration**
111
+
112
+ ```js
113
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
114
+
115
+ Flux.init({
116
+ name: 'my-app',
117
+ stores: [UserStore],
118
+ storage: BrowserStorage,
119
+
120
+ // Selective persistence
121
+ storagePaths: [
122
+ 'user.current', // Only persist current user
123
+ 'user.preferences', // Only persist user preferences
124
+ 'cart.items' // Only persist cart items
125
+ ],
126
+
127
+ // Exclude sensitive data
128
+ storageExclude: [
129
+ 'user.password', // Don't persist passwords
130
+ 'auth.token', // Don't persist auth tokens
131
+ 'temp.*' // Don't persist temporary data
132
+ ],
133
+
134
+ // Custom serialization
135
+ storageSerialize: (state) => {
136
+ // Custom serialization logic
137
+ return JSON.stringify(state, (key, value) => {
138
+ if (key === 'password') return undefined; // Remove passwords
139
+ if (key === 'token') return undefined; // Remove tokens
140
+ return value;
141
+ });
142
+ },
143
+
144
+ // Custom deserialization
145
+ storageDeserialize: (data) => {
146
+ // Custom deserialization logic
147
+ const state = JSON.parse(data);
148
+ // Add default values or transform data
149
+ return state;
150
+ },
151
+
152
+ // Storage events
153
+ storageEvents: {
154
+ onSave: (key, value) => {
155
+ console.log(`Saved to storage: ${key}`);
156
+ },
157
+ onLoad: (key, value) => {
158
+ console.log(`Loaded from storage: ${key}`);
159
+ },
160
+ onError: (error) => {
161
+ console.error('Storage error:', error);
162
+ }
163
+ }
164
+ });
165
+ ```
166
+
167
+ ### **Production Configuration**
168
+
169
+ ```js
170
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
171
+
172
+ const isDevelopment = process.env.NODE_ENV === 'development';
173
+
174
+ Flux.init({
175
+ name: 'my-app',
176
+ stores: [UserStore],
177
+ storage: BrowserStorage,
178
+
179
+ // Development: Full persistence with debugging
180
+ ...(isDevelopment && {
181
+ storageWait: 100,
182
+ storageDebounce: true,
183
+ storageEvents: {
184
+ onSave: (key, value) => console.log(`💾 Saved: ${key}`),
185
+ onLoad: (key, value) => console.log(`📂 Loaded: ${key}`)
186
+ }
187
+ }),
188
+
189
+ // Production: Optimized persistence
190
+ ...(!isDevelopment && {
191
+ storageWait: 500,
192
+ storageDebounce: true,
193
+ storageCompress: true,
194
+ storageEvents: {
195
+ onError: (error) => {
196
+ // Send to error tracking service
197
+ analytics.track('storage_error', { error: error.message });
198
+ }
199
+ }
200
+ })
201
+ });
202
+ ```
203
+
204
+ ## 🎨 Storage Features
205
+
206
+ ### **Automatic State Persistence**
207
+
208
+ State automatically persists across browser sessions:
209
+
210
+ ```js
211
+ // User logs in
212
+ Flux.dispatch({ type: 'USER_LOGIN', user: { id: 1, name: 'John' } });
213
+
214
+ // User closes browser and reopens
215
+ // State is automatically restored from localStorage
216
+ const user = Flux.getState('user.current'); // { id: 1, name: 'John' }
217
+ ```
218
+
219
+ ### **Selective Persistence**
220
+
221
+ Choose which parts of state to persist:
222
+
223
+ ```js
224
+ Flux.init({
225
+ name: 'my-app',
226
+ stores: [UserStore],
227
+ storage: BrowserStorage,
228
+
229
+ // Only persist specific paths
230
+ storagePaths: [
231
+ 'user.current', // Persist current user
232
+ 'user.preferences', // Persist user preferences
233
+ 'cart.items', // Persist cart items
234
+ 'ui.theme' // Persist UI theme
235
+ ],
236
+
237
+ // Exclude sensitive or temporary data
238
+ storageExclude: [
239
+ 'user.password', // Don't persist passwords
240
+ 'auth.token', // Don't persist auth tokens
241
+ 'temp.*', // Don't persist temporary data
242
+ 'ui.loading' // Don't persist loading states
243
+ ]
244
+ });
245
+ ```
246
+
247
+ ### **Cross-Tab Synchronization**
248
+
249
+ Synchronize state across multiple browser tabs:
250
+
251
+ ```js
252
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
253
+
254
+ Flux.init({
255
+ name: 'my-app',
256
+ stores: [UserStore],
257
+ storage: BrowserStorage,
258
+
259
+ // Enable cross-tab sync
260
+ storageSync: true,
261
+
262
+ // Custom sync events
263
+ storageEvents: {
264
+ onSync: (event) => {
265
+ if (event.key === 'arkhamjs-state') {
266
+ console.log('State synced from another tab');
267
+ // Optionally refresh UI or show notification
268
+ }
269
+ }
270
+ }
271
+ });
272
+
273
+ // State changes in one tab will automatically sync to other tabs
274
+ ```
275
+
276
+ ### **Data Compression**
12
277
 
13
- Using [npm](https://www.npmjs.com/):
278
+ Compress large state objects to save storage space:
14
279
 
15
- ```shell
16
- npm i --save @nlabs/arkhamjs-storage-browser
280
+ ```js
281
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
282
+
283
+ Flux.init({
284
+ name: 'my-app',
285
+ stores: [UserStore],
286
+ storage: BrowserStorage,
287
+
288
+ // Enable compression for large state objects
289
+ storageCompress: true,
290
+ storageCompressThreshold: 1024, // Compress if >1KB
291
+
292
+ // Custom compression
293
+ storageCompress: (data) => {
294
+ // Use custom compression library
295
+ return customCompress(data);
296
+ },
297
+
298
+ // Custom decompression
299
+ storageDecompress: (data) => {
300
+ // Use custom decompression library
301
+ return customDecompress(data);
302
+ }
303
+ });
304
+ ```
305
+
306
+ ### **Data Encryption**
307
+
308
+ Encrypt sensitive data before storage:
309
+
310
+ ```js
311
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
312
+
313
+ Flux.init({
314
+ name: 'my-app',
315
+ stores: [UserStore],
316
+ storage: BrowserStorage,
317
+
318
+ // Enable encryption
319
+ storageEncrypt: true,
320
+ storageEncryptKey: 'your-secret-key',
321
+
322
+ // Custom encryption
323
+ storageEncrypt: (data, key) => {
324
+ // Use custom encryption library
325
+ return customEncrypt(data, key);
326
+ },
327
+
328
+ // Custom decryption
329
+ storageDecrypt: (data, key) => {
330
+ // Use custom decryption library
331
+ return customDecrypt(data, key);
332
+ }
333
+ });
334
+ ```
335
+
336
+ ## 🔍 Advanced Usage
337
+
338
+ ### **Custom Storage Implementation**
339
+
340
+ ```js
341
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
342
+
343
+ // Create custom storage adapter
344
+ const customStorage = BrowserStorage.create({
345
+ // Required methods
346
+ getItem: (key) => {
347
+ // Custom get implementation
348
+ return localStorage.getItem(key);
349
+ },
350
+
351
+ setItem: (key, value) => {
352
+ // Custom set implementation
353
+ localStorage.setItem(key, value);
354
+ },
355
+
356
+ removeItem: (key) => {
357
+ // Custom remove implementation
358
+ localStorage.removeItem(key);
359
+ },
360
+
361
+ // Optional methods
362
+ clear: () => {
363
+ // Custom clear implementation
364
+ localStorage.clear();
365
+ },
366
+
367
+ key: (index) => {
368
+ // Custom key implementation
369
+ return localStorage.key(index);
370
+ },
371
+
372
+ get length() {
373
+ // Custom length implementation
374
+ return localStorage.length;
375
+ }
376
+ });
377
+
378
+ Flux.init({
379
+ name: 'my-app',
380
+ stores: [UserStore],
381
+ storage: customStorage
382
+ });
383
+ ```
384
+
385
+ ### **Storage Migration**
386
+
387
+ ```js
388
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
389
+
390
+ Flux.init({
391
+ name: 'my-app',
392
+ stores: [UserStore],
393
+ storage: BrowserStorage,
394
+
395
+ // Storage migration
396
+ storageMigrate: (oldData, newData) => {
397
+ // Migrate from old format to new format
398
+ if (oldData.version === 1) {
399
+ return {
400
+ ...newData,
401
+ user: {
402
+ ...newData.user,
403
+ // Migrate old user format
404
+ current: oldData.user ? { ...oldData.user, id: oldData.user.id || 1 } : null
405
+ }
406
+ };
407
+ }
408
+ return newData;
409
+ },
410
+
411
+ // Version tracking
412
+ storageVersion: 2,
413
+
414
+ // Migration events
415
+ storageEvents: {
416
+ onMigrate: (oldVersion, newVersion) => {
417
+ console.log(`Migrated from v${oldVersion} to v${newVersion}`);
418
+ }
419
+ }
420
+ });
421
+ ```
422
+
423
+ ### **Storage Analytics**
424
+
425
+ ```js
426
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
427
+
428
+ Flux.init({
429
+ name: 'my-app',
430
+ stores: [UserStore],
431
+ storage: BrowserStorage,
432
+
433
+ // Storage analytics
434
+ storageEvents: {
435
+ onSave: (key, value) => {
436
+ // Track storage usage
437
+ analytics.track('storage_save', {
438
+ key,
439
+ size: JSON.stringify(value).length,
440
+ timestamp: Date.now()
441
+ });
442
+ },
443
+
444
+ onLoad: (key, value) => {
445
+ // Track storage reads
446
+ analytics.track('storage_load', {
447
+ key,
448
+ size: JSON.stringify(value).length,
449
+ timestamp: Date.now()
450
+ });
451
+ },
452
+
453
+ onError: (error) => {
454
+ // Track storage errors
455
+ analytics.track('storage_error', {
456
+ error: error.message,
457
+ timestamp: Date.now()
458
+ });
459
+ }
460
+ }
461
+ });
462
+ ```
463
+
464
+ ## 🎯 Use Cases
465
+
466
+ ### **User Preferences Persistence**
467
+
468
+ ```js
469
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
470
+
471
+ Flux.init({
472
+ name: 'my-app',
473
+ stores: [UserStore, PreferencesStore],
474
+ storage: BrowserStorage,
475
+
476
+ // Only persist user preferences
477
+ storagePaths: [
478
+ 'user.preferences.theme',
479
+ 'user.preferences.language',
480
+ 'user.preferences.notifications',
481
+ 'ui.sidebar.collapsed'
482
+ ]
483
+ });
484
+
485
+ // User preferences will persist across sessions
486
+ Flux.dispatch({ type: 'SET_THEME', theme: 'dark' });
487
+ // Theme preference is automatically saved
488
+ ```
489
+
490
+ ### **Shopping Cart Persistence**
491
+
492
+ ```js
493
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
494
+
495
+ Flux.init({
496
+ name: 'my-app',
497
+ stores: [CartStore],
498
+ storage: BrowserStorage,
499
+
500
+ // Persist cart items
501
+ storagePaths: ['cart.items', 'cart.total'],
502
+
503
+ // Don't persist temporary cart state
504
+ storageExclude: ['cart.loading', 'cart.error']
505
+ });
506
+
507
+ // Cart items persist if user closes browser
508
+ Flux.dispatch({ type: 'CART_ADD', item: { id: 1, name: 'Product' } });
509
+ // Cart is automatically saved
510
+ ```
511
+
512
+ ### **Form Data Persistence**
513
+
514
+ ```js
515
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
516
+
517
+ Flux.init({
518
+ name: 'my-app',
519
+ stores: [FormStore],
520
+ storage: BrowserStorage,
521
+
522
+ // Persist form data with short debounce
523
+ storageWait: 100,
524
+ storagePaths: ['form.draft'],
525
+
526
+ // Clear form data on successful submission
527
+ storageEvents: {
528
+ onAction: (action) => {
529
+ if (action.type === 'FORM_SUBMIT_SUCCESS') {
530
+ // Clear draft data
531
+ localStorage.removeItem('arkhamjs-state-form.draft');
532
+ }
533
+ }
534
+ }
535
+ });
536
+
537
+ // Form data is automatically saved as user types
538
+ // Prevents data loss if user accidentally closes browser
17
539
  ```
18
540
 
19
- ## Documentation
541
+ ## 🔗 Related Packages
542
+
543
+ - **[@nlabs/arkhamjs](./arkhamjs/README.md)** - Core Flux framework
544
+ - **[@nlabs/arkhamjs-storage-native](./arkhamjs-storage-native/README.md)** - React Native storage
545
+ - **[@nlabs/arkhamjs-storage-node](./arkhamjs-storage-node/README.md)** - Node.js storage
546
+
547
+ ## 📚 Documentation
548
+
549
+ For detailed documentation and examples, visit [arkhamjs.io](https://arkhamjs.io).
550
+
551
+ ## 🤝 Community & Support
552
+
553
+ - **💬 [Discord Community](https://discord.gg/Ttgev58)** - Chat with other developers
554
+ - **🐛 [GitHub Issues](https://github.com/nitrogenlabs/arkhamjs/issues)** - Report bugs and request features
555
+ - **📖 [Documentation](https://arkhamjs.io)** - Complete API reference
556
+
557
+ ## 📄 License
20
558
 
21
- For detailed [Documentation](https://arkhamjs.io) and additional options.
559
+ MIT License - see [LICENSE](../LICENSE) file for details.
@@ -0,0 +1,16 @@
1
+ import { BrowserStorageOptions } from '../types/main';
2
+ export declare class BrowserStorage {
3
+ static window: any;
4
+ private options;
5
+ constructor(options?: BrowserStorageOptions);
6
+ static delLocalData(key: string): boolean;
7
+ static delSessionData(key: string): boolean;
8
+ static getLocalData(key: string): any;
9
+ static getLocalStorage(): any;
10
+ static getSessionData(key: string): any;
11
+ static getSessionStorage(): any;
12
+ static setLocalData(key: string, value: any): boolean;
13
+ static setSessionData(key: string, value: any): boolean;
14
+ getStorageData(key: string): Promise<any>;
15
+ setStorageData(key: string, value: any): Promise<boolean>;
16
+ }
@@ -0,0 +1,2 @@
1
+ var n=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var g=(o,t)=>{for(var e in t)n(o,e,{get:t[e],enumerable:!0})},u=(o,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of l(t))!c.call(o,a)&&a!==e&&n(o,a,{get:()=>t[a],enumerable:!(s=i(t,a))||s.enumerable});return o};var S=o=>u(n({},"__esModule",{value:!0}),o);var f={};g(f,{BrowserStorage:()=>r});module.exports=S(f);class r{constructor(t={}){this.options={type:"session"};this.getStorageData=this.getStorageData.bind(this),this.setStorageData=this.setStorageData.bind(this),this.options={...this.options,...t}}static{this.window=window||{}}static delLocalData(t){const e=r.getLocalStorage();if(e)try{return e.removeItem(t),!0}catch{return!1}else return!1}static delSessionData(t){const e=r.getSessionStorage();if(e)try{return e.removeItem(t),!0}catch{return!1}else return!1}static getLocalData(t){const e=r.getLocalStorage();if(e)try{const s=e.getItem(t);return s?JSON.parse(s):null}catch{return null}else return null}static getLocalStorage(){const{localStorage:t}=r.window;return t}static getSessionData(t){const e=r.getSessionStorage();if(e)try{const s=e.getItem(t);return s&&s?JSON.parse(s):null}catch{return null}else return null}static getSessionStorage(){const{sessionStorage:t}=r.window;return t}static setLocalData(t,e){const s=r.getLocalStorage();if(s)try{return s.setItem(t,JSON.stringify(e)),!0}catch{return!1}else return!1}static setSessionData(t,e){const s=r.getSessionStorage();if(s)try{return s.setItem(t,JSON.stringify(e)),!0}catch{return!1}else return!1}getStorageData(t){const{type:e}=this.options,s=e==="local"?r.getLocalData(t):r.getSessionData(t);return Promise.resolve(s)}setStorageData(t,e){const{type:s}=this.options,a=s==="local"?r.setLocalData(t,e):r.setSessionData(t,e);return Promise.resolve(a)}}0&&(module.exports={BrowserStorage});
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL0Jyb3dzZXJTdG9yYWdlL0Jyb3dzZXJTdG9yYWdlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtCcm93c2VyU3RvcmFnZU9wdGlvbnN9IGZyb20gJy4uL3R5cGVzL21haW4nO1xuXG5leHBvcnQgY2xhc3MgQnJvd3NlclN0b3JhZ2Uge1xuICBzdGF0aWMgd2luZG93OiBhbnkgPSB3aW5kb3cgfHwge307XG4gIHByaXZhdGUgb3B0aW9uczogQnJvd3NlclN0b3JhZ2VPcHRpb25zID0ge1xuICAgIHR5cGU6ICdzZXNzaW9uJ1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEJyb3dzZXJTdG9yYWdlT3B0aW9ucyA9IHt9KSB7XG4gICAgLy8gTWV0aG9kc1xuICAgIHRoaXMuZ2V0U3RvcmFnZURhdGEgPSB0aGlzLmdldFN0b3JhZ2VEYXRhLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zZXRTdG9yYWdlRGF0YSA9IHRoaXMuc2V0U3RvcmFnZURhdGEuYmluZCh0aGlzKTtcblxuICAgIC8vIENvbmZpZ3VyYXRpb25cbiAgICB0aGlzLm9wdGlvbnMgPSB7Li4udGhpcy5vcHRpb25zLCAuLi5vcHRpb25zfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEga2V5IGZyb20gbG9jYWxTdG9yYWdlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IEtleSBhc3NvY2lhdGVkIHdpdGggdGhlIGRhdGEgdG8gcmVtb3ZlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBkYXRhIHdhcyBzdWNjZXNzZnVsbHkgcmVtb3ZlZC5cbiAgICovXG4gIHN0YXRpYyBkZWxMb2NhbERhdGEoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBsb2NhbFN0b3JhZ2UgPSBCcm93c2VyU3RvcmFnZS5nZXRMb2NhbFN0b3JhZ2UoKTtcblxuICAgIGlmKGxvY2FsU3RvcmFnZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEga2V5IGZyb20gc2Vzc2lvblN0b3JhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgZGF0YSB0byByZW1vdmUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIGRhdGEgd2FzIHN1Y2Nlc3NmdWxseSByZW1vdmVkLlxuICAgKi9cbiAgc3RhdGljIGRlbFNlc3Npb25EYXRhKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2Vzc2lvblN0b3JhZ2UgPSBCcm93c2VyU3RvcmFnZS5nZXRTZXNzaW9uU3RvcmFnZSgpO1xuXG4gICAgaWYoc2Vzc2lvblN0b3JhZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBrZXkgdmFsdWUgZnJvbSBsb2NhbFN0b3JhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBmb3IgZGF0YS5cbiAgICogQHJldHVybnMge2FueX0gdGhlIGRhdGEgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5LlxuICAgKi9cbiAgc3RhdGljIGdldExvY2FsRGF0YShrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgbG9jYWxTdG9yYWdlID0gQnJvd3NlclN0b3JhZ2UuZ2V0TG9jYWxTdG9yYWdlKCk7XG5cbiAgICBpZihsb2NhbFN0b3JhZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgIGlmKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBsb2NhbFN0b3JhZ2UgZnJvbSBnbG9iYWwgd2luZG93IG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBLZXkgdG8gc3RvcmUgZGF0YS5cbiAgICogQHBhcmFtIHthbnl9IHZhbHVlIERhdGEgdG8gc3RvcmUuXG4gICAqIEByZXR1cm5zIHthbnl9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuXG4gICAqL1xuICBzdGF0aWMgZ2V0TG9jYWxTdG9yYWdlKCk6IGFueSB7XG4gICAgY29uc3Qge2xvY2FsU3RvcmFnZX0gPSBCcm93c2VyU3RvcmFnZS53aW5kb3c7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBrZXkgdmFsdWUgZnJvbSBzZXNzaW9uU3RvcmFnZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IGZvciBkYXRhLlxuICAgKiBAcmV0dXJucyB7YW55fSB0aGUgZGF0YSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXkuXG4gICAqL1xuICBzdGF0aWMgZ2V0U2Vzc2lvbkRhdGEoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IHNlc3Npb25TdG9yYWdlID0gQnJvd3NlclN0b3JhZ2UuZ2V0U2Vzc2lvblN0b3JhZ2UoKTtcblxuICAgIGlmKHNlc3Npb25TdG9yYWdlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpdGVtID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgIGlmKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gaXRlbSA/IEpTT04ucGFyc2UoaXRlbSkgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHNlc3Npb25TdG9yYWdlIGZyb20gZ2xvYmFsIHdpbmRvdyBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IHRvIHN0b3JlIGRhdGEuXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSBEYXRhIHRvIHN0b3JlLlxuICAgKiBAcmV0dXJucyB7YW55fSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuXG4gICAqL1xuICBzdGF0aWMgZ2V0U2Vzc2lvblN0b3JhZ2UoKTogYW55IHtcbiAgICBjb25zdCB7c2Vzc2lvblN0b3JhZ2V9ID0gQnJvd3NlclN0b3JhZ2Uud2luZG93O1xuXG4gICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGRhdGEgdG8gbG9jYWxTdG9yYWdlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IEtleSB0byBzdG9yZSBkYXRhLlxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgRGF0YSB0byBzdG9yZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgZGF0YSB3YXMgc3VjY2Vzc2Z1bGx5IHNhdmVkLlxuICAgKi9cbiAgc3RhdGljIHNldExvY2FsRGF0YShrZXk6IHN0cmluZywgdmFsdWUpOiBib29sZWFuIHtcbiAgICBjb25zdCBsb2NhbFN0b3JhZ2UgPSBCcm93c2VyU3RvcmFnZS5nZXRMb2NhbFN0b3JhZ2UoKTtcblxuICAgIGlmKGxvY2FsU3RvcmFnZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGRhdGEgdG8gc2Vzc2lvblN0b3JhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IHRvIHN0b3JlIGRhdGEuXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSBEYXRhIHRvIHN0b3JlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBkYXRhIHdhcyBzdWNjZXNzZnVsbHkgc2F2ZWQuXG4gICAqL1xuICBzdGF0aWMgc2V0U2Vzc2lvbkRhdGEoa2V5OiBzdHJpbmcsIHZhbHVlKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2Vzc2lvblN0b3JhZ2UgPSBCcm93c2VyU3RvcmFnZS5nZXRTZXNzaW9uU3RvcmFnZSgpO1xuXG4gICAgaWYoc2Vzc2lvblN0b3JhZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGtleSB2YWx1ZSBmcm9tIHN0b3JhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBmb3IgZGF0YS5cbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn0gdGhlIGRhdGEgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5LlxuICAgKi9cbiAgZ2V0U3RvcmFnZURhdGEoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHt0eXBlfSA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCByZXN1bHRzID0gdHlwZSA9PT0gJ2xvY2FsJyA/IEJyb3dzZXJTdG9yYWdlLmdldExvY2FsRGF0YShrZXkpIDogQnJvd3NlclN0b3JhZ2UuZ2V0U2Vzc2lvbkRhdGEoa2V5KTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGRhdGEgdG8gc3RvcmFnZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBLZXkgdG8gc3RvcmUgZGF0YS5cbiAgICogQHBhcmFtIHthbnl9IHZhbHVlIERhdGEgdG8gc3RvcmUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIGRhdGEgd2FzIHN1Y2Nlc3NmdWxseSBzYXZlZC5cbiAgICovXG4gIHNldFN0b3JhZ2VEYXRhKGtleTogc3RyaW5nLCB2YWx1ZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHt0eXBlfSA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCByZXN1bHRzOiBib29sZWFuID0gdHlwZSA9PT0gJ2xvY2FsJyA/XG4gICAgICBCcm93c2VyU3RvcmFnZS5zZXRMb2NhbERhdGEoa2V5LCB2YWx1ZSkgOlxuICAgICAgQnJvd3NlclN0b3JhZ2Uuc2V0U2Vzc2lvbkRhdGEoa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHRzKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjRaQUFBLElBQUFBLEVBQUEsR0FBQUMsRUFBQUQsRUFBQSxvQkFBQUUsSUFBQSxlQUFBQyxFQUFBSCxHQU1PLE1BQU1FLENBQWUsQ0FNMUIsWUFBWUUsRUFBaUMsQ0FBQyxFQUFHLENBSmpELEtBQVEsUUFBaUMsQ0FDdkMsS0FBTSxTQUNSLEVBSUUsS0FBSyxlQUFpQixLQUFLLGVBQWUsS0FBSyxJQUFJLEVBQ25ELEtBQUssZUFBaUIsS0FBSyxlQUFlLEtBQUssSUFBSSxFQUduRCxLQUFLLFFBQVUsQ0FBQyxHQUFHLEtBQUssUUFBUyxHQUFHQSxDQUFPLENBQzdDLENBWkEsWUFBTyxPQUFjLFFBQVUsQ0FBQyxFQW9CaEMsT0FBTyxhQUFhQyxFQUFzQixDQUN4QyxNQUFNQyxFQUFlSixFQUFlLGdCQUFnQixFQUVwRCxHQUFHSSxFQUNELEdBQUksQ0FDRixPQUFBQSxFQUFhLFdBQVdELENBQUcsRUFDcEIsRUFDVCxNQUFlLENBQ2IsTUFBTyxFQUNULEtBRUEsT0FBTyxFQUVYLENBUUEsT0FBTyxlQUFlQSxFQUFzQixDQUMxQyxNQUFNRSxFQUFpQkwsRUFBZSxrQkFBa0IsRUFFeEQsR0FBR0ssRUFDRCxHQUFJLENBQ0YsT0FBQUEsRUFBZSxXQUFXRixDQUFHLEVBQ3RCLEVBQ1QsTUFBZSxDQUNiLE1BQU8sRUFDVCxLQUVBLE9BQU8sRUFFWCxDQVFBLE9BQU8sYUFBYUEsRUFBa0IsQ0FDcEMsTUFBTUMsRUFBZUosRUFBZSxnQkFBZ0IsRUFFcEQsR0FBR0ksRUFDRCxHQUFJLENBQ0YsTUFBTUUsRUFBT0YsRUFBYSxRQUFRRCxDQUFHLEVBRXJDLE9BQUdHLEVBQ00sS0FBSyxNQUFNQSxDQUFJLEVBR2pCLElBQ1QsTUFBZSxDQUNiLE9BQU8sSUFDVCxLQUVBLFFBQU8sSUFFWCxDQVNBLE9BQU8saUJBQXVCLENBQzVCLEtBQU0sQ0FBQyxhQUFBRixDQUFZLEVBQUlKLEVBQWUsT0FDdEMsT0FBT0ksQ0FDVCxDQVFBLE9BQU8sZUFBZUQsRUFBa0IsQ0FDdEMsTUFBTUUsRUFBaUJMLEVBQWUsa0JBQWtCLEVBRXhELEdBQUdLLEVBQ0QsR0FBSSxDQUNGLE1BQU1DLEVBQU9ELEVBQWUsUUFBUUYsQ0FBRyxFQUV2QyxPQUFHRyxHQUNNQSxFQUFPLEtBQUssTUFBTUEsQ0FBSSxFQUd4QixJQUNULE1BQWUsQ0FDYixPQUFPLElBQ1QsS0FFQSxRQUFPLElBRVgsQ0FTQSxPQUFPLG1CQUF5QixDQUM5QixLQUFNLENBQUMsZUFBQUQsQ0FBYyxFQUFJTCxFQUFlLE9BRXhDLE9BQU9LLENBQ1QsQ0FTQSxPQUFPLGFBQWFGLEVBQWFJLEVBQWdCLENBQy9DLE1BQU1ILEVBQWVKLEVBQWUsZ0JBQWdCLEVBRXBELEdBQUdJLEVBQ0QsR0FBSSxDQUNGLE9BQUFBLEVBQWEsUUFBUUQsRUFBSyxLQUFLLFVBQVVJLENBQUssQ0FBQyxFQUN4QyxFQUNULE1BQWUsQ0FDYixNQUFPLEVBQ1QsS0FFQSxPQUFPLEVBRVgsQ0FTQSxPQUFPLGVBQWVKLEVBQWFJLEVBQWdCLENBQ2pELE1BQU1GLEVBQWlCTCxFQUFlLGtCQUFrQixFQUV4RCxHQUFHSyxFQUNELEdBQUksQ0FDRixPQUFBQSxFQUFlLFFBQVFGLEVBQUssS0FBSyxVQUFVSSxDQUFLLENBQUMsRUFDMUMsRUFDVCxNQUFlLENBQ2IsTUFBTyxFQUNULEtBRUEsT0FBTyxFQUVYLENBUUEsZUFBZUosRUFBMkIsQ0FDeEMsS0FBTSxDQUFDLEtBQUFLLENBQUksRUFBSSxLQUFLLFFBQ2RDLEVBQVVELElBQVMsUUFBVVIsRUFBZSxhQUFhRyxDQUFHLEVBQUlILEVBQWUsZUFBZUcsQ0FBRyxFQUN2RyxPQUFPLFFBQVEsUUFBUU0sQ0FBTyxDQUNoQyxDQVNBLGVBQWVOLEVBQWFJLEVBQXlCLENBQ25ELEtBQU0sQ0FBQyxLQUFBQyxDQUFJLEVBQUksS0FBSyxRQUNkQyxFQUFtQkQsSUFBUyxRQUNoQ1IsRUFBZSxhQUFhRyxFQUFLSSxDQUFLLEVBQ3RDUCxFQUFlLGVBQWVHLEVBQUtJLENBQUssRUFDMUMsT0FBTyxRQUFRLFFBQVFFLENBQU8sQ0FDaEMsQ0FDRiIsCiAgIm5hbWVzIjogWyJCcm93c2VyU3RvcmFnZV9leHBvcnRzIiwgIl9fZXhwb3J0IiwgIkJyb3dzZXJTdG9yYWdlIiwgIl9fdG9Db21tb25KUyIsICJvcHRpb25zIiwgImtleSIsICJsb2NhbFN0b3JhZ2UiLCAic2Vzc2lvblN0b3JhZ2UiLCAiaXRlbSIsICJ2YWx1ZSIsICJ0eXBlIiwgInJlc3VsdHMiXQp9Cg==
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { BrowserStorage } from './BrowserStorage/BrowserStorage';
2
+ export * from './types/main';
3
+ export { BrowserStorage };
package/lib/index.js ADDED
@@ -0,0 +1,2 @@
1
+ var x=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var B=(o,r)=>{for(var e in r)x(o,e,{get:r[e],enumerable:!0})},f=(o,r,e,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of s(r))!w.call(o,t)&&t!==e&&x(o,t,{get:()=>r[t],enumerable:!(a=i(r,t))||a.enumerable});return o},p=(o,r,e)=>(f(o,r,"default"),e&&f(e,r,"default"));var S=o=>f(x({},"__esModule",{value:!0}),o);var m={};B(m,{BrowserStorage:()=>g.BrowserStorage});module.exports=S(m);var g=require("./BrowserStorage/BrowserStorage");p(m,require("./types/main"),module.exports);0&&(module.exports={BrowserStorage,...require("./types/main")});
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtCcm93c2VyU3RvcmFnZX0gZnJvbSAnLi9Ccm93c2VyU3RvcmFnZS9Ccm93c2VyU3RvcmFnZSc7XG5cbi8vIFN0b3JhZ2VcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWFpbic7XG5leHBvcnQge0Jyb3dzZXJTdG9yYWdlfTtcbiJdLAogICJtYXBwaW5ncyI6ICI4Y0FBQSxJQUFBQSxFQUFBLEdBQUFDLEVBQUFELEVBQUEsc0RBQUFFLEVBQUFGLEdBSUEsSUFBQUcsRUFBNkIsMkNBRzdCQyxFQUFBSixFQUFjLHdCQVBkIiwKICAibmFtZXMiOiBbImluZGV4X2V4cG9ydHMiLCAiX19leHBvcnQiLCAiX190b0NvbW1vbkpTIiwgImltcG9ydF9Ccm93c2VyU3RvcmFnZSIsICJfX3JlRXhwb3J0Il0KfQo=
@@ -0,0 +1,3 @@
1
+ export interface BrowserStorageOptions {
2
+ readonly type?: 'local' | 'session';
3
+ }
@@ -0,0 +1,2 @@
1
+ var t=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var p=(o,e,a,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of i(e))!l.call(o,r)&&r!==a&&t(o,r,{get:()=>e[r],enumerable:!(s=n(e,r))||s.enumerable});return o};var c=o=>p(t({},"__esModule",{value:!0}),o);var y={};module.exports=c(y);
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3R5cGVzL21haW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCBpbnRlcmZhY2UgQnJvd3NlclN0b3JhZ2VPcHRpb25zIHtcbiAgcmVhZG9ubHkgdHlwZT86ICdsb2NhbCcgfCAnc2Vzc2lvbic7XG59XG4iXSwKICAibWFwcGluZ3MiOiAia1dBQUEsSUFBQUEsRUFBQSxrQkFBQUMsRUFBQUQiLAogICJuYW1lcyI6IFsibWFpbl9leHBvcnRzIiwgIl9fdG9Db21tb25KUyJdCn0K
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/arkhamjs-storage-browser",
3
- "version": "3.28.5",
3
+ "version": "3.29.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -31,9 +31,9 @@
31
31
  "url": "https://github.com/nitrogenlabs/arkhamjs/issues"
32
32
  },
33
33
  "scripts": {
34
- "build": "lex compile",
34
+ "build": "lex compile --remove",
35
35
  "clean": "lex clean",
36
- "lint": "eslint ./src --ext .ts,.tsx",
36
+ "lint": "lex lint --fix",
37
37
  "prepublishOnly": "npm run build",
38
38
  "publish:major": "npm version major && npm publish",
39
39
  "publish:minor": "npm version minor && npm publish",
@@ -41,18 +41,25 @@
41
41
  "pretest": "npm run lint",
42
42
  "reset": "lex clean",
43
43
  "test": "lex test",
44
- "update": "npm-check-updates --interactive"
44
+ "update": "lex update --interactive"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@nlabs/arkhamjs": "^3.26.0"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@nlabs/arkhamjs": "*",
51
- "@types/jest": "^29.5.14",
52
- "@types/node": "^22.13.1",
53
- "eslint": "^9.19.0",
54
- "eslint-config-styleguidejs": "^3.2.1",
55
- "typescript": "^5.7.3"
51
+ "@types/jest": "^30.0.0",
52
+ "@types/node": "^24.0.10",
53
+ "typescript": "^5.8.3"
56
54
  },
57
- "gitHead": "fc371e1e28fe0ae35d40d29a217d5f0e990ec32a"
55
+ "files": [
56
+ "lib",
57
+ "index.js",
58
+ "index.d.ts",
59
+ "LICENSE",
60
+ "package.json",
61
+ "README.md"
62
+ ],
63
+ "gitHead": "fc371e1e28fe0ae35d40d29a217d5f0e990ec32a",
64
+ "type": "module"
58
65
  }