dexie-cloud-addon 1.0.0-alpha.6 → 1.0.0-beta.11

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.
Files changed (138) hide show
  1. package/copydts.sh +5 -0
  2. package/dist/modern/dexie-cloud-addon.js +5954 -0
  3. package/dist/modern/dexie-cloud-addon.js.map +1 -0
  4. package/dist/modern/dexie-cloud-addon.min.js +1 -0
  5. package/dist/modern/dexie-cloud-addon.min.js.map +1 -0
  6. package/dist/modern/service-worker.js +6054 -0
  7. package/dist/modern/service-worker.js.map +1 -0
  8. package/dist/modern/service-worker.min.js +1 -0
  9. package/dist/modern/service-worker.min.js.map +1 -0
  10. package/dist/module-es5/dexie-cloud-addon.js +6908 -0
  11. package/dist/module-es5/dexie-cloud-addon.js.map +1 -0
  12. package/dist/module-es5/dexie-cloud-addon.min.js +1 -0
  13. package/dist/module-es5/dexie-cloud-addon.min.js.map +1 -0
  14. package/dist/types/DISABLE_SERVICEWORKER_STRATEGY.d.ts +1 -0
  15. package/dist/types/DXCWebSocketStatus.d.ts +1 -0
  16. package/dist/types/DexieCloudOptions.d.ts +19 -0
  17. package/dist/types/DexieCloudServerState.d.ts +5 -0
  18. package/dist/types/TSON.d.ts +17 -0
  19. package/dist/types/WSObservable.d.ts +62 -0
  20. package/dist/types/WebSocketStatus.d.ts +1 -0
  21. package/dist/types/authentication/AuthPersistedContext.d.ts +9 -0
  22. package/dist/types/authentication/TokenExpiredError.d.ts +3 -0
  23. package/dist/types/authentication/UNAUTHORIZED_USER.d.ts +2 -0
  24. package/dist/types/authentication/authenticate.d.ts +20 -0
  25. package/dist/types/authentication/currentUserObservable.d.ts +1 -0
  26. package/dist/types/authentication/interactWithUser.d.ts +18 -0
  27. package/dist/types/authentication/login.d.ts +6 -0
  28. package/dist/types/authentication/otpFetchTokenCallback.d.ts +3 -0
  29. package/dist/types/authentication/setCurrentUser.d.ts +14 -0
  30. package/dist/types/computeSyncState.d.ts +4 -0
  31. package/dist/types/db/DexieCloudDB.d.ts +58 -0
  32. package/dist/types/db/entities/BaseRevisionMapEntry.d.ts +5 -0
  33. package/dist/types/db/entities/EntityCommon.d.ts +4 -0
  34. package/dist/types/db/entities/GuardedJob.d.ts +5 -0
  35. package/dist/types/db/entities/Member.d.ts +19 -0
  36. package/dist/types/db/entities/PersistedSyncState.d.ts +14 -0
  37. package/dist/types/db/entities/Realm.d.ts +16 -0
  38. package/dist/types/db/entities/Role.d.ts +11 -0
  39. package/dist/types/db/entities/UserLogin.d.ts +18 -0
  40. package/dist/types/default-ui/Dialog.d.ts +4 -0
  41. package/dist/types/default-ui/LoginDialog.d.ts +6 -0
  42. package/dist/types/default-ui/Styles.d.ts +3 -0
  43. package/dist/types/default-ui/index.d.ts +24 -0
  44. package/dist/types/dexie-cloud-client.d.ts +8 -0
  45. package/dist/types/errors/HttpError.d.ts +5 -0
  46. package/dist/types/extend-dexie-interface.d.ts +59 -0
  47. package/dist/types/helpers/BroadcastedAndLocalEvent.d.ts +8 -0
  48. package/dist/types/helpers/BroadcastedLocalEvent.d.ts +8 -0
  49. package/dist/types/helpers/CancelToken.d.ts +4 -0
  50. package/dist/types/helpers/IS_SERVICE_WORKER.d.ts +1 -0
  51. package/dist/types/helpers/SWBroadcastChannel.d.ts +6 -0
  52. package/dist/types/helpers/allSettled.d.ts +1 -0
  53. package/dist/types/helpers/bulkUpdate.d.ts +4 -0
  54. package/dist/types/helpers/computeRealmSetHash.d.ts +2 -0
  55. package/dist/types/helpers/date-constants.d.ts +5 -0
  56. package/dist/types/helpers/dbOnClosed.d.ts +2 -0
  57. package/dist/types/helpers/getMutationTable.d.ts +1 -0
  58. package/dist/types/helpers/getSyncableTables.d.ts +4 -0
  59. package/dist/types/helpers/getTableFromMutationTable.d.ts +1 -0
  60. package/dist/types/helpers/makeArray.d.ts +1 -0
  61. package/dist/types/helpers/randomString.d.ts +1 -0
  62. package/dist/types/helpers/resolveText.d.ts +2 -0
  63. package/dist/types/helpers/throwVersionIncrementNeeded.d.ts +1 -0
  64. package/dist/types/helpers/visibilityState.d.ts +1 -0
  65. package/dist/types/helpers/visibleState.d.ts +1 -0
  66. package/dist/types/isFirefox.d.ts +1 -0
  67. package/dist/types/isSafari.d.ts +2 -0
  68. package/dist/types/middleware-helpers/guardedTable.d.ts +11 -0
  69. package/dist/types/middlewares/createIdGenerationMiddleware.d.ts +8 -0
  70. package/dist/types/middlewares/createImplicitPropSetterMiddleware.d.ts +3 -0
  71. package/dist/types/middlewares/createMutationTrackingMiddleware.d.ts +17 -0
  72. package/dist/types/middlewares/outstandingTransaction.d.ts +4 -0
  73. package/dist/types/overrideParseStoresSpec.d.ts +4 -0
  74. package/dist/types/performInitialSync.d.ts +4 -0
  75. package/dist/types/service-worker.d.ts +1 -0
  76. package/dist/types/sync/LocalSyncWorker.d.ts +7 -0
  77. package/dist/types/sync/SyncRequiredError.d.ts +3 -0
  78. package/dist/types/sync/connectWebSocket.d.ts +2 -0
  79. package/dist/types/sync/extractRealm.d.ts +2 -0
  80. package/dist/types/sync/getLatestRevisionsPerTable.d.ts +6 -0
  81. package/dist/types/sync/getTablesToSyncify.d.ts +3 -0
  82. package/dist/types/sync/isOnline.d.ts +1 -0
  83. package/dist/types/sync/isSyncNeeded.d.ts +2 -0
  84. package/dist/types/sync/listClientChanges.d.ts +9 -0
  85. package/dist/types/sync/listSyncifiedChanges.d.ts +5 -0
  86. package/dist/types/sync/messageConsumerIsReady.d.ts +2 -0
  87. package/dist/types/sync/messagesFromServerQueue.d.ts +8 -0
  88. package/dist/types/sync/modifyLocalObjectsWithNewUserId.d.ts +4 -0
  89. package/dist/types/sync/myId.d.ts +1 -0
  90. package/dist/types/sync/numUnsyncedMutations.d.ts +2 -0
  91. package/dist/types/sync/old_startSyncingClientChanges.d.ts +39 -0
  92. package/dist/types/sync/performGuardedJob.d.ts +4 -0
  93. package/dist/types/sync/registerSyncEvent.d.ts +3 -0
  94. package/dist/types/sync/sync.d.ts +17 -0
  95. package/dist/types/sync/syncIfPossible.d.ts +5 -0
  96. package/dist/types/sync/syncServerToClientOnly.d.ts +3 -0
  97. package/dist/types/sync/syncWithServer.d.ts +5 -0
  98. package/dist/types/sync/triggerSync.d.ts +2 -0
  99. package/dist/types/sync/updateBaseRevs.d.ts +5 -0
  100. package/dist/types/types/CloudConnectionStatus.d.ts +0 -0
  101. package/dist/types/types/ConnectionStatus.d.ts +0 -0
  102. package/dist/types/types/DXCAlert.d.ts +25 -0
  103. package/dist/types/types/DXCInputField.d.ts +11 -0
  104. package/dist/types/types/DXCUserInteraction.d.ts +55 -0
  105. package/dist/types/types/LoginState.d.ts +41 -0
  106. package/dist/types/types/SWMessageEvent.d.ts +3 -0
  107. package/dist/types/types/SWSyncEvent.d.ts +4 -0
  108. package/dist/types/types/SyncConnectionStatus.d.ts +1 -0
  109. package/dist/types/types/SyncFlowStatus.d.ts +6 -0
  110. package/dist/types/types/SyncState.d.ts +8 -0
  111. package/dist/types/types/SyncStatus.d.ts +6 -0
  112. package/dist/types/types/TXExpandos.d.ts +10 -0
  113. package/dist/types/updateSchemaFromOptions.d.ts +3 -0
  114. package/dist/types/userIsActive.d.ts +7 -0
  115. package/dist/types/verifyConfig.d.ts +2 -0
  116. package/dist/types/verifySchema.d.ts +2 -0
  117. package/dist/umd/dexie-cloud-addon.js +6919 -0
  118. package/dist/umd/dexie-cloud-addon.js.map +1 -0
  119. package/dist/umd/dexie-cloud-addon.min.js +1 -0
  120. package/dist/umd/dexie-cloud-addon.min.js.map +1 -0
  121. package/dist/umd/service-worker.js +6063 -0
  122. package/dist/umd/service-worker.js.map +1 -0
  123. package/dist/umd/service-worker.min.js +1 -0
  124. package/dist/umd/service-worker.min.js.map +1 -0
  125. package/dist/umd-modern/dexie-cloud-addon.js +5965 -0
  126. package/dist/umd-modern/dexie-cloud-addon.js.map +1 -0
  127. package/package.json +71 -39
  128. package/dist/dexie-cloud.d.ts +0 -27
  129. package/dist/dexie-cloud.js +0 -285
  130. package/dist/dexie-cloud.js.map +0 -1
  131. package/dist/dexie-cloud.min.js +0 -1
  132. package/dist/dexie-cloud.min.js.map +0 -1
  133. package/dist/dexie-cloud.mjs +0 -273
  134. package/dist/dexie-cloud.mjs.map +0 -1
  135. package/esnext/dexie-cloud.js +0 -278
  136. package/esnext/dexie-cloud.js.map +0 -1
  137. package/esnext/dexie-cloud.min.js +0 -1
  138. package/esnext/dexie-cloud.min.js.map +0 -1
