syncorejs 0.2.2 → 0.2.4

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 (142) hide show
  1. package/dist/_vendor/cli/app.d.mts.map +1 -1
  2. package/dist/_vendor/cli/app.mjs +8 -5
  3. package/dist/_vendor/cli/app.mjs.map +1 -1
  4. package/dist/_vendor/cli/context.mjs.map +1 -1
  5. package/dist/_vendor/cli/dev-session.mjs.map +1 -1
  6. package/dist/_vendor/cli/doctor.mjs.map +1 -1
  7. package/dist/_vendor/cli/errors.mjs.map +1 -1
  8. package/dist/_vendor/cli/help.mjs.map +1 -1
  9. package/dist/_vendor/cli/index.mjs +9 -2
  10. package/dist/_vendor/cli/index.mjs.map +1 -1
  11. package/dist/_vendor/cli/messages.mjs.map +1 -1
  12. package/dist/_vendor/cli/preflight.mjs.map +1 -1
  13. package/dist/_vendor/cli/project.mjs +20 -20
  14. package/dist/_vendor/cli/project.mjs.map +1 -1
  15. package/dist/_vendor/cli/render.mjs.map +1 -1
  16. package/dist/_vendor/cli/targets.mjs.map +1 -1
  17. package/dist/_vendor/core/cli.d.mts +8 -2
  18. package/dist/_vendor/core/cli.d.mts.map +1 -1
  19. package/dist/_vendor/core/cli.mjs +510 -71
  20. package/dist/_vendor/core/cli.mjs.map +1 -1
  21. package/dist/_vendor/core/devtools-auth.mjs.map +1 -1
  22. package/dist/_vendor/core/index.d.mts +3 -3
  23. package/dist/_vendor/core/runtime/components.d.mts.map +1 -1
  24. package/dist/_vendor/core/runtime/components.mjs.map +1 -1
  25. package/dist/_vendor/core/runtime/devtools.d.mts.map +1 -1
  26. package/dist/_vendor/core/runtime/devtools.mjs +261 -23
  27. package/dist/_vendor/core/runtime/devtools.mjs.map +1 -1
  28. package/dist/_vendor/core/runtime/functions.d.mts +388 -6
  29. package/dist/_vendor/core/runtime/functions.d.mts.map +1 -1
  30. package/dist/_vendor/core/runtime/functions.mjs +72 -1
  31. package/dist/_vendor/core/runtime/functions.mjs.map +1 -1
  32. package/dist/_vendor/core/runtime/id.d.mts.map +1 -1
  33. package/dist/_vendor/core/runtime/id.mjs.map +1 -1
  34. package/dist/_vendor/core/runtime/internal/engines/devtoolsEngine.mjs +12 -6
  35. package/dist/_vendor/core/runtime/internal/engines/devtoolsEngine.mjs.map +1 -1
  36. package/dist/_vendor/core/runtime/internal/engines/executionEngine.mjs +123 -20
  37. package/dist/_vendor/core/runtime/internal/engines/executionEngine.mjs.map +1 -1
  38. package/dist/_vendor/core/runtime/internal/engines/reactivityEngine.mjs +56 -8
  39. package/dist/_vendor/core/runtime/internal/engines/reactivityEngine.mjs.map +1 -1
  40. package/dist/_vendor/core/runtime/internal/engines/schedulerEngine.mjs +49 -14
  41. package/dist/_vendor/core/runtime/internal/engines/schedulerEngine.mjs.map +1 -1
  42. package/dist/_vendor/core/runtime/internal/engines/schemaEngine.mjs +4 -7
  43. package/dist/_vendor/core/runtime/internal/engines/schemaEngine.mjs.map +1 -1
  44. package/dist/_vendor/core/runtime/internal/engines/shared.mjs +81 -2
  45. package/dist/_vendor/core/runtime/internal/engines/shared.mjs.map +1 -1
  46. package/dist/_vendor/core/runtime/internal/engines/storageEngine.mjs +100 -13
  47. package/dist/_vendor/core/runtime/internal/engines/storageEngine.mjs.map +1 -1
  48. package/dist/_vendor/core/runtime/internal/runtimeKernel.mjs +42 -7
  49. package/dist/_vendor/core/runtime/internal/runtimeKernel.mjs.map +1 -1
  50. package/dist/_vendor/core/runtime/internal/runtimeStatus.mjs.map +1 -1
  51. package/dist/_vendor/core/runtime/internal/systemMeta.mjs.map +1 -1
  52. package/dist/_vendor/core/runtime/internal/transactionCoordinator.mjs +4 -0
  53. package/dist/_vendor/core/runtime/internal/transactionCoordinator.mjs.map +1 -1
  54. package/dist/_vendor/core/runtime/runtime.d.mts +1100 -12
  55. package/dist/_vendor/core/runtime/runtime.d.mts.map +1 -1
  56. package/dist/_vendor/core/runtime/runtime.mjs +63 -0
  57. package/dist/_vendor/core/runtime/runtime.mjs.map +1 -1
  58. package/dist/_vendor/core/transport.d.mts +2 -0
  59. package/dist/_vendor/core/transport.d.mts.map +1 -1
  60. package/dist/_vendor/core/transport.mjs +61 -27
  61. package/dist/_vendor/core/transport.mjs.map +1 -1
  62. package/dist/_vendor/devtools-protocol/index.d.ts +223 -4
  63. package/dist/_vendor/devtools-protocol/index.d.ts.map +1 -1
  64. package/dist/_vendor/devtools-protocol/index.js.map +1 -1
  65. package/dist/_vendor/next/config.d.ts +3 -4
  66. package/dist/_vendor/next/config.d.ts.map +1 -1
  67. package/dist/_vendor/next/config.js +37 -19
  68. package/dist/_vendor/next/config.js.map +1 -1
  69. package/dist/_vendor/next/index.d.ts +109 -29
  70. package/dist/_vendor/next/index.d.ts.map +1 -1
  71. package/dist/_vendor/next/index.js +86 -18
  72. package/dist/_vendor/next/index.js.map +1 -1
  73. package/dist/_vendor/platform-expo/index.d.ts +146 -27
  74. package/dist/_vendor/platform-expo/index.d.ts.map +1 -1
  75. package/dist/_vendor/platform-expo/index.js +81 -10
  76. package/dist/_vendor/platform-expo/index.js.map +1 -1
  77. package/dist/_vendor/platform-expo/react.js.map +1 -1
  78. package/dist/_vendor/platform-expo/web-sqljs-wasm.js +16 -0
  79. package/dist/_vendor/platform-expo/web-sqljs-wasm.js.map +1 -0
  80. package/dist/_vendor/platform-node/index.d.mts +174 -9
  81. package/dist/_vendor/platform-node/index.d.mts.map +1 -1
  82. package/dist/_vendor/platform-node/index.mjs +251 -95
  83. package/dist/_vendor/platform-node/index.mjs.map +1 -1
  84. package/dist/_vendor/platform-node/ipc-react.mjs +4 -0
  85. package/dist/_vendor/platform-node/ipc-react.mjs.map +1 -1
  86. package/dist/_vendor/platform-node/ipc.d.mts.map +1 -1
  87. package/dist/_vendor/platform-node/ipc.mjs.map +1 -1
  88. package/dist/_vendor/platform-web/external-change.d.ts +41 -0
  89. package/dist/_vendor/platform-web/external-change.d.ts.map +1 -1
  90. package/dist/_vendor/platform-web/external-change.js +30 -0
  91. package/dist/_vendor/platform-web/external-change.js.map +1 -1
  92. package/dist/_vendor/platform-web/index.d.ts +312 -37
  93. package/dist/_vendor/platform-web/index.d.ts.map +1 -1
  94. package/dist/_vendor/platform-web/index.js +247 -25
  95. package/dist/_vendor/platform-web/index.js.map +1 -1
  96. package/dist/_vendor/platform-web/indexeddb.d.ts +12 -0
  97. package/dist/_vendor/platform-web/indexeddb.d.ts.map +1 -1
  98. package/dist/_vendor/platform-web/indexeddb.js +10 -0
  99. package/dist/_vendor/platform-web/indexeddb.js.map +1 -1
  100. package/dist/_vendor/platform-web/opfs.d.ts +16 -1
  101. package/dist/_vendor/platform-web/opfs.d.ts.map +1 -1
  102. package/dist/_vendor/platform-web/opfs.js +41 -3
  103. package/dist/_vendor/platform-web/opfs.js.map +1 -1
  104. package/dist/_vendor/platform-web/persistence.d.ts +85 -1
  105. package/dist/_vendor/platform-web/persistence.d.ts.map +1 -1
  106. package/dist/_vendor/platform-web/persistence.js +15 -0
  107. package/dist/_vendor/platform-web/persistence.js.map +1 -1
  108. package/dist/_vendor/platform-web/react.d.ts +1 -2
  109. package/dist/_vendor/platform-web/react.d.ts.map +1 -1
  110. package/dist/_vendor/platform-web/react.js +11 -5
  111. package/dist/_vendor/platform-web/react.js.map +1 -1
  112. package/dist/_vendor/platform-web/sqljs.js +10 -1
  113. package/dist/_vendor/platform-web/sqljs.js.map +1 -1
  114. package/dist/_vendor/platform-web/web-sqljs-wasm.js +8 -0
  115. package/dist/_vendor/platform-web/web-sqljs-wasm.js.map +1 -0
  116. package/dist/_vendor/platform-web/worker.d.ts +60 -9
  117. package/dist/_vendor/platform-web/worker.d.ts.map +1 -1
  118. package/dist/_vendor/platform-web/worker.js +37 -4
  119. package/dist/_vendor/platform-web/worker.js.map +1 -1
  120. package/dist/_vendor/react/index.d.ts +197 -13
  121. package/dist/_vendor/react/index.d.ts.map +1 -1
  122. package/dist/_vendor/react/index.js +209 -17
  123. package/dist/_vendor/react/index.js.map +1 -1
  124. package/dist/_vendor/schema/definition.d.ts +129 -0
  125. package/dist/_vendor/schema/definition.d.ts.map +1 -1
  126. package/dist/_vendor/schema/definition.js +99 -0
  127. package/dist/_vendor/schema/definition.js.map +1 -1
  128. package/dist/_vendor/schema/planner.d.ts.map +1 -1
  129. package/dist/_vendor/schema/planner.js.map +1 -1
  130. package/dist/_vendor/schema/validators.d.ts +180 -4
  131. package/dist/_vendor/schema/validators.d.ts.map +1 -1
  132. package/dist/_vendor/schema/validators.js +35 -1
  133. package/dist/_vendor/schema/validators.js.map +1 -1
  134. package/dist/_vendor/svelte/index.d.ts +207 -7
  135. package/dist/_vendor/svelte/index.d.ts.map +1 -1
  136. package/dist/_vendor/svelte/index.js +201 -6
  137. package/dist/_vendor/svelte/index.js.map +1 -1
  138. package/dist/browser.d.ts.map +1 -1
  139. package/dist/cli.js +3 -1
  140. package/dist/cli.js.map +1 -1
  141. package/dist/index.d.ts +1 -1
  142. package/package.json +24 -21
