syncorejs 0.2.1 → 0.2.3

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