@legendapp/state 0.22.4 → 0.23.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 +41 -0
- package/history.js +1 -16
- package/history.js.map +1 -1
- package/history.mjs +1 -16
- package/history.mjs.map +1 -1
- package/index.d.ts +2 -2
- package/index.js +53 -46
- package/index.js.map +1 -1
- package/index.mjs +48 -47
- package/index.mjs.map +1 -1
- package/package.json +1 -1
- package/persist-plugins/indexeddb-preloader.d.ts +4 -1
- package/persist-plugins/indexeddb-preloader.js +122 -26
- package/persist-plugins/indexeddb-preloader.js.map +1 -1
- package/persist-plugins/indexeddb-preloader.mjs +122 -26
- package/persist-plugins/indexeddb-preloader.mjs.map +1 -1
- package/persist-plugins/indexeddb.d.ts +8 -5
- package/persist-plugins/indexeddb.js +171 -78
- package/persist-plugins/indexeddb.js.map +1 -1
- package/persist-plugins/indexeddb.mjs +172 -79
- package/persist-plugins/indexeddb.mjs.map +1 -1
- package/persist-plugins/mmkv.js +2 -2
- package/persist-plugins/mmkv.js.map +1 -1
- package/persist-plugins/mmkv.mjs +2 -2
- package/persist-plugins/mmkv.mjs.map +1 -1
- package/persist.d.ts +2 -0
- package/persist.js +147 -17
- package/persist.js.map +1 -1
- package/persist.mjs +148 -22
- package/persist.mjs.map +1 -1
- package/src/globals.d.ts +0 -1
- package/src/helpers.d.ts +3 -0
- package/src/is.d.ts +8 -0
- package/src/observableInterfaces.d.ts +44 -44
- package/src/persist/fieldTransformer.d.ts +3 -0
- package/src/persist-plugins/indexeddb-preloader.d.ts +4 -1
- package/src/persist-plugins/indexeddb.d.ts +8 -5
|
@@ -1,10 +1,93 @@
|
|
|
1
|
-
function preloadIndexedDB({ databaseName, tableNames, version, loadTables, }) {
|
|
1
|
+
function preloadIndexedDB({ databaseName, tableNames, version, loadTables, processTables, fieldTransforms, }) {
|
|
2
|
+
if (fieldTransforms) {
|
|
3
|
+
const invertedMaps = new WeakMap();
|
|
4
|
+
function invertMap(obj) {
|
|
5
|
+
const existing = invertedMaps.get(obj);
|
|
6
|
+
if (existing)
|
|
7
|
+
return existing;
|
|
8
|
+
const target = {};
|
|
9
|
+
Object.keys(obj).forEach((key) => {
|
|
10
|
+
const val = obj[key];
|
|
11
|
+
if (process.env.NODE_ENV === 'development' && target[val])
|
|
12
|
+
debugger;
|
|
13
|
+
if (key === '_dict') {
|
|
14
|
+
target[key] = invertMap(val);
|
|
15
|
+
}
|
|
16
|
+
else if (key.endsWith('_obj') || key.endsWith('_dict') || key.endsWith('_arr')) {
|
|
17
|
+
const keyMapped = obj[key.replace(/_obj|_dict|_arr$/, '')];
|
|
18
|
+
const suffix = key.match(/_obj|_dict|_arr$/)[0];
|
|
19
|
+
target[keyMapped + suffix] = invertMap(val);
|
|
20
|
+
}
|
|
21
|
+
else if (typeof val === 'string') {
|
|
22
|
+
target[val] = key;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
if (process.env.NODE_ENV === 'development' && target['[object Object]'])
|
|
26
|
+
debugger;
|
|
27
|
+
invertedMaps.set(obj, target);
|
|
28
|
+
return target;
|
|
29
|
+
}
|
|
30
|
+
Object.keys(fieldTransforms).forEach((table) => {
|
|
31
|
+
fieldTransforms[table] = invertMap(fieldTransforms[table]);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
2
34
|
function workerCode() {
|
|
3
35
|
const tableData = {};
|
|
4
36
|
const tableMetadata = {};
|
|
5
37
|
let db;
|
|
6
38
|
self.onmessage = function onmessage(e) {
|
|
7
|
-
const [databaseName, tableNames, loadTables, version] = e.data;
|
|
39
|
+
const [databaseName, tableNames, loadTables, version, fieldTransforms] = e.data;
|
|
40
|
+
const transformObject = fieldTransforms &&
|
|
41
|
+
function transformObject(dataIn, map, passThroughKeys, ignoreKeys) {
|
|
42
|
+
let ret = dataIn;
|
|
43
|
+
if (dataIn) {
|
|
44
|
+
ret = {};
|
|
45
|
+
const dict = Object.keys(map).length === 1 && map['_dict'];
|
|
46
|
+
Object.keys(dataIn).forEach((key) => {
|
|
47
|
+
if (ret[key] !== undefined || (ignoreKeys === null || ignoreKeys === void 0 ? void 0 : ignoreKeys.includes(key)))
|
|
48
|
+
return;
|
|
49
|
+
let v = dataIn[key];
|
|
50
|
+
if (passThroughKeys === null || passThroughKeys === void 0 ? void 0 : passThroughKeys.includes(key)) {
|
|
51
|
+
ret[key] = v;
|
|
52
|
+
}
|
|
53
|
+
else if (dict) {
|
|
54
|
+
ret[key] = transformObject(v, dict, passThroughKeys, ignoreKeys);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
const mapped = map[key];
|
|
58
|
+
if (mapped === undefined) {
|
|
59
|
+
if ((process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') &&
|
|
60
|
+
map[key] === undefined) {
|
|
61
|
+
console.error('A fatal field transformation error has occurred', key, dataIn, map);
|
|
62
|
+
debugger;
|
|
63
|
+
ret[key] = v;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
if (map[key + '_obj']) {
|
|
68
|
+
v = transformObject(v, map[key + '_obj'], passThroughKeys, ignoreKeys);
|
|
69
|
+
}
|
|
70
|
+
else if (map[key + '_dict']) {
|
|
71
|
+
const mapChild = map[key + '_dict'];
|
|
72
|
+
Object.keys(v).forEach((keyChild) => {
|
|
73
|
+
v[keyChild] = transformObject(v[keyChild], mapChild, passThroughKeys, ignoreKeys);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
else if (map[key + '_arr']) {
|
|
77
|
+
const mapChild = map[key + '_arr'];
|
|
78
|
+
v = v.map((vChild) => transformObject(vChild, mapChild, passThroughKeys, ignoreKeys));
|
|
79
|
+
}
|
|
80
|
+
ret[mapped] = v;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (process.env.NODE_ENV === 'development' && ret['[object Object]'])
|
|
84
|
+
debugger;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
if (process.env.NODE_ENV === 'development' && ret && ret['[object Object]'])
|
|
88
|
+
debugger;
|
|
89
|
+
return ret;
|
|
90
|
+
};
|
|
8
91
|
let openRequest = indexedDB.open(databaseName, version);
|
|
9
92
|
openRequest.onupgradeneeded = () => {
|
|
10
93
|
const db = openRequest.result;
|
|
@@ -21,10 +104,14 @@ function preloadIndexedDB({ databaseName, tableNames, version, loadTables, }) {
|
|
|
21
104
|
try {
|
|
22
105
|
const transaction = db.transaction(tables, 'readonly');
|
|
23
106
|
await Promise.all(tables.map((table) => initTable(table, transaction)));
|
|
107
|
+
if (processTables) {
|
|
108
|
+
processTables(tableData);
|
|
109
|
+
}
|
|
24
110
|
postMessage({ tableData, tableMetadata });
|
|
25
111
|
}
|
|
26
|
-
catch (
|
|
27
|
-
|
|
112
|
+
catch (e) {
|
|
113
|
+
console.error(e);
|
|
114
|
+
postMessage({ error: e });
|
|
28
115
|
}
|
|
29
116
|
}
|
|
30
117
|
else {
|
|
@@ -39,47 +126,56 @@ function preloadIndexedDB({ databaseName, tableNames, version, loadTables, }) {
|
|
|
39
126
|
return new Promise((resolve) => {
|
|
40
127
|
allRequest.onsuccess = () => {
|
|
41
128
|
const arr = allRequest.result;
|
|
42
|
-
let obj = {};
|
|
43
129
|
let metadata;
|
|
44
|
-
|
|
130
|
+
if (!tableData[table]) {
|
|
131
|
+
tableData[table] = {};
|
|
132
|
+
}
|
|
45
133
|
for (let i = 0; i < arr.length; i++) {
|
|
46
134
|
const val = arr[i];
|
|
135
|
+
let tableName = table;
|
|
136
|
+
if (val.id.includes('/')) {
|
|
137
|
+
const [prefix, id] = val.id.split('/');
|
|
138
|
+
tableName += '/' + prefix;
|
|
139
|
+
val.id = id;
|
|
140
|
+
}
|
|
47
141
|
if (val.id === '__legend_metadata') {
|
|
142
|
+
// Save this as metadata
|
|
48
143
|
delete val.id;
|
|
49
144
|
metadata = val;
|
|
50
|
-
|
|
51
|
-
obj = [];
|
|
52
|
-
isArray = true;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
else if (val.id === '__legend_obj') {
|
|
56
|
-
obj = val.value;
|
|
145
|
+
tableMetadata[tableName] = metadata;
|
|
57
146
|
}
|
|
58
147
|
else {
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
obj[val.id] = val;
|
|
64
|
-
if (val.__legend_id) {
|
|
65
|
-
delete val.__legend_id;
|
|
66
|
-
delete val.id;
|
|
67
|
-
}
|
|
148
|
+
if (!tableData[tableName]) {
|
|
149
|
+
tableData[tableName] = {};
|
|
68
150
|
}
|
|
151
|
+
tableData[tableName][val.id] = val;
|
|
69
152
|
}
|
|
70
153
|
}
|
|
71
|
-
|
|
72
|
-
|
|
154
|
+
if (fieldTransforms) {
|
|
155
|
+
Object.keys(fieldTransforms).forEach((table) => {
|
|
156
|
+
Object.keys(tableData).forEach((tableName) => {
|
|
157
|
+
if (tableName === table || tableName.startsWith(table + '/')) {
|
|
158
|
+
const data = tableData[tableName];
|
|
159
|
+
if (data) {
|
|
160
|
+
tableData[tableName + '_transformed'] = transformObject(data, fieldTransforms[table], ['@']);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
}
|
|
73
166
|
resolve();
|
|
74
167
|
};
|
|
75
168
|
});
|
|
76
169
|
}
|
|
77
170
|
};
|
|
78
171
|
}
|
|
79
|
-
|
|
172
|
+
let code = workerCode.toString().replace(/^function .+\{?|\}$/g, '');
|
|
173
|
+
if (processTables) {
|
|
174
|
+
code = 'const processTables = ' + processTables.toString() + '\n' + code;
|
|
175
|
+
}
|
|
80
176
|
const url = URL.createObjectURL(new Blob([code], { type: 'text/javascript' }));
|
|
81
177
|
const worker = new Worker(url);
|
|
82
|
-
worker.postMessage([databaseName, tableNames, loadTables, version]);
|
|
178
|
+
worker.postMessage([databaseName, tableNames, loadTables, version, fieldTransforms]);
|
|
83
179
|
const promise = new Promise((resolve) => {
|
|
84
180
|
worker.onmessage = (e) => {
|
|
85
181
|
Object.assign(window.__legend_state_preload, e.data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexeddb-preloader.mjs","sources":["../../../../src/persist-plugins/indexeddb-preloader.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"indexeddb-preloader.mjs","sources":["../../../../src/persist-plugins/indexeddb-preloader.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import type { Change, ObservablePersistenceConfig, ObservablePersistLocal, PersistMetadata } from '../observableInterfaces';
|
|
1
|
+
import type { Change, ObservablePersistenceConfig, ObservablePersistLocal, PersistMetadata, PersistOptionsLocal } from '../observableInterfaces';
|
|
2
2
|
export declare class ObservablePersistIndexedDB implements ObservablePersistLocal {
|
|
3
3
|
private tableData;
|
|
4
4
|
private tableMetadata;
|
|
5
|
+
private tablesAdjusted;
|
|
5
6
|
private db;
|
|
6
7
|
initialize(config: ObservablePersistenceConfig['persistLocalOptions']): Promise<void>;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
loadTable(table: string, config: PersistOptionsLocal): void | Promise<void>;
|
|
9
|
+
getTable(table: string, config: PersistOptionsLocal): any;
|
|
10
|
+
getTableTransformed<T = any>(table: string, config: PersistOptionsLocal<any>): T;
|
|
11
|
+
getMetadata(table: string, config: PersistOptionsLocal): any;
|
|
12
|
+
updateMetadata(table: string, metadata: PersistMetadata, config: PersistOptionsLocal): Promise<void>;
|
|
13
|
+
set(table: string, tableValue: Record<string, any>, changes: Change[], config: PersistOptionsLocal): Promise<void>;
|
|
11
14
|
deleteTable(table: string): Promise<void>;
|
|
12
15
|
private initTable;
|
|
13
16
|
private transactionStore;
|
|
@@ -6,6 +6,7 @@ class ObservablePersistIndexedDB {
|
|
|
6
6
|
constructor() {
|
|
7
7
|
this.tableData = {};
|
|
8
8
|
this.tableMetadata = {};
|
|
9
|
+
this.tablesAdjusted = new Map();
|
|
9
10
|
}
|
|
10
11
|
initialize(config) {
|
|
11
12
|
if (typeof indexedDB === 'undefined')
|
|
@@ -33,6 +34,7 @@ class ObservablePersistIndexedDB {
|
|
|
33
34
|
this.db = openRequest.result;
|
|
34
35
|
const preload = typeof window !== 'undefined' &&
|
|
35
36
|
window.__legend_state_preload;
|
|
37
|
+
let didPreload;
|
|
36
38
|
if (preload) {
|
|
37
39
|
// Load from preload or wait for it to finish, if it exists
|
|
38
40
|
if (!preload.tableData && preload.dataPromise) {
|
|
@@ -40,8 +42,9 @@ class ObservablePersistIndexedDB {
|
|
|
40
42
|
}
|
|
41
43
|
this.tableData = preload.tableData;
|
|
42
44
|
this.tableMetadata = preload.tableMetadata;
|
|
45
|
+
didPreload = !!preload.tableData;
|
|
43
46
|
}
|
|
44
|
-
|
|
47
|
+
if (!didPreload) {
|
|
45
48
|
// Load each table
|
|
46
49
|
const tables = tableNames.filter((table) => this.db.objectStoreNames.contains(table));
|
|
47
50
|
try {
|
|
@@ -56,47 +59,131 @@ class ObservablePersistIndexedDB {
|
|
|
56
59
|
};
|
|
57
60
|
});
|
|
58
61
|
}
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
loadTable(table, config) {
|
|
63
|
+
var _a;
|
|
64
|
+
if (!this.tableData[table]) {
|
|
65
|
+
const transaction = this.db.transaction(table, 'readonly');
|
|
66
|
+
return this.initTable(table, transaction).then(() => this.loadTable(table, config));
|
|
67
|
+
}
|
|
68
|
+
const { adjustData } = config;
|
|
69
|
+
const prefix = (_a = config.indexedDB) === null || _a === void 0 ? void 0 : _a.prefixID;
|
|
70
|
+
if (adjustData || prefix) {
|
|
71
|
+
const tableName = prefix ? table + '/' + prefix : table;
|
|
72
|
+
if (this.tablesAdjusted.has(tableName)) {
|
|
73
|
+
const promise = state.when(this.tablesAdjusted.get(tableName));
|
|
74
|
+
if (state.isPromise(promise)) {
|
|
75
|
+
return promise;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const obsLoaded = state.observable(false);
|
|
80
|
+
this.tablesAdjusted.set(tableName, obsLoaded);
|
|
81
|
+
const data = this.getTable(table, config);
|
|
82
|
+
let hasPromise = false;
|
|
83
|
+
let promises;
|
|
84
|
+
if (data) {
|
|
85
|
+
const keys = Object.keys(data);
|
|
86
|
+
promises = keys.map((key) => {
|
|
87
|
+
let value = data[key];
|
|
88
|
+
if (adjustData === null || adjustData === void 0 ? void 0 : adjustData.load) {
|
|
89
|
+
value = adjustData.load(value);
|
|
90
|
+
}
|
|
91
|
+
if (state.isPromise(value)) {
|
|
92
|
+
hasPromise = true;
|
|
93
|
+
return value.then((v) => {
|
|
94
|
+
data[key] = value;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
data[key] = value;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
if (hasPromise) {
|
|
103
|
+
return Promise.all(promises).then(() => {
|
|
104
|
+
obsLoaded.set(true);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
obsLoaded.set(true);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
61
112
|
}
|
|
62
|
-
|
|
63
|
-
|
|
113
|
+
getTable(table, config) {
|
|
114
|
+
const configIDB = config.indexedDB;
|
|
115
|
+
const prefix = configIDB === null || configIDB === void 0 ? void 0 : configIDB.prefixID;
|
|
116
|
+
const data = this.tableData[prefix ? table + '/' + prefix : table];
|
|
117
|
+
if (data && (configIDB === null || configIDB === void 0 ? void 0 : configIDB.itemID)) {
|
|
118
|
+
return data[configIDB.itemID];
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return data;
|
|
122
|
+
}
|
|
64
123
|
}
|
|
65
|
-
|
|
124
|
+
getTableTransformed(table, config) {
|
|
125
|
+
const configIDB = config.indexedDB;
|
|
126
|
+
const prefix = configIDB === null || configIDB === void 0 ? void 0 : configIDB.prefixID;
|
|
127
|
+
const data = this.tableData[(prefix ? table + '/' + prefix : table) + '_transformed'];
|
|
128
|
+
if (data && (configIDB === null || configIDB === void 0 ? void 0 : configIDB.itemID)) {
|
|
129
|
+
return data[configIDB.itemID];
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
return data;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
getMetadata(table, config) {
|
|
136
|
+
const configIDB = config.indexedDB;
|
|
137
|
+
const prefix = configIDB === null || configIDB === void 0 ? void 0 : configIDB.prefixID;
|
|
138
|
+
return this.tableMetadata[prefix ? table + '/' + prefix : table];
|
|
139
|
+
}
|
|
140
|
+
async updateMetadata(table, metadata, config) {
|
|
141
|
+
const configIDB = config.indexedDB;
|
|
142
|
+
const prefix = configIDB === null || configIDB === void 0 ? void 0 : configIDB.prefixID;
|
|
143
|
+
const tableName = prefix ? table + '/' + prefix : table;
|
|
66
144
|
// Assign new metadata into the table, and make sure it has the id
|
|
67
|
-
metadata = Object.assign(this.tableMetadata[
|
|
68
|
-
|
|
145
|
+
metadata = Object.assign(this.tableMetadata[tableName] || {}, metadata, {
|
|
146
|
+
id: (prefix ? prefix + '/' : '') + '__legend_metadata',
|
|
147
|
+
});
|
|
148
|
+
this.tableMetadata[tableName] = metadata;
|
|
69
149
|
const store = this.transactionStore(table);
|
|
70
|
-
const set =
|
|
150
|
+
const set = store.put(metadata);
|
|
71
151
|
return new Promise((resolve) => (set.onsuccess = () => resolve()));
|
|
72
152
|
}
|
|
73
|
-
async set(table, tableValue, changes) {
|
|
74
|
-
|
|
75
|
-
this.tableData[table] = tableValue;
|
|
153
|
+
async set(table, tableValue, changes, config) {
|
|
154
|
+
var _a, _b;
|
|
76
155
|
if (typeof indexedDB === 'undefined')
|
|
77
156
|
return;
|
|
78
|
-
if (process.env.NODE_ENV === 'development' && (
|
|
157
|
+
if (process.env.NODE_ENV === 'development' && !(state.isObject(tableValue) || state.isArray(tableValue))) {
|
|
79
158
|
console.warn('[legend-state] IndexedDB persistence can only save objects or arrays');
|
|
80
159
|
}
|
|
81
160
|
const store = this.transactionStore(table);
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
161
|
+
const prefixID = (_a = config.indexedDB) === null || _a === void 0 ? void 0 : _a.prefixID;
|
|
162
|
+
if (prefixID) {
|
|
163
|
+
table += '/' + prefixID;
|
|
164
|
+
}
|
|
165
|
+
const prev = this.tableData[table];
|
|
166
|
+
const itemID = (_b = config.indexedDB) === null || _b === void 0 ? void 0 : _b.itemID;
|
|
167
|
+
if (itemID) {
|
|
168
|
+
tableValue = { [itemID]: tableValue };
|
|
169
|
+
}
|
|
170
|
+
const puts = await Promise.all(changes.map(({ path, valueAtPath }) => {
|
|
171
|
+
var _a;
|
|
172
|
+
const itemID = (_a = config.indexedDB) === null || _a === void 0 ? void 0 : _a.itemID;
|
|
173
|
+
if (itemID) {
|
|
174
|
+
path = [itemID].concat(path);
|
|
175
|
+
}
|
|
85
176
|
if (path.length > 0) {
|
|
86
177
|
// If change is deep in an object save it to IDB by the first key
|
|
87
178
|
const key = path[0];
|
|
88
|
-
|
|
179
|
+
return this._setItem(table, key, tableValue[key], store, config);
|
|
89
180
|
}
|
|
90
181
|
else {
|
|
91
|
-
// If change is the full object
|
|
92
|
-
if (state.isArray(valueAtPath)) {
|
|
93
|
-
// If it's an array set that in the metadata so it loads as an array
|
|
94
|
-
this.updateMetadata(table, { array: true });
|
|
95
|
-
}
|
|
96
182
|
// Set the whole table
|
|
97
|
-
|
|
183
|
+
return this._setTable(table, prev, valueAtPath, store, config);
|
|
98
184
|
}
|
|
99
|
-
}
|
|
185
|
+
}));
|
|
186
|
+
const lastPut = puts[puts.length - 1];
|
|
100
187
|
return new Promise((resolve) => (lastPut.onsuccess = () => resolve()));
|
|
101
188
|
}
|
|
102
189
|
async deleteTable(table) {
|
|
@@ -117,44 +204,37 @@ class ObservablePersistIndexedDB {
|
|
|
117
204
|
// If changing this, change it in the preloader too
|
|
118
205
|
const store = transaction.objectStore(table);
|
|
119
206
|
const allRequest = store.getAll();
|
|
207
|
+
if (!this.tableData[table]) {
|
|
208
|
+
this.tableData[table] = {};
|
|
209
|
+
}
|
|
120
210
|
return new Promise((resolve) => {
|
|
121
211
|
allRequest.onsuccess = () => {
|
|
122
212
|
const arr = allRequest.result;
|
|
123
|
-
let obj = {};
|
|
124
213
|
let metadata;
|
|
125
|
-
|
|
214
|
+
if (!this.tableData[table]) {
|
|
215
|
+
this.tableData[table] = {};
|
|
216
|
+
}
|
|
126
217
|
for (let i = 0; i < arr.length; i++) {
|
|
127
218
|
const val = arr[i];
|
|
219
|
+
let tableName = table;
|
|
220
|
+
if (val.id.includes('/')) {
|
|
221
|
+
const [prefix, id] = val.id.split('/');
|
|
222
|
+
tableName += '/' + prefix;
|
|
223
|
+
val.id = id;
|
|
224
|
+
}
|
|
128
225
|
if (val.id === '__legend_metadata') {
|
|
129
226
|
// Save this as metadata
|
|
130
227
|
delete val.id;
|
|
131
228
|
metadata = val;
|
|
132
|
-
|
|
133
|
-
// Load the data as an array instead of an object
|
|
134
|
-
obj = state.isEmpty(obj) ? [] : Object.keys(obj).map((key) => obj[key]);
|
|
135
|
-
isArray = true;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
else if (val.id === '__legend_obj') {
|
|
139
|
-
// Data is a basic object so load the value
|
|
140
|
-
obj = val.value;
|
|
229
|
+
this.tableMetadata[tableName] = metadata;
|
|
141
230
|
}
|
|
142
231
|
else {
|
|
143
|
-
if (
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
obj[val.id] = val;
|
|
148
|
-
}
|
|
149
|
-
// If it had __legend_id the source object should not have an id key
|
|
150
|
-
if (val.__legend_id) {
|
|
151
|
-
delete val.__legend_id;
|
|
152
|
-
delete val.id;
|
|
232
|
+
if (!this.tableData[tableName]) {
|
|
233
|
+
this.tableData[tableName] = {};
|
|
153
234
|
}
|
|
235
|
+
this.tableData[tableName][val.id] = val;
|
|
154
236
|
}
|
|
155
237
|
}
|
|
156
|
-
this.tableData[table] = obj;
|
|
157
|
-
this.tableMetadata[table] = metadata;
|
|
158
238
|
resolve();
|
|
159
239
|
};
|
|
160
240
|
});
|
|
@@ -163,50 +243,63 @@ class ObservablePersistIndexedDB {
|
|
|
163
243
|
const transaction = this.db.transaction(table, 'readwrite');
|
|
164
244
|
return transaction.objectStore(table);
|
|
165
245
|
}
|
|
166
|
-
_setItem(key, value, store) {
|
|
246
|
+
async _setItem(table, key, value, store, config) {
|
|
247
|
+
var _a, _b;
|
|
167
248
|
if (!value) {
|
|
249
|
+
if (this.tableData[table]) {
|
|
250
|
+
delete this.tableData[table][key];
|
|
251
|
+
}
|
|
168
252
|
return store.delete(key);
|
|
169
253
|
}
|
|
170
254
|
else {
|
|
171
255
|
if (value.id === undefined) {
|
|
172
256
|
// If value does not have its own ID, assign it the key from the Record
|
|
173
|
-
|
|
174
|
-
|
|
257
|
+
value.id = key;
|
|
258
|
+
}
|
|
259
|
+
if (config) {
|
|
260
|
+
if (!this.tableData[table]) {
|
|
261
|
+
this.tableData[table] = {};
|
|
262
|
+
}
|
|
263
|
+
this.tableData[table][key] = value;
|
|
264
|
+
let didClone = false;
|
|
265
|
+
if ((_a = config.adjustData) === null || _a === void 0 ? void 0 : _a.save) {
|
|
266
|
+
didClone = true;
|
|
267
|
+
value = await config.adjustData.save(JSON.parse(JSON.stringify(value)));
|
|
268
|
+
}
|
|
269
|
+
const prefixID = (_b = config.indexedDB) === null || _b === void 0 ? void 0 : _b.prefixID;
|
|
270
|
+
if (prefixID) {
|
|
271
|
+
if (didClone) {
|
|
272
|
+
value.id = prefixID + '/' + value.id;
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
value = Object.assign({}, value, {
|
|
276
|
+
id: prefixID + '/' + value.id,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
175
280
|
}
|
|
176
281
|
return store.put(value);
|
|
177
282
|
}
|
|
178
283
|
}
|
|
179
|
-
_setTable(prev, value, store) {
|
|
284
|
+
async _setTable(table, prev, value, store, config) {
|
|
180
285
|
const keys = Object.keys(value);
|
|
181
|
-
let isBasic = false;
|
|
182
|
-
// If any direct child is not an object then this has to be saved as a basic object
|
|
183
|
-
for (let i = 0; i < keys.length; i++) {
|
|
184
|
-
if (!state.isObject(value[keys[i]])) {
|
|
185
|
-
isBasic = true;
|
|
186
|
-
break;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
286
|
let lastSet;
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
if (prev) {
|
|
203
|
-
const keysOld = Object.keys(prev);
|
|
204
|
-
for (let i = 0; i < keysOld.length; i++) {
|
|
205
|
-
const key = keysOld[i];
|
|
206
|
-
if (value[key] === undefined) {
|
|
207
|
-
lastSet = this._setItem(key, null, store);
|
|
208
|
-
}
|
|
287
|
+
// Do a set for each key in the object
|
|
288
|
+
const sets = await Promise.all(keys.map((key) => {
|
|
289
|
+
const val = value[key];
|
|
290
|
+
return this._setItem(table, key, val, store, config);
|
|
291
|
+
}));
|
|
292
|
+
lastSet = sets[sets.length - 1];
|
|
293
|
+
// Delete keys that are no longer in the object
|
|
294
|
+
if (prev) {
|
|
295
|
+
const keysOld = Object.keys(prev);
|
|
296
|
+
const deletes = (await Promise.all(keysOld.map((key) => {
|
|
297
|
+
if (value[key] === undefined) {
|
|
298
|
+
return this._setItem(table, key, null, store, config);
|
|
209
299
|
}
|
|
300
|
+
}))).filter((a) => !!a);
|
|
301
|
+
if (deletes.length > 0) {
|
|
302
|
+
lastSet = deletes[deletes.length - 1];
|
|
210
303
|
}
|
|
211
304
|
}
|
|
212
305
|
return lastSet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexeddb.js","sources":["../../../../src/persist-plugins/indexeddb.ts"],"sourcesContent":[null],"names":["isObject","isArray","isEmpty"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"indexeddb.js","sources":["../../../../src/persist-plugins/indexeddb.ts"],"sourcesContent":[null],"names":["when","isPromise","observable","isObject","isArray"],"mappings":"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"}
|