@@ -1,86 +1,254 @@
1
- import { CreateWebPersistenceOptions, StoredWebFile, SyncoreWebPersistence, WebPersistenceMode, createWebPersistence, isOpfsAvailable } from "./persistence.js";
1
+ import { CreateWebPersistenceOptions, StoredWebFile, StoredWebFileMetadata, StoredWebFileRange, SyncoreWebPersistence, WebPersistenceMode, createWebPersistence, isOpfsAvailable } from "./persistence.js";
2
2
  import { BroadcastChannelExternalChangeSignal, BroadcastChannelExternalChangeSignalOptions, SqlJsExternalChangeApplier, SqlJsExternalChangeApplierOptions, createDefaultSyncChannelName } from "./external-change.js";
3
3
  import { AttachWebWorkerRuntimeOptions, AttachedWebWorkerRuntime, CreateWebWorkerClientProviderOptions, ManagedWebWorkerClient, SyncoreWebWorkerClient, SyncoreWorkerMessageEndpoint, WebWorkerSyncoreSchema, WorkerQueryWatch, attachWebWorkerRuntime, createManagedWebWorkerClient, createSyncoreWebWorkerClient, createWebWorkerClient } from "./worker.js";
4
4
  import { IndexedDbPersistenceOptions, SyncoreIndexedDbPersistence } from "./indexeddb.js";
