@evolu/common 8.10.0 → 8.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/src/Bytes.d.ts +39 -2
  2. package/dist/src/Bytes.d.ts.map +1 -1
  3. package/dist/src/Bytes.js +50 -2
  4. package/dist/src/Config.d.ts +22 -22
  5. package/dist/src/Config.d.ts.map +1 -1
  6. package/dist/src/Console.d.ts +62 -7
  7. package/dist/src/Console.d.ts.map +1 -1
  8. package/dist/src/Console.js +20 -4
  9. package/dist/src/Crypto.d.ts +76 -4
  10. package/dist/src/Crypto.d.ts.map +1 -1
  11. package/dist/src/Crypto.js +55 -4
  12. package/dist/src/Error.d.ts +45 -0
  13. package/dist/src/Error.d.ts.map +1 -1
  14. package/dist/src/Error.js +69 -0
  15. package/dist/src/Fs.d.ts +92 -18
  16. package/dist/src/Fs.d.ts.map +1 -1
  17. package/dist/src/Fs.js +2 -0
  18. package/dist/src/Identicon.d.ts +2 -2
  19. package/dist/src/Identicon.js +2 -2
  20. package/dist/src/LeakDetector.d.ts +22 -3
  21. package/dist/src/LeakDetector.d.ts.map +1 -1
  22. package/dist/src/LeakDetector.js +12 -2
  23. package/dist/src/LockManager.d.ts +8 -0
  24. package/dist/src/LockManager.d.ts.map +1 -1
  25. package/dist/src/LockManager.js +6 -0
  26. package/dist/src/Object.d.ts.map +1 -1
  27. package/dist/src/Object.js +5 -0
  28. package/dist/src/Platform.d.ts +47 -7
  29. package/dist/src/Platform.d.ts.map +1 -1
  30. package/dist/src/Platform.js +24 -5
  31. package/dist/src/Random.d.ts +25 -2
  32. package/dist/src/Random.d.ts.map +1 -1
  33. package/dist/src/Random.js +14 -2
  34. package/dist/src/Resource.d.ts +156 -1
  35. package/dist/src/Resource.d.ts.map +1 -1
  36. package/dist/src/Resource.js +201 -72
  37. package/dist/src/Schedule.d.ts +11 -10
  38. package/dist/src/Schedule.d.ts.map +1 -1
  39. package/dist/src/Schedule.js +1 -1
  40. package/dist/src/Sqlite.d.ts +132 -16
  41. package/dist/src/Sqlite.d.ts.map +1 -1
  42. package/dist/src/Sqlite.js +63 -9
  43. package/dist/src/Task.d.ts +15 -4
  44. package/dist/src/Task.d.ts.map +1 -1
  45. package/dist/src/Task.js +41 -15
  46. package/dist/src/Test.d.ts +9 -0
  47. package/dist/src/Test.d.ts.map +1 -1
  48. package/dist/src/Test.js +4 -0
  49. package/dist/src/Time.d.ts +106 -9
  50. package/dist/src/Time.d.ts.map +1 -1
  51. package/dist/src/Time.js +55 -4
  52. package/dist/src/Type.d.ts +1455 -1310
  53. package/dist/src/Type.d.ts.map +1 -1
  54. package/dist/src/Type.js +1274 -517
  55. package/dist/src/WebSocket.d.ts +164 -13
  56. package/dist/src/WebSocket.d.ts.map +1 -1
  57. package/dist/src/WebSocket.js +133 -24
  58. package/dist/src/Worker.d.ts +90 -8
  59. package/dist/src/Worker.d.ts.map +1 -1
  60. package/dist/src/Worker.js +28 -2
  61. package/dist/src/index.d.ts +6 -7
  62. package/dist/src/index.d.ts.map +1 -1
  63. package/dist/src/index.js +2 -3
  64. package/dist/src/local-first/Db.d.ts +52 -3
  65. package/dist/src/local-first/Db.d.ts.map +1 -1
  66. package/dist/src/local-first/Db.js +412 -137
  67. package/dist/src/local-first/Evolu.d.ts +412 -213
  68. package/dist/src/local-first/Evolu.d.ts.map +1 -1
  69. package/dist/src/local-first/Evolu.js +181 -18
  70. package/dist/src/local-first/Owner.d.ts +13 -30
  71. package/dist/src/local-first/Owner.d.ts.map +1 -1
  72. package/dist/src/local-first/Owner.js +13 -30
  73. package/dist/src/local-first/Protocol.d.ts +106 -19
  74. package/dist/src/local-first/Protocol.d.ts.map +1 -1
  75. package/dist/src/local-first/Protocol.js +162 -60
  76. package/dist/src/local-first/Query.d.ts +8 -15
  77. package/dist/src/local-first/Query.d.ts.map +1 -1
  78. package/dist/src/local-first/Relay.d.ts.map +1 -1
  79. package/dist/src/local-first/Relay.js +4 -2
  80. package/dist/src/local-first/Schema.d.ts +346 -23
  81. package/dist/src/local-first/Schema.d.ts.map +1 -1
  82. package/dist/src/local-first/Schema.js +214 -17
  83. package/dist/src/local-first/Shared.d.ts +537 -22
  84. package/dist/src/local-first/Shared.d.ts.map +1 -1
  85. package/dist/src/local-first/Shared.js +1437 -234
  86. package/dist/src/local-first/Storage.d.ts +195 -17
  87. package/dist/src/local-first/Storage.d.ts.map +1 -1
  88. package/dist/src/local-first/Storage.js +85 -22
  89. package/dist/src/local-first/Timestamp.d.ts +392 -41
  90. package/dist/src/local-first/Timestamp.d.ts.map +1 -1
  91. package/dist/src/local-first/Timestamp.js +403 -81
  92. package/dist/src/local-first/index.d.ts +0 -1
  93. package/dist/src/local-first/index.d.ts.map +1 -1
  94. package/dist/src/local-first/index.js +0 -1
  95. package/package.json +1 -1
  96. package/src/Assert.test.ts +2 -5
  97. package/src/Bytes.test.ts +27 -0
  98. package/src/Bytes.ts +58 -2
  99. package/src/Config.test.ts +2 -6
  100. package/src/Config.ts +133 -133
  101. package/src/Console.ts +62 -7
  102. package/src/Crypto.ts +76 -4
  103. package/src/Eq.test.ts +2 -3
  104. package/src/Error.test.ts +76 -3
  105. package/src/Error.ts +71 -0
  106. package/src/Fs.ts +92 -18
  107. package/src/Identicon.ts +2 -2
  108. package/src/LeakDetector.ts +22 -3
  109. package/src/LockManager.ts +8 -0
  110. package/src/Object.test.ts +27 -12
  111. package/src/Object.ts +5 -0
  112. package/src/Platform.ts +50 -8
  113. package/src/Random.ts +25 -2
  114. package/src/Resource.test.ts +837 -0
  115. package/src/Resource.ts +235 -15
  116. package/src/Schedule.test.ts +50 -12
  117. package/src/Schedule.ts +24 -14
  118. package/src/Sqlite.ts +137 -17
  119. package/src/Task.test.ts +189 -8
  120. package/src/Task.ts +56 -17
  121. package/src/Test.ts +9 -0
  122. package/src/Time.ts +106 -9
  123. package/src/Type.test.ts +946 -1028
  124. package/src/Type.ts +4195 -3136
  125. package/src/Types.test.ts +4 -14
  126. package/src/WebSocket.ts +313 -40
  127. package/src/Worker.ts +90 -8
  128. package/src/index.ts +20 -6
  129. package/src/local-first/Db.ts +644 -339
  130. package/src/local-first/Evolu.test.ts +994 -22
  131. package/src/local-first/Evolu.ts +625 -232
  132. package/src/local-first/Owner.ts +13 -30
  133. package/src/local-first/Protocol.test.ts +634 -10
  134. package/src/local-first/Protocol.ts +255 -109
  135. package/src/local-first/Query.ts +8 -15
  136. package/src/local-first/Relay.ts +4 -2
  137. package/src/local-first/Schema.test.ts +143 -0
  138. package/src/local-first/Schema.ts +376 -26
  139. package/src/local-first/Shared.test.ts +7731 -559
  140. package/src/local-first/Shared.ts +2036 -267
  141. package/src/local-first/Storage.ts +224 -36
  142. package/src/local-first/Timestamp.test.ts +344 -70
  143. package/src/local-first/Timestamp.ts +434 -118
  144. package/src/local-first/index.ts +0 -1
  145. package/dist/src/local-first/Error.d.ts +0 -12
  146. package/dist/src/local-first/Error.d.ts.map +0 -1
  147. package/dist/src/local-first/Error.js +0 -6
  148. package/dist/src/local-first/LocalAuth.d.ts +0 -150
  149. package/dist/src/local-first/LocalAuth.d.ts.map +0 -1
  150. package/dist/src/local-first/LocalAuth.js +0 -179
  151. package/src/local-first/Error.ts +0 -17
  152. package/src/local-first/LocalAuth.ts +0 -457
