orez 0.9.7 → 0.10.1

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 (249) hide show
  1. package/README.md +27 -19
  2. package/dist/config.d.ts +0 -4
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +0 -1
  5. package/dist/config.js.map +1 -1
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +5 -43
  9. package/dist/index.js.map +1 -1
  10. package/package.json +7 -71
  11. package/dist/cf-deploy/bundle.d.ts +0 -21
  12. package/dist/cf-deploy/bundle.d.ts.map +0 -1
  13. package/dist/cf-deploy/bundle.js +0 -347
  14. package/dist/cf-deploy/bundle.js.map +0 -1
  15. package/dist/cf-deploy/config.d.ts +0 -52
  16. package/dist/cf-deploy/config.d.ts.map +0 -1
  17. package/dist/cf-deploy/config.js +0 -23
  18. package/dist/cf-deploy/config.js.map +0 -1
  19. package/dist/cf-deploy/index.d.ts +0 -11
  20. package/dist/cf-deploy/index.d.ts.map +0 -1
  21. package/dist/cf-deploy/index.js +0 -17
  22. package/dist/cf-deploy/index.js.map +0 -1
  23. package/dist/cf-deploy/leaves.d.ts +0 -19
  24. package/dist/cf-deploy/leaves.d.ts.map +0 -1
  25. package/dist/cf-deploy/leaves.js +0 -109
  26. package/dist/cf-deploy/leaves.js.map +0 -1
  27. package/dist/cf-deploy/migration.d.ts +0 -40
  28. package/dist/cf-deploy/migration.d.ts.map +0 -1
  29. package/dist/cf-deploy/migration.js +0 -891
  30. package/dist/cf-deploy/migration.js.map +0 -1
  31. package/dist/cf-deploy/nativeMigrations.d.ts +0 -24
  32. package/dist/cf-deploy/nativeMigrations.d.ts.map +0 -1
  33. package/dist/cf-deploy/nativeMigrations.js +0 -185
  34. package/dist/cf-deploy/nativeMigrations.js.map +0 -1
  35. package/dist/cf-deploy/prune.d.ts +0 -14
  36. package/dist/cf-deploy/prune.d.ts.map +0 -1
  37. package/dist/cf-deploy/prune.js +0 -235
  38. package/dist/cf-deploy/prune.js.map +0 -1
  39. package/dist/cf-deploy/shims.d.ts +0 -13
  40. package/dist/cf-deploy/shims.d.ts.map +0 -1
  41. package/dist/cf-deploy/shims.js +0 -737
  42. package/dist/cf-deploy/shims.js.map +0 -1
  43. package/dist/cf-deploy/smoke.d.ts +0 -15
  44. package/dist/cf-deploy/smoke.d.ts.map +0 -1
  45. package/dist/cf-deploy/smoke.js +0 -141
  46. package/dist/cf-deploy/smoke.js.map +0 -1
  47. package/dist/cf-deploy/sources.d.ts +0 -9
  48. package/dist/cf-deploy/sources.d.ts.map +0 -1
  49. package/dist/cf-deploy/sources.js +0 -276
  50. package/dist/cf-deploy/sources.js.map +0 -1
  51. package/dist/cf-deploy/wrangler.d.ts +0 -6
  52. package/dist/cf-deploy/wrangler.d.ts.map +0 -1
  53. package/dist/cf-deploy/wrangler.js +0 -168
  54. package/dist/cf-deploy/wrangler.js.map +0 -1
  55. package/dist/cf-do/application-sql.d.ts +0 -49
  56. package/dist/cf-do/application-sql.d.ts.map +0 -1
  57. package/dist/cf-do/application-sql.js +0 -124
  58. package/dist/cf-do/application-sql.js.map +0 -1
  59. package/dist/cf-do/cdc.d.ts +0 -155
  60. package/dist/cf-do/cdc.d.ts.map +0 -1
  61. package/dist/cf-do/cdc.js +0 -719
  62. package/dist/cf-do/cdc.js.map +0 -1
  63. package/dist/cf-do/cursor-pull.d.ts +0 -27
  64. package/dist/cf-do/cursor-pull.d.ts.map +0 -1
  65. package/dist/cf-do/cursor-pull.js +0 -78
  66. package/dist/cf-do/cursor-pull.js.map +0 -1
  67. package/dist/cf-do/row-undo.d.ts +0 -36
  68. package/dist/cf-do/row-undo.d.ts.map +0 -1
  69. package/dist/cf-do/row-undo.js +0 -221
  70. package/dist/cf-do/row-undo.js.map +0 -1
  71. package/dist/cf-do/tx-journal.d.ts +0 -119
  72. package/dist/cf-do/tx-journal.d.ts.map +0 -1
  73. package/dist/cf-do/tx-journal.js +0 -718
  74. package/dist/cf-do/tx-journal.js.map +0 -1
  75. package/dist/cf-do/watermark.d.ts +0 -29
  76. package/dist/cf-do/watermark.d.ts.map +0 -1
  77. package/dist/cf-do/watermark.js +0 -105
  78. package/dist/cf-do/watermark.js.map +0 -1
  79. package/dist/cf-do/worker.d.ts +0 -287
  80. package/dist/cf-do/worker.d.ts.map +0 -1
  81. package/dist/cf-do/worker.js +0 -1961
  82. package/dist/cf-do/worker.js.map +0 -1
  83. package/dist/do-sql-tracking.d.ts +0 -104
  84. package/dist/do-sql-tracking.d.ts.map +0 -1
  85. package/dist/do-sql-tracking.js +0 -255
  86. package/dist/do-sql-tracking.js.map +0 -1
  87. package/dist/pg-proxy-do-backend.d.ts +0 -211
  88. package/dist/pg-proxy-do-backend.d.ts.map +0 -1
  89. package/dist/pg-proxy-do-backend.js +0 -7884
  90. package/dist/pg-proxy-do-backend.js.map +0 -1
  91. package/dist/pg-sqlite-compiler/catalog/seed.d.ts +0 -67
  92. package/dist/pg-sqlite-compiler/catalog/seed.d.ts.map +0 -1
  93. package/dist/pg-sqlite-compiler/catalog/seed.js +0 -436
  94. package/dist/pg-sqlite-compiler/catalog/seed.js.map +0 -1
  95. package/dist/pg-sqlite-compiler/compiler.d.ts +0 -17
  96. package/dist/pg-sqlite-compiler/compiler.d.ts.map +0 -1
  97. package/dist/pg-sqlite-compiler/compiler.js +0 -86
  98. package/dist/pg-sqlite-compiler/compiler.js.map +0 -1
  99. package/dist/pg-sqlite-compiler/index.d.ts +0 -2
  100. package/dist/pg-sqlite-compiler/index.d.ts.map +0 -1
  101. package/dist/pg-sqlite-compiler/index.js +0 -13
  102. package/dist/pg-sqlite-compiler/index.js.map +0 -1
  103. package/dist/pg-sqlite-compiler/passes/array.d.ts +0 -3
  104. package/dist/pg-sqlite-compiler/passes/array.d.ts.map +0 -1
  105. package/dist/pg-sqlite-compiler/passes/array.js +0 -223
  106. package/dist/pg-sqlite-compiler/passes/array.js.map +0 -1
  107. package/dist/pg-sqlite-compiler/passes/ast-utils.d.ts +0 -48
  108. package/dist/pg-sqlite-compiler/passes/ast-utils.d.ts.map +0 -1
  109. package/dist/pg-sqlite-compiler/passes/ast-utils.js +0 -93
  110. package/dist/pg-sqlite-compiler/passes/ast-utils.js.map +0 -1
  111. package/dist/pg-sqlite-compiler/passes/catalog.d.ts +0 -34
  112. package/dist/pg-sqlite-compiler/passes/catalog.d.ts.map +0 -1
  113. package/dist/pg-sqlite-compiler/passes/catalog.js +0 -30
  114. package/dist/pg-sqlite-compiler/passes/catalog.js.map +0 -1
  115. package/dist/pg-sqlite-compiler/passes/datetime.d.ts +0 -23
  116. package/dist/pg-sqlite-compiler/passes/datetime.d.ts.map +0 -1
  117. package/dist/pg-sqlite-compiler/passes/datetime.js +0 -55
  118. package/dist/pg-sqlite-compiler/passes/datetime.js.map +0 -1
  119. package/dist/pg-sqlite-compiler/passes/dml-cte.d.ts +0 -22
  120. package/dist/pg-sqlite-compiler/passes/dml-cte.d.ts.map +0 -1
  121. package/dist/pg-sqlite-compiler/passes/dml-cte.js +0 -161
  122. package/dist/pg-sqlite-compiler/passes/dml-cte.js.map +0 -1
  123. package/dist/pg-sqlite-compiler/passes/index.d.ts +0 -24
  124. package/dist/pg-sqlite-compiler/passes/index.d.ts.map +0 -1
  125. package/dist/pg-sqlite-compiler/passes/index.js +0 -52
  126. package/dist/pg-sqlite-compiler/passes/index.js.map +0 -1
  127. package/dist/pg-sqlite-compiler/passes/json-functions.d.ts +0 -3
  128. package/dist/pg-sqlite-compiler/passes/json-functions.d.ts.map +0 -1
  129. package/dist/pg-sqlite-compiler/passes/json-functions.js +0 -57
  130. package/dist/pg-sqlite-compiler/passes/json-functions.js.map +0 -1
  131. package/dist/pg-sqlite-compiler/passes/row-json.d.ts +0 -3
  132. package/dist/pg-sqlite-compiler/passes/row-json.d.ts.map +0 -1
  133. package/dist/pg-sqlite-compiler/passes/row-json.js +0 -230
  134. package/dist/pg-sqlite-compiler/passes/row-json.js.map +0 -1
  135. package/dist/pg-sqlite-compiler/passes/schema.d.ts +0 -4
  136. package/dist/pg-sqlite-compiler/passes/schema.d.ts.map +0 -1
  137. package/dist/pg-sqlite-compiler/passes/schema.js +0 -128
  138. package/dist/pg-sqlite-compiler/passes/schema.js.map +0 -1
  139. package/dist/pg-sqlite-compiler/passes/string-functions.d.ts +0 -11
  140. package/dist/pg-sqlite-compiler/passes/string-functions.d.ts.map +0 -1
  141. package/dist/pg-sqlite-compiler/passes/string-functions.js +0 -37
  142. package/dist/pg-sqlite-compiler/passes/string-functions.js.map +0 -1
  143. package/dist/pg-sqlite-compiler/passes/types.d.ts +0 -41
  144. package/dist/pg-sqlite-compiler/passes/types.d.ts.map +0 -1
  145. package/dist/pg-sqlite-compiler/passes/types.js +0 -115
  146. package/dist/pg-sqlite-compiler/passes/types.js.map +0 -1
  147. package/dist/pg-sqlite-compiler/passes/unsupported.d.ts +0 -3
  148. package/dist/pg-sqlite-compiler/passes/unsupported.d.ts.map +0 -1
  149. package/dist/pg-sqlite-compiler/passes/unsupported.js +0 -57
  150. package/dist/pg-sqlite-compiler/passes/unsupported.js.map +0 -1
  151. package/dist/pg-sqlite-compiler/test/oracle.d.ts +0 -34
  152. package/dist/pg-sqlite-compiler/test/oracle.d.ts.map +0 -1
  153. package/dist/pg-sqlite-compiler/test/oracle.js +0 -204
  154. package/dist/pg-sqlite-compiler/test/oracle.js.map +0 -1
  155. package/dist/pg-sqlite-compiler/types.d.ts +0 -66
  156. package/dist/pg-sqlite-compiler/types.d.ts.map +0 -1
  157. package/dist/pg-sqlite-compiler/types.js +0 -2
  158. package/dist/pg-sqlite-compiler/types.js.map +0 -1
  159. package/dist/sync-browser-host/generated/sqlite3-browser.wasm +0 -0
  160. package/dist/sync-browser-host/generated/sync_wasm.js +0 -922
  161. package/dist/sync-browser-host/generated/sync_wasm_bg.wasm +0 -0
  162. package/dist/sync-browser-host/host.d.ts +0 -10
  163. package/dist/sync-browser-host/host.d.ts.map +0 -1
  164. package/dist/sync-browser-host/host.js +0 -496
  165. package/dist/sync-browser-host/host.js.map +0 -1
  166. package/dist/sync-browser-host/idb-snapshot.d.ts +0 -11
  167. package/dist/sync-browser-host/idb-snapshot.d.ts.map +0 -1
  168. package/dist/sync-browser-host/idb-snapshot.js +0 -122
  169. package/dist/sync-browser-host/idb-snapshot.js.map +0 -1
  170. package/dist/sync-browser-host/index.d.ts +0 -5
  171. package/dist/sync-browser-host/index.d.ts.map +0 -1
  172. package/dist/sync-browser-host/index.js +0 -5
  173. package/dist/sync-browser-host/index.js.map +0 -1
  174. package/dist/sync-browser-host/message-port.d.ts +0 -7
  175. package/dist/sync-browser-host/message-port.d.ts.map +0 -1
  176. package/dist/sync-browser-host/message-port.js +0 -188
  177. package/dist/sync-browser-host/message-port.js.map +0 -1
  178. package/dist/sync-browser-host/sqlite-adapter.d.ts +0 -67
  179. package/dist/sync-browser-host/sqlite-adapter.d.ts.map +0 -1
  180. package/dist/sync-browser-host/sqlite-adapter.js +0 -145
  181. package/dist/sync-browser-host/sqlite-adapter.js.map +0 -1
  182. package/dist/sync-browser-host/types.d.ts +0 -52
  183. package/dist/sync-browser-host/types.d.ts.map +0 -1
  184. package/dist/sync-browser-host/types.js +0 -2
  185. package/dist/sync-browser-host/types.js.map +0 -1
  186. package/dist/sync-cf-host.d.ts +0 -2
  187. package/dist/sync-cf-host.d.ts.map +0 -1
  188. package/dist/sync-cf-host.js +0 -2
  189. package/dist/sync-cf-host.js.map +0 -1
  190. package/dist/sync-executor.d.ts +0 -2
  191. package/dist/sync-executor.d.ts.map +0 -1
  192. package/dist/sync-executor.js +0 -2
  193. package/dist/sync-executor.js.map +0 -1
  194. package/dist/wake.d.ts +0 -22
  195. package/dist/wake.d.ts.map +0 -1
  196. package/dist/wake.js +0 -114
  197. package/dist/wake.js.map +0 -1
  198. package/dist/worker/cf-do-shim.d.ts +0 -55
  199. package/dist/worker/cf-do-shim.d.ts.map +0 -1
  200. package/dist/worker/cf-do-shim.js +0 -58
  201. package/dist/worker/cf-do-shim.js.map +0 -1
  202. package/dist/worker/cf-patches.d.ts +0 -43
  203. package/dist/worker/cf-patches.d.ts.map +0 -1
  204. package/dist/worker/cf-patches.js +0 -840
  205. package/dist/worker/cf-patches.js.map +0 -1
  206. package/dist/worker/local-sql-backend.d.ts +0 -35
  207. package/dist/worker/local-sql-backend.d.ts.map +0 -1
  208. package/dist/worker/local-sql-backend.js +0 -217
  209. package/dist/worker/local-sql-backend.js.map +0 -1
  210. package/dist/worker/zero-cache-embed-cf.d.ts +0 -92
  211. package/dist/worker/zero-cache-embed-cf.d.ts.map +0 -1
  212. package/dist/worker/zero-cache-embed-cf.js +0 -764
  213. package/dist/worker/zero-cache-embed-cf.js.map +0 -1
  214. package/dist/worker/zero-sql-write-circuit.d.ts +0 -46
  215. package/dist/worker/zero-sql-write-circuit.d.ts.map +0 -1
  216. package/dist/worker/zero-sql-write-circuit.js +0 -161
  217. package/dist/worker/zero-sql-write-circuit.js.map +0 -1
  218. package/dist/zero-http/encrypted-column-codec.d.ts +0 -46
  219. package/dist/zero-http/encrypted-column-codec.d.ts.map +0 -1
  220. package/dist/zero-http/encrypted-column-codec.js +0 -676
  221. package/dist/zero-http/encrypted-column-codec.js.map +0 -1
  222. package/dist/zero-http/encrypted-column-conformance.d.ts +0 -7
  223. package/dist/zero-http/encrypted-column-conformance.d.ts.map +0 -1
  224. package/dist/zero-http/encrypted-column-conformance.js +0 -161
  225. package/dist/zero-http/encrypted-column-conformance.js.map +0 -1
  226. package/dist/zero-http/fixture-schema.d.ts +0 -127
  227. package/dist/zero-http/fixture-schema.d.ts.map +0 -1
  228. package/dist/zero-http/fixture-schema.js +0 -56
  229. package/dist/zero-http/fixture-schema.js.map +0 -1
  230. package/dist/zero-http/mount.d.ts +0 -71
  231. package/dist/zero-http/mount.d.ts.map +0 -1
  232. package/dist/zero-http/mount.js +0 -594
  233. package/dist/zero-http/mount.js.map +0 -1
  234. package/dist/zero-http/payload-codec.d.ts +0 -91
  235. package/dist/zero-http/payload-codec.d.ts.map +0 -1
  236. package/dist/zero-http/payload-codec.js +0 -10
  237. package/dist/zero-http/payload-codec.js.map +0 -1
  238. package/dist/zero-http/server.d.ts +0 -16
  239. package/dist/zero-http/server.d.ts.map +0 -1
  240. package/dist/zero-http/server.js +0 -270
  241. package/dist/zero-http/server.js.map +0 -1
  242. package/dist/zero-http/test-harness.d.ts +0 -32
  243. package/dist/zero-http/test-harness.d.ts.map +0 -1
  244. package/dist/zero-http/test-harness.js +0 -77
  245. package/dist/zero-http/test-harness.js.map +0 -1
  246. package/dist/zero-http/transport.d.ts +0 -71
  247. package/dist/zero-http/transport.d.ts.map +0 -1
  248. package/dist/zero-http/transport.js +0 -1106
  249. package/dist/zero-http/transport.js.map +0 -1