5
5
  import { OpfsPersistenceOptions, SyncoreOpfsPersistence } from "./opfs.js";
6
- import * as _syncore_core0 from "../core/index.d.mts";
7
6
  import { DevtoolsCommandHandler, DevtoolsSink, DevtoolsSubscriptionHost, SchedulerOptions, StorageObject, StorageWriteInput, SyncoreCapabilities, SyncoreDataModel, SyncoreRuntime, SyncoreRuntimeOptions, SyncoreStorageAdapter } from "../core/index.d.mts";
7
+ import { SyncoreDevtoolsCapabilities } from "../devtools-protocol/index.d.ts";
8
8
 
9
9
  //#region src/index.d.ts
10
+ /**
11
+ * Schema type constraint for web-platform Syncore runtimes.
12
+ *
13
+ * Pass any schema produced by `defineSchema()` where this type is expected.
14
+ * Defaults to the unconstrained `SyncoreDataModel` when omitted.
15
+ */
10
16
  type WebSyncoreSchema<TSchema extends SyncoreDataModel = SyncoreDataModel> = TSchema;
17
+ /**
18
+ * Alias of {@link WebSyncoreSchema} for the `syncorejs/browser` surface.
19
+ * @see WebSyncoreSchema
20
+ */
11
21
  type BrowserSyncoreSchema<TSchema extends SyncoreDataModel = SyncoreDataModel> = WebSyncoreSchema<TSchema>;
12
22
  /**
13
23
  * Options for constructing a browser Syncore runtime.
14
24
  *
15
- * Use this when you want to host the full runtime in a browser tab or worker.
25
+ * Use this when you want to host the full runtime directly in a browser tab or
26
+ * dedicated Web Worker. In most React or Svelte apps you should call
27
+ * `createWebWorkerSyncoreRuntime()` inside a worker file instead, so that
28
+ * SQLite and query execution run off the main thread.
29
+ *
30
+ * At minimum you must supply `schema` and `functions`. Everything else has
31
+ * sensible defaults (OPFS persistence, SQL.js driver, auto-devtools connect).
32
+ *
33
+ * ```ts
34
+ * const runtime = await createWebSyncoreRuntime({
35
+ * schema,
36
+ * functions,
37
+ * databaseName: "my-app",
38
+ * });
39
+ * ```
16
40
  */