@@ -1 +1 @@
1
- {"version":3,"file":"Evolu.d.ts","sourceRoot":"","sources":["../../../src/local-first/Evolu.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,aAAa,CAAC;AAOrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKjE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAML,IAAI,EACJ,KAAK,SAAS,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,QAAQ,EACR,KAAK,EAEL,cAAc,EACd,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,OAAO,EACP,0BAA0B,EAC1B,KAAK,EACL,SAAS,EACT,GAAG,EAEJ,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EAER,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAIV,eAAe,EAChB,MAAM,aAAa,CAAC;AAKrB,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8EG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAEpD;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IAEjC;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClD;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,oUASnB,CAAC;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC;AAC5C,MAAM,WAAW,YAAa,SAAQ,SAAS,CAAC,SAAS,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;CAC/B;AAED,eAAO,MAAM,WAAW,gGAA2C,CAAC;AAEpE;;;;GAIG;AACH,MAAM,WAAW,KAAK,CACpB,CAAC,SAAS,WAAW,GAAG,WAAW,CACnC,SAAQ,eAAe;IACvB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB,wBAAwB;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,EAChC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KACf,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EACzC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KACZ,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,QAAQ,CAAC,cAAc,EAAE,CACvB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KACZ,CAAC,QAAQ,EAAE,QAAQ,KAAK,WAAW,CAAC;IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;IAE3E;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAIhE;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC;IAEpC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+DG;IACH,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,aAAa,GAAG,KAAK,EAC5B,UAAU,CAAC,EAAE,qBAAqB,CAAC,cAAc,CAAC,KAC/C,UAAU,CAAC;CACjB;AAED,mFAAmF;AACnF,MAAM,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqDG;IACH,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CACvD;AAED;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,iBAAiB,GACvC,UAAU,GACV,aAAa,GACb,UAAU,CAAC;AAEb;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAC/C,yBAAyB,GACzB,uBAAuB,GACvB,cAAc,GACd,YAAY,GACZ,eAAe,GACf,OAAO,CAAC,UAAU,CAAC,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC;AAExB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,SAAU,iBAAiB,KAAG,SAuDzD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,GACrB,CAAC,SAAS,WAAW,UACZ,cAAc,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,UACvD,WAAW,KAClB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAibzC,CAAC"}
1
+ {"version":3,"file":"Evolu.d.ts","sourceRoot":"","sources":["../../../src/local-first/Evolu.ts"],"names":[],"mappings":"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"}
@@ -57,23 +57,27 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
57
57
  });
