varstor 0.6.64 → 0.6.66

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/dist/varstor.js CHANGED
@@ -9,36 +9,45 @@
9
9
  root["Varstor"] = factory();
10
10
  })(this, () => {
11
11
  return /******/ (() => { // webpackBootstrap
12
- /******/ "use strict";
13
12
  /******/ var __webpack_modules__ = ({
14
13
 
14
+ /***/ "./src/types.d.ts"
15
+ /*!************************!*\
16
+ !*** ./src/types.d.ts ***!
17
+ \************************/
18
+ () {
19
+
20
+
21
+
22
+ /***/ },
23
+
15
24
  /***/ "./src/actions.ts"
16
25
  /*!************************!*\
17
26
  !*** ./src/actions.ts ***!
18
27
  \************************/
19
28
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
20
29
 
30
+ "use strict";
21
31
  __webpack_require__.r(__webpack_exports__);
22
32
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
23
33
  /* harmony export */ addStateActions: () => (/* binding */ addStateActions)
24
34
  /* harmony export */ });
25
- /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.ts");
35
+ /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types */ "./src/types.d.ts");
36
+ /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_types__WEBPACK_IMPORTED_MODULE_0__);
37
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! . */ "./src/index.ts");
38
+
26
39
 
27
40
  function addStateActions(namespace, actions) {
28
- const stateAcessor = {
29
- get: ___WEBPACK_IMPORTED_MODULE_0__.getState.bind(null, namespace),
30
- set: ___WEBPACK_IMPORTED_MODULE_0__.setState.bind(null, namespace),
31
- reset: ___WEBPACK_IMPORTED_MODULE_0__.resetState.bind(null, namespace),
32
- };
33
- for (let [actionName, actionFn] of Object.entries(actions)) {
34
- ___WEBPACK_IMPORTED_MODULE_0__.STATE[namespace(actionName)] = {
41
+ for (const [actionName, actionFn] of Object.entries(actions)) {
42
+ ___WEBPACK_IMPORTED_MODULE_1__.STATE[namespace(actionName)] = {
35
43
  key: actionName,
36
44
  namespace,
37
- value: actionFn.bind(null, stateAcessor),
45
+ value: actionFn.bind(null, (0,___WEBPACK_IMPORTED_MODULE_1__.createStore)(namespace())),
38
46
  isAction: true,
39
47
  listeners: [],
40
48
  };
41
49
  }
50
+ return (0,___WEBPACK_IMPORTED_MODULE_1__.createStore)(namespace());
42
51
  }
43
52
 
44
53
 
@@ -50,6 +59,7 @@ function addStateActions(namespace, actions) {
50
59
  \**************************/
51
60
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
52
61
 
62
+ "use strict";
53
63
  __webpack_require__.r(__webpack_exports__);
54
64
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
55
65
  /* harmony export */ NAMESPACE_DELIMITER: () => (/* binding */ NAMESPACE_DELIMITER)
@@ -65,6 +75,7 @@ const NAMESPACE_DELIMITER = "::";
65
75
  \************************/
66
76
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
67
77
 
78
+ "use strict";
68
79
  __webpack_require__.r(__webpack_exports__);
69
80
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
70
81
  /* harmony export */ filter: () => (/* binding */ filter),
@@ -151,9 +162,11 @@ function uid() {
151
162
  \**********************/
152
163
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
153
164
 
165
+ "use strict";
154
166
  __webpack_require__.r(__webpack_exports__);
155
167
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
156
168
  /* harmony export */ STATE: () => (/* binding */ STATE),
169
+ /* harmony export */ createPendingChanges: () => (/* binding */ createPendingChanges),
157
170
  /* harmony export */ createStore: () => (/* binding */ createStore),
158
171
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
159
172
  /* harmony export */ getState: () => (/* binding */ getState),
@@ -163,30 +176,31 @@ __webpack_require__.r(__webpack_exports__);
163
176
  /* harmony export */ setState: () => (/* binding */ setState),
164
177
  /* harmony export */ setupValue: () => (/* binding */ setupValue)
165
178
  /* harmony export */ });
166
- /* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./storage */ "./src/storage.ts");
167
- /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts");
168
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./actions */ "./src/actions.ts");
169
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
170
- /* harmony import */ var _listeners__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./listeners */ "./src/listeners.ts");
179
+ /* harmony import */ var _types_d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types.d */ "./src/types.d.ts");
180
+ /* harmony import */ var _types_d__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_types_d__WEBPACK_IMPORTED_MODULE_0__);
181
+ /* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./storage */ "./src/storage.ts");
182
+ /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts");
183
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./actions */ "./src/actions.ts");
184
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
185
+ /* harmony import */ var _listeners__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./listeners */ "./src/listeners.ts");
186
+
171
187
 
172
188
 
173
189
 
174
190
 
175
191
 
176
192
  const STATE = {};
177
- const WAITING_CHANGES = {};
193
+ const STATE_CHANGED_PIECES = {};
194
+ const STATE_PENDING_CHANGES = {};
178
195
  const STORAGE = {};
