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
package/package.json CHANGED
@@ -1,13 +1,20 @@
1
1
  {
2
2
  "name": "dexie-cloud-addon",
3
- "version": "1.0.0-alpha.6",
3
+ "version": "1.0.0-beta.11",
4
4
  "description": "Dexie addon that syncs with to Dexie Cloud",
5
- "main": "dist/dexie-cloud.js",
6
- "module": "dist/dexie-cloud.mjs",
7
- "esnext": "esnext/dexie-cloud.js",
8
- "typings": "dist/dexie-cloud.d.ts",
5
+ "main": "dist/umd/dexie-cloud-addon.js",
6
+ "module": "dist/module-es5/dexie-cloud-addon.js",
7
+ "exports": {
8
+ ".": {
9
+ "development": "./dist/modern/dexie-cloud-addon.js",
10
+ "production": "./dist/modern/dexie-cloud-addon.min.js",
11
+ "default": "./dist/modern/dexie-cloud-addon.js"
12
+ },
13
+ "./service-worker": "./dist/modern/service-worker.min.js"
14
+ },
15
+ "types": "dist/types/dexie-cloud-client.d.ts",
9
16
  "engines": {
10
- "node": ">=8.2.1"
17
+ "node": ">=14"
11
18
  },
12
19
  "repository": {
13
20
  "type": "git",
@@ -16,10 +23,10 @@
16
23
  "scripts": {
17
24
  "test": "just-build test && npm run test-unit",
18
25
  "test-unit": "karma start test/unit/karma.conf.js --single-run",
19
- "build": "just-build",
26
+ "build": "just-build && bash ./copydts.sh",
20
27
  "watch": "just-build --watch",
21
- "clean": "rm -rf tools/tmp dist esnext test/unit/bundle.*",
22
- "prepare": "just-build"
28
+ "clean": "rm -rf tools/tmp dist test/unit/bundle.*",
29
+ "copydts": "bash ./copydts.sh"
23
30
  },
24
31
  "just-build": {
25
32
  "default": [
@@ -28,22 +35,43 @@
28
35
  "release": [
29
36
  "# Build outputs",
30
37
  "just-build src",
38
+ "just-build dexie-cloud service-worker",
31
39
  "# Minify the default ES5 UMD module",
32
- "cd dist",
33
- "uglifyjs dexie-cloud.js -m -c negate_iife=0 -o dexie-cloud.min.js --source-map",
34
- "cd ..",
35
- "terser --compress --mangle --source-map -o esnext/dexie-cloud.min.js -- esnext/dexie-cloud.js",
36
- "terser --compress --mangle --source-map -o dist/dexie-cloud.min.js -- dist/dexie-cloud.mjs"
40
+ "cd dist/umd",
41
+ "# Minify ES5 UMD bundle",
42
+ "uglifyjs dexie-cloud-addon.js -m -c negate_iife=0 -o dexie-cloud-addon.min.js --source-map",
43
+ "cd ../..",
44
+ "#dts-bundle-generator --external-imports=dexie --project src/tsconfig.json -o dist/dexie-cloud-addon.d.ts tools/tmp/modern/dexie-cloud-client.d.ts",
45
+ "# Minify modern bundle",
46
+ "terser --comments false --compress --mangle --module --source-map -o dist/modern/dexie-cloud-addon.min.js -- dist/modern/dexie-cloud-addon.js",
47
+ "# Minify module bundle",
48
+ "terser --comments false --compress --mangle --module --source-map -o dist/module-es5/dexie-cloud-addon.min.js -- dist/module-es5/dexie-cloud-addon.js",
49
+ "# Minify modern service-worker",
50
+ "terser --comments false --compress --mangle --module --source-map -o dist/modern/service-worker.min.js -- dist/modern/service-worker.js",
51
+ "# Minify umd service-worker",
52
+ "terser --comments false --compress --mangle --source-map -o dist/umd/service-worker.min.js -- dist/umd/service-worker.js"
37
53
  ],
38
54
  "src": [
39
- "tsc -p src -t esnext --outDir tools/tmp/esnext [--watch 'Compilation complete.']",
40
- "rollup -c tools/build-configs/rollup.esnext.config.js",
41
- "tsc --allowJs -m es2015 -t es5 --sourceMap --outDir tools/tmp/es5 esnext/dexie-cloud.js",
55
+ "# Build the entire typescript source into modern JS",
56
+ "tsc -p src -t es2018 --outDir tools/tmp/modern [--watch 'Watching for file changes.']"
57
+ ],
58
+ "dexie-cloud": [
59
+ "# Create a modern bundle in dist/modern",
60
+ "rollup -c tools/build-configs/rollup.modern.config.js",
61
+ "# Transpile the modern dexie-cloud bundle into ES5 JS",
62
+ "tsc --allowJs -m es2015 -t es5 --sourceMap --importHelpers true --outDir tools/tmp/es5 dist/modern/dexie-cloud-addon.js",
63
+ "# Create ES5 bundles: One UMD and one MJS",
42
64
  "rollup -c tools/build-configs/rollup.es5.config.js",
43
65
  "# Copy dexie-cloud-client.d.ts to dist",
44
- "node -e \"fs.writeFileSync('dist/dexie-cloud.d.ts', fs.readFileSync('tools/tmp/esnext/dexie-cloud-client.d.ts'))\"",
66
+ "#node -e \"fs.writeFileSync('dist/dexie-cloud-addon.d.ts', fs.readFileSync('tools/tmp/modern/dexie-cloud-client.d.ts'))\"",
45
67
  "# Replace {version} and {date} in output files",
46
- "node tools/replaceVersionAndDate.js dist/dexie-cloud.d.ts dist/dexie-cloud.js dist/dexie-cloud.mjs esnext/dexie-cloud.js"
68
+ "node tools/replaceVersionAndDate.js dist/umd/dexie-cloud-addon.js dist/module-es5/dexie-cloud-addon.js dist/modern/dexie-cloud-addon.js"
69
+ ],
70
+ "service-worker": [
71
+ "# Create a modern bundle in dist/modern",
72
+ "rollup -c tools/build-configs/rollup.sw.modern.config.js",
73
+ "# Replace {version} and {date} in output files",
74
+ "node tools/replaceVersionAndDate.js dist/umd/service-worker.js dist/modern/service-worker.js"
47
75
  ],
48
76
  "test": [
49
77
  "just-build test-unit"
@@ -56,27 +84,31 @@
56
84
  "author": "david.fahlander@gmail.com",
57
85
  "license": "Apache-2.0",
58
86
  "devDependencies": {
59
- "@types/node": "^14.6.3",
60
- "dreambase-library": "^1.0.4",
61
- "just-build": "^0.9.19",
62
- "karma": "^5.2.1",
63
- "karma-browserstack-launcher": "^1.6.0",
64
- "karma-chrome-launcher": "^3.1.0",
65
- "karma-firefox-launcher": "^1.3.0",
66
- "karma-qunit": "^4.1.1",
67
- "rollup": "^2.26.9",
68
- "rollup-plugin-alias": "^2.2.0",
69
- "rollup-plugin-commonjs": "^10.1.0",
70
- "rollup-plugin-node-resolve": "^5.2.0",
71
- "rollup-plugin-sourcemaps": "^0.6.2",
72
- "tslib": "^2.0.1",
73
- "typescript": "^4.0.2"
87
+ "@rollup/plugin-commonjs": "^18.0.0",
88
+ "@rollup/plugin-node-resolve": "^11.2.1",
89
+ "@types/node": "*",
90
+ "dexie-cloud-common": "^1.0.17",
91
+ "dreambase-library": "^1.0.13",
92
+ "just-build": "*",
93
+ "karma": "*",
94
+ "karma-browserstack-launcher": "*",
95
+ "karma-chrome-launcher": "*",
96
+ "karma-firefox-launcher": "*",
97
+ "karma-qunit": "*",
98
+ "preact": "*",
99
+ "rollup": "^2.45.2",
100
+ "rollup-plugin-alias": "*",
101
+ "rollup-plugin-commonjs": "*",
102
+ "rollup-plugin-node-resolve": "*",
103
+ "rollup-plugin-sourcemaps": "*",
104
+ "tslib": "*",
105
+ "typescript": "*",
106
+ "universal-imports": "^1.0.3"
74
107
  },
75
108
  "dependencies": {
76
- "commander": "^6.1.0",
77
- "dexie": "^3.0.2",
78
- "dexie-observable": "^3.0.0-beta.9",
79
- "dexie-syncable": "^3.0.0-beta.9",
80
- "prompts": "^2.3.2"
109
+ "rxjs": "^6.6.7"
110
+ },
111
+ "peerDependencies": {
112
+ "dexie": "^3.2.0-beta.2"
81
113
  }
82
114
  }
@@ -1,27 +0,0 @@
1
- import Dexie from "dexie";
2
- import { DexieCloudOptions } from './DexieCloudOptions';
3
- import { DexieCloudSchema } from './DexieCloudSchema';
4
- declare module "dexie" {
5
- interface Dexie {
6
- cloud: {
7
- version: string;
8
- options: DexieCloudOptions;
9
- schema: DexieCloudSchema;
10
- /**
11
- * Connect to given URL
12
- */
13
- configure(options: DexieCloudOptions): Promise<void>;
14
- };
15
- }
16
- interface DexieConstructor {
17
- Cloud: {
18
- (db: Dexie): void;
19
- version: string;
20
- };
21
- }
22
- }
23
- export declare function dexieCloud(db: Dexie): void;
24
- export declare namespace dexieCloud {
25
- var version: string;
26
- }
27
- export default dexieCloud;
@@ -1,285 +0,0 @@
1
- (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('dexie')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'dexie'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.DexieCloud = {}, global.Dexie));
5
- }(this, (function (exports, Dexie) { 'use strict';
6
-
7
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
-
9
- var Dexie__default = /*#__PURE__*/_interopDefaultLegacy(Dexie);
10
-
11
- /* ==========================================================================
12
- * dexie-cloud-client.js
13
- * ==========================================================================
14
- *
15
- * Dexie addon that connects to dexie.cloud.
16
- *
17
- * By David Fahlander, david.fahlander@gmail.com,
18
- *
19
- * ==========================================================================
20
- *
21
- * Version 1.0.0-alpha.6, Fri Oct 30 2020
22
- *
23
- * http://dexie.org
24
- *
25
- * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/
26
- *
27
- */
28
- var __assign = (undefined && undefined.__assign) || function () {
29
- __assign = Object.assign || function(t) {
30
- for (var s, i = 1, n = arguments.length; i < n; i++) {
31
- s = arguments[i];
32
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
33
- t[p] = s[p];
34
- }
35
- return t;
36
- };
37
- return __assign.apply(this, arguments);
38
- };
39
- var b64encode = typeof Buffer !== "undefined"
40
- ? function (b) { return ArrayBuffer.isView(b)
41
- ? Buffer.from(b.buffer, b.byteOffset, b.byteLength).toString("base64")
42
- : Buffer.from(b).toString("base64"); }
43
- : function (b) { return btoa(String.fromCharCode.apply(null, b)); };
44
- function b64LexEncode(b) {
45
- return b64ToLex(b64encode(b));
46
- }
47
- function b64ToLex(base64) {
48
- var encoded = "";
49
- for (var i = 0, length = base64.length; i < length; i++) {
50
- encoded += ENCODE_TABLE[base64[i]];
51
- }
52
- return encoded;
53
- }
54
- var DECODE_TABLE = {
55
- "-": "=",
56
- "0": "A",
57
- "1": "B",
58
- "2": "C",
59
- "3": "D",
60
- "4": "E",
61
- "5": "F",
62
- "6": "G",
63
- "7": "H",
64
- "8": "I",
65
- "9": "J",
66
- A: "K",
67
- B: "L",
68
- C: "M",
69
- D: "N",
70
- E: "O",
71
- F: "P",
72
- G: "Q",
73
- H: "R",
74
- I: "S",
75
- J: "T",
76
- K: "U",
77
- L: "V",
78
- M: "W",
79
- N: "X",
80
- O: "Y",
81
- P: "Z",
82
- Q: "a",
83
- R: "b",
84
- S: "c",
85
- T: "d",
86
- U: "e",
87
- V: "f",
88
- W: "g",
89
- X: "h",
90
- Y: "i",
91
- Z: "j",
92
- _: "k",
93
- a: "l",
94
- b: "m",
95
- c: "n",
96
- d: "o",
97
- e: "p",
98
- f: "q",
99
- g: "r",
100
- h: "s",
101
- i: "t",
102
- j: "u",
103
- k: "v",
104
- l: "w",
105
- m: "x",
106
- n: "y",
107
- o: "z",
108
- p: "0",
109
- q: "1",
110
- r: "2",
111
- s: "3",
112
- t: "4",
113
- u: "5",
114
- v: "6",
115
- w: "7",
116
- x: "8",
117
- y: "9",
118
- z: "+",
119
- "~": "/",
120
- };
121
- var ENCODE_TABLE = {};
122
- for (var _i = 0, _a = Object.keys(DECODE_TABLE); _i < _a.length; _i++) {
123
- var c = _a[_i];
124
- ENCODE_TABLE[DECODE_TABLE[c]] = c;
125
- }
126
- function getEffectiveKeys(primaryKey, req) {
127
- var _a;
128
- if (req.type === "delete")
129
- return req.keys;
130
- return ((_a = req.keys) === null || _a === void 0 ? void 0 : _a.slice()) || req.values.map(primaryKey.extractKey);
131
- }
132
- function applyToUpperBitFix(orig, bits) {
133
- return ((bits & 1 ? orig[0].toUpperCase() : orig[0].toLowerCase()) +
134
- (bits & 2 ? orig[1].toUpperCase() : orig[1].toLowerCase()) +
135
- (bits & 4 ? orig[2].toUpperCase() : orig[2].toLowerCase()));
136
- }
137
- var consonants = /b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;
138
- function generateTablePrefix(tableName, allPrefixes) {
139
- var rv = "";
140
- for (var i = 0, l = tableName.length; i < l && rv.length < 3; ++i) {
141
- if (consonants.test(tableName[i]))
142
- rv += tableName[i].toLowerCase();
143
- }
144
- while (allPrefixes.has(rv)) {
145
- if (/\d/g.test(rv)) {
146
- rv = rv.substr(0, rv.length - 1) + (rv[rv.length - 1] + 1);
147
- if (rv.length > 3)
148
- rv = rv.substr(0, 3);
149
- else
150
- continue;
151
- }
152
- else if (rv.length < 3) {
153
- rv = rv + "2";
154
- continue;
155
- }
156
- var bitFix = 1;
157
- var upperFixed = rv;
158
- while (allPrefixes.has(upperFixed) && bitFix < 8) {
159
- upperFixed = applyToUpperBitFix(rv, bitFix);
160
- ++bitFix;
161
- }
162
- if (bitFix < 8)
163
- rv = upperFixed;
164
- else {
165
- var nextChar = (rv.charCodeAt(2) + 1) & 127;
166
- rv = rv.substr(0, 2) + String.fromCharCode(nextChar);
167
- // Here, in theory we could get an infinite loop if having 127*8 table names with identical 3 first consonants.
168
- }
169
- }
170
- return rv;
171
- }
172
- var time = 0;
173
- function generateKey(prefix) {
174
- var a = new Uint8Array(18);
175
- var timePart = new Uint8Array(a.buffer, 0, 6);
176
- var now = Date.now(); // Will fit into 6 bytes until year 10 895.
177
- if (time >= now) {
178
- // User is bulk-creating objects the same millisecond.
179
- // Increment the time part by one millisecond for each item.
180
- // If bulk-creating 1,000,000 rows client-side in 10 seconds,
181
- // the last time-stamp will be 990 seconds in future, which is no biggie at all.
182
- // The point is to create a nice order of the generated IDs instead of
183
- // using random ids.
184
- ++time;
185
- }
186
- else {
187
- time = now;
188
- }
189
- timePart[0] = time / 1099511627776;
190
- timePart[1] = time / 4294967296;
191
- timePart[2] = time / 16777216;
192
- timePart[3] = time / 65536;
193
- timePart[4] = time / 256;
194
- timePart[5] = time;
195
- var randomPart = new Uint8Array(a.buffer, 6);
196
- crypto.getRandomValues(randomPart);
197
- var id = new Uint8Array(a.buffer);
198
- return prefix + b64LexEncode(id);
199
- }
200
- function createIdGenerationMiddleware(cloudSchema) {
201
- return {
202
- stack: "dbcore",
203
- name: "idGenerationMiddleware",
204
- create: function (core) {
205
- var allPrefixes = new Set();
206
- core.schema.tables.forEach(function (table) {
207
- var cloudTableSchema = cloudSchema[table.name] || (cloudSchema[table.name] = {});
208
- var tablePrefix = generateTablePrefix(table.name, allPrefixes);
209
- allPrefixes.add(tablePrefix);
210
- cloudTableSchema.idPrefix = tablePrefix;
211
- });
212
- return __assign(__assign({}, core), { table: function (tableName) {
213
- var table = core.table(tableName);
214
- var cloudTableSchema = cloudSchema[tableName];
215
- if (!(cloudTableSchema === null || cloudTableSchema === void 0 ? void 0 : cloudTableSchema.generatedGlobalId))
216
- return table;
217
- return __assign(__assign({}, table), { mutate: function (req) {
218
- if (req.type === "add" || req.type === "put") {
219
- var valueClones_1 = null;
220
- var keys_1 = getEffectiveKeys(table.schema.primaryKey, req);
221
- keys_1.forEach(function (key, idx) {
222
- if (key === undefined) {
223
- keys_1[idx] = generateKey(cloudSchema[tableName].idPrefix);
224
- if (!table.schema.primaryKey.outbound) {
225
- if (!valueClones_1)
226
- valueClones_1 = req.values.slice();
227
- valueClones_1[idx] = Dexie__default['default'].deepClone(valueClones_1[idx]);
228
- Dexie__default['default'].setByKeyPath(valueClones_1[idx], table.schema.primaryKey.keyPath, // TODO: fix typings in dexie-constructor.d.ts!
229
- keys_1[idx]);
230
- }
231
- }
232
- else if (typeof key !== 'string' || !key.startsWith(cloudTableSchema.idPrefix)) {
233
- throw new Dexie__default['default'].ConstraintError("The ID \"" + key + "\" is not valid for table \"" + tableName + "\". " +
234
- ("The ID must be a string prefixed with \"" + cloudTableSchema.idPrefix + "\""));
235
- }
236
- });
237
- return table.mutate(__assign(__assign({}, req), { keys: keys_1, values: valueClones_1 || req.values }));
238
- }
239
- return table.mutate(req);
240
- } });
241
- } });
242
- },
243
- };
244
- }
245
- function overrideParseStoresSpec(origFunc, cloudSchema) {
246
- return function (stores, dbSchema) {
247
- var storesClone = __assign(__assign({}, stores), { _cloud: 'id' });
248
- Object.keys(stores).forEach(function (tableName) {
249
- if (/^\@/.test(stores[tableName])) {
250
- storesClone[tableName] = stores[tableName].substr(1);
251
- cloudSchema[tableName] = { generatedGlobalId: true };
252
- }
253
- });
254
- return origFunc.call(this, storesClone, dbSchema);
255
- };
256
- }
257
- function dexieCloud(db) {
258
- // Make it possible to only add dexieCloud addon by auto-
259
- // registering the observable and syncable:
260
- //if (!db.observable) dexieObservable(db);
261
- //if (!db.syncable) dexieSyncable(db);
262
- db.cloud = {
263
- version: "1.0.0-alpha.6",
264
- options: { databaseUrl: "" },
265
- schema: {},
266
- configure: function (options) {
267
- db.cloud.options = options;
268
- //return db.syncable.connect(DEXIE_CLOUD_PROTOCOL_NAME, options.databaseUrl, options);
269
- return Promise.resolve();
270
- }
271
- };
272
- db.Version.prototype["_parseStoresSpec"] = Dexie__default['default'].override(db.Version.prototype["_parseStoresSpec"], function (origFunc) { return overrideParseStoresSpec(origFunc, db.cloud.schema); });
273
- db.use(createIdGenerationMiddleware(db.cloud.schema));
274
- }
275
- dexieCloud.version = "1.0.0-alpha.6";
276
- Dexie__default['default'].Cloud = dexieCloud;
277
- Dexie__default['default'].addons.push(dexieCloud);
278
-
279
- exports.default = dexieCloud;
280
- exports.dexieCloud = dexieCloud;
281
-
282
- Object.defineProperty(exports, '__esModule', { value: true });
283
-
284
- })));
285
- //# sourceMappingURL=dexie-cloud.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dexie-cloud.js","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":["Dexie"],"mappings":"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"}
@@ -1 +0,0 @@
1
- import Dexie from"dexie";var __assign=function(){return(__assign=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++)for(var i in r=arguments[t])Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i]);return e}).apply(this,arguments)},b64encode="undefined"!=typeof Buffer?function(e){return ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64"):Buffer.from(e).toString("base64")}:function(e){return btoa(String.fromCharCode.apply(null,e))};function b64LexEncode(e){return b64ToLex(b64encode(e))}function b64ToLex(e){for(var r="",t=0,n=e.length;t<n;t++)r+=ENCODE_TABLE[e[t]];return r}for(var 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={},_i=0,_a=Object.keys(DECODE_TABLE);_i<_a.length;_i++){var c=_a[_i];ENCODE_TABLE[DECODE_TABLE[c]]=c}function getEffectiveKeys(e,r){var t;return"delete"===r.type?r.keys:(null===(t=r.keys)||void 0===t?void 0:t.slice())||r.values.map(e.extractKey)}function applyToUpperBitFix(e,r){return(1&r?e[0].toUpperCase():e[0].toLowerCase())+(2&r?e[1].toUpperCase():e[1].toLowerCase())+(4&r?e[2].toUpperCase():e[2].toLowerCase())}var 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,r){for(var t="",n=0,i=e.length;n<i&&t.length<3;++n)consonants.test(e[n])&&(t+=e[n].toLowerCase());for(;r.has(t);){if(/\d/g.test(t)){if(!((t=t.substr(0,t.length-1)+(t[t.length-1]+1)).length>3))continue;t=t.substr(0,3)}else if(t.length<3){t+="2";continue}for(var a=1,o=t;r.has(o)&&a<8;)o=applyToUpperBitFix(t,a),++a;if(a<8)t=o;else{var s=t.charCodeAt(2)+1&127;t=t.substr(0,2)+String.fromCharCode(s)}}return t}var time=0;function generateKey(e){var r=new Uint8Array(18),t=new Uint8Array(r.buffer,0,6),n=Date.now();time>=n?++time:time=n,t[0]=time/1099511627776,t[1]=time/4294967296,t[2]=time/16777216,t[3]=time/65536,t[4]=time/256,t[5]=time;var i=new Uint8Array(r.buffer,6);return crypto.getRandomValues(i),e+b64LexEncode(new Uint8Array(r.buffer))}function createIdGenerationMiddleware(e){return{stack:"dbcore",name:"idGenerationMiddleware",create:function(r){var t=new Set;return r.schema.tables.forEach((function(r){var n=e[r.name]||(e[r.name]={}),i=generateTablePrefix(r.name,t);t.add(i),n.idPrefix=i})),__assign(__assign({},r),{table:function(t){var n=r.table(t),i=e[t];return(null==i?void 0:i.generatedGlobalId)?__assign(__assign({},n),{mutate:function(r){if("add"===r.type||"put"===r.type){var a=null,o=getEffectiveKeys(n.schema.primaryKey,r);return o.forEach((function(s,u){if(void 0===s)o[u]=generateKey(e[t].idPrefix),n.schema.primaryKey.outbound||(a||(a=r.values.slice()),a[u]=Dexie.deepClone(a[u]),Dexie.setByKeyPath(a[u],n.schema.primaryKey.keyPath,o[u]));else if("string"!=typeof s||!s.startsWith(i.idPrefix))throw new Dexie.ConstraintError('The ID "'+s+'" is not valid for table "'+t+'". The ID must be a string prefixed with "'+i.idPrefix+'"')})),n.mutate(__assign(__assign({},r),{keys:o,values:a||r.values}))}return n.mutate(r)}}):n}})}}}function overrideParseStoresSpec(e,r){return function(t,n){var i=__assign(__assign({},t),{_cloud:"id"});return Object.keys(t).forEach((function(e){/^\@/.test(t[e])&&(i[e]=t[e].substr(1),r[e]={generatedGlobalId:!0})})),e.call(this,i,n)}}function dexieCloud(e){e.cloud={version:"1.0.0-alpha.6",options:{databaseUrl:""},schema:{},configure:function(r){return e.cloud.options=r,Promise.resolve()}},e.Version.prototype._parseStoresSpec=Dexie.override(e.Version.prototype._parseStoresSpec,(function(r){return overrideParseStoresSpec(r,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};
@@ -1 +0,0 @@
1
- {"version":3,"sources":["dist/dexie-cloud.mjs"],"names":["Dexie","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","b64encode","Buffer","b","ArrayBuffer","isView","from","buffer","byteOffset","byteLength","toString","btoa","String","fromCharCode","b64LexEncode","b64ToLex","base64","encoded","ENCODE_TABLE","DECODE_TABLE","-","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","_","a","c","d","e","f","g","h","j","k","l","m","o","q","r","u","v","w","x","y","z","~","_i","_a","keys","getEffectiveKeys","primaryKey","req","type","slice","values","map","extractKey","applyToUpperBitFix","orig","bits","toUpperCase","toLowerCase","consonants","generateTablePrefix","tableName","allPrefixes","rv","test","has","substr","bitFix","upperFixed","nextChar","charCodeAt","time","generateKey","prefix","Uint8Array","timePart","now","Date","randomPart","crypto","getRandomValues","createIdGenerationMiddleware","cloudSchema","stack","name","create","core","Set","schema","tables","forEach","table","cloudTableSchema","tablePrefix","add","idPrefix","generatedGlobalId","mutate","valueClones_1","keys_1","key","idx","undefined","outbound","deepClone","setByKeyPath","keyPath","startsWith","ConstraintError","overrideParseStoresSpec","origFunc","stores","dbSchema","storesClone","_cloud","dexieCloud","db","cloud","version","options","databaseUrl","configure","Promise","resolve","Version","override","use","Cloud","addons","push"],"mappings":"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"}