58
58
  import { emptyArray, isNonEmptyArray, mapArray, } from "../Array.js";
59
59
  import { assert, assertNonEmptyReadonlyArray, assertNotUndefined, } from "../Assert.js";
60
+ import { createBuffer } from "../Bytes.js";
60
61
  import { createCallbacks } from "../Callbacks.js";
61
62
  import { createConsole } from "../Console.js";
62
63
  import { createUnknownError } from "../Error.js";
63
64
  import { disposable, exhaustiveCheck, todo } from "../Function.js";
64
65
  import { acquireLeaderLock, acquireLeaderLockCallback, } from "../LockManager.js";
65
66
  import { createMicrotaskBatch } from "../Microtask.js";
67
+ import { createMutableRecord, objectToEntries, } from "../Object.js";
66
68
  import { createRefCountByKey } from "../RefCount.js";
67
69
  import { err, ok } from "../Result.js";
68
70
  import { isNonEmptySet } from "../Set.js";
69
- import { SqliteBoolean, sqliteBooleanToBoolean } from "../Sqlite.js";
71
+ import { SqliteBoolean, sqliteBooleanToBoolean, } from "../Sqlite.js";
70
72
  import { createStore } from "../Store.js";
71
- import { brand, createId, createIdFromString, Name, UrlSafeString, } from "../Type.js";
73
+ import { brand, createId, createIdFromString, Id, Name, PositiveInt, UrlSafeString, } from "../Type.js";
72
74
  import { createOwnerWebSocketTransport } from "./Owner.js";