@@ -1,273 +0,0 @@
1
- import Dexie from 'dexie';
2
-
3
- /* ==========================================================================
4
- * dexie-cloud-client.js
5
- * ==========================================================================
6
- *
7
- * Dexie addon that connects to dexie.cloud.
8
- *
9
- * By David Fahlander, david.fahlander@gmail.com,
10
- *
11
- * ==========================================================================
12
- *
13
- * Version 1.0.0-alpha.6, Fri Oct 30 2020
14
- *
15
- * http://dexie.org
16
- *
17
- * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/
18
- *
19
- */
20
- var __assign = (undefined && undefined.__assign) || function () {
21
- __assign = Object.assign || function(t) {
22
- for (var s, i = 1, n = arguments.length; i < n; i++) {
23
- s = arguments[i];
24
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
25
- t[p] = s[p];
26
- }
27
- return t;
28
- };
29
- return __assign.apply(this, arguments);
30
- };
31
- var b64encode = typeof Buffer !== "undefined"
32
- ? function (b) { return ArrayBuffer.isView(b)
33
- ? Buffer.from(b.buffer, b.byteOffset, b.byteLength).toString("base64")
34
- : Buffer.from(b).toString("base64"); }
35
- : function (b) { return btoa(String.fromCharCode.apply(null, b)); };
36
- function b64LexEncode(b) {
37
- return b64ToLex(b64encode(b));
38
- }
39
- function b64ToLex(base64) {
40
- var encoded = "";
41
- for (var i = 0, length = base64.length; i < length; i++) {
42
- encoded += ENCODE_TABLE[base64[i]];
43
- }
44
- return encoded;
45
- }
46
- var DECODE_TABLE = {
47
- "-": "=",
48
- "0": "A",
49
- "1": "B",
50
- "2": "C",
51
- "3": "D",
52
- "4": "E",
53
- "5": "F",
54
- "6": "G",
55
- "7": "H",
56
- "8": "I",
57
- "9": "J",
58
- A: "K",
59
- B: "L",
60
- C: "M",
61
- D: "N",
62
- E: "O",
63
- F: "P",
64
- G: "Q",
65
- H: "R",
66
- I: "S",
67
- J: "T",
68
- K: "U",
69
- L: "V",
70
- M: "W",
71
- N: "X",
72
- O: "Y",
73
- P: "Z",
74
- Q: "a",
75
- R: "b",
76
- S: "c",
77
- T: "d",
78
- U: "e",
79
- V: "f",
80
- W: "g",
81
- X: "h",
82
- Y: "i",
83
- Z: "j",
84
- _: "k",
85
- a: "l",
86
- b: "m",
87
- c: "n",
88
- d: "o",
89
- e: "p",
90
- f: "q",
91
- g: "r",
92
- h: "s",
93
- i: "t",
94
- j: "u",
95
- k: "v",
96
- l: "w",
97
- m: "x",
98
- n: "y",
99
- o: "z",
100
- p: "0",
101
- q: "1",
102
- r: "2",
103
- s: "3",
104
- t: "4",
105
- u: "5",
106
- v: "6",
107
- w: "7",
108
- x: "8",
109
- y: "9",
110
- z: "+",
111
- "~": "/",
112
- };
113
- var ENCODE_TABLE = {};
114
- for (var _i = 0, _a = Object.keys(DECODE_TABLE); _i < _a.length; _i++) {
115
- var c = _a[_i];
116
- ENCODE_TABLE[DECODE_TABLE[c]] = c;
117
- }
118
- function getEffectiveKeys(primaryKey, req) {
119
- var _a;
120
- if (req.type === "delete")
121
- return req.keys;
122
- return ((_a = req.keys) === null || _a === void 0 ? void 0 : _a.slice()) || req.values.map(primaryKey.extractKey);
123
- }
124
- function applyToUpperBitFix(orig, bits) {
125
- return ((bits & 1 ? orig[0].toUpperCase() : orig[0].toLowerCase()) +
126
- (bits & 2 ? orig[1].toUpperCase() : orig[1].toLowerCase()) +
127
- (bits & 4 ? orig[2].toUpperCase() : orig[2].toLowerCase()));
128
- }
129
- var consonants = /b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;
130
- function generateTablePrefix(tableName, allPrefixes) {
131
- var rv = "";
132
- for (var i = 0, l = tableName.length; i < l && rv.length < 3; ++i) {
133
- if (consonants.test(tableName[i]))
134
- rv += tableName[i].toLowerCase();
135
- }
136
- while (allPrefixes.has(rv)) {
137
- if (/\d/g.test(rv)) {
138
- rv = rv.substr(0, rv.length - 1) + (rv[rv.length - 1] + 1);
139
- if (rv.length > 3)
140
- rv = rv.substr(0, 3);
141
- else
142
- continue;
143
- }
144
- else if (rv.length < 3) {
145
- rv = rv + "2";
146
- continue;
147
- }
148
- var bitFix = 1;
149
- var upperFixed = rv;
150
- while (allPrefixes.has(upperFixed) && bitFix < 8) {
151
- upperFixed = applyToUpperBitFix(rv, bitFix);
152
- ++bitFix;
153
- }
154
- if (bitFix < 8)
155
- rv = upperFixed;
156
- else {
157
- var nextChar = (rv.charCodeAt(2) + 1) & 127;
158
- rv = rv.substr(0, 2) + String.fromCharCode(nextChar);
159
- // Here, in theory we could get an infinite loop if having 127*8 table names with identical 3 first consonants.
160
- }
161
- }
162
- return rv;
163
- }
164
- var time = 0;
165
- function generateKey(prefix) {
166
- var a = new Uint8Array(18);
167
- var timePart = new Uint8Array(a.buffer, 0, 6);
168
- var now = Date.now(); // Will fit into 6 bytes until year 10 895.
169
- if (time >= now) {
170
- // User is bulk-creating objects the same millisecond.
171
- // Increment the time part by one millisecond for each item.
172
- // If bulk-creating 1,000,000 rows client-side in 10 seconds,
173
- // the last time-stamp will be 990 seconds in future, which is no biggie at all.
174
- // The point is to create a nice order of the generated IDs instead of
175
- // using random ids.
176
- ++time;
177
- }
178
- else {
179
- time = now;
180
- }
181
- timePart[0] = time / 1099511627776;
182
- timePart[1] = time / 4294967296;
183
- timePart[2] = time / 16777216;
184
- timePart[3] = time / 65536;
185
- timePart[4] = time / 256;
186
- timePart[5] = time;
187
- var randomPart = new Uint8Array(a.buffer, 6);
188
- crypto.getRandomValues(randomPart);
189
- var id = new Uint8Array(a.buffer);
190
- return prefix + b64LexEncode(id);
191
- }
192
- function createIdGenerationMiddleware(cloudSchema) {
193
- return {
194
- stack: "dbcore",
195
- name: "idGenerationMiddleware",
196
- create: function (core) {
197
- var allPrefixes = new Set();
198
- core.schema.tables.forEach(function (table) {
199
- var cloudTableSchema = cloudSchema[table.name] || (cloudSchema[table.name] = {});
200
- var tablePrefix = generateTablePrefix(table.name, allPrefixes);
201
- allPrefixes.add(tablePrefix);
202
- cloudTableSchema.idPrefix = tablePrefix;
203
- });
204
- return __assign(__assign({}, core), { table: function (tableName) {
205
- var table = core.table(tableName);
206
- var cloudTableSchema = cloudSchema[tableName];
207
- if (!(cloudTableSchema === null || cloudTableSchema === void 0 ? void 0 : cloudTableSchema.generatedGlobalId))
208
- return table;
209
- return __assign(__assign({}, table), { mutate: function (req) {
210
- if (req.type === "add" || req.type === "put") {
211
- var valueClones_1 = null;
212
- var keys_1 = getEffectiveKeys(table.schema.primaryKey, req);
213
- keys_1.forEach(function (key, idx) {
214
- if (key === undefined) {
215
- keys_1[idx] = generateKey(cloudSchema[tableName].idPrefix);
216
- if (!table.schema.primaryKey.outbound) {
217
- if (!valueClones_1)
218
- valueClones_1 = req.values.slice();
219
- valueClones_1[idx] = Dexie.deepClone(valueClones_1[idx]);
220
- Dexie.setByKeyPath(valueClones_1[idx], table.schema.primaryKey.keyPath, // TODO: fix typings in dexie-constructor.d.ts!
221
- keys_1[idx]);
222
- }
223
- }
224
- else if (typeof key !== 'string' || !key.startsWith(cloudTableSchema.idPrefix)) {
225
- throw new Dexie.ConstraintError("The ID \"" + key + "\" is not valid for table \"" + tableName + "\". " +
226
- ("The ID must be a string prefixed with \"" + cloudTableSchema.idPrefix + "\""));
227
- }
228
- });
229
- return table.mutate(__assign(__assign({}, req), { keys: keys_1, values: valueClones_1 || req.values }));
230
- }
231
- return table.mutate(req);
232
- } });
233
- } });
234
- },
235
- };
236
- }
237
- function overrideParseStoresSpec(origFunc, cloudSchema) {
238
- return function (stores, dbSchema) {
239
- var storesClone = __assign(__assign({}, stores), { _cloud: 'id' });
240
- Object.keys(stores).forEach(function (tableName) {
241
- if (/^\@/.test(stores[tableName])) {
242
- storesClone[tableName] = stores[tableName].substr(1);
243
- cloudSchema[tableName] = { generatedGlobalId: true };
244
- }
245
- });
246
- return origFunc.call(this, storesClone, dbSchema);
247
- };
248
- }
249
- function dexieCloud(db) {
250
- // Make it possible to only add dexieCloud addon by auto-
251
- // registering the observable and syncable:
252
- //if (!db.observable) dexieObservable(db);
253
- //if (!db.syncable) dexieSyncable(db);
254
- db.cloud = {
255
- version: "1.0.0-alpha.6",
256
- options: { databaseUrl: "" },
257
- schema: {},
258
- configure: function (options) {
259
- db.cloud.options = options;
260
- //return db.syncable.connect(DEXIE_CLOUD_PROTOCOL_NAME, options.databaseUrl, options);
261
- return Promise.resolve();
262
- }
263
- };
264
- db.Version.prototype["_parseStoresSpec"] = Dexie.override(db.Version.prototype["_parseStoresSpec"], function (origFunc) { return overrideParseStoresSpec(origFunc, db.cloud.schema); });
265
- db.use(createIdGenerationMiddleware(db.cloud.schema));
266
- }
267
- dexieCloud.version = "1.0.0-alpha.6";
268
- Dexie.Cloud = dexieCloud;
269
- Dexie.addons.push(dexieCloud);
270
-
271
- export default dexieCloud;
272
- export { dexieCloud };
273
- //# sourceMappingURL=dexie-cloud.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dexie-cloud.mjs","sources":["../esnext/dexie-cloud.js"],"sourcesContent":["/* ========================================================================== \n * dexie-cloud-client.js\n * ==========================================================================\n *\n * Dexie addon that connects to dexie.cloud.\n *\n * By David Fahlander, david.fahlander@gmail.com,\n *\n * ==========================================================================\n *\n * Version {version}, {date}\n *\n * http://dexie.org\n *\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/\n * \n */\n\nimport Dexie from 'dexie';\n\nconst b64encode = typeof Buffer !== \"undefined\"\n ? (b) => ArrayBuffer.isView(b)\n ? Buffer.from(b.buffer, b.byteOffset, b.byteLength).toString(\"base64\")\n : Buffer.from(b).toString(\"base64\")\n : (b) => btoa(String.fromCharCode.apply(null, b));\n\nfunction b64LexEncode(b) {\n return b64ToLex(b64encode(b));\n}\nfunction b64ToLex(base64) {\n var encoded = \"\";\n for (var i = 0, length = base64.length; i < length; i++) {\n encoded += ENCODE_TABLE[base64[i]];\n }\n return encoded;\n}\nconst DECODE_TABLE = {\n \"-\": \"=\",\n \"0\": \"A\",\n \"1\": \"B\",\n \"2\": \"C\",\n \"3\": \"D\",\n \"4\": \"E\",\n \"5\": \"F\",\n \"6\": \"G\",\n \"7\": \"H\",\n \"8\": \"I\",\n \"9\": \"J\",\n A: \"K\",\n B: \"L\",\n C: \"M\",\n D: \"N\",\n E: \"O\",\n F: \"P\",\n G: \"Q\",\n H: \"R\",\n I: \"S\",\n J: \"T\",\n K: \"U\",\n L: \"V\",\n M: \"W\",\n N: \"X\",\n O: \"Y\",\n P: \"Z\",\n Q: \"a\",\n R: \"b\",\n S: \"c\",\n T: \"d\",\n U: \"e\",\n V: \"f\",\n W: \"g\",\n X: \"h\",\n Y: \"i\",\n Z: \"j\",\n _: \"k\",\n a: \"l\",\n b: \"m\",\n c: \"n\",\n d: \"o\",\n e: \"p\",\n f: \"q\",\n g: \"r\",\n h: \"s\",\n i: \"t\",\n j: \"u\",\n k: \"v\",\n l: \"w\",\n m: \"x\",\n n: \"y\",\n o: \"z\",\n p: \"0\",\n q: \"1\",\n r: \"2\",\n s: \"3\",\n t: \"4\",\n u: \"5\",\n v: \"6\",\n w: \"7\",\n x: \"8\",\n y: \"9\",\n z: \"+\",\n \"~\": \"/\",\n};\nconst ENCODE_TABLE = {};\nfor (const c of Object.keys(DECODE_TABLE)) {\n ENCODE_TABLE[DECODE_TABLE[c]] = c;\n}\n\nfunction getEffectiveKeys(primaryKey, req) {\n if (req.type === \"delete\")\n return req.keys;\n return req.keys?.slice() || req.values.map(primaryKey.extractKey);\n}\nfunction applyToUpperBitFix(orig, bits) {\n return ((bits & 1 ? orig[0].toUpperCase() : orig[0].toLowerCase()) +\n (bits & 2 ? orig[1].toUpperCase() : orig[1].toLowerCase()) +\n (bits & 4 ? orig[2].toUpperCase() : orig[2].toLowerCase()));\n}\nconst consonants = /b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;\nfunction generateTablePrefix(tableName, allPrefixes) {\n let rv = \"\";\n for (let i = 0, l = tableName.length; i < l && rv.length < 3; ++i) {\n if (consonants.test(tableName[i]))\n rv += tableName[i].toLowerCase();\n }\n while (allPrefixes.has(rv)) {\n if (/\\d/g.test(rv)) {\n rv = rv.substr(0, rv.length - 1) + (rv[rv.length - 1] + 1);\n if (rv.length > 3)\n rv = rv.substr(0, 3);\n else\n continue;\n }\n else if (rv.length < 3) {\n rv = rv + \"2\";\n continue;\n }\n let bitFix = 1;\n let upperFixed = rv;\n while (allPrefixes.has(upperFixed) && bitFix < 8) {\n upperFixed = applyToUpperBitFix(rv, bitFix);\n ++bitFix;\n }\n if (bitFix < 8)\n rv = upperFixed;\n else {\n let nextChar = (rv.charCodeAt(2) + 1) & 127;\n rv = rv.substr(0, 2) + String.fromCharCode(nextChar);\n // Here, in theory we could get an infinite loop if having 127*8 table names with identical 3 first consonants.\n }\n }\n return rv;\n}\nlet time = 0;\nfunction generateKey(prefix) {\n const a = new Uint8Array(18);\n const timePart = new Uint8Array(a.buffer, 0, 6);\n const now = Date.now(); // Will fit into 6 bytes until year 10 895.\n if (time >= now) {\n // User is bulk-creating objects the same millisecond.\n // Increment the time part by one millisecond for each item.\n // If bulk-creating 1,000,000 rows client-side in 10 seconds,\n // the last time-stamp will be 990 seconds in future, which is no biggie at all.\n // The point is to create a nice order of the generated IDs instead of\n // using random ids.\n ++time;\n }\n else {\n time = now;\n }\n timePart[0] = time / 1099511627776;\n timePart[1] = time / 4294967296;\n timePart[2] = time / 16777216;\n timePart[3] = time / 65536;\n timePart[4] = time / 256;\n timePart[5] = time;\n const randomPart = new Uint8Array(a.buffer, 6);\n crypto.getRandomValues(randomPart);\n const id = new Uint8Array(a.buffer);\n return prefix + b64LexEncode(id);\n}\nfunction createIdGenerationMiddleware(cloudSchema) {\n return {\n stack: \"dbcore\",\n name: \"idGenerationMiddleware\",\n create: (core) => {\n const allPrefixes = new Set();\n core.schema.tables.forEach((table) => {\n const cloudTableSchema = cloudSchema[table.name] || (cloudSchema[table.name] = {});\n const tablePrefix = generateTablePrefix(table.name, allPrefixes);\n allPrefixes.add(tablePrefix);\n cloudTableSchema.idPrefix = tablePrefix;\n });\n return {\n ...core,\n table: (tableName) => {\n const table = core.table(tableName);\n const cloudTableSchema = cloudSchema[tableName];\n if (!cloudTableSchema?.generatedGlobalId)\n return table;\n return {\n ...table,\n mutate: (req) => {\n if (req.type === \"add\" || req.type === \"put\") {\n let valueClones = null;\n const keys = getEffectiveKeys(table.schema.primaryKey, req);\n keys.forEach((key, idx) => {\n if (key === undefined) {\n keys[idx] = generateKey(cloudSchema[tableName].idPrefix);\n if (!table.schema.primaryKey.outbound) {\n if (!valueClones)\n valueClones = req.values.slice();\n valueClones[idx] = Dexie.deepClone(valueClones[idx]);\n Dexie.setByKeyPath(valueClones[idx], table.schema.primaryKey.keyPath, // TODO: fix typings in dexie-constructor.d.ts!\n keys[idx]);\n }\n }\n else if (typeof key !== 'string' || !key.startsWith(cloudTableSchema.idPrefix)) {\n throw new Dexie.ConstraintError(`The ID \"${key}\" is not valid for table \"${tableName}\". ` +\n `The ID must be a string prefixed with \"${cloudTableSchema.idPrefix}\"`);\n }\n });\n return table.mutate({\n ...req,\n keys,\n values: valueClones || req.values,\n });\n }\n return table.mutate(req);\n },\n };\n },\n };\n },\n };\n}\n\nfunction overrideParseStoresSpec(origFunc, cloudSchema) {\n return function (stores, dbSchema) {\n const storesClone = {\n ...stores,\n _cloud: 'id'\n };\n Object.keys(stores).forEach(tableName => {\n if (/^\\@/.test(stores[tableName])) {\n storesClone[tableName] = stores[tableName].substr(1);\n cloudSchema[tableName] = { generatedGlobalId: true };\n }\n });\n return origFunc.call(this, storesClone, dbSchema);\n };\n}\n\nfunction dexieCloud(db) {\n // Make it possible to only add dexieCloud addon by auto-\n // registering the observable and syncable:\n //if (!db.observable) dexieObservable(db);\n //if (!db.syncable) dexieSyncable(db);\n db.cloud = {\n version: \"{version}\",\n options: { databaseUrl: \"\" },\n schema: {},\n configure(options) {\n db.cloud.options = options;\n //return db.syncable.connect(DEXIE_CLOUD_PROTOCOL_NAME, options.databaseUrl, options);\n return Promise.resolve();\n }\n };\n db.Version.prototype[\"_parseStoresSpec\"] = Dexie.override(db.Version.prototype[\"_parseStoresSpec\"], origFunc => overrideParseStoresSpec(origFunc, db.cloud.schema));\n db.use(createIdGenerationMiddleware(db.cloud.schema));\n}\ndexieCloud.version = \"{version}\";\nDexie.Cloud = dexieCloud;\nDexie.addons.push(dexieCloud);\n\nexport default dexieCloud;\nexport { dexieCloud };\n//# sourceMappingURL=dexie-cloud.js.map\n"],"names":[],"mappings":"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"}
@@ -1,278 +0,0 @@
1
- /* ==========================================================================
2
- * dexie-cloud-client.js
3
- * ==========================================================================
4
- *
5
- * Dexie addon that connects to dexie.cloud.
6
- *
7
- * By David Fahlander, david.fahlander@gmail.com,
8
- *
9
- * ==========================================================================
10
- *
11
- * Version 1.0.0-alpha.6, Fri Oct 30 2020
12
- *
13
- * http://dexie.org
14
- *
15
- * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/
16
- *
17
- */
18
-
19
- import Dexie from 'dexie';
20
-
21
- const b64encode = typeof Buffer !== "undefined"
22
- ? (b) => ArrayBuffer.isView(b)
23
- ? Buffer.from(b.buffer, b.byteOffset, b.byteLength).toString("base64")
24
- : Buffer.from(b).toString("base64")
25
- : (b) => btoa(String.fromCharCode.apply(null, b));
26
-
27
- function b64LexEncode(b) {
28
- return b64ToLex(b64encode(b));
29
- }
30
- function b64ToLex(base64) {
31
- var encoded = "";
32
- for (var i = 0, length = base64.length; i < length; i++) {
33
- encoded += ENCODE_TABLE[base64[i]];
34
- }
35
- return encoded;
36
- }
37
- const DECODE_TABLE = {
38
- "-": "=",
39
- "0": "A",
40
- "1": "B",
41
- "2": "C",
42
- "3": "D",
43
- "4": "E",
44
- "5": "F",
45
- "6": "G",
46
- "7": "H",
47
- "8": "I",
48
- "9": "J",
49
- A: "K",
50
- B: "L",
51
- C: "M",
52
- D: "N",
53
- E: "O",
54
- F: "P",
55
- G: "Q",
56
- H: "R",
57
- I: "S",
58
- J: "T",
59
- K: "U",
60
- L: "V",
61
- M: "W",
62
- N: "X",
63
- O: "Y",
64
- P: "Z",
65
- Q: "a",
66
- R: "b",
67
- S: "c",
68
- T: "d",
69
- U: "e",
70
- V: "f",
71
- W: "g",
72
- X: "h",
73
- Y: "i",
74
- Z: "j",
75
- _: "k",
76
- a: "l",
77
- b: "m",
78
- c: "n",
79
- d: "o",
80
- e: "p",
81
- f: "q",
82
- g: "r",
83
- h: "s",
84
- i: "t",
85
- j: "u",
86
- k: "v",
87
- l: "w",
88
- m: "x",
89
- n: "y",
90
- o: "z",
91
- p: "0",
92
- q: "1",
93
- r: "2",
94
- s: "3",
95
- t: "4",
96
- u: "5",
97
- v: "6",
98
- w: "7",
99
- x: "8",
100
- y: "9",
101
- z: "+",
102
- "~": "/",
103
- };
104
- const ENCODE_TABLE = {};
105
- for (const c of Object.keys(DECODE_TABLE)) {
106
- ENCODE_TABLE[DECODE_TABLE[c]] = c;
107
- }
108
-
109
- function getEffectiveKeys(primaryKey, req) {
110
- if (req.type === "delete")
111
- return req.keys;
112
- return req.keys?.slice() || req.values.map(primaryKey.extractKey);
113
- }
114
- function applyToUpperBitFix(orig, bits) {
115
- return ((bits & 1 ? orig[0].toUpperCase() : orig[0].toLowerCase()) +
116
- (bits & 2 ? orig[1].toUpperCase() : orig[1].toLowerCase()) +
117
- (bits & 4 ? orig[2].toUpperCase() : orig[2].toLowerCase()));
118
- }
119
- const consonants = /b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;
120
- function generateTablePrefix(tableName, allPrefixes) {
121
- let rv = "";
122
- for (let i = 0, l = tableName.length; i < l && rv.length < 3; ++i) {
123
- if (consonants.test(tableName[i]))
124
- rv += tableName[i].toLowerCase();
125
- }
126
- while (allPrefixes.has(rv)) {
127
- if (/\d/g.test(rv)) {
128
- rv = rv.substr(0, rv.length - 1) + (rv[rv.length - 1] + 1);
129
- if (rv.length > 3)
130
- rv = rv.substr(0, 3);
131
- else
132
- continue;
133
- }
134
- else if (rv.length < 3) {
135
- rv = rv + "2";
136
- continue;
137
- }
138
- let bitFix = 1;
139
- let upperFixed = rv;
140
- while (allPrefixes.has(upperFixed) && bitFix < 8) {
141
- upperFixed = applyToUpperBitFix(rv, bitFix);
142
- ++bitFix;
143
- }
144
- if (bitFix < 8)
145
- rv = upperFixed;
146
- else {
147
- let nextChar = (rv.charCodeAt(2) + 1) & 127;
148
- rv = rv.substr(0, 2) + String.fromCharCode(nextChar);
149
- // Here, in theory we could get an infinite loop if having 127*8 table names with identical 3 first consonants.
150
- }
151
- }
152
- return rv;
153
- }
154
- let time = 0;
155
- function generateKey(prefix) {
156
- const a = new Uint8Array(18);
157
- const timePart = new Uint8Array(a.buffer, 0, 6);
158
- const now = Date.now(); // Will fit into 6 bytes until year 10 895.
159
- if (time >= now) {
160
- // User is bulk-creating objects the same millisecond.
161
- // Increment the time part by one millisecond for each item.
162
- // If bulk-creating 1,000,000 rows client-side in 10 seconds,
163
- // the last time-stamp will be 990 seconds in future, which is no biggie at all.
164
- // The point is to create a nice order of the generated IDs instead of
165
- // using random ids.
166
- ++time;
167
- }
168
- else {
169
- time = now;
170
- }
171
- timePart[0] = time / 1099511627776;
172
- timePart[1] = time / 4294967296;
173
- timePart[2] = time / 16777216;
174
- timePart[3] = time / 65536;
175
- timePart[4] = time / 256;
176
- timePart[5] = time;
177
- const randomPart = new Uint8Array(a.buffer, 6);
178
- crypto.getRandomValues(randomPart);
179
- const id = new Uint8Array(a.buffer);
180
- return prefix + b64LexEncode(id);
181
- }
182
- function createIdGenerationMiddleware(cloudSchema) {
183
- return {
184
- stack: "dbcore",
185
- name: "idGenerationMiddleware",
186
- create: (core) => {
187
- const allPrefixes = new Set();
188
- core.schema.tables.forEach((table) => {
189
- const cloudTableSchema = cloudSchema[table.name] || (cloudSchema[table.name] = {});
190
- const tablePrefix = generateTablePrefix(table.name, allPrefixes);
191
- allPrefixes.add(tablePrefix);
192
- cloudTableSchema.idPrefix = tablePrefix;
193
- });
194
- return {
195
- ...core,
196
- table: (tableName) => {
197
- const table = core.table(tableName);
198
- const cloudTableSchema = cloudSchema[tableName];
199
- if (!cloudTableSchema?.generatedGlobalId)
200
- return table;
201
- return {
202
- ...table,
203
- mutate: (req) => {
204
- if (req.type === "add" || req.type === "put") {
205
- let valueClones = null;
206
- const keys = getEffectiveKeys(table.schema.primaryKey, req);
207
- keys.forEach((key, idx) => {
208
- if (key === undefined) {
209
- keys[idx] = generateKey(cloudSchema[tableName].idPrefix);
210
- if (!table.schema.primaryKey.outbound) {
211
- if (!valueClones)
212
- valueClones = req.values.slice();
213
- valueClones[idx] = Dexie.deepClone(valueClones[idx]);
214
- Dexie.setByKeyPath(valueClones[idx], table.schema.primaryKey.keyPath, // TODO: fix typings in dexie-constructor.d.ts!
215
- keys[idx]);
216
- }
217
- }
218
- else if (typeof key !== 'string' || !key.startsWith(cloudTableSchema.idPrefix)) {
219
- throw new Dexie.ConstraintError(`The ID "${key}" is not valid for table "${tableName}". ` +
220
- `The ID must be a string prefixed with "${cloudTableSchema.idPrefix}"`);
221
- }
222
- });
223
- return table.mutate({
224
- ...req,
225
- keys,
226
- values: valueClones || req.values,
227
- });
228
- }
229
- return table.mutate(req);
230
- },
231
- };
232
- },
233
- };
234
- },
235
- };
236
- }
237
-
238
- function overrideParseStoresSpec(origFunc, cloudSchema) {
239
- return function (stores, dbSchema) {
240
- const storesClone = {
241
- ...stores,
242
- _cloud: 'id'
243
- };
244
- Object.keys(stores).forEach(tableName => {
245
- if (/^\@/.test(stores[tableName])) {
246
- storesClone[tableName] = stores[tableName].substr(1);
247
- cloudSchema[tableName] = { generatedGlobalId: true };
248
- }
249
- });
250
- return origFunc.call(this, storesClone, dbSchema);
251
- };
252
- }
253
-
254
- function dexieCloud(db) {
255
- // Make it possible to only add dexieCloud addon by auto-
256
- // registering the observable and syncable:
257
- //if (!db.observable) dexieObservable(db);
258
- //if (!db.syncable) dexieSyncable(db);
259
- db.cloud = {
260
- version: "1.0.0-alpha.6",
261
- options: { databaseUrl: "" },
262
- schema: {},
263
- configure(options) {
264
- db.cloud.options = options;
265
- //return db.syncable.connect(DEXIE_CLOUD_PROTOCOL_NAME, options.databaseUrl, options);
266
- return Promise.resolve();
267
- }
268
- };
269
- db.Version.prototype["_parseStoresSpec"] = Dexie.override(db.Version.prototype["_parseStoresSpec"], origFunc => overrideParseStoresSpec(origFunc, db.cloud.schema));
270
- db.use(createIdGenerationMiddleware(db.cloud.schema));
271
- }
272
- dexieCloud.version = "1.0.0-alpha.6";
273
- Dexie.Cloud = dexieCloud;
274
- Dexie.addons.push(dexieCloud);
275
-
276
- export default dexieCloud;
277
- export { dexieCloud };
278
- //# sourceMappingURL=dexie-cloud.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dexie-cloud.js","sources":["../node_modules/dreambase-library/dist/common/base64.js","../node_modules/dreambase-library/dist/common/b64lex.js","../src/createIdGenerationMiddleware.ts","../src/overrideParseStoresSpect.ts","../src/dexie-cloud-client.ts"],"sourcesContent":["export const b64decode = typeof Buffer !== \"undefined\"\n ? (base64) => Buffer.from(base64, \"base64\")\n : (base64) => {\n const binary_string = atob(base64);\n const len = binary_string.length;\n const bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n };\nexport const b64encode = typeof Buffer !== \"undefined\"\n ? (b) => ArrayBuffer.isView(b)\n ? Buffer.from(b.buffer, b.byteOffset, b.byteLength).toString(\"base64\")\n : Buffer.from(b).toString(\"base64\")\n : (b) => btoa(String.fromCharCode.apply(null, b));\n","import { b64decode, b64encode } from \"./base64.js\";\nexport function b64LexEncode(b) {\n return b64ToLex(b64encode(b));\n}\nexport function b64LexDecode(b64Lex) {\n return b64decode(lexToB64(b64Lex));\n}\nexport function b64ToLex(base64) {\n var encoded = \"\";\n for (var i = 0, length = base64.length; i < length; i++) {\n encoded += ENCODE_TABLE[base64[i]];\n }\n return encoded;\n}\nexport function lexToB64(base64lex) {\n // only accept string input\n if (typeof base64lex !== \"string\") {\n throw new Error(\"invalid decoder input: \" + base64lex);\n }\n var base64 = \"\";\n for (var i = 0, length = base64lex.length; i < length; i++) {\n base64 += DECODE_TABLE[base64lex[i]];\n }\n return base64;\n}\nconst DECODE_TABLE = {\n \"-\": \"=\",\n \"0\": \"A\",\n \"1\": \"B\",\n \"2\": \"C\",\n \"3\": \"D\",\n \"4\": \"E\",\n \"5\": \"F\",\n \"6\": \"G\",\n \"7\": \"H\",\n \"8\": \"I\",\n \"9\": \"J\",\n A: \"K\",\n B: \"L\",\n C: \"M\",\n D: \"N\",\n E: \"O\",\n F: \"P\",\n G: \"Q\",\n H: \"R\",\n I: \"S\",\n J: \"T\",\n K: \"U\",\n L: \"V\",\n M: \"W\",\n N: \"X\",\n O: \"Y\",\n P: \"Z\",\n Q: \"a\",\n R: \"b\",\n S: \"c\",\n T: \"d\",\n U: \"e\",\n V: \"f\",\n W: \"g\",\n X: \"h\",\n Y: \"i\",\n Z: \"j\",\n _: \"k\",\n a: \"l\",\n b: \"m\",\n c: \"n\",\n d: \"o\",\n e: \"p\",\n f: \"q\",\n g: \"r\",\n h: \"s\",\n i: \"t\",\n j: \"u\",\n k: \"v\",\n l: \"w\",\n m: \"x\",\n n: \"y\",\n o: \"z\",\n p: \"0\",\n q: \"1\",\n r: \"2\",\n s: \"3\",\n t: \"4\",\n u: \"5\",\n v: \"6\",\n w: \"7\",\n x: \"8\",\n y: \"9\",\n z: \"+\",\n \"~\": \"/\",\n};\nconst ENCODE_TABLE = {};\nfor (const c of Object.keys(DECODE_TABLE)) {\n ENCODE_TABLE[DECODE_TABLE[c]] = c;\n}\n","import Dexie, {\n DBCore,\n Middleware,\n DBCoreAddRequest,\n DBCorePutRequest,\n DBCoreDeleteRequest,\n DBCoreIndex\n} from \"dexie\";\nimport { DexieCloudSchema } from \"./DexieCloudSchema\";\nimport { b64LexEncode } from \"dreambase-library/dist/common/b64lex\";\n\nexport function getEffectiveKeys(\n primaryKey: DBCoreIndex,\n req:\n | (Pick<DBCoreAddRequest | DBCorePutRequest, \"type\" | \"values\"> & {\n keys?: any[];\n })\n | Pick<DBCoreDeleteRequest, \"keys\" | \"type\">\n) {\n if (req.type === \"delete\") return req.keys;\n return req.keys?.slice() || req.values.map(primaryKey.extractKey);\n}\n\nfunction applyToUpperBitFix(orig: string, bits: number) {\n return (\n (bits & 1 ? orig[0].toUpperCase() : orig[0].toLowerCase()) +\n (bits & 2 ? orig[1].toUpperCase() : orig[1].toLowerCase()) +\n (bits & 4 ? orig[2].toUpperCase() : orig[2].toLowerCase())\n );\n}\n\nconst consonants = /b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;\n\nfunction generateTablePrefix(tableName: string, allPrefixes: Set<string>) {\n let rv = \"\";\n for (let i = 0, l = tableName.length; i < l && rv.length < 3; ++i) {\n if (consonants.test(tableName[i])) rv += tableName[i].toLowerCase();\n }\n while (allPrefixes.has(rv)) {\n if (/\\d/g.test(rv)) {\n rv = rv.substr(0, rv.length - 1) + (rv[rv.length - 1] + 1);\n if (rv.length > 3) rv = rv.substr(0, 3);\n else continue;\n } else if (rv.length < 3) {\n rv = rv + \"2\";\n continue;\n }\n let bitFix = 1;\n let upperFixed = rv;\n while (allPrefixes.has(upperFixed) && bitFix < 8) {\n upperFixed = applyToUpperBitFix(rv, bitFix);\n ++bitFix;\n }\n if (bitFix < 8) rv = upperFixed;\n else {\n let nextChar = (rv.charCodeAt(2) + 1) & 127;\n rv = rv.substr(0, 2) + String.fromCharCode(nextChar);\n // Here, in theory we could get an infinite loop if having 127*8 table names with identical 3 first consonants.\n }\n }\n return rv;\n}\n\nlet time = 0;\nfunction generateKey(prefix: string) {\n const a = new Uint8Array(18);\n const timePart = new Uint8Array(a.buffer, 0, 6);\n const now = Date.now(); // Will fit into 6 bytes until year 10 895.\n if (time >= now) {\n // User is bulk-creating objects the same millisecond.\n // Increment the time part by one millisecond for each item.\n // If bulk-creating 1,000,000 rows client-side in 10 seconds,\n // the last time-stamp will be 990 seconds in future, which is no biggie at all.\n // The point is to create a nice order of the generated IDs instead of\n // using random ids.\n ++time;\n } else {\n time = now;\n }\n timePart[0] = time / 0x1_00_00_00_00_00;\n timePart[1] = time / 0x1_00_00_00_00;\n timePart[2] = time / 0x1_00_00_00;\n timePart[3] = time / 0x1_00_00;\n timePart[4] = time / 0x1_00;\n timePart[5] = time;\n const randomPart = new Uint8Array(a.buffer, 6);\n crypto.getRandomValues(randomPart);\n const id = new Uint8Array(a.buffer);\n return prefix + b64LexEncode(id);\n}\n\nexport function createIdGenerationMiddleware(\n cloudSchema: DexieCloudSchema\n): Middleware<DBCore> {\n return {\n stack: \"dbcore\",\n name: \"idGenerationMiddleware\",\n create: (core) => {\n const allPrefixes = new Set<string>();\n core.schema.tables.forEach((table) => {\n const cloudTableSchema =\n cloudSchema[table.name] || (cloudSchema[table.name] = {});\n const tablePrefix = generateTablePrefix(table.name, allPrefixes);\n allPrefixes.add(tablePrefix);\n cloudTableSchema.idPrefix = tablePrefix;\n });\n return {\n ...core,\n table: (tableName) => {\n const table = core.table(tableName);\n const cloudTableSchema = cloudSchema[tableName];\n if (!cloudTableSchema?.generatedGlobalId) return table;\n return {\n ...table,\n mutate: (req) => {\n if (req.type === \"add\" || req.type === \"put\") {\n let valueClones: null | object[] = null;\n const keys = getEffectiveKeys(table.schema.primaryKey, req);\n keys.forEach((key, idx) => {\n if (key === undefined) {\n keys[idx] = generateKey(cloudSchema[tableName].idPrefix!);\n if (!table.schema.primaryKey.outbound) {\n if (!valueClones) valueClones = req.values.slice();\n valueClones[idx] = Dexie.deepClone(valueClones[idx]);\n Dexie.setByKeyPath(\n valueClones[idx],\n table.schema.primaryKey.keyPath as any, // TODO: fix typings in dexie-constructor.d.ts!\n keys[idx]\n );\n }\n } else if (typeof key !== 'string' || !key.startsWith(cloudTableSchema.idPrefix!)) {\n throw new Dexie.ConstraintError(\n `The ID \"${key}\" is not valid for table \"${tableName}\". ` +\n `The ID must be a string prefixed with \"${cloudTableSchema.idPrefix}\"`);\n }\n });\n return table.mutate({\n ...req,\n keys,\n values: valueClones || req.values,\n });\n }\n return table.mutate(req);\n },\n };\n },\n };\n },\n };\n}\n","import { DbSchema } from 'dexie';\nimport { DexieCloudSchema } from './DexieCloudSchema';\n\nexport function overrideParseStoresSpec(origFunc: Function, cloudSchema: DexieCloudSchema) {\n return function(stores: {[tableName: string]: string}, dbSchema: DbSchema) {\n const storesClone = {\n ...stores,\n _cloud: 'id'\n };\n Object.keys(stores).forEach(tableName => {\n if (/^\\@/.test(stores[tableName])) {\n storesClone[tableName] = stores[tableName].substr(1);\n cloudSchema[tableName] = {generatedGlobalId: true};\n }\n });\n return origFunc.call(this, storesClone, dbSchema);\n }\n}\n","import Dexie from \"dexie\";\n//import dexieObservable from \"dexie-observable\";\n//import dexieSyncable from \"dexie-syncable\";\nimport { createIdGenerationMiddleware } from './createIdGenerationMiddleware';\nimport { DexieCloudOptions } from './DexieCloudOptions';\nimport { DexieCloudSchema } from './DexieCloudSchema';\nimport { dexieCloudSyncProtocol } from \"./dexieCloudSyncProtocol\";\nimport { overrideParseStoresSpec } from './overrideParseStoresSpect';\n\n/*const DEXIE_CLOUD_PROTOCOL_NAME = \"dexie.cloud\";\n\ndexieSyncable.registerSyncProtocol(\n DEXIE_CLOUD_PROTOCOL_NAME,\n dexieCloudSyncProtocol\n);*/\n\n//\n// Extend Dexie interface\n//\ndeclare module \"dexie\" {\n interface Dexie {\n cloud: {\n version: string;\n options: DexieCloudOptions;\n schema: DexieCloudSchema;\n /**\n * Connect to given URL\n */\n configure(options: DexieCloudOptions): Promise<void>;\n };\n }\n\n interface DexieConstructor {\n Cloud: {\n (db: Dexie): void;\n\n version: string;\n };\n }\n}\n\nexport function dexieCloud(db: Dexie) {\n // Make it possible to only add dexieCloud addon by auto-\n // registering the observable and syncable:\n //if (!db.observable) dexieObservable(db);\n //if (!db.syncable) dexieSyncable(db);\n db.cloud = {\n version: \"{version}\",\n options: {databaseUrl: \"\"},\n schema: {},\n configure (options: DexieCloudOptions) {\n db.cloud.options = options;\n //return db.syncable.connect(DEXIE_CLOUD_PROTOCOL_NAME, options.databaseUrl, options);\n return Promise.resolve();\n }\n }\n db.Version.prototype[\"_parseStoresSpec\"] = Dexie.override(\n db.Version.prototype[\"_parseStoresSpec\"],\n origFunc => overrideParseStoresSpec(origFunc, db.cloud.schema));\n\n db.use(createIdGenerationMiddleware(db.cloud.schema));\n}\n\ndexieCloud.version = \"{version}\";\n\nDexie.Cloud = dexieCloud;\n\nDexie.addons.push(dexieCloud);\n\nexport default dexieCloud;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAWO,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW;AACtD,MAAM,CAAC,CAAC,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAClC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC9E,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC3C,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;ACd9C,SAAS,YAAY,CAAC,CAAC,EAAE;AAChC,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAIM,SAAS,QAAQ,CAAC,MAAM,EAAE;AACjC,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7D,QAAQ,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC;AAYD,MAAM,YAAY,GAAG;AACrB,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,G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"}
@@ -1 +0,0 @@
1
- import Dexie from"dexie";const b64encode="undefined"!=typeof Buffer?e=>ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64"):Buffer.from(e).toString("base64"):e=>btoa(String.fromCharCode.apply(null,e));function b64LexEncode(e){return b64ToLex(b64encode(e))}function b64ToLex(e){for(var t="",r=0,o=e.length;r<o;r++)t+=ENCODE_TABLE[e[r]];return t}const DECODE_TABLE={"-":"=",0:"A",1:"B",2:"C",3:"D",4:"E",5:"F",6:"G",7:"H",8:"I",9:"J",A:"K",B:"L",C:"M",D:"N",E:"O",F:"P",G:"Q",H:"R",I:"S",J:"T",K:"U",L:"V",M:"W",N:"X",O:"Y",P:"Z",Q:"a",R:"b",S:"c",T:"d",U:"e",V:"f",W:"g",X:"h",Y:"i",Z:"j",_:"k",a:"l",b:"m",c:"n",d:"o",e:"p",f:"q",g:"r",h:"s",i:"t",j:"u",k:"v",l:"w",m:"x",n:"y",o:"z",p:"0",q:"1",r:"2",s:"3",t:"4",u:"5",v:"6",w:"7",x:"8",y:"9",z:"+","~":"/"},ENCODE_TABLE={};for(const e of Object.keys(DECODE_TABLE))ENCODE_TABLE[DECODE_TABLE[e]]=e;function getEffectiveKeys(e,t){return"delete"===t.type?t.keys:t.keys?.slice()||t.values.map(e.extractKey)}function applyToUpperBitFix(e,t){return(1&t?e[0].toUpperCase():e[0].toLowerCase())+(2&t?e[1].toUpperCase():e[1].toLowerCase())+(4&t?e[2].toUpperCase():e[2].toLowerCase())}const consonants=/b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;function generateTablePrefix(e,t){let r="";for(let t=0,o=e.length;t<o&&r.length<3;++t)consonants.test(e[t])&&(r+=e[t].toLowerCase());for(;t.has(r);){if(/\d/g.test(r)){if(r=r.substr(0,r.length-1)+(r[r.length-1]+1),!(r.length>3))continue;r=r.substr(0,3)}else if(r.length<3){r+="2";continue}let e=1,o=r;for(;t.has(o)&&e<8;)o=applyToUpperBitFix(r,e),++e;if(e<8)r=o;else{let e=r.charCodeAt(2)+1&127;r=r.substr(0,2)+String.fromCharCode(e)}}return r}let time=0;function generateKey(e){const t=new Uint8Array(18),r=new Uint8Array(t.buffer,0,6),o=Date.now();time>=o?++time:time=o,r[0]=time/1099511627776,r[1]=time/4294967296,r[2]=time/16777216,r[3]=time/65536,r[4]=time/256,r[5]=time;const n=new Uint8Array(t.buffer,6);crypto.getRandomValues(n);return e+b64LexEncode(new Uint8Array(t.buffer))}function createIdGenerationMiddleware(e){return{stack:"dbcore",name:"idGenerationMiddleware",create:t=>{const r=new Set;return t.schema.tables.forEach(t=>{const o=e[t.name]||(e[t.name]={}),n=generateTablePrefix(t.name,r);r.add(n),o.idPrefix=n}),{...t,table:r=>{const o=t.table(r),n=e[r];return n?.generatedGlobalId?{...o,mutate:t=>{if("add"===t.type||"put"===t.type){let i=null;const a=getEffectiveKeys(o.schema.primaryKey,t);return a.forEach((s,u)=>{if(void 0===s)a[u]=generateKey(e[r].idPrefix),o.schema.primaryKey.outbound||(i||(i=t.values.slice()),i[u]=Dexie.deepClone(i[u]),Dexie.setByKeyPath(i[u],o.schema.primaryKey.keyPath,a[u]));else if("string"!=typeof s||!s.startsWith(n.idPrefix))throw new Dexie.ConstraintError(`The ID "${s}" is not valid for table "${r}". The ID must be a string prefixed with "${n.idPrefix}"`)}),o.mutate({...t,keys:a,values:i||t.values})}return o.mutate(t)}}:o}}}}}function overrideParseStoresSpec(e,t){return function(r,o){const n={...r,_cloud:"id"};return Object.keys(r).forEach(e=>{/^\@/.test(r[e])&&(n[e]=r[e].substr(1),t[e]={generatedGlobalId:!0})}),e.call(this,n,o)}}function dexieCloud(e){e.cloud={version:"1.0.0-alpha.6",options:{databaseUrl:""},schema:{},configure:t=>(e.cloud.options=t,Promise.resolve())},e.Version.prototype._parseStoresSpec=Dexie.override(e.Version.prototype._parseStoresSpec,t=>overrideParseStoresSpec(t,e.cloud.schema)),e.use(createIdGenerationMiddleware(e.cloud.schema))}dexieCloud.version="1.0.0-alpha.6",Dexie.Cloud=dexieCloud,Dexie.addons.push(dexieCloud);export default dexieCloud;export{dexieCloud};