@@ -1,10 +0,0 @@
1
- import type { BrowserSyncHost, BrowserSyncHostConfig } from './types.js';
2
- import type { Schema } from '@rocicorp/zero';
3
- import type { AuthData } from 'orez-sync-executor';
4
- export type BrowserHostTestFaultPoint = 'before_mutation' | 'after_app_write_before_sqlite_commit' | 'after_sqlite_commit_before_idb_commit' | 'after_idb_commit_before_response' | 'during_response_delivery';
5
- export type BrowserHostTestHooks = {
6
- reach(point: BrowserHostTestFaultPoint): void | Promise<void>;
7
- };
8
- export declare function createBrowserSyncHostInternal<S extends Schema, A extends AuthData>(config: BrowserSyncHostConfig<S, A>, hooks?: BrowserHostTestHooks): Promise<BrowserSyncHost<S>>;
9
- export declare function createBrowserSyncHost<S extends Schema, A extends AuthData>(config: BrowserSyncHostConfig<S, A>): Promise<BrowserSyncHost<S>>;
10
- //# sourceMappingURL=host.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../packages/sync-browser-host/src/host.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAY,MAAM,YAAY,CAAA;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAGV,QAAQ,EAOT,MAAM,oBAAoB,CAAA;AAO3B,MAAM,MAAM,yBAAyB,GACjC,iBAAiB,GACjB,sCAAsC,GACtC,uCAAuC,GACvC,kCAAkC,GAClC,0BAA0B,CAAA;AAE9B,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9D,CAAA;AA2kBD,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,QAAQ,EAChF,MAAM,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EACnC,KAAK,CAAC,EAAE,oBAAoB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAE7B;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,QAAQ,EACxE,MAAM,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,GAClC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAE7B"}
@@ -1,496 +0,0 @@
1
- import createSqliteModule from 'bedrock-sqlite/browser';
2
- import { createSyncExecutor } from 'orez-sync-executor/core';
3
- import { engine_compile_query, engine_handle_pull, engine_handle_query_pull, engine_init_query_schema, engine_init_schema, engine_prune, } from './generated/sync_wasm.js';
4
- import initSyncWasm from './generated/sync_wasm.js';
5
- import { IndexedDbSnapshotStore } from './idb-snapshot.js';
6
- import { BedrockDirectSql, BedrockMutatorSql, BedrockSyncDb, } from './sqlite-adapter.js';
7
- const DEFAULT_CAPS = {
8
- maxChangeRows: 10_000,
9
- maxChangeBytes: 2_000_000,
10
- };
11
- let syncWasmReady;
12
- function initializeSyncWasm(url) {
13
- return (syncWasmReady ??= initSyncWasm({ module_or_path: url }).then(() => undefined));
14
- }
15
- function json(value, status = 200) {
16
- return Response.json(value, {
17
- status,
18
- headers: { 'cache-control': 'no-store' },
19
- });
20
- }
21
- function errorMessage(error) {
22
- return error instanceof Error ? error.message : String(error);
23
- }
24
- function statusOf(error) {
25
- if (typeof error === 'object' && error !== null && 'status' in error) {
26
- const status = Number(error.status);
27
- if (Number.isInteger(status) && status >= 400 && status <= 599)
28
- return status;
29
- }
30
- return 500;
31
- }
32
- function requestError(message, status = 400) {
33
- return Object.assign(new Error(message), { status });
34
- }
35
- // clients always ship their desired queries and treat the server's got ack as
36
- // authoritative. the query-aware engine acks through its own tracking; a
37
- // non-query-aware host syncs every visible row, so its ack is an echo of the
38
- // hash-level desired delta in the same response that carries the rows.
39
- function withGotQueriesAck(body, queryAware, response) {
40
- if (queryAware)
41
- return response;
42
- const queries = body.queries;
43
- if (!queries || typeof queries.version !== 'number' || !Array.isArray(queries.patch)) {
44
- return response;
45
- }
46
- if (!response || typeof response !== 'object')
47
- return response;
48
- return {
49
- ...response,
50
- gotQueries: {
51
- version: queries.version,
52
- patch: queries.patch.map((op) => {
53
- const entry = op;
54
- return entry.op === 'put' ? { op: 'put', hash: entry.hash } : op;
55
- }),
56
- },
57
- };
58
- }
59
- async function requestObject(request) {
60
- let value;
61
- try {
62
- value = await request.json();
63
- }
64
- catch {
65
- throw requestError('invalid JSON request body');
66
- }
67
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
68
- throw requestError('request body must be a JSON object');
69
- }
70
- return value;
71
- }
72
- function validateConfig(config) {
73
- if (!config.storageKey)
74
- throw new TypeError('storageKey must not be empty');
75
- if (!config.mutators)
76
- throw new TypeError('mutators are required');
77
- if (config.queryAware && !config.resolveQuery) {
78
- throw new TypeError('queryAware requires resolveQuery');
79
- }
80
- const caps = { ...DEFAULT_CAPS, ...config.caps };
81
- for (const [name, value] of Object.entries(caps)) {
82
- if (!Number.isSafeInteger(value) || value < 1) {
83
- throw new TypeError(`caps.${name} must be a positive safe integer`);
84
- }
85
- }
86
- if (config.transactionQueryBudget) {
87
- for (const [name, value] of Object.entries(config.transactionQueryBudget)) {
88
- if (!Number.isSafeInteger(value) || Number(value) < 1) {
89
- throw new TypeError(`transactionQueryBudget.${name} must be a positive safe integer`);
90
- }
91
- }
92
- }
93
- const retainChanges = config.retainChanges ?? 4_096;
94
- if (!Number.isSafeInteger(retainChanges) || retainChanges < 0) {
95
- throw new TypeError('retainChanges must be a non-negative safe integer');
96
- }
97
- return caps;
98
- }
99
- class OperationQueue {
100
- #tail = Promise.resolve();
101
- run(operation) {
102
- const result = this.#tail.then(operation);
103
- this.#tail = result.then(() => undefined, () => undefined);
104
- return result;
105
- }
106
- async drain() {
107
- await this.#tail;
108
- }
109
- }
110
- class BrowserSyncHostImpl {
111
- config;
112
- caps;
113
- module;
114
- db;
115
- snapshots;
116
- hooks;
117
- executor;
118
- #queue = new OperationQueue();
119
- #listeners = new Set();
120
- #directSql;
121
- #engineDb;
122
- #mutatorSql;
123
- #rawExecutor;
124
- #retainChanges;
125
- #executorTransactionKind = 'direct';
126
- #fatalError;
127
- #closed = false;
128
- #closePromise;
129
- constructor(config, caps, module, db, snapshots, hooks) {
130
- this.config = config;
131
- this.caps = caps;
132
- this.module = module;
133
- this.db = db;
134
- this.snapshots = snapshots;
135
- this.hooks = hooks;
136
- this.#directSql = new BedrockDirectSql(db);
137
- this.#engineDb = new BedrockSyncDb(db);
138
- this.#mutatorSql = new BedrockMutatorSql(this.#directSql, (ast, format) => engine_compile_query(config.schema, ast, format), config.transactionQueryBudget);
139
- const database = {
140
- dialect: 'sqlite',
141
- transaction: async (work) => {
142
- let applicationWrite = false;
143
- const tx = {
144
- exec: async (sql, params, metadata) => {
145
- if (metadata !== undefined ||
146
- (!/^\s*CREATE\s+(?:SCHEMA|TABLE)\b/i.test(sql) &&
147
- !/\b_zsync_[A-Za-z0-9_]+\b/.test(sql))) {
148
- applicationWrite = true;
149
- }
150
- return this.#mutatorSql.exec(sql, params, metadata);
151
- },
152
- query: (sql, params) => this.#mutatorSql.query(sql, params),
153
- queryAst: (ast, format, queryName) => this.#mutatorSql.queryAst(ast, format, queryName),
154
- };
155
- return this.#writeTransaction(() => (applicationWrite ? this.#executorTransactionKind : 'maintenance'), async () => {
156
- const value = await work(tx);
157
- if (applicationWrite && this.#executorTransactionKind === 'mutation') {
158
- await this.#reach('after_app_write_before_sqlite_commit');
159
- }
160
- return value;
161
- });
162
- },
163
- query: (sql, params) => Promise.resolve(this.#directSql.query(sql, params)),
164
- };
165
- this.#rawExecutor = createSyncExecutor({
166
- database,
167
- effects: {
168
- runBackground: (promise) => promise,
169
- report: (error) => console.error('browser sync deferred effect failed', error),
170
- },
171
- mutators: config.mutators,
172
- schema: config.schema,
173
- });
174
- this.executor = {
175
- schema: config.schema,
176
- push: (body, claims) => {
177
- this.#assertAccepting();
178
- return this.#queue.run(() => this.#runExecutorPush(body, claims, false));
179
- },
180
- execute: (name, args, claims) => {
181
- this.#assertAccepting();
182
- return this.#queue.run(async () => {
183
- this.#executorTransactionKind = 'direct';
184
- await this.#rawExecutor.execute(name, args, claims);
185
- this.#notifyDataChanged();
186
- });
187
- },
188
- transaction: (claims, work) => {
189
- this.#assertAccepting();
190
- return this.#queue.run(async () => {
191
- this.#executorTransactionKind = 'direct';
192
- const value = await this.#rawExecutor.transaction(claims, work);
193
- this.#notifyDataChanged();
194
- return value;
195
- });
196
- },
197
- query: (claims, work) => {
198
- this.#assertAccepting();
199
- return this.#queue.run(() => this.#rawExecutor.query(claims, work));
200
- },
201
- };
202
- this.#retainChanges = String(config.retainChanges ?? 4_096);
203
- }
204
- static async create(config, hooks) {
205
- const caps = validateConfig(config);
206
- const sqliteWasmUrl = config.assets?.sqliteWasmUrl ??
207
- new URL('./generated/sqlite3-browser.wasm', import.meta.url);
208
- const syncWasmUrl = config.assets?.syncWasmUrl ??
209
- new URL('./generated/sync_wasm_bg.wasm', import.meta.url);
210
- await initializeSyncWasm(syncWasmUrl);
211
- const module = (await createSqliteModule({
212
- locateFile: (path) => path.endsWith('.wasm') ? String(sqliteWasmUrl) : path,
213
- }));
214
- if (!module._memfs?.files) {
215
- throw new Error('Bedrock browser build does not expose its VFS snapshot surface');
216
- }
217
- const snapshots = new IndexedDbSnapshotStore(config.storageKey);
218
- await snapshots.restore(module);
219
- const db = new module.Database('/project.db');
220
- const journalMode = String(db.pragma('journal_mode = DELETE', { simple: true }));
221
- if (journalMode.toLowerCase() !== 'delete') {
222
- db.close();
223
- await snapshots.close();
224
- throw new Error(`Bedrock SQLite did not enter DELETE journal mode: ${journalMode}`);
225
- }
226
- db.pragma('foreign_keys = ON');
227
- const host = new BrowserSyncHostImpl(config, caps, module, db, snapshots, hooks);
228
- try {
229
- await host.#writeTransaction('bootstrap', async () => {
230
- config.initialize(host.#directSql);
231
- engine_init_schema(host.#engineDb, config.schema);
232
- if (config.queryAware || config.resolveQuery) {
233
- engine_init_query_schema(host.#engineDb);
234
- }
235
- });
236
- return host;
237
- }
238
- catch (error) {
239
- await host.#closeResources();
240
- throw error;
241
- }
242
- }
243
- #assertAvailable() {
244
- if (this.#fatalError)
245
- throw this.#fatalError;
246
- if (this.#closed)
247
- throw new Error('browser sync host is closed');
248
- }
249
- #assertAccepting() {
250
- if (this.#closePromise)
251
- throw new Error('browser sync host is closed');
252
- this.#assertAvailable();
253
- }
254
- async #reach(point) {
255
- await this.hooks?.reach(point);
256
- }
257
- async #checkpoint() {
258
- try {
259
- await this.snapshots.checkpoint(this.module);
260
- }
261
- catch (error) {
262
- const fatal = new Error(`browser database checkpoint failed; host terminated: ${errorMessage(error)}`, { cause: error });
263
- this.#fatalError = fatal;
264
- this.db.close();
265
- throw fatal;
266
- }
267
- }
268
- async #writeTransaction(kind, operation) {
269
- this.#assertAvailable();
270
- this.db.exec('BEGIN');
271
- let value;
272
- try {
273
- value = await operation();
274
- this.db.exec('COMMIT');
275
- }
276
- catch (error) {
277
- if (this.db.inTransaction)
278
- this.db.exec('ROLLBACK');
279
- throw error;
280
- }
281
- const completedKind = typeof kind === 'function' ? kind() : kind;
282
- if (completedKind === 'mutation') {
283
- await this.#reach('after_sqlite_commit_before_idb_commit');
284
- }
285
- await this.#checkpoint();
286
- return value;
287
- }
288
- async #auth(request) {
289
- const authData = await this.config.authenticate(request);
290
- if (!authData || typeof authData.id !== 'string' || authData.id.length === 0) {
291
- throw requestError('missing authentication', 401);
292
- }
293
- if (!(await this.config.authorize(request, authData, this.config.storageKey))) {
294
- throw requestError('forbidden', 403);
295
- }
296
- const claims = { userID: authData?.id ?? 'anon' };
297
- if (authData)
298
- claims.authData = authData;
299
- return { authData, claims: claims };
300
- }
301
- async #runExecutorPush(body, claims, testHooks) {
302
- this.#assertAvailable();
303
- this.#executorTransactionKind = 'mutation';
304
- let result;
305
- try {
306
- result = await this.#rawExecutor.push(body, claims);
307
- }
308
- finally {
309
- this.#executorTransactionKind = 'direct';
310
- }
311
- const mutationResults = 'mutations' in result.pushResponse ? result.pushResponse.mutations : [];
312
- if (mutationResults.length > 0) {
313
- await this.#writeTransaction('maintenance', () => engine_prune(this.#engineDb, this.#retainChanges));
314
- }
315
- const changed = mutationResults.some((mutation) => !('error' in mutation.result) || mutation.result.error !== 'alreadyProcessed');
316
- if (changed)
317
- this.#notifyDataChanged();
318
- if (testHooks && mutationResults.length > 0) {
319
- await this.#reach('after_idb_commit_before_response');
320
- }
321
- return result;
322
- }
323
- #visibility(claims) {
324
- if (!this.config.visibility)
325
- return null;
326
- return {
327
- rowLocal: typeof this.config.visibility.rowLocal === 'function'
328
- ? this.config.visibility.rowLocal(claims)
329
- : this.config.visibility.rowLocal,
330
- filters: Object.keys(this.config.schema.tables).flatMap((table) => {
331
- const filter = this.config.visibility?.filter(table, claims);
332
- return filter
333
- ? [
334
- filter.kind === 'expression'
335
- ? { kind: 'expression', table, expression: filter.expression }
336
- : {
337
- kind: 'raw',
338
- table,
339
- sql: filter.sql,
340
- params: [...(filter.params ?? [])],
341
- },
342
- ]
343
- : [];
344
- }),
345
- };
346
- }
347
- async #resolvePullQueries(body, authData, queryAware, transformVersion) {
348
- if (!queryAware || !body.queries)
349
- return body;
350
- const queries = body.queries;
351
- if (!Array.isArray(queries.patch))
352
- return body;
353
- const patch = [];
354
- for (const operation of queries.patch) {
355
- if (!operation || typeof operation !== 'object') {
356
- patch.push(operation);
357
- continue;
358
- }
359
- const entry = operation;
360
- if (entry.op !== 'put') {
361
- patch.push(operation);
362
- continue;
363
- }
364
- if (!this.config.resolveQuery || typeof entry.name !== 'string') {
365
- throw requestError('query put requires a server-resolved named query');
366
- }
367
- if (!Array.isArray(entry.args)) {
368
- throw requestError('named query args must be an array');
369
- }
370
- let ast;
371
- try {
372
- ast = await this.config.resolveQuery(entry.name, entry.args, authData);
373
- }
374
- catch {
375
- throw requestError(`unknown or unsupported named query: ${entry.name}`);
376
- }
377
- patch.push({ op: 'put', hash: entry.hash, ast, transformVersion });
378
- }
379
- return { ...body, queries: { ...queries, patch } };
380
- }
381
- async handlePull(request) {
382
- try {
383
- this.#assertAccepting();
384
- const { authData, claims } = await this.#auth(request);
385
- const input = await requestObject(request);
386
- return await this.#queue.run(async () => {
387
- this.#assertAvailable();
388
- const queryAware = typeof this.config.queryAware === 'function'
389
- ? this.config.queryAware(authData)
390
- : (this.config.queryAware ?? Boolean(this.config.resolveQuery));
391
- const transformVersion = queryAware
392
- ? typeof this.config.queryTransformVersion === 'function'
393
- ? this.config.queryTransformVersion(authData)
394
- : (this.config.queryTransformVersion ?? 0)
395
- : 0;
396
- if (!Number.isSafeInteger(transformVersion) || transformVersion < 0) {
397
- throw new TypeError('queryTransformVersion must be a non-negative safe integer');
398
- }
399
- let body = await this.#resolvePullQueries(input, authData, queryAware, transformVersion);
400
- if (queryAware) {
401
- body = { ...body, _serverQueryTransformVersion: transformVersion };
402
- }
403
- const response = await this.#writeTransaction('pull', () => queryAware
404
- ? engine_handle_query_pull(this.#engineDb, this.config.schema, this.#retainChanges, body, claims.userID)
405
- : engine_handle_pull(this.#engineDb, this.config.schema, this.#visibility(claims), this.caps, this.#retainChanges, body, claims.userID));
406
- return json(withGotQueriesAck(body, queryAware, response));
407
- });
408
- }
409
- catch (error) {
410
- return json({ error: errorMessage(error) }, statusOf(error));
411
- }
412
- }
413
- async handlePush(request) {
414
- try {
415
- this.#assertAccepting();
416
- const { claims } = await this.#auth(request);
417
- const body = await requestObject(request);
418
- return await this.#queue.run(async () => {
419
- this.#assertAvailable();
420
- await this.#reach('before_mutation');
421
- return json(await this.#runExecutorPush(body, claims, true));
422
- });
423
- }
424
- catch (error) {
425
- return json({ error: errorMessage(error) }, statusOf(error));
426
- }
427
- }
428
- fetch(request) {
429
- const pathname = new URL(request.url).pathname;
430
- if (pathname === '/pull' && request.method === 'POST') {
431
- return this.handlePull(request);
432
- }
433
- if (pathname === '/push' && request.method === 'POST') {
434
- return this.handlePush(request);
435
- }
436
- return Promise.resolve(json({ error: 'not found' }, 404));
437
- }
438
- async query(sql, params = []) {
439
- this.#assertAccepting();
440
- return await this.#queue.run(() => {
441
- this.#assertAvailable();
442
- return this.#directSql.query(sql, params);
443
- });
444
- }
445
- async exec(sql, params = [], metadata) {
446
- this.#assertAccepting();
447
- return await this.#queue.run(async () => {
448
- const result = await this.#writeTransaction('direct', () => this.#directSql.exec(sql, params, metadata));
449
- this.#notifyDataChanged();
450
- return result;
451
- });
452
- }
453
- subscribe(listener) {
454
- this.#assertAccepting();
455
- this.#listeners.add(listener);
456
- return () => this.#listeners.delete(listener);
457
- }
458
- #notifyDataChanged() {
459
- try {
460
- this.config.onDataChanged?.();
461
- }
462
- catch (error) {
463
- console.error('browser sync data-changed callback failed', error);
464
- }
465
- for (const listener of this.#listeners) {
466
- try {
467
- listener();
468
- }
469
- catch (error) {
470
- console.error('browser sync data-changed listener failed', error);
471
- }
472
- }
473
- }
474
- async #closeResources() {
475
- this.#listeners.clear();
476
- if (this.db.open)
477
- this.db.close();
478
- await this.snapshots.close();
479
- }
480
- async #finishClose() {
481
- await this.#queue.drain();
482
- this.#closed = true;
483
- await this.#closeResources();
484
- }
485
- close() {
486
- this.#closePromise ??= this.#finishClose();
487
- return this.#closePromise;
488
- }
489
- }
490
- export function createBrowserSyncHostInternal(config, hooks) {
491
- return BrowserSyncHostImpl.create(config, hooks);
492
- }
493
- export function createBrowserSyncHost(config) {
494
- return createBrowserSyncHostInternal(config);
495
- }
496
- //# sourceMappingURL=host.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"host.js","sourceRoot":"","sources":["../../packages/sync-browser-host/src/host.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { BedrockBrowserModule } from './sqlite-adapter.js';
2
- export declare function deleteBrowserSyncHostSnapshot(storageKey: string): Promise<void>;
3
- export declare class IndexedDbSnapshotStore {
4
- #private;
5
- readonly storageKey: string;
6
- constructor(storageKey: string);
7
- restore(module: BedrockBrowserModule): Promise<boolean>;
8
- checkpoint(module: BedrockBrowserModule): Promise<void>;
9
- close(): Promise<void>;
10
- }
11
- //# sourceMappingURL=idb-snapshot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"idb-snapshot.d.ts","sourceRoot":"","sources":["../../packages/sync-browser-host/src/idb-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAwD/D,wBAAsB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWrF;AAoCD,qBAAa,sBAAsB;;IAGrB,QAAQ,CAAC,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;IAKjC,OAAO,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBvD,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BvD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}