dexie-cloud-addon 4.0.1-beta.37 → 4.0.1-beta.39

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 (43) hide show
  1. package/dist/modern/dexie-cloud-addon.js +35 -3
  2. package/dist/modern/dexie-cloud-addon.js.map +1 -1
  3. package/dist/modern/dexie-cloud-addon.min.js +1 -1
  4. package/dist/modern/dexie-cloud-addon.min.js.map +1 -1
  5. package/dist/modern/service-worker.js +172 -1760
  6. package/dist/modern/service-worker.js.map +1 -1
  7. package/dist/modern/service-worker.min.js +1 -1
  8. package/dist/modern/service-worker.min.js.map +1 -1
  9. package/dist/types/DexieCloudAPI.d.ts +11 -11
  10. package/dist/umd/dexie-cloud-addon.js +2765 -3812
  11. package/dist/umd/dexie-cloud-addon.js.map +1 -1
  12. package/dist/umd/dexie-cloud-addon.min.js +2 -1
  13. package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
  14. package/dist/umd/service-worker.js +205 -1794
  15. package/dist/umd/service-worker.js.map +1 -1
  16. package/dist/umd/service-worker.min.js +1 -1
  17. package/dist/umd/service-worker.min.js.map +1 -1
  18. package/package.json +14 -26
  19. package/dist/module-es5/dexie-cloud-addon.js +0 -7388
  20. package/dist/module-es5/dexie-cloud-addon.js.map +0 -1
  21. package/dist/module-es5/dexie-cloud-addon.min.js +0 -2
  22. package/dist/module-es5/dexie-cloud-addon.min.js.map +0 -1
  23. package/dist/types/DexieCloudEntity.d.ts +0 -8
  24. package/dist/types/DexieCloudServerState.d.ts +0 -5
  25. package/dist/types/WebSocketStatus.d.ts +0 -1
  26. package/dist/types/createMyMembersObservable.d.ts +0 -14
  27. package/dist/types/currentUserObservable.d.ts +0 -3
  28. package/dist/types/helpers/BroadcastedLocalEvent.d.ts +0 -8
  29. package/dist/types/helpers/visibleState.d.ts +0 -1
  30. package/dist/types/permissionsLookup.d.ts +0 -9
  31. package/dist/types/permissionsLookupObservable.d.ts +0 -14
  32. package/dist/types/sync/globalizePrivateIds.d.ts +0 -4
  33. package/dist/types/sync/syncServerToClientOnly.d.ts +0 -3
  34. package/dist/types/types/CloudConnectionStatus.d.ts +0 -0
  35. package/dist/types/types/ConnectionStatus.d.ts +0 -0
  36. package/dist/types/types/LoginState.d.ts +0 -41
  37. package/dist/types/types/SyncConnectionStatus.d.ts +0 -1
  38. package/dist/types/types/SyncFlowStatus.d.ts +0 -6
  39. package/dist/types/types/SyncStatus.d.ts +0 -6
  40. package/dist/umd-modern/dexie-cloud-addon.js +0 -6323
  41. package/dist/umd-modern/dexie-cloud-addon.js.map +0 -1
  42. package/dist/umd-modern/dexie-cloud-addon.min.js +0 -2
  43. package/dist/umd-modern/dexie-cloud-addon.min.js.map +0 -1
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * ==========================================================================
10
10
  *
11
- * Version 4.0.1-beta.37, Mon Apr 17 2023
11
+ * Version 4.0.1-beta.39, Wed Apr 26 2023
12
12
  *
13
13
  * https://dexie.org
14
14
  *
@@ -4812,6 +4812,38 @@ function createMutationTrackingMiddleware({ currentUserObservable, db }) {
4812
4812
  function overrideParseStoresSpec(origFunc, dexie) {
4813
4813
  return function (stores, dbSchema) {
4814
4814
  const storesClone = Object.assign(Object.assign({}, DEXIE_CLOUD_SCHEMA), stores);
4815
+ // Merge indexes of DEXIE_CLOUD_SCHEMA with stores
4816
+ Object.keys(DEXIE_CLOUD_SCHEMA).forEach((tableName) => {
4817
+ const schemaSrc = storesClone[tableName];
4818
+ // Verify that they don't try to delete a table that is needed for access control of Dexie Cloud
4819
+ if (schemaSrc == null) {
4820
+ // They try to delete one of the built-in schema tables.
4821
+ throw new Error(`Cannot delete table ${tableName} as it is needed for access control of Dexie Cloud`);
4822
+ }
4823
+ // If not trying to override a built-in table, then we can skip this and continue to next table.
4824
+ if (!stores[tableName]) {
4825
+ // They haven't tried to declare this table. No need to merge indexes.
4826
+ return; // Continue
4827
+ }
4828
+ // They have declared this table. Merge indexes in case they didn't declare all indexes we need.
4829
+ const requestedIndexes = schemaSrc.split(',').map(spec => spec.trim());
4830
+ const builtInIndexes = DEXIE_CLOUD_SCHEMA[tableName].split(',').map(spec => spec.trim());
4831
+ const requestedIndexSet = new Set(requestedIndexes.map(index => index.replace(/([&*]|\+\+)/g, "")));
4832
+ // Verify that primary key is unchanged
4833
+ if (requestedIndexes[0] !== builtInIndexes[0]) {
4834
+ // Primary key must match exactly
4835
+ throw new Error(`Cannot override primary key of table ${tableName}. Please declare it as {${tableName}: ${JSON.stringify(DEXIE_CLOUD_SCHEMA[tableName])}`);
4836
+ }
4837
+ // Merge indexes
4838
+ for (let i = 1; i < builtInIndexes.length; ++i) {
4839
+ const builtInIndex = builtInIndexes[i];
4840
+ if (!requestedIndexSet.has(builtInIndex.replace(/([&*]|\+\+)/g, ""))) {
4841
+ // Add built-in index if not already requested
4842
+ storesClone[tableName] += `,${builtInIndex}`;
4843
+ }
4844
+ }
4845
+ });
4846
+ // Populate dexie.cloud.schema
4815
4847
  const cloudSchema = dexie.cloud.schema || (dexie.cloud.schema = {});
4816
4848
  const allPrefixes = new Set();
4817
4849
  Object.keys(storesClone).forEach(tableName => {
@@ -6041,7 +6073,7 @@ function dexieCloud(dexie) {
6041
6073
  });
6042
6074
  const syncComplete = new Subject();
6043
6075
  dexie.cloud = {
6044
- version: '4.0.1-beta.37',
6076
+ version: '4.0.1-beta.39',
6045
6077
  options: Object.assign({}, DEFAULT_OPTIONS),
6046
6078
  schema: null,
6047
6079
  get currentUserId() {
@@ -6302,7 +6334,7 @@ function dexieCloud(dexie) {
6302
6334
  });
6303
6335
  }
6304
6336
  }
6305
- dexieCloud.version = '4.0.1-beta.37';
6337
+ dexieCloud.version = '4.0.1-beta.39';
6306
6338
  Dexie.Cloud = dexieCloud;
6307
6339
 
6308
6340
  export { dexieCloud as default, dexieCloud, getTiedObjectId, getTiedRealmId };