17
41
  interface CreateWebRuntimeOptions<TSchema extends WebSyncoreSchema = WebSyncoreSchema> {
18
- /** The schema for the local Syncore app. */
42
+ /** The data model that defines the available tables and indexes. */
19
43
  schema: TSchema;
20
- /** The generated function registry for the local Syncore app. */
44
+ /**
45
+ * The registered function map. In practice this is always the `functions`
46
+ * export from `syncore/_generated/functions.ts`.
47
+ */
21
48
  functions: SyncoreRuntimeOptions<TSchema>["functions"];
22
- /** Optional resolved installed components for the local Syncore app. */
49
+ /**
50
+ * Resolved Syncore component instances to mount alongside the root app.
51
+ * Only required when your app installs Syncore component packages.
52
+ */
23
53
  components?: SyncoreRuntimeOptions<TSchema>["components"];
24
- /** Optional platform capabilities exposed to function handlers. */
54
+ /**
55
+ * Platform capabilities injected into `ctx.capabilities` inside function
56
+ * handlers. Use this to expose browser APIs (e.g. `navigator.geolocation`)
57
+ * to your Syncore functions in a portable way.
58
+ */
25
59
  capabilities?: SyncoreCapabilities;
26
- /** Optional custom SQL driver. Defaults to SQL.js with local persistence. */
60
+ /**
61
+ * Custom SQLite driver. Defaults to a `SqlJsDriver` backed by the
62
+ * persistence layer chosen by `persistenceMode` / `persistence`.
63
+ *
64
+ * Override only when you need a non-standard SQLite binding.
65
+ */
27
66
  driver?: SyncoreRuntimeOptions<TSchema>["driver"];
28
- /** Optional custom file/blob storage adapter. */
67
+ /**
68
+ * Custom blob storage adapter. Defaults to `BrowserFileStorageAdapter`
69
+ * only when the resolved persistence layer is OPFS. IndexedDB persistence is
70
+ * data-only unless a custom adapter is provided explicitly.
71
+ *
72
+ * Override when you want to store files in a different location (e.g. an
73
+ * in-memory adapter for tests).
74
+ */
29
75
  storage?: SyncoreStorageAdapter;
30
- /** Optional explicit persistence implementation. */
76
+ /**
77
+ * An explicit persistence implementation. When provided, `persistenceMode`,
78
+ * `persistenceDatabaseName`, and `opfsRootDirectoryName` are ignored.
79
+ *
80
+ * Most apps should omit this and let Syncore choose the best available mode
81
+ * automatically via `persistenceMode`.
82
+ */
31
83
  persistence?: SyncoreWebPersistence;
32
- /** Which browser persistence mode to use when Syncore creates one for you. */
84
+ /**
85
+ * Which browser storage backend Syncore should use when it creates the
86
+ * persistence layer for you.
87
+ *
88
+ * - `"opfs"` — Origin Private File System (recommended for modern browsers;
89
+ * supports large databases and true WAL mode).
90
+ * - `"indexeddb"` — IndexedDB-backed persistence (wider compatibility).
91
+ *
92
+ * Defaults to the best mode available in the current browser.
93
+ */
33
94
  persistenceMode?: WebPersistenceMode;
34
- /** Logical database name for SQL.js and local storage namespaces. */
95
+ /**
96
+ * Logical name used to namespace the SQL.js database and local storage keys.
97
+ *
98
+ * Set a stable value (e.g. your app’s slug) so the database persists across
99
+ * page reloads with a predictable name. Defaults to `"syncore"`.
100
+ */
35
101
  databaseName?: string;
36
- /** Optional IndexedDB database name for persistence metadata. */
102
+ /**
103
+ * IndexedDB database name used to store persistence metadata (e.g. the OPFS
104
+ * scope identifier). Defaults to `databaseName`.
105
+ */
37
106
  persistenceDatabaseName?: string;
38
- /** Optional OPFS directory name for persistent files. */
107
+ /**
108
+ * OPFS root directory name for the SQLite database file and blob storage.
109
+ * Defaults to `databaseName` or `"syncore"`.
110
+ */
39
111
  opfsRootDirectoryName?: string;
40
- /** Optional namespace for file/blob storage. */
112
+ /**
113
+ * Namespace prefix for blob storage keys. Defaults to `databaseName` or
114
+ * `"syncore"`.
115
+ */
41
116
  storageNamespace?: string;
42
- /** Optional direct wasm URL for SQL.js. */
117
+ /**
118
+ * Explicit URL for the `sql.js` WebAssembly binary.
119
+ *
120
+ * Syncore resolves the URL automatically in most bundler setups. Override
121
+ * this only if the auto-resolved URL is incorrect (e.g. in a custom CDN
122
+ * deploy or a worker with a different asset base path).
123
+ */
43
124
  wasmUrl?: string;
44
- /** Optional callback for resolving SQL.js support files. */
125
+ /**
126
+ * Custom file resolver for SQL.js support files (wasm + worker scripts).
127
+ *
128
+ * Takes a filename (e.g. `"sql-wasm.wasm"`) and returns the full URL.
129
+ * Equivalent to sql.js’s `locateFile` option. Use `wasmUrl` instead when
130
+ * you only need to override the `.wasm` path.
131
+ */
45
132
  locateFile?: (fileName: string) => string;
46
- /** Optional runtime platform label shown in devtools snapshots. */
133
+ /**
134
+ * Platform label reported to the devtools dashboard.
135
+ * Defaults to `"browser"`.
136
+ */
47
137
  platform?: string;
48
- /** Optional devtools sink used during development. */
138
+ /** Human-readable app name shown in the devtools dashboard header. */
139
+ appName?: string;
140
+ /**
141
+ * Explicit devtools WebSocket server URL.
142
+ * Defaults to `ws://127.0.0.1:4311` (the Syncore devtools default port).
143
+ */
144
+ devtoolsUrl?: string;
145
+ /**
146
+ * Devtools event sink. Pass `false` to disable devtools entirely
147
+ * (recommended for production builds). Omit to auto-connect to the local
148
+ * devtools server when running in development.
149
+ */
49
150
  devtools?: DevtoolsSink | false;
50
- /** Optional scheduler configuration for jobs and recurring work. */
151
+ /** Scheduler configuration for background and recurring jobs. */
51
152
  scheduler?: SchedulerOptions;
52
153
  }