179
- setStorageUtils(_storage__WEBPACK_IMPORTED_MODULE_0__["default"]);
196
+ setStorageUtils(_storage__WEBPACK_IMPORTED_MODULE_1__["default"]);
180
197
  async function addState(namespace, initialState, isPersistent) {
181
198
  const storageType = STORAGE.GET_TYPE(isPersistent);
182
199
  const defaultValues = Object.assign({}, initialState);
183
- const values = (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(initialState, (k, v) => [namespace(k), v]);
200
+ const values = (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.map)(initialState, (k, v) => [namespace(k), v]);
184
201
  if (STORAGE.IS_AVAILABE(storageType)) {
185
202
  await STORAGE.UPDATE_STATE(values, storageType);
186
203
  }
187
- if (!_listeners__WEBPACK_IMPORTED_MODULE_4__.LISTENERS[namespace()]) {
188
- _listeners__WEBPACK_IMPORTED_MODULE_4__.LISTENERS[namespace()] = [];
189
- }
190
204
  for (const key in initialState) {
191
205
  const fullKey = namespace(key);
192
206
  STATE[fullKey] = setupValue(key, namespace, values[fullKey], defaultValues[key], storageType);
@@ -195,9 +209,9 @@ async function addState(namespace, initialState, isPersistent) {
195
209
  }
196
210
  function setupValue(key, namespace, value, defaultValue, storageType) {
197
211
  const fullKey = namespace(key);
198
- const isComputedValue = (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isFunction)(value);
212
+ const isComputedValue = (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isFunction)(value);
199
213
  const dependencies = isComputedValue
200
- ? (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.getParamNames)(value)
214
+ ? (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.getParamNames)(value)
201
215
  : [];
202
216
  dependencies.forEach((dependency) => {
203
217
  const fullDependencyKey = namespace(dependency);
@@ -227,10 +241,10 @@ function setupValue(key, namespace, value, defaultValue, storageType) {
227
241
  };
228
242
  }
229
243
  function getNamespaceState(namespace) {
230
- return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.filter)(STATE, (k, { key }) => k === namespace(key));
244
+ return (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.filter)(STATE, (k, { key }) => k === namespace(key));
231
245
  }
232
246
  function getValues(namespace) {
233
- return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(getNamespaceState(namespace), (k, { key, value }) => [
247
+ return (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.map)(getNamespaceState(namespace), (k, { key, value }) => [
234
248
  key,
235
249
  value,
236
250
  ]);
@@ -240,7 +254,7 @@ function getArguments(dependencies, namespace) {
240
254
  return dependencies.map((name) => values[name]);
241
255
  }
242
256
  async function joinStateChanges(changesPiece) {
243
- for (const [updateId, { storageTypes, readyStorageTypes, changes },] of Object.entries(WAITING_CHANGES)) {
257
+ for (const [updateId, { storageTypes, readyStorageTypes, changes },] of Object.entries(STATE_CHANGED_PIECES)) {
244
258
  if (changesPiece[updateId]) {
245
259
  const storageType = changesPiece[updateId].newValue;
246
260
  readyStorageTypes[storageType] = true;
@@ -254,7 +268,7 @@ async function joinStateChanges(changesPiece) {
254
268
  return;
255
269
  }
256
270
  }
257
- delete WAITING_CHANGES[updateId];
271
+ delete STATE_CHANGED_PIECES[updateId];
258
272
  await onStateChange(changes);
259
273
  }
260
274
  }
@@ -273,7 +287,7 @@ async function onStateChange(changes) {
273
287
  }
274
288
  updateDependencies(key, changes, realChanges);
275
289
  }
276
- await (0,_listeners__WEBPACK_IMPORTED_MODULE_4__.runStateChangeListeners)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.filter)(realChanges, (k, v) => !v.isSame));
290
+ await (0,_listeners__WEBPACK_IMPORTED_MODULE_5__.runStateChangeListeners)((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.filter)(realChanges, (k, v) => !v.isSame));
277
291
  }
278
292
  function updateDependencies(key, changes, realChanges) {
279
293
  STATE[key].dependants?.forEach((name) => {
@@ -299,16 +313,16 @@ function isEveryDependencyReady(dependencies, namespace, changesKeys, realChange
299
313
  });
300
314
  }
301
315
  function getState(namespace, arg) {
302
- if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(arg)) {
316
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isString)(arg)) {
303
317
  return createStore(arg);
304
318
  }
305
- return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.recreateStructure)(getValues(namespace));
319
+ return (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.recreateStructure)(getValues(namespace));
306
320
  }
307
321
  async function setState(namespace, changes) {
308
322
  const storageChanges = {};
309
- const updateId = (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.uid)();
323
+ const updateId = (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.uid)();
310
324
  const storageTypes = {};
311
- (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.forEach)(changes, (k, v) => {
325
+ (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.forEach)(changes, (k, v) => {
312
326
  const fullKey = namespace(k);
313
327
  const { storageType, computeFn, isAction } = STATE[fullKey];
314
328
  if (computeFn || isAction) {
@@ -320,7 +334,7 @@ async function setState(namespace, changes) {
320
334
  storageTypes[storageType] = true;
321
335
  storageChanges[storageType][fullKey] = v;
322
336
  });
323
- WAITING_CHANGES[updateId] = {
337
+ STATE_CHANGED_PIECES[updateId] = {
324
338
  storageTypes,
325
339
  readyStorageTypes: {},
326
340
  changes: {},
@@ -337,23 +351,41 @@ async function setValues(storageType, changes) {
337
351
  return;
338
352
  }
339
353
  }
340
- joinStateChanges((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(changes, (k, newValue) => [k, { newValue }]));
354
+ joinStateChanges((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.map)(changes, (k, newValue) => [k, { newValue }]));
341
355
  }
342
356
  async function resetState(namespace, keys) {
357
+ return setState(namespace, getDefaultValues(namespace, keys));
358
+ }
359
+ function getDefaultValues(namespace, keys) {
343
360
  const namespaceState = getNamespaceState(namespace);
344
- await setState(namespace, (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(keys
345
- ? (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.filter)(namespaceState, (k, { key }) => keys.includes(key))
346
- : namespaceState, (k, { key, defaultValue }) => [key, defaultValue]));
347
- return createStore(namespace());
361
+ return (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.map)(keys
362
+ ? (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.filter)(namespaceState, (k, { key }) => keys.includes(key))
363
+ : namespaceState, (k, { key, defaultValue }) => [key, defaultValue]);
364
+ }
365
+ function createPendingChanges(namespace) {
366
+ const flush = () => {
367
+ const changes = STATE_PENDING_CHANGES[namespace()];
368
+ STATE_PENDING_CHANGES[namespace()] = {};
369
+ return changes;
370
+ };
371
+ return {
372
+ add: (changes) => Object.assign(STATE_PENDING_CHANGES[namespace()], changes),
373
+ reset: (keys) => Object.assign(STATE_PENDING_CHANGES[namespace()], getDefaultValues(namespace, keys)),
374
+ get: () => STATE_PENDING_CHANGES[namespace()],
375
+ flush,
376
+ commit: () => setState(namespace, flush()),
377
+ };
348
378
  }
349
379
  function main(namespace) {
350
- if (!arguments[1] || (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(arguments[1])) {
380
+ if (!arguments[1] || (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isString)(arguments[1])) {
351
381
  return getState.apply(null, arguments);
352
382
  }
353
- if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isArray)(arguments[1])) {
354
- return _listeners__WEBPACK_IMPORTED_MODULE_4__.addStateListener.apply(null, arguments);
383
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isArray)(arguments[1]) ||
384
+ (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isFunction)(arguments[1]) ||
385
+ (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isAsyncFunction)(arguments[1])) {
386
+ return _listeners__WEBPACK_IMPORTED_MODULE_5__.addStateListener.apply(null, arguments);
355
387
  }
356
- if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(arguments[1])) {
388
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isObject)(arguments[1])) {
357
389
  return setState.apply(null, arguments);
358
390
  }
359
391
  }
@@ -361,19 +393,26 @@ function setStorageUtils(storageUtils) {
361
393
  Object.assign(STORAGE, storageUtils);
362
394
  }
363
395
  function addNamespace(namespace, str) {
364
- return `${namespace}${((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(str) && _constants__WEBPACK_IMPORTED_MODULE_3__.NAMESPACE_DELIMITER) || ""}${str || ""}`;
396
+ return `${namespace}${((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isString)(str) && _constants__WEBPACK_IMPORTED_MODULE_4__.NAMESPACE_DELIMITER) || ""}${str || ""}`;
365
397
  }
366
398
  function createStore(_namespace) {
367
399
  const namespace = ((key) => addNamespace(_namespace, key));
400
+ if (!STATE_PENDING_CHANGES[namespace()]) {
401
+ STATE_PENDING_CHANGES[namespace()] = {};
402
+ }
403
+ if (!_listeners__WEBPACK_IMPORTED_MODULE_5__.LISTENERS[namespace()]) {
404
+ _listeners__WEBPACK_IMPORTED_MODULE_5__.LISTENERS[namespace()] = [];
405
+ }
368
406
  return Object.assign(main.bind(null, namespace), {
369
407
  add: (state) => addState(namespace, state, false),
370
408
  addPersistent: (state) => addState(namespace, state, true),
371
409
  get: (newNamespace) => getState(namespace, newNamespace),
372
- set: async (changes) => await setState(namespace, changes),
410
+ set: (changes) => setState(namespace, changes),
373
411
  reset: (keys) => resetState(namespace, keys),
374
- onChange: (keys, cb) => (0,_listeners__WEBPACK_IMPORTED_MODULE_4__.addStateListener)(namespace, keys, cb),
375
- removeListener: (keys, cb) => (0,_listeners__WEBPACK_IMPORTED_MODULE_4__.removeStateListener)(namespace, keys, cb),
376
- actions: (actions) => (0,_actions__WEBPACK_IMPORTED_MODULE_2__.addStateActions)(namespace, actions),
412
+ changes: createPendingChanges(namespace),
413
+ onChange: (keys, cb) => (0,_listeners__WEBPACK_IMPORTED_MODULE_5__.addStateListener)(namespace, keys, cb),
414
+ removeListener: (keys, cb) => (0,_listeners__WEBPACK_IMPORTED_MODULE_5__.removeStateListener)(namespace, keys, cb),
415
+ actions: (actions) => (0,_actions__WEBPACK_IMPORTED_MODULE_3__.addStateActions)(namespace, actions),
377
416
  setStorageUtils,
378
417
  joinStateChanges,
379
418
  namespace,
@@ -390,6 +429,7 @@ function createStore(_namespace) {
390
429
  \**************************/
391
430
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
392
431
 
432
+ "use strict";
393
433
  __webpack_require__.r(__webpack_exports__);
394
434
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
395
435
  /* harmony export */ LISTENERS: () => (/* binding */ LISTENERS),
@@ -397,22 +437,24 @@ __webpack_require__.r(__webpack_exports__);
397
437
  /* harmony export */ removeStateListener: () => (/* binding */ removeStateListener),
398
438
  /* harmony export */ runStateChangeListeners: () => (/* binding */ runStateChangeListeners)
399
439
  /* harmony export */ });
400
- /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.ts");
401
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
402
- /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts");
440
+ /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types */ "./src/types.d.ts");
441
+ /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_types__WEBPACK_IMPORTED_MODULE_0__);
442
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! . */ "./src/index.ts");
443
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
444
+ /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts");
445
+
403
446
 
404
447
 
405
448
 
406
449
  const LISTENERS = {};
407
450
  async function runStateChangeListeners(realChanges) {
408
451
  if (Object.keys(realChanges).length) {
409
- const { namespace } = ___WEBPACK_IMPORTED_MODULE_0__.STATE[Object.keys(realChanges)[0]];
410
- const stateValues = (0,___WEBPACK_IMPORTED_MODULE_0__.getValues)(namespace);
411
- for (let [changeKey, change] of Object.entries(realChanges)) {
412
- const { listeners, key } = ___WEBPACK_IMPORTED_MODULE_0__.STATE[changeKey];
452
+ const { namespace } = ___WEBPACK_IMPORTED_MODULE_1__.STATE[Object.keys(realChanges)[0]];
453
+ for (const [changeKey] of Object.entries(realChanges)) {
454
+ const { listeners, key } = ___WEBPACK_IMPORTED_MODULE_1__.STATE[changeKey];
413
455
  for (const cb of listeners) {
414
- const fn = cb.bind(null, [key], stateValues, change);
415
- if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isAsyncFunction)(cb)) {
456
+ const fn = cb.bind(null, [key], (0,___WEBPACK_IMPORTED_MODULE_1__.createStore)(namespace()));
457
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isAsyncFunction)(cb)) {
416
458
  await fn();
417
459
  }
418
460
  else {
@@ -420,14 +462,11 @@ async function runStateChangeListeners(realChanges) {
420
462
  }
421
463
  }
422
464
  }
423
- const namespaceLength = `${namespace()}${_constants__WEBPACK_IMPORTED_MODULE_1__.NAMESPACE_DELIMITER}`.length;
424
- const readableKeys = (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.map)(realChanges, (k) => k.slice(namespaceLength));
465
+ const namespaceLength = `${namespace()}${_constants__WEBPACK_IMPORTED_MODULE_2__.NAMESPACE_DELIMITER}`.length;
466
+ const readableKeys = (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.map)(realChanges, (k) => k.slice(namespaceLength));
425
467
  for (const cb of LISTENERS[namespace()]) {
426
- const fn = cb.bind(null, readableKeys, stateValues, (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.map)(realChanges, (k, v) => [
427
- k.slice(namespaceLength),
428
- v,
429
- ]));
430
- if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isAsyncFunction)(cb)) {
468
+ const fn = cb.bind(null, readableKeys, (0,___WEBPACK_IMPORTED_MODULE_1__.createStore)(namespace()));
469
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isAsyncFunction)(cb)) {
431
470
  await fn();
432
471
  }
433
472
  else {
@@ -437,25 +476,25 @@ async function runStateChangeListeners(realChanges) {
437
476
  }
438
477
  }
439
478
  function addStateListener(namespace, observables, cb) {
440
- if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isFunction)(observables) || (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isAsyncFunction)(observables)) {
479
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isFunction)(observables) || (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isAsyncFunction)(observables)) {
441
480
  LISTENERS[namespace()].push(observables);
442
- return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
481
+ return (0,___WEBPACK_IMPORTED_MODULE_1__.createStore)(namespace());
443
482
  }
444
- observables.forEach((key) => ___WEBPACK_IMPORTED_MODULE_0__.STATE[namespace(key)].listeners?.push(cb));
445
- return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
483
+ observables.forEach((key) => ___WEBPACK_IMPORTED_MODULE_1__.STATE[namespace(key)].listeners?.push(cb));
484
+ return (0,___WEBPACK_IMPORTED_MODULE_1__.createStore)(namespace());
446
485
  }
447
486
  function removeStateListener(namespace, observables, removeCb) {
448
- if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isFunction)(observables) || (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isAsyncFunction)(observables)) {
487
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isFunction)(observables) || (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isAsyncFunction)(observables)) {
449
488
  const removeIdx = LISTENERS[namespace()].findIndex((cb) => cb === observables);
450
489
  LISTENERS[namespace()].splice(removeIdx, 1);
451
- return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
490
+ return (0,___WEBPACK_IMPORTED_MODULE_1__.createStore)(namespace());
452
491
  }
