@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.
@@ -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 (_a) {
27
- postMessage({});
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
- let isArray = false;
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
- if (metadata.array) {
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 (isArray) {
60
- obj.push(val);
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
- tableData[table] = obj;
72
- tableMetadata[table] = metadata;
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
- const code = workerCode.toString().replace(/^function .+\{?|\}$/g, '');
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":"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"}
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
- getTable(table: string): any;
8
- getMetadata(table: string): any;
9
- updateMetadata(table: string, metadata: PersistMetadata): Promise<void>;
10
- set(table: string, tableValue: Record<string, any>, changes: Change[]): Promise<void>;
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
- else {
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
- getTable(table) {
60
- return this.tableData[table];
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
- getMetadata(table) {
63
- return this.tableMetadata[table];
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
- async updateMetadata(table, metadata) {
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[table] || {}, metadata, { id: '__legend_metadata' });
68
- this.tableMetadata[table] = metadata;
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 = this._setItem('__legend_metadata', metadata, store);
150
+ const set = store.put(metadata);
71
151
  return new Promise((resolve) => (set.onsuccess = () => resolve()));
72
152
  }
73
- async set(table, tableValue, changes) {
74
- const prev = this.tableData[table];
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' && (!state.isObject(tableValue) || !state.isArray(tableValue))) {
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
- let lastPut;
83
- for (let i = 0; i < changes.length; i++) {
84
- const { path, valueAtPath } = changes[i];
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
- lastPut = this._setItem(key, tableValue[key], store);
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
- lastPut = this._setTable(prev, valueAtPath, store);
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
- let isArray = false;
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
- if (metadata.array) {
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 (isArray) {
144
- obj.push(val);
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
- // with __legend_id meaning it should get removed on load
174
- value = Object.assign({ id: key, __legend_id: true }, value);
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
- if (isBasic) {
191
- // Save basic object
192
- lastSet = store.put({ id: '__legend_obj', value });
193
- }
194
- else {
195
- // Do a set for each key in the object
196
- for (let i = 0; i < keys.length; i++) {
197
- const key = keys[i];
198
- const val = value[key];
199
- lastSet = this._setItem(key, val, store);
200
- }
201
- // Delete keys that are no longer in the object
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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"}