75
+ import { encodeDbChange, } from "./Protocol.js";
73
76
  import { applyPatches } from "./Query.js";
74
- import { evoluSchemaToSqliteSchema } from "./Schema.js";
77
+ import { evoluSchemaToSqliteSchema, isLocalOnlyTable } from "./Schema.js";
75
78
  import { consoleEntryOrErrorBroadcastChannelName } from "./Shared.js";
76
79
  import { DbChange } from "./Storage.js";
80
+ import { createTimestamp } from "./Timestamp.js";
77
81
  /**
78
82
  * Application name.
79
83
  *
@@ -83,42 +87,104 @@ import { DbChange } from "./Storage.js";
83
87
  *
84
88
  * Uses the same safe alphabet as {@link UrlSafeString} (letters, digits, `-`,
85
89
  * `_`) and must be between 1 and 41 characters.
90
+ *
91
+ * @group Configuration
86
92
  */
87
93
  export const AppName = /*#__PURE__*/ brand("AppName", UrlSafeString, (value) => value.length >= 1 && value.length <= 41
88
94
  ? ok()
89
95
  : err({ type: "AppName", value }), (error) => `The value ${JSON.stringify(error.value)} is not between 1 and 41 characters.`);
96
+ /**
97
+ * Stable valid {@link AppName} for tests and examples.
98
+ *
99
+ * @group Testing
100
+ */
90
101
  export const testAppName = /*#__PURE__*/ AppName.orThrow("AppName");
102
+ /**
103
+ * The largest {@link Mutation}, in bytes.
104
+ *
105
+ * A mutation's size is its change as encoded for sync: the table name, the ID,
106
+ * and every column name and value, with a few bytes of overhead. A string takes
107
+ * at most three bytes per UTF-16 code unit. Every mutation within the limit
108
+ * fits one protocol message, so it can always sync. A larger mutation throws
109
+ * and is not saved. Mutations of local-only tables are exempt, because they
110
+ * never sync. Measure a mutation in advance with {@link Evolu.getMutationSize}.
111
+ *
112
+ * @group Core
113
+ */
114
+ export const maxMutationSize =
115
+ /*#__PURE__*/ PositiveInt.orThrow(640_000);
116
+ /** Measures a mutation as {@link maxMutationSize} describes. */
117
+ const measureMutation = (table, values) => {
118
+ const columns = createMutableRecord();
119
+ for (const [column, value] of objectToEntries(values)) {
120
+ if (value !== undefined && column !== "id" && column !== "isDeleted") {
121
+ columns[column] = value;
122
+ }
123
+ }
124
+ // Measuring with the protocol's encoding keeps the limit and the message size
125
+ // from disagreeing. A separate formula would save the tab about 3 KB
126
+ // compressed, but it would be a second encoding to keep in sync, and it
127
+ // would have to overcount.
128
+ const buffer = createBuffer();
129
+ encodeDbChange(buffer, {
130
+ // Every timestamp and ID takes 16 bytes, and the flags always take one.
131
+ timestamp: createTimestamp(),
132
+ change: DbChange.orThrow({
133
+ table,
134
+ id: mutationSizeId,
135
+ values: columns,
136
+ isInsert: true,
137
+ isDelete: null,
138
+ }),
139
+ });
140
+ return buffer.getLength();
141
+ };
142
+ const mutationSizeId = /*#__PURE__*/ Id.orThrow("A".repeat(22));
91
143
  /**
92
144
  * Creates shared dependencies used by all {@link createEvolu} instances on a
93
145
  * platform.
94
146
  *
95
147
  * Call this once per platform and reuse the returned deps when creating
96
148
  * multiple Evolu instances. The returned deps object owns long-lived resources
97
- * such as worker channels and the shared {@link EvoluErrorDep.evoluError}
98
- * store.
149
+ * such as worker channels and the shared {@link EvoluErrorDep.evoluError} and
150
+ * {@link SyncStateDep.syncState} stores.
99
151
  *
100
152
  * Dispose it only during app shutdown.
153
+ *
154
+ * @group Construction
101
155
  */
