orez-lite 0.9.7

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 (190) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +12 -0
  3. package/dist/browser/generated/sqlite3-browser.wasm +0 -0
  4. package/dist/browser/generated/sync_wasm.js +922 -0
  5. package/dist/browser/generated/sync_wasm_bg.wasm +0 -0
  6. package/dist/browser/host.d.ts +10 -0
  7. package/dist/browser/host.d.ts.map +1 -0
  8. package/dist/browser/host.js +496 -0
  9. package/dist/browser/host.js.map +1 -0
  10. package/dist/browser/idb-snapshot.d.ts +11 -0
  11. package/dist/browser/idb-snapshot.d.ts.map +1 -0
  12. package/dist/browser/idb-snapshot.js +122 -0
  13. package/dist/browser/idb-snapshot.js.map +1 -0
  14. package/dist/browser/index.d.ts +5 -0
  15. package/dist/browser/index.d.ts.map +1 -0
  16. package/dist/browser/index.js +5 -0
  17. package/dist/browser/index.js.map +1 -0
  18. package/dist/browser/message-port.d.ts +7 -0
  19. package/dist/browser/message-port.d.ts.map +1 -0
  20. package/dist/browser/message-port.js +188 -0
  21. package/dist/browser/message-port.js.map +1 -0
  22. package/dist/browser/sqlite-adapter.d.ts +53 -0
  23. package/dist/browser/sqlite-adapter.d.ts.map +1 -0
  24. package/dist/browser/sqlite-adapter.js +126 -0
  25. package/dist/browser/sqlite-adapter.js.map +1 -0
  26. package/dist/browser/types.d.ts +52 -0
  27. package/dist/browser/types.d.ts.map +1 -0
  28. package/dist/browser/types.js +2 -0
  29. package/dist/browser/types.js.map +1 -0
  30. package/dist/cf-deploy/bundle.d.ts +18 -0
  31. package/dist/cf-deploy/bundle.d.ts.map +1 -0
  32. package/dist/cf-deploy/bundle.js +273 -0
  33. package/dist/cf-deploy/bundle.js.map +1 -0
  34. package/dist/cf-deploy/config.d.ts +12 -0
  35. package/dist/cf-deploy/config.d.ts.map +1 -0
  36. package/dist/cf-deploy/config.js +11 -0
  37. package/dist/cf-deploy/config.js.map +1 -0
  38. package/dist/cf-deploy/index.d.ts +10 -0
  39. package/dist/cf-deploy/index.d.ts.map +1 -0
  40. package/dist/cf-deploy/index.js +12 -0
  41. package/dist/cf-deploy/index.js.map +1 -0
  42. package/dist/cf-deploy/leaves.d.ts +8 -0
  43. package/dist/cf-deploy/leaves.d.ts.map +1 -0
  44. package/dist/cf-deploy/leaves.js +66 -0
  45. package/dist/cf-deploy/leaves.js.map +1 -0
  46. package/dist/cf-deploy/migration.d.ts +27 -0
  47. package/dist/cf-deploy/migration.d.ts.map +1 -0
  48. package/dist/cf-deploy/migration.js +734 -0
  49. package/dist/cf-deploy/migration.js.map +1 -0
  50. package/dist/cf-deploy/nativeMigrations.d.ts +24 -0
  51. package/dist/cf-deploy/nativeMigrations.d.ts.map +1 -0
  52. package/dist/cf-deploy/nativeMigrations.js +185 -0
  53. package/dist/cf-deploy/nativeMigrations.js.map +1 -0
  54. package/dist/cf-deploy/prune.d.ts +14 -0
  55. package/dist/cf-deploy/prune.d.ts.map +1 -0
  56. package/dist/cf-deploy/prune.js +235 -0
  57. package/dist/cf-deploy/prune.js.map +1 -0
  58. package/dist/cf-deploy/readiness.d.ts +11 -0
  59. package/dist/cf-deploy/readiness.d.ts.map +1 -0
  60. package/dist/cf-deploy/readiness.js +56 -0
  61. package/dist/cf-deploy/readiness.js.map +1 -0
  62. package/dist/cf-deploy/sources.d.ts +3 -0
  63. package/dist/cf-deploy/sources.d.ts.map +1 -0
  64. package/dist/cf-deploy/sources.js +24 -0
  65. package/dist/cf-deploy/sources.js.map +1 -0
  66. package/dist/cf-deploy/wrangler.d.ts +9 -0
  67. package/dist/cf-deploy/wrangler.d.ts.map +1 -0
  68. package/dist/cf-deploy/wrangler.js +48 -0
  69. package/dist/cf-deploy/wrangler.js.map +1 -0
  70. package/dist/cf-do/application-sql.d.ts +49 -0
  71. package/dist/cf-do/application-sql.d.ts.map +1 -0
  72. package/dist/cf-do/application-sql.js +124 -0
  73. package/dist/cf-do/application-sql.js.map +1 -0
  74. package/dist/cf-do/cdc.d.ts +155 -0
  75. package/dist/cf-do/cdc.d.ts.map +1 -0
  76. package/dist/cf-do/cdc.js +723 -0
  77. package/dist/cf-do/cdc.js.map +1 -0
  78. package/dist/cf-do/cursor-pull.d.ts +27 -0
  79. package/dist/cf-do/cursor-pull.d.ts.map +1 -0
  80. package/dist/cf-do/cursor-pull.js +78 -0
  81. package/dist/cf-do/cursor-pull.js.map +1 -0
  82. package/dist/cf-do/lite-data-worker.d.ts +171 -0
  83. package/dist/cf-do/lite-data-worker.d.ts.map +1 -0
  84. package/dist/cf-do/lite-data-worker.js +685 -0
  85. package/dist/cf-do/lite-data-worker.js.map +1 -0
  86. package/dist/cf-do/namespace-backup.d.ts +85 -0
  87. package/dist/cf-do/namespace-backup.d.ts.map +1 -0
  88. package/dist/cf-do/namespace-backup.js +470 -0
  89. package/dist/cf-do/namespace-backup.js.map +1 -0
  90. package/dist/cf-do/row-undo.d.ts +36 -0
  91. package/dist/cf-do/row-undo.d.ts.map +1 -0
  92. package/dist/cf-do/row-undo.js +221 -0
  93. package/dist/cf-do/row-undo.js.map +1 -0
  94. package/dist/cf-do/tx-journal.d.ts +118 -0
  95. package/dist/cf-do/tx-journal.d.ts.map +1 -0
  96. package/dist/cf-do/tx-journal.js +717 -0
  97. package/dist/cf-do/tx-journal.js.map +1 -0
  98. package/dist/cf-do/watermark.d.ts +29 -0
  99. package/dist/cf-do/watermark.d.ts.map +1 -0
  100. package/dist/cf-do/watermark.js +105 -0
  101. package/dist/cf-do/watermark.js.map +1 -0
  102. package/dist/cf-do/worker.d.ts +282 -0
  103. package/dist/cf-do/worker.d.ts.map +1 -0
  104. package/dist/cf-do/worker.js +1999 -0
  105. package/dist/cf-do/worker.js.map +1 -0
  106. package/dist/client.d.ts +2 -0
  107. package/dist/client.d.ts.map +1 -0
  108. package/dist/client.js +2 -0
  109. package/dist/client.js.map +1 -0
  110. package/dist/cloudflare-build.d.ts +9 -0
  111. package/dist/cloudflare-build.d.ts.map +1 -0
  112. package/dist/cloudflare-build.js +9 -0
  113. package/dist/cloudflare-build.js.map +1 -0
  114. package/dist/cloudflare-bun-wasm-loader.d.ts +2 -0
  115. package/dist/cloudflare-bun-wasm-loader.d.ts.map +1 -0
  116. package/dist/cloudflare-bun-wasm-loader.js +2 -0
  117. package/dist/cloudflare-bun-wasm-loader.js.map +1 -0
  118. package/dist/cloudflare-query-compiler.d.ts +2 -0
  119. package/dist/cloudflare-query-compiler.d.ts.map +1 -0
  120. package/dist/cloudflare-query-compiler.js +2 -0
  121. package/dist/cloudflare-query-compiler.js.map +1 -0
  122. package/dist/cloudflare-runtime.d.ts +15 -0
  123. package/dist/cloudflare-runtime.d.ts.map +1 -0
  124. package/dist/cloudflare-runtime.js +11 -0
  125. package/dist/cloudflare-runtime.js.map +1 -0
  126. package/dist/cloudflare-sync.d.ts +3 -0
  127. package/dist/cloudflare-sync.d.ts.map +1 -0
  128. package/dist/cloudflare-sync.js +3 -0
  129. package/dist/cloudflare-sync.js.map +1 -0
  130. package/dist/cloudflare-transaction-query.d.ts +2 -0
  131. package/dist/cloudflare-transaction-query.d.ts.map +1 -0
  132. package/dist/cloudflare-transaction-query.js +2 -0
  133. package/dist/cloudflare-transaction-query.js.map +1 -0
  134. package/dist/cloudflare-vite-wasm-loader.d.ts +2 -0
  135. package/dist/cloudflare-vite-wasm-loader.d.ts.map +1 -0
  136. package/dist/cloudflare-vite-wasm-loader.js +2 -0
  137. package/dist/cloudflare-vite-wasm-loader.js.map +1 -0
  138. package/dist/cloudflare.d.ts +3 -0
  139. package/dist/cloudflare.d.ts.map +1 -0
  140. package/dist/cloudflare.js +3 -0
  141. package/dist/cloudflare.js.map +1 -0
  142. package/dist/do-sql-tracking.d.ts +114 -0
  143. package/dist/do-sql-tracking.d.ts.map +1 -0
  144. package/dist/do-sql-tracking.js +280 -0
  145. package/dist/do-sql-tracking.js.map +1 -0
  146. package/dist/index.d.ts +4 -0
  147. package/dist/index.d.ts.map +1 -0
  148. package/dist/index.js +3 -0
  149. package/dist/index.js.map +1 -0
  150. package/dist/wake.d.ts +22 -0
  151. package/dist/wake.d.ts.map +1 -0
  152. package/dist/wake.js +114 -0
  153. package/dist/wake.js.map +1 -0
  154. package/dist/worker/cf-do-shim.d.ts +53 -0
  155. package/dist/worker/cf-do-shim.d.ts.map +1 -0
  156. package/dist/worker/cf-do-shim.js +66 -0
  157. package/dist/worker/cf-do-shim.js.map +1 -0
  158. package/dist/zero-http/encrypted-column-codec.d.ts +46 -0
  159. package/dist/zero-http/encrypted-column-codec.d.ts.map +1 -0
  160. package/dist/zero-http/encrypted-column-codec.js +676 -0
  161. package/dist/zero-http/encrypted-column-codec.js.map +1 -0
  162. package/dist/zero-http/encrypted-column-conformance.d.ts +7 -0
  163. package/dist/zero-http/encrypted-column-conformance.d.ts.map +1 -0
  164. package/dist/zero-http/encrypted-column-conformance.js +161 -0
  165. package/dist/zero-http/encrypted-column-conformance.js.map +1 -0
  166. package/dist/zero-http/fixture-schema.d.ts +127 -0
  167. package/dist/zero-http/fixture-schema.d.ts.map +1 -0
  168. package/dist/zero-http/fixture-schema.js +56 -0
  169. package/dist/zero-http/fixture-schema.js.map +1 -0
  170. package/dist/zero-http/mount.d.ts +71 -0
  171. package/dist/zero-http/mount.d.ts.map +1 -0
  172. package/dist/zero-http/mount.js +594 -0
  173. package/dist/zero-http/mount.js.map +1 -0
  174. package/dist/zero-http/payload-codec.d.ts +91 -0
  175. package/dist/zero-http/payload-codec.d.ts.map +1 -0
  176. package/dist/zero-http/payload-codec.js +10 -0
  177. package/dist/zero-http/payload-codec.js.map +1 -0
  178. package/dist/zero-http/server.d.ts +16 -0
  179. package/dist/zero-http/server.d.ts.map +1 -0
  180. package/dist/zero-http/server.js +270 -0
  181. package/dist/zero-http/server.js.map +1 -0
  182. package/dist/zero-http/test-harness.d.ts +32 -0
  183. package/dist/zero-http/test-harness.d.ts.map +1 -0
  184. package/dist/zero-http/test-harness.js +77 -0
  185. package/dist/zero-http/test-harness.js.map +1 -0
  186. package/dist/zero-http/transport.d.ts +71 -0
  187. package/dist/zero-http/transport.d.ts.map +1 -0
  188. package/dist/zero-http/transport.js +1106 -0
  189. package/dist/zero-http/transport.js.map +1 -0
  190. package/package.json +116 -0
@@ -0,0 +1,10 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../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"}
@@ -0,0 +1,496 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../../../sync-browser-host/src/host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idb-snapshot.d.ts","sourceRoot":"","sources":["../../../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"}