453
492
  observables.forEach((key) => {
454
- const listeners = ___WEBPACK_IMPORTED_MODULE_0__.STATE[namespace(key)].listeners;
493
+ const listeners = ___WEBPACK_IMPORTED_MODULE_1__.STATE[namespace(key)].listeners;
455
494
  const removeIdx = listeners?.findIndex((cb) => cb === removeCb);
456
495
  listeners?.splice(removeIdx, 1);
457
496
  });
458
- return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
497
+ return (0,___WEBPACK_IMPORTED_MODULE_1__.createStore)(namespace());
459
498
  }
460
499
 
461
500
 
@@ -467,10 +506,14 @@ function removeStateListener(namespace, observables, removeCb) {
467
506
  \************************/
468
507
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
469
508
 
509
+ "use strict";
470
510
  __webpack_require__.r(__webpack_exports__);
471
511
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
472
512
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
473
513
  /* harmony export */ });
514
+ /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types */ "./src/types.d.ts");
515
+ /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_types__WEBPACK_IMPORTED_MODULE_0__);
516
+
474
517
  async function updateFromLocalStorage(state) {
475
518
  const stored = {};
476
519
  for (const key in state) {
@@ -542,6 +585,18 @@ function removeStorageKey(type, key) {
542
585
  /******/ }
543
586
  /******/
544
587
  /************************************************************************/
588
+ /******/ /* webpack/runtime/compat get default export */
589
+ /******/ (() => {
590
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
591
+ /******/ __webpack_require__.n = (module) => {
592
+ /******/ const getter = module && module.__esModule ?
593
+ /******/ () => (module['default']) :
594
+ /******/ () => (module);
595
+ /******/ __webpack_require__.d(getter, { a: getter });
596
+ /******/ return getter;
597
+ /******/ };
598
+ /******/ })();
599
+ /******/
545
600
  /******/ /* webpack/runtime/define property getters */
546
601
  /******/ (() => {
547
602
  /******/ // define getter/value functions for harmony exports
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see varstor.min.js.LICENSE.txt */
2
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Varstor=t():e.Varstor=t()}(this,()=>(()=>{"use strict";var e={"./src/actions.ts"(e,t,n){n.r(t),n.d(t,{addStateActions:()=>s});var r=n("./src/index.ts");function s(e,t){const n={get:r.getState.bind(null,e),set:r.setState.bind(null,e),reset:r.resetState.bind(null,e)};for(let[s,o]of Object.entries(t))r.STATE[e(s)]={key:s,namespace:e,value:o.bind(null,n),isAction:!0,listeners:[]}}},"./src/constants.ts"(e,t,n){n.r(t),n.d(t,{NAMESPACE_DELIMITER:()=>r});const r="::"},"./src/helpers.ts"(e,t,n){n.r(t),n.d(t,{filter:()=>S,forEach:()=>p,getParamNames:()=>f,isArray:()=>o,isAsyncFunction:()=>a,isFunction:()=>i,isObject:()=>u,isString:()=>c,map:()=>d,recreateStructure:()=>y,uid:()=>E});const r=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,s=/([^\s,]+)/g;function o(e){return"[object Array]"===l(e)}function c(e){return"[object String]"===l(e)}function i(e){return"[object Function]"===l(e)}function a(e){return"[object AsyncFunction]"===l(e)}function u(e){return"[object Object]"===l(e)}function l(e){return Object.prototype.toString.call(e)}function f(e){const t=e.toString().replace(r,"").split("=>")[0],n=t.slice(t.indexOf("(")+1,t.indexOf(")")).match(s);return null===n?[]:n}function d(e,t){const n=Object.entries(e).map(([e,n])=>t(e,n));return 2===n[0]?.length?Object.fromEntries(n):n}function p(e,t){Object.entries(e||{}).forEach(([e,n])=>t(e,n))}function S(e,t){return Object.fromEntries(Object.entries(e||{}).filter(([e,n])=>!0===t(e,n)))}function y(e){let t=e;if(o(e))return t=[],e.forEach(e=>t.push(y(e))),t;if(u(e)){t={};for(let n in e)t[n]=y(e[n]);return t}return t}function E(){return Date.now().toString(36)+Math.random().toString(36).substr(2)}},"./src/index.ts"(e,t,n){n.r(t),n.d(t,{STATE:()=>a,createStore:()=>v,default:()=>I,getState:()=>m,getValues:()=>S,joinStateChanges:()=>E,resetState:()=>j,setState:()=>A,setupValue:()=>d});var r=n("./src/storage.ts"),s=n("./src/helpers.ts"),o=n("./src/actions.ts"),c=n("./src/constants.ts"),i=n("./src/listeners.ts");const a={},u={},l={};async function f(e,t,n){const r=l.GET_TYPE(n),o=Object.assign({},t),c=(0,s.map)(t,(t,n)=>[e(t),n]);l.IS_AVAILABE(r)&&await l.UPDATE_STATE(c,r),i.LISTENERS[e()]||(i.LISTENERS[e()]=[]);for(const n in t){const t=e(n);a[t]=d(n,e,c[t],o[n],r)}return v(e())}function d(e,t,n,r,o){const c=t(e),i=(0,s.isFunction)(n),u=i?(0,s.getParamNames)(n):[];return u.forEach(e=>{const n=t(e);a[n]||(a[n]={dependants:[],dependencies:[],namespace:t,storageType:o}),a[n].dependants?.push(c)}),{key:e,fullKey:c,value:i?n.apply(null,y(u,t)):n,computeFn:i&&n,dependencies:u,dependants:[],listeners:[],defaultValue:r,storageType:o,namespace:t}}function p(e){return(0,s.filter)(a,(t,{key:n})=>t===e(n))}function S(e){return(0,s.map)(p(e),(e,{key:t,value:n})=>[t,n])}function y(e,t){const n=S(t);return e.map(e=>n[e])}async function E(e){for(const[t,{storageTypes:n,readyStorageTypes:r,changes:s}]of Object.entries(u))if(e[t]){const o=e[t].newValue;r[o]=!0,delete e[t],Object.assign(s,e),l.IS_AVAILABE(o)&&l.REMOVE_KEY(o,t);for(const e in n)if(!r[e])return;delete u[t],await g(s)}}async function g(e){const t={};for(const n in e){const r=a[n].value,s=e[n].newValue;r!==s?(t[n]={newValue:s,prevValue:r},a[n].value=s):t[n]={isSame:!0},b(n,e,t)}await(0,i.runStateChangeListeners)((0,s.filter)(t,(e,t)=>!t.isSame))}function b(e,t,n){a[e].dependants?.forEach(e=>{const{dependencies:r,namespace:s}=a[e];if(!function(e,t,n,r){return e.every(e=>{const s=t(e);return n.includes(s)&&r.includes(s)||!n.includes(s)})}(r,s,Object.keys(t),Object.keys(n))||n[e])return;const o=a[e].value,c=a[e].computeFn?.apply(null,y(r,s));o!==c&&(n[e]={newValue:c,prevValue:o},a[e].value=c,b(e,t,n))})}function m(e,t){return(0,s.isString)(t)?v(t):(0,s.recreateStructure)(S(e))}async function A(e,t){const n={},r=(0,s.uid)(),o={};(0,s.forEach)(t,(t,r)=>{const s=e(t),{storageType:c,computeFn:i,isAction:u}=a[s];i||u||(n[c]||(n[c]={}),o[c]=!0,n[c][s]=r)}),u[r]={storageTypes:o,readyStorageTypes:{},changes:{}};for(let[e,t]of Object.entries(n))await T(e,{...t,[r]:e});return v(e())}async function T(e,t){if(l.IS_AVAILABE(e)){if(await l.SET_VALUES(e,t))return}E((0,s.map)(t,(e,t)=>[e,{newValue:t}]))}async function j(e,t){const n=p(e);return await A(e,(0,s.map)(t?(0,s.filter)(n,(e,{key:n})=>t.includes(n)):n,(e,{key:t,defaultValue:n})=>[t,n])),v(e())}function O(e){return!arguments[1]||(0,s.isString)(arguments[1])?m.apply(null,arguments):(0,s.isArray)(arguments[1])?i.addStateListener.apply(null,arguments):(0,s.isObject)(arguments[1])?A.apply(null,arguments):void 0}function h(e){Object.assign(l,e)}function v(e){const t=t=>function(e,t){return`${e}${(0,s.isString)(t)&&c.NAMESPACE_DELIMITER||""}${t||""}`}(e,t);return Object.assign(O.bind(null,t),{add:e=>f(t,e,!1),addPersistent:e=>f(t,e,!0),get:e=>m(t,e),set:async e=>await A(t,e),reset:e=>j(t,e),onChange:(e,n)=>(0,i.addStateListener)(t,e,n),removeListener:(e,n)=>(0,i.removeStateListener)(t,e,n),actions:e=>(0,o.addStateActions)(t,e),setStorageUtils:h,joinStateChanges:E,namespace:t})}h(r.default);const I=v("")},"./src/listeners.ts"(e,t,n){n.r(t),n.d(t,{LISTENERS:()=>c,addStateListener:()=>a,removeStateListener:()=>u,runStateChangeListeners:()=>i});var r=n("./src/index.ts"),s=n("./src/constants.ts"),o=n("./src/helpers.ts");const c={};async function i(e){if(Object.keys(e).length){const{namespace:t}=r.STATE[Object.keys(e)[0]],n=(0,r.getValues)(t);for(let[t,s]of Object.entries(e)){const{listeners:e,key:c}=r.STATE[t];for(const t of e){const e=t.bind(null,[c],n,s);(0,o.isAsyncFunction)(t)?await e():e()}}const i=`${t()}${s.NAMESPACE_DELIMITER}`.length,a=(0,o.map)(e,e=>e.slice(i));for(const r of c[t()]){const t=r.bind(null,a,n,(0,o.map)(e,(e,t)=>[e.slice(i),t]));(0,o.isAsyncFunction)(r)?await t():t()}}}function a(e,t,n){return(0,o.isFunction)(t)||(0,o.isAsyncFunction)(t)?(c[e()].push(t),(0,r.createStore)(e())):(t.forEach(t=>r.STATE[e(t)].listeners?.push(n)),(0,r.createStore)(e()))}function u(e,t,n){if((0,o.isFunction)(t)||(0,o.isAsyncFunction)(t)){const n=c[e()].findIndex(e=>e===t);return c[e()].splice(n,1),(0,r.createStore)(e())}return t.forEach(t=>{const s=r.STATE[e(t)].listeners,o=s?.findIndex(e=>e===n);s?.splice(o,1)}),(0,r.createStore)(e())}},"./src/storage.ts"(e,t,n){n.r(t),n.d(t,{default:()=>r});const r={GET_TYPE:function(e){return e?"localStorage":""},IS_AVAILABE:function(e){return!!e},UPDATE_STATE:async function(e){const t={};for(const n in e){const e=localStorage.getItem(n);null!==e&&(t[n]=e)}return Object.assign(e,t)},SET_VALUES:async function(e,t){for(let[e,n]of Object.entries(t))localStorage.setItem(e,n);return!1},REMOVE_KEY:function(e,t){e&&localStorage.removeItem(t)}}}};const t={};function n(r){const s=t[r];if(void 0!==s)return s.exports;const o=t[r]={exports:{}};if(!(r in e)){delete t[r];const e=new Error("Cannot find module '"+r+"'");throw e.code="MODULE_NOT_FOUND",e}return e[r](o,o.exports,n),o.exports}n.d=(e,t)=>{if(Array.isArray(t))for(var r=0;r<t.length;){var s=t[r++],o=t[r++];n.o(e,s)?0===o&&r++:0===o?Object.defineProperty(e,s,{enumerable:!0,value:t[r++]}):Object.defineProperty(e,s,{enumerable:!0,get:o})}else for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};let r=n("./src/index.ts");return r=r.default,r})());
2
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Varstor=t():e.Varstor=t()}(this,()=>(()=>{var e={"./src/types.d.ts"(){},"./src/actions.ts"(e,t,n){"use strict";n.r(t),n.d(t,{addStateActions:()=>s});n("./src/types.d.ts");var r=n("./src/index.ts");function s(e,t){for(const[n,s]of Object.entries(t))r.STATE[e(n)]={key:n,namespace:e,value:s.bind(null,(0,r.createStore)(e())),isAction:!0,listeners:[]};return(0,r.createStore)(e())}},"./src/constants.ts"(e,t,n){"use strict";n.r(t),n.d(t,{NAMESPACE_DELIMITER:()=>r});const r="::"},"./src/helpers.ts"(e,t,n){"use strict";n.r(t),n.d(t,{filter:()=>S,forEach:()=>p,getParamNames:()=>f,isArray:()=>c,isAsyncFunction:()=>a,isFunction:()=>i,isObject:()=>u,isString:()=>o,map:()=>d,recreateStructure:()=>y,uid:()=>g});const r=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,s=/([^\s,]+)/g;function c(e){return"[object Array]"===l(e)}function o(e){return"[object String]"===l(e)}function i(e){return"[object Function]"===l(e)}function a(e){return"[object AsyncFunction]"===l(e)}function u(e){return"[object Object]"===l(e)}function l(e){return Object.prototype.toString.call(e)}function f(e){const t=e.toString().replace(r,"").split("=>")[0],n=t.slice(t.indexOf("(")+1,t.indexOf(")")).match(s);return null===n?[]:n}function d(e,t){const n=Object.entries(e).map(([e,n])=>t(e,n));return 2===n[0]?.length?Object.fromEntries(n):n}function p(e,t){Object.entries(e||{}).forEach(([e,n])=>t(e,n))}function S(e,t){return Object.fromEntries(Object.entries(e||{}).filter(([e,n])=>!0===t(e,n)))}function y(e){let t=e;if(c(e))return t=[],e.forEach(e=>t.push(y(e))),t;if(u(e)){t={};for(let n in e)t[n]=y(e[n]);return t}return t}function g(){return Date.now().toString(36)+Math.random().toString(36).substr(2)}},"./src/index.ts"(e,t,n){"use strict";n.r(t),n.d(t,{STATE:()=>a,createPendingChanges:()=>v,createStore:()=>V,default:()=>_,getState:()=>A,getValues:()=>y,joinStateChanges:()=>E,resetState:()=>O,setState:()=>j,setupValue:()=>p});n("./src/types.d.ts");var r=n("./src/storage.ts"),s=n("./src/helpers.ts"),c=n("./src/actions.ts"),o=n("./src/constants.ts"),i=n("./src/listeners.ts");const a={},u={},l={},f={};async function d(e,t,n){const r=f.GET_TYPE(n),c=Object.assign({},t),o=(0,s.map)(t,(t,n)=>[e(t),n]);f.IS_AVAILABE(r)&&await f.UPDATE_STATE(o,r);for(const n in t){const t=e(n);a[t]=p(n,e,o[t],c[n],r)}return V(e())}function p(e,t,n,r,c){const o=t(e),i=(0,s.isFunction)(n),u=i?(0,s.getParamNames)(n):[];return u.forEach(e=>{const n=t(e);a[n]||(a[n]={dependants:[],dependencies:[],namespace:t,storageType:c}),a[n].dependants?.push(o)}),{key:e,fullKey:o,value:i?n.apply(null,g(u,t)):n,computeFn:i&&n,dependencies:u,dependants:[],listeners:[],defaultValue:r,storageType:c,namespace:t}}function S(e){return(0,s.filter)(a,(t,{key:n})=>t===e(n))}function y(e){return(0,s.map)(S(e),(e,{key:t,value:n})=>[t,n])}function g(e,t){const n=y(t);return e.map(e=>n[e])}async function E(e){for(const[t,{storageTypes:n,readyStorageTypes:r,changes:s}]of Object.entries(u))if(e[t]){const c=e[t].newValue;r[c]=!0,delete e[t],Object.assign(s,e),f.IS_AVAILABE(c)&&f.REMOVE_KEY(c,t);for(const e in n)if(!r[e])return;delete u[t],await b(s)}}async function b(e){const t={};for(const n in e){const r=a[n].value,s=e[n].newValue;r!==s?(t[n]={newValue:s,prevValue:r},a[n].value=s):t[n]={isSame:!0},m(n,e,t)}await(0,i.runStateChangeListeners)((0,s.filter)(t,(e,t)=>!t.isSame))}function m(e,t,n){a[e].dependants?.forEach(e=>{const{dependencies:r,namespace:s}=a[e];if(!function(e,t,n,r){return e.every(e=>{const s=t(e);return n.includes(s)&&r.includes(s)||!n.includes(s)})}(r,s,Object.keys(t),Object.keys(n))||n[e])return;const c=a[e].value,o=a[e].computeFn?.apply(null,g(r,s));c!==o&&(n[e]={newValue:o,prevValue:c},a[e].value=o,m(e,t,n))})}function A(e,t){return(0,s.isString)(t)?V(t):(0,s.recreateStructure)(y(e))}async function j(e,t){const n={},r=(0,s.uid)(),c={};(0,s.forEach)(t,(t,r)=>{const s=e(t),{storageType:o,computeFn:i,isAction:u}=a[s];i||u||(n[o]||(n[o]={}),c[o]=!0,n[o][s]=r)}),u[r]={storageTypes:c,readyStorageTypes:{},changes:{}};for(let[e,t]of Object.entries(n))await T(e,{...t,[r]:e});return V(e())}async function T(e,t){if(f.IS_AVAILABE(e)){if(await f.SET_VALUES(e,t))return}E((0,s.map)(t,(e,t)=>[e,{newValue:t}]))}async function O(e,t){return j(e,h(e,t))}function h(e,t){const n=S(e);return(0,s.map)(t?(0,s.filter)(n,(e,{key:n})=>t.includes(n)):n,(e,{key:t,defaultValue:n})=>[t,n])}function v(e){const t=()=>{const t=l[e()];return l[e()]={},t};return{add:t=>Object.assign(l[e()],t),reset:t=>Object.assign(l[e()],h(e,t)),get:()=>l[e()],flush:t,commit:()=>j(e,t())}}function I(e){return!arguments[1]||(0,s.isString)(arguments[1])?A.apply(null,arguments):(0,s.isArray)(arguments[1])||(0,s.isFunction)(arguments[1])||(0,s.isAsyncFunction)(arguments[1])?i.addStateListener.apply(null,arguments):(0,s.isObject)(arguments[1])?j.apply(null,arguments):void 0}function L(e){Object.assign(f,e)}function V(e){const t=t=>function(e,t){return`${e}${(0,s.isString)(t)&&o.NAMESPACE_DELIMITER||""}${t||""}`}(e,t);return l[t()]||(l[t()]={}),i.LISTENERS[t()]||(i.LISTENERS[t()]=[]),Object.assign(I.bind(null,t),{add:e=>d(t,e,!1),addPersistent:e=>d(t,e,!0),get:e=>A(t,e),set:e=>j(t,e),reset:e=>O(t,e),changes:v(t),onChange:(e,n)=>(0,i.addStateListener)(t,e,n),removeListener:(e,n)=>(0,i.removeStateListener)(t,e,n),actions:e=>(0,c.addStateActions)(t,e),setStorageUtils:L,joinStateChanges:E,namespace:t})}L(r.default);const _=V("")},"./src/listeners.ts"(e,t,n){"use strict";n.r(t),n.d(t,{LISTENERS:()=>o,addStateListener:()=>a,removeStateListener:()=>u,runStateChangeListeners:()=>i});n("./src/types.d.ts");var r=n("./src/index.ts"),s=n("./src/constants.ts"),c=n("./src/helpers.ts");const o={};async function i(e){if(Object.keys(e).length){const{namespace:t}=r.STATE[Object.keys(e)[0]];for(const[n]of Object.entries(e)){const{listeners:e,key:s}=r.STATE[n];for(const n of e){const e=n.bind(null,[s],(0,r.createStore)(t()));(0,c.isAsyncFunction)(n)?await e():e()}}const n=`${t()}${s.NAMESPACE_DELIMITER}`.length,i=(0,c.map)(e,e=>e.slice(n));for(const e of o[t()]){const n=e.bind(null,i,(0,r.createStore)(t()));(0,c.isAsyncFunction)(e)?await n():n()}}}function a(e,t,n){return(0,c.isFunction)(t)||(0,c.isAsyncFunction)(t)?(o[e()].push(t),(0,r.createStore)(e())):(t.forEach(t=>r.STATE[e(t)].listeners?.push(n)),(0,r.createStore)(e()))}function u(e,t,n){if((0,c.isFunction)(t)||(0,c.isAsyncFunction)(t)){const n=o[e()].findIndex(e=>e===t);return o[e()].splice(n,1),(0,r.createStore)(e())}return t.forEach(t=>{const s=r.STATE[e(t)].listeners,c=s?.findIndex(e=>e===n);s?.splice(c,1)}),(0,r.createStore)(e())}},"./src/storage.ts"(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});n("./src/types.d.ts");const r={GET_TYPE:function(e){return e?"localStorage":""},IS_AVAILABE:function(e){return!!e},UPDATE_STATE:async function(e){const t={};for(const n in e){const e=localStorage.getItem(n);null!==e&&(t[n]=e)}return Object.assign(e,t)},SET_VALUES:async function(e,t){for(let[e,n]of Object.entries(t))localStorage.setItem(e,n);return!1},REMOVE_KEY:function(e,t){e&&localStorage.removeItem(t)}}}};const t={};function n(r){const s=t[r];if(void 0!==s)return s.exports;const c=t[r]={exports:{}};if(!(r in e)){delete t[r];const e=new Error("Cannot find module '"+r+"'");throw e.code="MODULE_NOT_FOUND",e}return e[r](c,c.exports,n),c.exports}n.n=e=>{const t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{if(Array.isArray(t))for(var r=0;r<t.length;){var s=t[r++],c=t[r++];n.o(e,s)?0===c&&r++:0===c?Object.defineProperty(e,s,{enumerable:!0,value:t[r++]}):Object.defineProperty(e,s,{enumerable:!0,get:c})}else for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};let r=n("./src/index.ts");return r=r.default,r})());
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "varstor",
3
- "version": "0.6.64",
3
+ "version": "0.6.66",
4
4
  "description": "State manager for web applications and webextensions, employing reactivity, wrapping, and uniting the usage of different storages' values and common variables into a simple universal interface",
5
5
  "license": "MIT",
6
6
  "author": "Igor Morozov <ismorozs@gmail.com>",
7
7
  "main": "./dist/varstor.js",
8
+ "types": "./src/types.d.ts",
8
9
  "exports": {
9
10
  ".": "./dist/varstor.js",
10
11
  "./min": "./dist/varstor.min.js",
@@ -18,6 +19,7 @@
18
19
  "devDependencies": {
19
20
  "@types/node": "26.6.3",
20
21
  "@types/webpack-env": "1.18.8",
22
+ "ignore-loader": "^0.1.2",
21
23
  "minimizer-webpack-plugin": "5.6.1",
22
24
  "ts-loader": "9.6.2",
23
25
  "typescript": "6.0.3",
package/src/actions.ts CHANGED
@@ -1,19 +1,17 @@
1
- import { STATE, getState, setState, resetState } from ".";
1
+ import { type INamespace, type IStateActions } from "./types";
2
2
 
3
- export function addStateActions(namespace: INamespace, actions: IStateActions) {
4
- const stateAcessor = {
5
- get: getState.bind(null, namespace),
6
- set: setState.bind(null, namespace),
7
- reset: resetState.bind(null, namespace),
8
- };
3
+ import { STATE, createStore } from ".";
9
4
 
10
- for (let [actionName, actionFn] of Object.entries(actions)) {
5
+ export function addStateActions(namespace: INamespace, actions: IStateActions) {
6
+ for (const [actionName, actionFn] of Object.entries(actions)) {
11
7
  STATE[namespace(actionName)] = {
12
8
  key: actionName,
13
9
  namespace,
14
- value: actionFn.bind(null, stateAcessor),
10
+ value: actionFn.bind(null, createStore(namespace())),
15
11
  isAction: true,
16
12
  listeners: [],
17
13
  };
18
14
  }
15
+
16
+ return createStore(namespace());
19
17
  }
package/src/helpers.ts CHANGED
@@ -13,7 +13,7 @@ export function isFunction(obj: unknown) {
13
13
  return getObjectType(obj) === "[object Function]";
14
14
  }
15
15
 
16
- export function isAsyncFunction (obj: unknown) {
16
+ export function isAsyncFunction(obj: unknown) {
17
17
  return getObjectType(obj) === "[object AsyncFunction]";
18
18
  }
19
19