53
154
  /**
54
- * Options for hosting a Syncore runtime inside a browser Worker.
155
+ * Options for hosting a Syncore runtime inside a dedicated browser Worker.
156
+ *
157
+ * Extends {@link CreateWebRuntimeOptions} with the `endpoint` field that wires
158
+ * the runtime to the worker’s message port. Use this inside a worker entry
159
+ * file (`syncore.worker.ts`):
160
+ *
161
+ * ```ts
162
+ * // syncore.worker.ts
163
+ * import { createWebWorkerSyncoreRuntime } from "syncorejs/browser";
164
+ * import schema from "./syncore/schema";
165
+ * import { functions } from "./syncore/_generated/functions";
166
+ *
167
+ * createWebWorkerSyncoreRuntime({
168
+ * schema,
169
+ * functions,
170
+ * endpoint: self as unknown as SyncoreWorkerMessageEndpoint,
171
+ * });
172
+ * ```
55
173
  */
56
174
  interface CreateWebWorkerRuntimeOptions<TSchema extends WebSyncoreSchema = WebSyncoreSchema> extends CreateWebRuntimeOptions<TSchema> {
57
175
  /** The message endpoint exposed by the current worker global. */
58
176
  endpoint: SyncoreWorkerMessageEndpoint;
59
177
  }
60
178
  /**
61
- * Options for constructing a browser Syncore runtime.
179
+ * Alias of {@link CreateWebRuntimeOptions} for the `syncorejs/browser` surface.
180
+ * @see CreateWebRuntimeOptions
62
181
  */
63
182
  type CreateBrowserRuntimeOptions<TSchema extends BrowserSyncoreSchema = BrowserSyncoreSchema> = CreateWebRuntimeOptions<TSchema>;
64
183
  /**
65
- * Options for hosting a Syncore runtime inside a browser Worker.
184
+ * Alias of {@link CreateWebWorkerRuntimeOptions} for the `syncorejs/browser` surface.
185
+ * @see CreateWebWorkerRuntimeOptions
66
186
  */
67
187
  type CreateBrowserWorkerRuntimeOptions<TSchema extends BrowserSyncoreSchema = BrowserSyncoreSchema> = CreateWebWorkerRuntimeOptions<TSchema>;
188
+ /**
189
+ * Internal bookkeeping for the browser cross-tab change synchronisation layer.
190
+ *
191
+ * Holds the `BroadcastChannel`-based signal that publishes and receives
192
+ * database-change events between tabs, and optionally an `applier` that
193
+ * reconciles incoming changes into an in-memory SQL.js database.
194
+ *
195
+ * You do not need to use this directly — `createWebSyncoreRuntime` builds it
196
+ * for you from your options. Exposed for advanced setups (e.g. Expo web) that
197
+ * construct the change support layer independently.
198
+ */
68
199
  interface WebExternalChangeSupport {
69
200
  signal: BroadcastChannelExternalChangeSignal;
70
201
  applier?: SqlJsExternalChangeApplier;
71
202
  }
72
203
  /**
73
- * Create a full Syncore runtime directly in the browser.
204
+ * Create a full Syncore runtime directly in the browser (main thread or
205
+ * shared worker).
206
+ *
207
+ * This function sets up SQL.js, the OPFS/IndexedDB persistence layer,
208
+ * OPFS-backed blob storage when available, cross-tab change synchronisation via `BroadcastChannel`, and
209
+ * auto-connects to the devtools server in development.
210
+ *
211
+ * @remarks
212
+ * Most React/Svelte apps should run the runtime inside a `Worker` using
213
+ * `createWebWorkerSyncoreRuntime()` instead, so that SQLite queries don’t
214
+ * block the main thread. Use `createWebSyncoreRuntime` only when a worker is
215
+ * not practical (e.g. in Electron renderer processes or certain test setups).
74
216
  *
75
- * Most React apps should use a worker runtime instead so queries and SQLite work
76
- * stay off the main thread.
217
+ * ```ts
218
+ * const runtime = await createWebSyncoreRuntime({ schema, functions });
219
+ * await runtime.start();
220
+ * const client = runtime.createClient();
221
+ * ```
77
222
  */
78
223
  declare function createWebSyncoreRuntime<TSchema extends WebSyncoreSchema>(options: CreateWebRuntimeOptions<TSchema>): Promise<SyncoreRuntime<TSchema>>;
