localdb-ces6q 0.2.53 → 0.2.55
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/LocalDB.js +27 -56
- package/dist/LocalDBDocument.js +1 -2
- package/dist/hooks.js +2 -2
- package/package.json +1 -1
package/dist/LocalDB.js
CHANGED
@@ -38,8 +38,7 @@ export class LocalDB {
|
|
38
38
|
this._saveCols = {};
|
39
39
|
this._indexes = {};
|
40
40
|
const colNames = objectKeys(config);
|
41
|
-
for (
|
42
|
-
const col = colNames[i];
|
41
|
+
for (const col of colNames) {
|
43
42
|
this.defineCollection(col, config[col], initialData?.[col]);
|
44
43
|
}
|
45
44
|
}
|
@@ -121,8 +120,7 @@ export class LocalDB {
|
|
121
120
|
}
|
122
121
|
}
|
123
122
|
const fieldIndexes = {};
|
124
|
-
for (
|
125
|
-
const field = fieldNames[fi];
|
123
|
+
for (const field of fieldNames) {
|
126
124
|
const { type, compare, index } = config.fields[field];
|
127
125
|
if (index) {
|
128
126
|
let comparator;
|
@@ -210,8 +208,8 @@ export class LocalDB {
|
|
210
208
|
_rollback() {
|
211
209
|
if (this._txSnapshot) {
|
212
210
|
this._collections = this._txSnapshot;
|
213
|
-
for (
|
214
|
-
|
211
|
+
for (const rollback of this._txRollbacks) {
|
212
|
+
rollback();
|
215
213
|
}
|
216
214
|
// reset
|
217
215
|
this._txChangedFields = {};
|
@@ -327,8 +325,7 @@ export class LocalDB {
|
|
327
325
|
if (prev != null) {
|
328
326
|
const copy = {};
|
329
327
|
// delete unset fields
|
330
|
-
for (
|
331
|
-
const key = keys[i];
|
328
|
+
for (const key of keys) {
|
332
329
|
if (key in doc) {
|
333
330
|
copy[key] = doc[key];
|
334
331
|
}
|
@@ -344,8 +341,7 @@ export class LocalDB {
|
|
344
341
|
const _txChange = this._txChanges;
|
345
342
|
const _txChangedFields = this._txChangedFields;
|
346
343
|
const next = {};
|
347
|
-
for (
|
348
|
-
const key = keys[i];
|
344
|
+
for (const key of keys) {
|
349
345
|
if (key in doc && doc[key] !== undefined) {
|
350
346
|
next[key] = doc[key];
|
351
347
|
// set changes
|
@@ -398,8 +394,8 @@ export class LocalDB {
|
|
398
394
|
// begin tx
|
399
395
|
const txKey = this.beginTx(options);
|
400
396
|
// TODO undo, computes
|
401
|
-
for (
|
402
|
-
this.setDoc(colName,
|
397
|
+
for (const doc of docs) {
|
398
|
+
this.setDoc(colName, doc, options);
|
403
399
|
}
|
404
400
|
// end tx
|
405
401
|
this.endTx(txKey);
|
@@ -413,8 +409,7 @@ export class LocalDB {
|
|
413
409
|
let next = { ...prev };
|
414
410
|
let changed = false;
|
415
411
|
let updateNormalized = {};
|
416
|
-
for (
|
417
|
-
const key = keys[ki];
|
412
|
+
for (const key of keys) {
|
418
413
|
if (!(key in update))
|
419
414
|
continue;
|
420
415
|
let nextVal = update[key];
|
@@ -455,13 +450,11 @@ export class LocalDB {
|
|
455
450
|
let changedByIter = false;
|
456
451
|
let count = 0;
|
457
452
|
while (true) {
|
458
|
-
for (
|
459
|
-
const { compute } =
|
453
|
+
for (const computeItem of computes) {
|
454
|
+
const { compute, deps } = computeItem;
|
460
455
|
// check deps has changed
|
461
456
|
let depsChanged = false;
|
462
|
-
const
|
463
|
-
for (let di = 0, dl = deps.length; di < dl; di += 1) {
|
464
|
-
const dep = deps[di];
|
457
|
+
for (const dep of deps) {
|
465
458
|
if (dep in updateBeforeIter) {
|
466
459
|
depsChanged = true;
|
467
460
|
}
|
@@ -471,8 +464,7 @@ export class LocalDB {
|
|
471
464
|
const computedUpdate = compute(docBeforeIter, docBeforeUpdate);
|
472
465
|
if (!computedUpdate)
|
473
466
|
continue;
|
474
|
-
for (
|
475
|
-
const key = keys[ki];
|
467
|
+
for (const key of keys) {
|
476
468
|
if (!(key in computedUpdate))
|
477
469
|
continue;
|
478
470
|
let nextVal = computedUpdate[key];
|
@@ -546,8 +538,7 @@ export class LocalDB {
|
|
546
538
|
const _txChangedFields = this._txChangedFields;
|
547
539
|
const prevFields = {};
|
548
540
|
const nextFields = {};
|
549
|
-
for (
|
550
|
-
const key = changedKeys[ki];
|
541
|
+
for (const key of changedKeys) {
|
551
542
|
const nextVal = next[key];
|
552
543
|
const prevVal = prev[key];
|
553
544
|
// update field
|
@@ -617,8 +608,7 @@ export class LocalDB {
|
|
617
608
|
let changed = false;
|
618
609
|
const ignoreNotFound = !!(options?.ignoreNotFound || this._txOptions?.ignoreNotFound);
|
619
610
|
const ids = objectKeys(update);
|
620
|
-
for (
|
621
|
-
const id = ids[i];
|
611
|
+
for (const id of ids) {
|
622
612
|
const prevDoc = prevCol[id];
|
623
613
|
if (prevDoc == null) {
|
624
614
|
if (ignoreNotFound)
|
@@ -636,8 +626,7 @@ export class LocalDB {
|
|
636
626
|
const { next: nextDoc, changedKeys } = result;
|
637
627
|
const prevFields = {};
|
638
628
|
const nextFields = {};
|
639
|
-
for (
|
640
|
-
const key = changedKeys[ki];
|
629
|
+
for (const key of changedKeys) {
|
641
630
|
const nextVal = nextDoc[key];
|
642
631
|
const prevVal = prevDoc[key];
|
643
632
|
// update field
|
@@ -709,8 +698,7 @@ export class LocalDB {
|
|
709
698
|
const _txChange = this._txChanges;
|
710
699
|
const _txChangedFields = this._txChangedFields;
|
711
700
|
const keys = this._fields[colName];
|
712
|
-
for (
|
713
|
-
const key = keys[i];
|
701
|
+
for (const key of keys) {
|
714
702
|
if (key in prev && prev[key] !== undefined) {
|
715
703
|
// set changes
|
716
704
|
const changeMapCol = _txChangedFields[colName] || (_txChangedFields[colName] = {});
|
@@ -768,8 +756,7 @@ export class LocalDB {
|
|
768
756
|
const fields = this._fields[colName];
|
769
757
|
const prevDocs = [];
|
770
758
|
const foreignComputeArgs = [];
|
771
|
-
for (
|
772
|
-
const id = ids[i];
|
759
|
+
for (const id of ids) {
|
773
760
|
const prev = prevCol[id];
|
774
761
|
if (prev == null) {
|
775
762
|
if (idempotent)
|
@@ -778,8 +765,7 @@ export class LocalDB {
|
|
778
765
|
throw new Error(`Cannot delete non-existing document, ${colName}/${id}`);
|
779
766
|
}
|
780
767
|
// changes
|
781
|
-
for (
|
782
|
-
const key = fields[fi];
|
768
|
+
for (const key of fields) {
|
783
769
|
if (key in prev && prev[key] !== undefined) {
|
784
770
|
// set changes
|
785
771
|
const changeMapCol = _txChangedFields[colName] || (_txChangedFields[colName] = {});
|
@@ -833,9 +819,7 @@ export class LocalDB {
|
|
833
819
|
const _txChangedFields = this._txChangedFields;
|
834
820
|
const txContext = this._txOptions?.context || {};
|
835
821
|
// listeners
|
836
|
-
const
|
837
|
-
for (let i = 0, il = fieldListeners.length; i < il; i += 1) {
|
838
|
-
const { collection, id, field, handler } = fieldListeners[i];
|
822
|
+
for (const { collection, id, field, handler } of this._fieldListeners) {
|
839
823
|
const field2 = field;
|
840
824
|
const nextDoc = next[collection][id];
|
841
825
|
const prevDoc = prev[collection][id];
|
@@ -843,29 +827,21 @@ export class LocalDB {
|
|
843
827
|
handler(nextDoc?.[field2], prevDoc?.[field2], nextDoc, prevDoc, txContext);
|
844
828
|
}
|
845
829
|
}
|
846
|
-
const
|
847
|
-
for (let i = 0, il = docListeners.length; i < il; i += 1) {
|
848
|
-
const { collection, id, handler } = docListeners[i];
|
830
|
+
for (const { collection, id, handler } of this._docListeners) {
|
849
831
|
if (next[collection][id] !== prev[collection][id]) {
|
850
832
|
handler(next[collection][id], prev[collection][id], _txChanges[collection][id], txContext);
|
851
833
|
}
|
852
834
|
}
|
853
|
-
const
|
854
|
-
for (let i = 0, il = colListeners.length; i < il; i += 1) {
|
855
|
-
const { collection, handler } = colListeners[i];
|
835
|
+
for (const { collection, handler } of this._colListeners) {
|
856
836
|
if (next[collection] !== prev[collection]) {
|
857
837
|
handler(next[collection], prev[collection], _txChanges[collection], _txChangedFields[collection], txContext);
|
858
838
|
}
|
859
839
|
}
|
860
|
-
const
|
861
|
-
for (let i = 0, il = dbListeners.length; i < il; i += 1) {
|
862
|
-
const { handler } = dbListeners[i];
|
840
|
+
for (const { handler } of this._dbListeners) {
|
863
841
|
handler(next, prev, _txChanges, _txChangedFields, txContext);
|
864
842
|
}
|
865
843
|
// save to storage
|
866
|
-
const
|
867
|
-
for (let i = 0, il = cols.length; i < il; i += 1) {
|
868
|
-
const col = cols[i];
|
844
|
+
for (const col of this._collectionNames) {
|
869
845
|
if (next[col] !== prev[col]) {
|
870
846
|
this._saveCols[col].debounced();
|
871
847
|
}
|
@@ -925,8 +901,7 @@ export class LocalDB {
|
|
925
901
|
if (redoItem) {
|
926
902
|
this._inUndoOrRedo = true;
|
927
903
|
this.tx(() => {
|
928
|
-
for (
|
929
|
-
const { redo } = redoItem[i];
|
904
|
+
for (const { redo } of redoItem) {
|
930
905
|
this[redo.op].apply(this, redo.args);
|
931
906
|
}
|
932
907
|
this.state.historyIndex++;
|
@@ -957,9 +932,7 @@ export class LocalDB {
|
|
957
932
|
}
|
958
933
|
loadFromStorage() {
|
959
934
|
const data = this._collections;
|
960
|
-
const
|
961
|
-
for (let i = 0, il = cols.length; i < il; i += 1) {
|
962
|
-
const col = cols[i];
|
935
|
+
for (const col of this._collectionNames) {
|
963
936
|
const colData = this.loadCollectionFromStorage(col);
|
964
937
|
if (colData) {
|
965
938
|
data[col] = colData;
|
@@ -968,9 +941,7 @@ export class LocalDB {
|
|
968
941
|
}
|
969
942
|
saveToStorage() {
|
970
943
|
const data = this._collections;
|
971
|
-
const
|
972
|
-
for (let i = 0, il = cols.length; i < il; i += 1) {
|
973
|
-
const col = cols[i];
|
944
|
+
for (const col of this._collectionNames) {
|
974
945
|
const { localStorageKey } = this._config[col];
|
975
946
|
if (localStorageKey) {
|
976
947
|
localStorage.setItem(localStorageKey, JSON.stringify(data[col]));
|
package/dist/LocalDBDocument.js
CHANGED
@@ -34,8 +34,7 @@ export class LocalDBDocument extends PubSub {
|
|
34
34
|
const changed = {};
|
35
35
|
const changedKeys = [];
|
36
36
|
const next = { ...prev };
|
37
|
-
for (
|
38
|
-
const key = keys[i];
|
37
|
+
for (const key of keys) {
|
39
38
|
if (!deepEqual(update[key], prev[key])) {
|
40
39
|
changed[key] = update[key];
|
41
40
|
if (update[key] === undefined) {
|
package/dist/hooks.js
CHANGED
@@ -23,8 +23,8 @@ export const useLocalDbDocs = (db, col, ids, deps = [db, col, ids]) => {
|
|
23
23
|
if (!ids?.length)
|
24
24
|
return;
|
25
25
|
return db.subToCol(col, (next, prev, change) => {
|
26
|
-
for (
|
27
|
-
if (
|
26
|
+
for (const id of ids) {
|
27
|
+
if (id in change) {
|
28
28
|
docsRef.current = ids.map((id) => next[id]);
|
29
29
|
return setDocs(docsRef.current);
|
30
30
|
}
|