102
156
  export const createEvoluDeps = (deps) => {
103
157
  const env_1 = { stack: [], error: void 0, hasError: false };
104
158
  try {
105
159
  const { createBroadcastChannel, sharedWorker } = deps;
106
160
  const console = deps.console ?? createConsole();
161
+ // Opened when the worker connects.
162
+ let syncStateBroadcastChannel = null;
163
+ let tabLeaderElection = null;
107
164
  const disposer = __addDisposableResource(env_1, new DisposableStack(), false);
108
165
  disposer.use(sharedWorker);
109
166
  const evoluError = disposer.use(createStore(null));
167
+ const syncState = disposer.use(createStore(null));
168
+ disposer.defer(() => {
169
+ syncStateBroadcastChannel?.[Symbol.dispose]();
170
+ });
110
171
  const consoleEntryOrErrorBroadcastChannel = disposer.use(createBroadcastChannel(consoleEntryOrErrorBroadcastChannelName));
172
+ const setEvoluError = (error) => {
173
+ if (evoluError.get()?.type === "UnsupportedDbVersionError")
174
+ return;
175
+ evoluError.set(error);
176
+ };
111
177
  consoleEntryOrErrorBroadcastChannel.onMessage = (message) => {
112
178
  switch (message.type) {
113
179
  case "ConsoleEntry":
114
180
  console.write(message.entry);
115
181
  // Fallback channel for unexpected errors without EvoluError typing.
116
182
  if (message.entry.method === "error") {
117
- evoluError.set(createUnknownError(message.entry.args));
183
+ setEvoluError(createUnknownError(message.entry.args));
118
184
  }
119
185
  break;
120
186
  case "Error":
121
- evoluError.set(message.error);
187
+ setEvoluError(message.error);
122
188
  // Keep typed errors visible in logs as operational failures.
123
189
  console.error(message.error);
124
190
  break;
@@ -127,18 +193,57 @@ export const createEvoluDeps = (deps) => {
127
193
  }
128
194
  };
129
195
  sharedWorker.port.onMessage = (message) => {
130
- deps.createDbWorker().postMessage(message, [message.port]);
196
+ switch (message.type) {
197
+ case "DbWorkerInit":
198
+ deps.createDbWorker().postMessage(message, [message.port]);
199
+ break;
200
+ case "Error":
201
+ // Sent to this tab only: its database refused startup, or its worker
202
+ // still waits for another build.
203
+ setEvoluError(message.error);
204
+ console.error(message.error);
205
+ break;
206
+ case "Waiting":
207
+ case "StorageUnavailable":
208
+ // Platform adapters act on these; see Builds and Storage in the Shared
209
+ // module.
210
+ break;
211
+ case "Connected": {
212
+ assert(!syncStateBroadcastChannel, "The shared worker connects once.");
213
+ // The wait the error reported is over.
214
+ if (evoluError.get()?.type === "OtherBuildRunningError") {
215
+ evoluError.set(null);
216
+ }
217
+ // The worker is the channel's only sender, and one sender's messages
218
+ // arrive in order, so the last one is current.
219
+ syncStateBroadcastChannel = createBroadcastChannel(message.syncStateChannelName);
220
+ syncStateBroadcastChannel.onMessage = (state) => {
221
+ syncState.set(state);
222
+ };
223
+ // Asking only after listening misses no snapshot.
224
+ sharedWorker.port.postMessage({ type: "RequestSyncState" });
225
+ // Only this worker's tabs compete, so a tab of another worker never
226
+ // hosts its DbWorkers.
227
+ tabLeaderElection = acquireLeaderLockCallback(deps)(`tab-${message.workerId}`, () => {
228
+ sharedWorker.port.postMessage({
229
+ type: "AnnounceTabLeader",
230
+ consoleLevel: console.getLevel(),
231
+ });
232
+ });
233
+ break;
234
+ }
235
+ default:
236
+ exhaustiveCheck(message);
237
+ }
131
238
  };
132
- disposer.use(acquireLeaderLockCallback(deps)("tab", () => {
133
- sharedWorker.port.postMessage({
134
- type: "AnnounceTabLeader",
135
- consoleLevel: console.getLevel(),
136
- });
137
- }));
239
+ disposer.defer(() => {
240
+ tabLeaderElection?.[Symbol.dispose]();
241
+ });
138
242
  return disposable({
139
243
  ...deps,
140
244
  console,
141
245
  evoluError,
246
+ syncState,
142
247
  }, disposer);
143
248
  }
144
249
  catch (e_1) {
@@ -152,6 +257,8 @@ export const createEvoluDeps = (deps) => {
152
257
  /**
153
258
  * Creates an {@link Evolu} instance from {@link EvoluSchema} and
154
259
  * {@link EvoluConfig}.
260
+ *
261
+ * @group Construction
155
262
  */
156
263
  export const createEvolu = (schema, config) => async (run) => {
157
264
  const env_2 = { stack: [], error: void 0, hasError: false };
@@ -269,10 +376,7 @@ export const createEvolu = (schema, config) => async (run) => {
269
376
  }
270
377
  case "RefreshQueries": {
271
378
  releaseUnsubscribedLoadingPromises();
272
- const queries = new Set([
273
- ...loadingPromisesByQuery.keys(),
274
- ...subscribedQueriesRefCount.keys(),
275
- ]);
379
+ const queries = new Set(subscribedQueriesRefCount.keys());
276
380
  if (isNonEmptySet(queries))
277
381
  postMessage({ type: "Query", queries });
278
382
  break;
@@ -338,6 +442,36 @@ export const createEvolu = (schema, config) => async (run) => {
338
442
  : null,
339
443
  };
340
444
  assert(DbChange.is(dbChange), `Invalid DbChange for table '${String(table)}'.`);
445
+ // Copy binary values, so what is saved is what was passed: the caller
446
+ // can change a Uint8Array before the batch is sent, a view of a
447
+ // resizable buffer can grow, and a view of a shared buffer cannot be
448
+ // sent to a SharedWorker at all. Node's Buffer passes validation and
449
+ // its slice shares memory, so only the constructor copies reliably.
450
+ for (const [column, value] of objectToEntries(dbChange.values)) {
451
+ if (typeof value === "object" && value !== null) {
452
+ changeValues[column] = new Uint8Array(value);
453
+ }
454
+ }
455
+ // A change over maxMutationSize could never sync, and a shared worker
456
+ // hosting two databases would stop all work of that database. Correct
457
+ // apps bound column Types, so it is a programmer error and throws like
458
+ // the DbChange check above, before batching: it gets no timestamp, the
459
+ // database worker never sees it, and the code after the call does not
460
+ // run, so a form keeps its input and no row refers to the missing one.
461
+ //
462
+ // Rejected: reporting it through evoluError, which lets that code run
463
+ // as if the mutation was saved; checking in the database worker, which
464
+ // gets it already batched and cannot reach the call site; quarantine,
465
+ // which holds changes stored for sync; and skipping it in sync, which
466
+ // keeps range fingerprints disagreeing. Received changes are not
467
+ // checked, and oversized changes stored before this limit are not
468
+ // recovered, which needs a history-aware design.
469
+ //
470
+ // Local-only tables never sync, so they have no limit.
471
+ if (!isLocalOnlyTable(dbChange.table)) {
472
+ const size = measureMutation(dbChange.table, dbChange.values);
473
+ assert(size <= maxMutationSize, `The mutation of table '${dbChange.table}' is ${size} bytes, over maxMutationSize (${maxMutationSize}). Bound the Types of its columns or check it with evolu.getMutationSize.`);
474
+ }
341
475
  mutateBatch.push({
342
476
  change: { ...dbChange, ownerId: options?.ownerId ?? appOwner.id },
343
477
  onComplete: options?.onComplete,
@@ -399,6 +533,7 @@ export const createEvolu = (schema, config) => async (run) => {
399
533
  insert: createMutation("insert"),
400
534
  update: createMutation("update"),
401
535
  upsert: createMutation("upsert"),
536
+ getMutationSize: (table, values) => measureMutation(String(table), values),
402
537
  loadQuery,
403
538
  loadQueries: (queries) => queries.map((query) => loadQuery(query)),
404
539
  subscribeQuery: (query) => (listener) => {
@@ -412,6 +547,27 @@ export const createEvolu = (schema, config) => async (run) => {
412
547
  previousRows = rows;
413
548
  listener();
414
549
  });
550
+ // Invalidation can happen after loading but before a framework
551
+ // subscribes. Register first so subsequent invalidations also
552
+ // refresh this query.
553
+ const loadingPromise = loadingPromisesByQuery.get(query);
554
+ if (loadingPromise?.releaseOnResolve) {
555
+ // Retain the pending promise for its awaiters, but queue a read
556
+ // after the mutation or sync that invalidated its result.
557
+ loadingPromise.releaseOnResolve = false;
558
+ queryBatch.push(query);
559
+ }
560
+ else if (!loadingPromise) {
561
+ const rows = rowsByQueryMapStore.get().get(query);
562
+ if (rows) {
563
+ // Queue a read, but keep cached rows available to React use()
564
+ // so a render before the worker responds does not suspend.
565
+ void loadQuery(query);
566
+ const entry = loadingPromisesByQuery.get(query);
567
+ assertNotUndefined(entry);
568
+ fulfillLoadingPromise(entry, rows);
569
+ }
570
+ }
415
571
  return () => {
416
572
  assert(isSubscribed, "subscribeQuery unsubscribe can be called only once.");
417
573
  isSubscribed = false;
@@ -439,6 +595,13 @@ export const createEvolu = (schema, config) => async (run) => {
439
595
  todo();
440
596
  },
441
597
  useOwner,
598
+ requestSync: (ownerId) => {
599
+ // Do not let the forced mutation flush overtake pending owner actions.
600
+ useOwnerBatch.flushNow();
601
+ // Queue preceding mutations before the reconciliation request.
602
+ mutateBatch.flushNow();
603
+ useOwnerBatch.push({ action: "sync", ownerId });
604
+ },
442
605
  }, disposer));
443
606
  }
444
607
  catch (e_2) {
@@ -337,38 +337,27 @@ export interface OwnerWebSocketTransport extends Typed<"WebSocket"> {
337
337
  *
338
338
  * ```ts
339
339
  * import {
340
- * AppName,
341
340
  * assertEqual,
342
- * assertTrue,
343
- * createAppOwner,
344
341
  * createEvolu,
345
342
  * createOwnerWebSocketTransport,
346
- * createOwnerSecret,
347
- * createRandomBytes,
348
- * id,
343
+ * testAppName,
344
+ * testAppOwner,
345
+ * testEvoluSchema,
349
346
  * } from "@evolu/common";
350
347
  *
351
- * // Create once, persist the mnemonic securely, and restore it on later runs.
352
- * const appOwner = createAppOwner(
353
- * createOwnerSecret({ randomBytes: createRandomBytes() }),
354
- * );
355
348
  * const transport = createOwnerWebSocketTransport({
356
349
  * url: "wss://relay.evolu.dev",
357
- * ownerId: appOwner.id,
350
+ * ownerId: testAppOwner.id,
351
+ * });
352
+ * const _createTodoEvolu = createEvolu(testEvoluSchema, {
353
+ * appName: testAppName,
354
+ * appOwner: testAppOwner,
355
+ * transports: [transport],
358
356
  * });
359
- * const createTodoEvolu = createEvolu(
360
- * { todo: { id: id("Todo") } },
361
- * {
362
- * appName: AppName.orThrow("OwnerTransportExample"),
363
- * appOwner,
364
- * transports: [transport],
365
- * },
366
- * );
367
357
  *
368
- * assertTrue(typeof createTodoEvolu === "function");
369
358
  * assertEqual(transport, {
370
359
  * type: "WebSocket",
371
- * url: `wss://relay.evolu.dev?ownerId=${appOwner.id}`,
360
+ * url: `wss://relay.evolu.dev?ownerId=${testAppOwner.id}`,
372
361
  * });
373
362
  * ```
374
363
  *
@@ -390,21 +379,15 @@ export declare const createOwnerWebSocketTransport: (config: {
390
379
  * ```ts
391
380
  * import {
392
381
  * assertEqual,
393
- * createAppOwner,
394
- * createOwnerSecret,
395
- * createRandomBytes,
396
382
  * parseOwnerIdFromOwnerWebSocketTransportUrl,
383
+ * testAppOwner,
397
384
  * } from "@evolu/common";
398
385
  *
399
- * // Create once, persist the mnemonic securely, and restore it on later runs.
400
- * const appOwner = createAppOwner(
401
- * createOwnerSecret({ randomBytes: createRandomBytes() }),
402
- * );
403
- * const url = `/sync?ownerId=${appOwner.id}`;
386
+ * const url = `/sync?ownerId=${testAppOwner.id}`;
404
387
  *
405
388
  * assertEqual(
406
389
  * parseOwnerIdFromOwnerWebSocketTransportUrl(url),
407
- * appOwner.id,
390
+ * testAppOwner.id,
408
391
  * );
409
392
  * assertEqual(
410
393
  * parseOwnerIdFromOwnerWebSocketTransportUrl("/sync?ownerId=invalid"),
@@ -1 +1 @@
1
- {"version":3,"file":"Owner.d.ts","sourceRoot":"","sources":["../../../src/local-first/Owner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Owner.d.ts","sourceRoot":"","sources":["../../../src/local-first/Owner.ts"],"names":[],"mappings":"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"}
@@ -222,38 +222,27 @@ export const createSharedReadonlyOwner = (sharedOwner) => ({
222
222
  *
223
223
  * ```ts
224
224
  * import {
225
- * AppName,
226
225
  * assertEqual,
227
- * assertTrue,
228
- * createAppOwner,
229
226
  * createEvolu,
230
227
  * createOwnerWebSocketTransport,
231
- * createOwnerSecret,
232
- * createRandomBytes,
233
- * id,
228
+ * testAppName,
229
+ * testAppOwner,
230
+ * testEvoluSchema,
234
231
  * } from "@evolu/common";
235
232
  *
236
- * // Create once, persist the mnemonic securely, and restore it on later runs.
237
- * const appOwner = createAppOwner(
238
- * createOwnerSecret({ randomBytes: createRandomBytes() }),
239
- * );
240
233
  * const transport = createOwnerWebSocketTransport({
241
234
  * url: "wss://relay.evolu.dev",
242
- * ownerId: appOwner.id,
235
+ * ownerId: testAppOwner.id,
236
+ * });
237
+ * const _createTodoEvolu = createEvolu(testEvoluSchema, {
238
+ * appName: testAppName,
239
+ * appOwner: testAppOwner,
240
+ * transports: [transport],
243
241
  * });
244
- * const createTodoEvolu = createEvolu(
245
- * { todo: { id: id("Todo") } },
246
- * {
247
- * appName: AppName.orThrow("OwnerTransportExample"),
248
- * appOwner,
249
- * transports: [transport],
250
- * },
251
- * );
252
242
  *
253
- * assertTrue(typeof createTodoEvolu === "function");
254
243
  * assertEqual(transport, {
255
244
  * type: "WebSocket",
256
- * url: `wss://relay.evolu.dev?ownerId=${appOwner.id}`,
245
+ * url: `wss://relay.evolu.dev?ownerId=${testAppOwner.id}`,
257
246
  * });
258
247
  * ```
259
248
  *
@@ -275,21 +264,15 @@ export const createOwnerWebSocketTransport = (config) => ({
275
264
  * ```ts
276
265
  * import {
277
266
  * assertEqual,
278
- * createAppOwner,
279
- * createOwnerSecret,
280
- * createRandomBytes,
281
267
  * parseOwnerIdFromOwnerWebSocketTransportUrl,
268
+ * testAppOwner,
282
269
  * } from "@evolu/common";
283
270
  *
284
- * // Create once, persist the mnemonic securely, and restore it on later runs.
285
- * const appOwner = createAppOwner(
286
- * createOwnerSecret({ randomBytes: createRandomBytes() }),
287
- * );
288
- * const url = `/sync?ownerId=${appOwner.id}`;
271
+ * const url = `/sync?ownerId=${testAppOwner.id}`;
289
272
  *
290
273
  * assertEqual(
291
274
  * parseOwnerIdFromOwnerWebSocketTransportUrl(url),
292
- * appOwner.id,
275
+ * testAppOwner.id,
293
276
  * );
294
277
  * assertEqual(
295
278
  * parseOwnerIdFromOwnerWebSocketTransportUrl("/sync?ownerId=invalid"),