224
+ /**
225
+ * Build a {@link WebExternalChangeSupport} bundle for a given database and
226
+ * persistence layer.
227
+ *
228
+ * Creates a `BroadcastChannel`-based signal so that all tabs sharing the same
229
+ * `databaseName` are notified when a mutation commits. When `driver` is a
230
+ * `SqlJsDriver` (i.e. an in-memory database), an `applier` is also created so
231
+ * the local database can be updated from the latest on-disk snapshot.
232
+ *
233
+ * Called automatically by `createWebSyncoreRuntime`. Exposed for advanced use
234
+ * cases such as the Expo web adapter.
235
+ */
79
236
  declare function createWebExternalChangeSupport(options: {
80
237
  databaseName: string;
81
238
  persistence: SyncoreWebPersistence;
82
239
  driver: CreateWebRuntimeOptions<SyncoreDataModel>["driver"] | undefined;
83
240
  }): WebExternalChangeSupport;
241
+ /**
242
+ * Build a {@link WebExternalChangeSupport} bundle for an Expo app running on
243
+ * the web platform.
244
+ *
245
+ * Behaves identically to {@link createWebExternalChangeSupport} but accepts
246
+ * the same options shape used by `createExpoSyncoreRuntime`, making it easy
247
+ * to share config when bootstrapping an Expo web runtime.
248
+ *
249
+ * Called internally by the Expo platform adapter. Use directly only when
250
+ * constructing the runtime outside of `createExpoSyncoreRuntime`.
251
+ */
84
252
  declare function createExpoWebExternalChangeSupport(options: {
85
253
  databaseName: string;
86
254
  locateFile?: (fileName: string) => string;
@@ -90,45 +258,150 @@ declare function createExpoWebExternalChangeSupport(options: {
90
258
  persistenceMode?: WebPersistenceMode;
91
259
  }): Promise<WebExternalChangeSupport>;
92
260
  /**
93
- * Attach a Syncore runtime to a browser Worker endpoint.
261
+ * Start a Syncore runtime inside a browser `Worker` and wire it to the
262
+ * worker’s own message endpoint.
263
+ *
264
+ * This is the function you call **inside your worker file** (`syncore.worker.ts`).
265
+ * It creates the full runtime (SQL.js + OPFS + BroadcastChannel) in the worker
266
+ * context and begins listening for messages from the main-thread client.
267
+ *
268
+ * ```ts
269
+ * // syncore.worker.ts
270
+ * import { createWebWorkerRuntime } from "syncorejs/browser";
271
+ * import schema from "./syncore/schema";
272
+ * import { functions } from "./syncore/_generated/functions";
273
+ *
274
+ * void createWebWorkerRuntime({
275
+ * schema,
276
+ * functions,
277
+ * endpoint: self as unknown as SyncoreWorkerMessageEndpoint,
278
+ * });
279
+ * ```
280
+ *
281
+ * On the main thread, connect with `createManagedWebWorkerClient()` or
282
+ * `SyncoreNextProvider` (Next.js).
94
283
  */
95
- declare function createWebWorkerRuntime<TSchema extends WebSyncoreSchema>(options: CreateWebWorkerRuntimeOptions<TSchema>): _syncore_core0.AttachedRuntimeBridge;
284
+ declare function createWebWorkerRuntime<TSchema extends WebSyncoreSchema>(options: CreateWebWorkerRuntimeOptions<TSchema>): import("../core/index.d.mts").AttachedRuntimeBridge;
96
285
  /**
97
- * Attach a Syncore runtime to a browser Worker endpoint.
286
+ * Alias of {@link createWebWorkerRuntime} for the `syncorejs/browser` surface.
287
+ * @see createWebWorkerRuntime
98
288
  */
99
- declare function createBrowserWorkerRuntime(options: CreateBrowserWorkerRuntimeOptions): _syncore_core0.AttachedRuntimeBridge;
289
+ declare function createBrowserWorkerRuntime(options: CreateBrowserWorkerRuntimeOptions): import("../core/index.d.mts").AttachedRuntimeBridge;
100
290
  /**
101
- * Create a client directly from a browser Syncore runtime.
291
+ * Create a same-process Syncore client from a started browser runtime.
292
+ *
293
+ * Use this when the runtime lives in the same context as the client (e.g.
294
+ * main-thread runtime in an Electron renderer or a test harness). For
295
+ * worker-based setups use `createManagedWebWorkerClient()` instead, which
296
+ * communicates with the worker over `postMessage`.
297
+ *
298
+ * ```ts
299
+ * const runtime = await createWebSyncoreRuntime({ schema, functions });
300
+ * await runtime.start();
301
+ * const client = createWebSyncoreClient(runtime);
302
+ * ```
102
303
  */
103
- declare function createWebSyncoreClient<TSchema extends WebSyncoreSchema>(runtime: SyncoreRuntime<TSchema>): _syncore_core0.SyncoreClient;
304
+ declare function createWebSyncoreClient<TSchema extends WebSyncoreSchema>(runtime: SyncoreRuntime<TSchema>): import("../core/index.d.mts").SyncoreClient;
104
305
  /**
105
- * Create a full Syncore runtime directly in the browser.
306
+ * Alias of {@link createWebSyncoreRuntime} for the `syncorejs/browser` surface.
307
+ * @see createWebSyncoreRuntime
106
308
  */
107
309
  declare function createBrowserSyncoreRuntime<TSchema extends BrowserSyncoreSchema>(options: CreateBrowserRuntimeOptions<TSchema>): Promise<SyncoreRuntime<TSchema>>;
108
310
  /**
109
- * Create a client directly from a browser Syncore runtime.
311
+ * Alias of {@link createWebSyncoreClient} for the `syncorejs/browser` surface.
312
+ * @see createWebSyncoreClient
313
+ */
314
+ declare function createBrowserSyncoreClient<TSchema extends BrowserSyncoreSchema>(runtime: SyncoreRuntime<TSchema>): import("../core/index.d.mts").SyncoreClient;
315
+ /**
316
+ * Configuration options for {@link createBrowserWebSocketDevtoolsSink}.
317
+ *
318
+ * All fields except `url` are optional — `createWebSyncoreRuntime` fills them
319
+ * in automatically from the runtime’s own metadata.
110
320
  */
111
- declare function createBrowserSyncoreClient<TSchema extends BrowserSyncoreSchema>(runtime: SyncoreRuntime<TSchema>): _syncore_core0.SyncoreClient;
112
321
  interface BrowserWebSocketDevtoolsSinkOptions {
322
+ /** WebSocket URL of the Syncore devtools server, e.g. `"ws://127.0.0.1:4311"`. */
113
323
  url: string;
324
+ /**
325
+ * How long to wait before attempting a reconnect after the WebSocket closes,
326
+ * in milliseconds. Defaults to `1200`.
327
+ */
114
328
  reconnectDelayMs?: number;
329
+ /** Human-readable app name shown in the devtools dashboard header. */
115
330
  appName?: string;
331
+ /** Origin label (e.g. `window.location.origin`) shown in the devtools session list. */
116
332
  origin?: string;
333
+ /** Session label auto-generated from the tab’s URL path; helps distinguish multiple open tabs. */
117
334
  sessionLabel?: string;
335
+ /** Kind of this devtools participant. Always `"client"` for browser runtimes. */
118
336
  targetKind?: "client";
337
+ /** Persistence protocol tag reported to devtools (e.g. `"opfs"`, `"indexeddb"`). */
119
338
  storageProtocol?: string;
339
+ /** Logical database name used to group sessions in the devtools UI. */
120
340
  databaseLabel?: string;
341
+ /** Stable alias for the data source, used by devtools for cross-session continuity. */
342
+ dataSourceAlias?: string;
343
+ /**
344
+ * Opaque identity string that uniquely identifies this database across origin
345
+ * + persistence protocol + name, used by devtools for data-source tracking.
346
+ */
121
347
  storageIdentity?: string;
348
+ /** Capability flags advertising what devtools features this runtime supports. */
349
+ capabilities?: SyncoreDevtoolsCapabilities;
122
350
  }
351
+ /**
352
+ * A DevtoolsSink that forwards runtime events to the Syncore devtools
353
+ * dashboard over a persistent WebSocket connection with auto-reconnect.
354
+ *
355
+ * Returned by {@link createBrowserWebSocketDevtoolsSink}. You typically do not
356
+ * use this interface directly — `createWebSyncoreRuntime` creates and manages
357
+ * the sink automatically when running in development.
358
+ */
123
359
  interface BrowserWebSocketDevtoolsSink extends DevtoolsSink {
360
+ /** Attach the runtime so the sink can pull metadata for devtools messages. */
124
361
  attachRuntime(runtime: SyncoreRuntime<WebSyncoreSchema>): void;
362
+ /** Attach the command handler that processes devtools RPC commands. */
125
363
  attachCommandHandler(handler: DevtoolsCommandHandler): void;
364
+ /** Attach the subscription host for live query streaming. */
126
365
  attachSubscriptionHost(host: DevtoolsSubscriptionHost): void;
366
+ /** Close the WebSocket and stop reconnecting. Call on runtime shutdown. */
127
367
  dispose(): void;
128
368
  }
369
+ /**
370
+ * Create a WebSocket-based devtools sink that connects to the Syncore devtools
371
+ * server and forwards runtime events in real time.
372
+ *
373
+ * The sink auto-reconnects if the connection drops (e.g. while the devtools
374
+ * dashboard is restarting) and buffers events that arrive before the socket is
375
+ * open.
376
+ *
377
+ * In most cases you do not need to call this directly — `createWebSyncoreRuntime`
378
+ * creates and attaches the sink automatically when `devtools` is omitted and the
379
+ * page is served from a local/private hostname.
380
+ *
381
+ * ```ts
382
+ * const sink = createBrowserWebSocketDevtoolsSink({
383
+ * url: "ws://127.0.0.1:4311",
384
+ * appName: "My App",
385
+ * });
386
+ * const runtime = await createWebSyncoreRuntime({ schema, functions, devtools: sink });
387
+ * ```
388
+ */
129
389
  declare function createBrowserWebSocketDevtoolsSink(options: BrowserWebSocketDevtoolsSinkOptions): BrowserWebSocketDevtoolsSink;
130
390
  /**
131
- * Browser file/blob storage built on top of Syncore web persistence.
391
+ * Browser file/blob storage adapter backed by `SyncoreWebPersistence`.
392
+ *
393
+ * Stores binary blobs (images, documents, etc.) in OPFS alongside the SQLite
394
+ * database. Pass an instance to
395
+ * `CreateWebRuntimeOptions.storage` to enable Syncore's Storage API
396
+ * (`ctx.storage.put`, `ctx.storage.get`, etc.) in browser functions.
397
+ *
398
+ * ```ts
399
+ * const runtime = await createWebSyncoreRuntime({
400
+ * schema,
401
+ * functions,
402
+ * storage: new BrowserFileStorageAdapter(persistence, "files"),
403
+ * });
404
+ * ```
132
405
  */
133
406
  declare class BrowserFileStorageAdapter implements SyncoreStorageAdapter {
134
407
  private readonly persistence;
@@ -137,9 +410,11 @@ declare class BrowserFileStorageAdapter implements SyncoreStorageAdapter {
137
410
  put(id: string, input: StorageWriteInput): Promise<StorageObject>;
138
411
  get(id: string): Promise<StorageObject | null>;
139
412
  read(id: string): Promise<Uint8Array | null>;
413
+ supportsRange(): boolean;
414
+ readRange(id: string, offset: number, length: number): Promise<Uint8Array | null>;
140
415
  delete(id: string): Promise<void>;
141
416
  list(): Promise<StorageObject[]>;
142
417
  }
143
418
  //#endregion
144
- export { AttachWebWorkerRuntimeOptions, AttachedWebWorkerRuntime, BroadcastChannelExternalChangeSignal, BroadcastChannelExternalChangeSignalOptions, BrowserFileStorageAdapter, BrowserSyncoreSchema, BrowserWebSocketDevtoolsSink, BrowserWebSocketDevtoolsSinkOptions, CreateBrowserRuntimeOptions, CreateBrowserWorkerRuntimeOptions, CreateWebPersistenceOptions, CreateWebRuntimeOptions, CreateWebWorkerClientProviderOptions, CreateWebWorkerRuntimeOptions, IndexedDbPersistenceOptions, ManagedWebWorkerClient, OpfsPersistenceOptions, SqlJsExternalChangeApplier, SqlJsExternalChangeApplierOptions, StoredWebFile, SyncoreIndexedDbPersistence, SyncoreOpfsPersistence, SyncoreWebPersistence, SyncoreWebWorkerClient, SyncoreWorkerMessageEndpoint, WebExternalChangeSupport, WebPersistenceMode, WebSyncoreSchema, WebWorkerSyncoreSchema, WorkerQueryWatch, attachWebWorkerRuntime, createBrowserSyncoreClient, createBrowserSyncoreRuntime, createBrowserWebSocketDevtoolsSink, createBrowserWorkerRuntime, createDefaultSyncChannelName, createExpoWebExternalChangeSupport, createManagedWebWorkerClient, createSyncoreWebWorkerClient, createWebExternalChangeSupport, createWebPersistence, createWebSyncoreClient, createWebSyncoreRuntime, createWebWorkerClient, createWebWorkerRuntime, isOpfsAvailable };
419
+ export { AttachWebWorkerRuntimeOptions, AttachedWebWorkerRuntime, BroadcastChannelExternalChangeSignal, BroadcastChannelExternalChangeSignalOptions, BrowserFileStorageAdapter, BrowserSyncoreSchema, BrowserWebSocketDevtoolsSink, BrowserWebSocketDevtoolsSinkOptions, CreateBrowserRuntimeOptions, CreateBrowserWorkerRuntimeOptions, CreateWebPersistenceOptions, CreateWebRuntimeOptions, CreateWebWorkerClientProviderOptions, CreateWebWorkerRuntimeOptions, IndexedDbPersistenceOptions, ManagedWebWorkerClient, OpfsPersistenceOptions, SqlJsExternalChangeApplier, SqlJsExternalChangeApplierOptions, StoredWebFile, StoredWebFileMetadata, StoredWebFileRange, SyncoreIndexedDbPersistence, SyncoreOpfsPersistence, SyncoreWebPersistence, SyncoreWebWorkerClient, SyncoreWorkerMessageEndpoint, WebExternalChangeSupport, WebPersistenceMode, WebSyncoreSchema, WebWorkerSyncoreSchema, WorkerQueryWatch, attachWebWorkerRuntime, createBrowserSyncoreClient, createBrowserSyncoreRuntime, createBrowserWebSocketDevtoolsSink, createBrowserWorkerRuntime, createDefaultSyncChannelName, createExpoWebExternalChangeSupport, createManagedWebWorkerClient, createSyncoreWebWorkerClient, createWebExternalChangeSupport, createWebPersistence, createWebSyncoreClient, createWebSyncoreRuntime, createWebWorkerClient, createWebWorkerRuntime, isOpfsAvailable };
145
420
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":"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"}