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.
- package/dist/_vendor/cli/app.d.mts.map +1 -1
- package/dist/_vendor/cli/app.mjs +8 -5
- package/dist/_vendor/cli/app.mjs.map +1 -1
- package/dist/_vendor/cli/context.mjs.map +1 -1
- package/dist/_vendor/cli/dev-session.mjs.map +1 -1
- package/dist/_vendor/cli/doctor.mjs.map +1 -1
- package/dist/_vendor/cli/errors.mjs.map +1 -1
- package/dist/_vendor/cli/help.mjs.map +1 -1
- package/dist/_vendor/cli/index.mjs +9 -2
- package/dist/_vendor/cli/index.mjs.map +1 -1
- package/dist/_vendor/cli/messages.mjs.map +1 -1
- package/dist/_vendor/cli/preflight.mjs.map +1 -1
- package/dist/_vendor/cli/project.mjs +20 -20
- package/dist/_vendor/cli/project.mjs.map +1 -1
- package/dist/_vendor/cli/render.mjs.map +1 -1
- package/dist/_vendor/cli/targets.mjs.map +1 -1
- package/dist/_vendor/core/cli.d.mts +8 -2
- package/dist/_vendor/core/cli.d.mts.map +1 -1
- package/dist/_vendor/core/cli.mjs +510 -71
- package/dist/_vendor/core/cli.mjs.map +1 -1
- package/dist/_vendor/core/devtools-auth.mjs.map +1 -1
- package/dist/_vendor/core/index.d.mts +3 -3
- package/dist/_vendor/core/runtime/components.d.mts.map +1 -1
- package/dist/_vendor/core/runtime/components.mjs.map +1 -1
- package/dist/_vendor/core/runtime/devtools.d.mts.map +1 -1
- package/dist/_vendor/core/runtime/devtools.mjs +261 -23
- package/dist/_vendor/core/runtime/devtools.mjs.map +1 -1
- package/dist/_vendor/core/runtime/functions.d.mts +388 -6
- package/dist/_vendor/core/runtime/functions.d.mts.map +1 -1
- package/dist/_vendor/core/runtime/functions.mjs +72 -1
- package/dist/_vendor/core/runtime/functions.mjs.map +1 -1
- package/dist/_vendor/core/runtime/id.d.mts.map +1 -1
- package/dist/_vendor/core/runtime/id.mjs.map +1 -1
- package/dist/_vendor/core/runtime/internal/engines/devtoolsEngine.mjs +12 -6
- package/dist/_vendor/core/runtime/internal/engines/devtoolsEngine.mjs.map +1 -1
- package/dist/_vendor/core/runtime/internal/engines/executionEngine.mjs +123 -20
- package/dist/_vendor/core/runtime/internal/engines/executionEngine.mjs.map +1 -1
- package/dist/_vendor/core/runtime/internal/engines/reactivityEngine.mjs +56 -8
- package/dist/_vendor/core/runtime/internal/engines/reactivityEngine.mjs.map +1 -1
- package/dist/_vendor/core/runtime/internal/engines/schedulerEngine.mjs +49 -14
- package/dist/_vendor/core/runtime/internal/engines/schedulerEngine.mjs.map +1 -1
- package/dist/_vendor/core/runtime/internal/engines/schemaEngine.mjs +4 -7
- package/dist/_vendor/core/runtime/internal/engines/schemaEngine.mjs.map +1 -1
- package/dist/_vendor/core/runtime/internal/engines/shared.mjs +81 -2
- package/dist/_vendor/core/runtime/internal/engines/shared.mjs.map +1 -1
- package/dist/_vendor/core/runtime/internal/engines/storageEngine.mjs +100 -13
- package/dist/_vendor/core/runtime/internal/engines/storageEngine.mjs.map +1 -1
- package/dist/_vendor/core/runtime/internal/runtimeKernel.mjs +42 -7
- package/dist/_vendor/core/runtime/internal/runtimeKernel.mjs.map +1 -1
- package/dist/_vendor/core/runtime/internal/runtimeStatus.mjs.map +1 -1
- package/dist/_vendor/core/runtime/internal/systemMeta.mjs.map +1 -1
- package/dist/_vendor/core/runtime/internal/transactionCoordinator.mjs +4 -0
- package/dist/_vendor/core/runtime/internal/transactionCoordinator.mjs.map +1 -1
- package/dist/_vendor/core/runtime/runtime.d.mts +1100 -12
- package/dist/_vendor/core/runtime/runtime.d.mts.map +1 -1
- package/dist/_vendor/core/runtime/runtime.mjs +63 -0
- package/dist/_vendor/core/runtime/runtime.mjs.map +1 -1
- package/dist/_vendor/core/transport.d.mts +2 -0
- package/dist/_vendor/core/transport.d.mts.map +1 -1
- package/dist/_vendor/core/transport.mjs +61 -27
- package/dist/_vendor/core/transport.mjs.map +1 -1
- package/dist/_vendor/devtools-protocol/index.d.ts +223 -4
- package/dist/_vendor/devtools-protocol/index.d.ts.map +1 -1
- package/dist/_vendor/devtools-protocol/index.js.map +1 -1
- package/dist/_vendor/next/config.d.ts +3 -4
- package/dist/_vendor/next/config.d.ts.map +1 -1
- package/dist/_vendor/next/config.js +37 -19
- package/dist/_vendor/next/config.js.map +1 -1
- package/dist/_vendor/next/index.d.ts +109 -29
- package/dist/_vendor/next/index.d.ts.map +1 -1
- package/dist/_vendor/next/index.js +86 -18
- package/dist/_vendor/next/index.js.map +1 -1
- package/dist/_vendor/platform-expo/index.d.ts +146 -27
- package/dist/_vendor/platform-expo/index.d.ts.map +1 -1
- package/dist/_vendor/platform-expo/index.js +81 -10
- package/dist/_vendor/platform-expo/index.js.map +1 -1
- package/dist/_vendor/platform-expo/react.js.map +1 -1
- package/dist/_vendor/platform-expo/web-sqljs-wasm.js +16 -0
- package/dist/_vendor/platform-expo/web-sqljs-wasm.js.map +1 -0
- package/dist/_vendor/platform-node/index.d.mts +174 -9
- package/dist/_vendor/platform-node/index.d.mts.map +1 -1
- package/dist/_vendor/platform-node/index.mjs +251 -95
- package/dist/_vendor/platform-node/index.mjs.map +1 -1
- package/dist/_vendor/platform-node/ipc-react.mjs +4 -0
- package/dist/_vendor/platform-node/ipc-react.mjs.map +1 -1
- package/dist/_vendor/platform-node/ipc.d.mts.map +1 -1
- package/dist/_vendor/platform-node/ipc.mjs.map +1 -1
- package/dist/_vendor/platform-web/external-change.d.ts +41 -0
- package/dist/_vendor/platform-web/external-change.d.ts.map +1 -1
- package/dist/_vendor/platform-web/external-change.js +30 -0
- package/dist/_vendor/platform-web/external-change.js.map +1 -1
- package/dist/_vendor/platform-web/index.d.ts +312 -37
- package/dist/_vendor/platform-web/index.d.ts.map +1 -1
- package/dist/_vendor/platform-web/index.js +247 -25
- package/dist/_vendor/platform-web/index.js.map +1 -1
- package/dist/_vendor/platform-web/indexeddb.d.ts +12 -0
- package/dist/_vendor/platform-web/indexeddb.d.ts.map +1 -1
- package/dist/_vendor/platform-web/indexeddb.js +10 -0
- package/dist/_vendor/platform-web/indexeddb.js.map +1 -1
- package/dist/_vendor/platform-web/opfs.d.ts +16 -1
- package/dist/_vendor/platform-web/opfs.d.ts.map +1 -1
- package/dist/_vendor/platform-web/opfs.js +41 -3
- package/dist/_vendor/platform-web/opfs.js.map +1 -1
- package/dist/_vendor/platform-web/persistence.d.ts +85 -1
- package/dist/_vendor/platform-web/persistence.d.ts.map +1 -1
- package/dist/_vendor/platform-web/persistence.js +15 -0
- package/dist/_vendor/platform-web/persistence.js.map +1 -1
- package/dist/_vendor/platform-web/react.d.ts +1 -2
- package/dist/_vendor/platform-web/react.d.ts.map +1 -1
- package/dist/_vendor/platform-web/react.js +11 -5
- package/dist/_vendor/platform-web/react.js.map +1 -1
- package/dist/_vendor/platform-web/sqljs.js +10 -1
- package/dist/_vendor/platform-web/sqljs.js.map +1 -1
- package/dist/_vendor/platform-web/web-sqljs-wasm.js +8 -0
- package/dist/_vendor/platform-web/web-sqljs-wasm.js.map +1 -0
- package/dist/_vendor/platform-web/worker.d.ts +60 -9
- package/dist/_vendor/platform-web/worker.d.ts.map +1 -1
- package/dist/_vendor/platform-web/worker.js +37 -4
- package/dist/_vendor/platform-web/worker.js.map +1 -1
- package/dist/_vendor/react/index.d.ts +197 -13
- package/dist/_vendor/react/index.d.ts.map +1 -1
- package/dist/_vendor/react/index.js +209 -17
- package/dist/_vendor/react/index.js.map +1 -1
- package/dist/_vendor/schema/definition.d.ts +129 -0
- package/dist/_vendor/schema/definition.d.ts.map +1 -1
- package/dist/_vendor/schema/definition.js +99 -0
- package/dist/_vendor/schema/definition.js.map +1 -1
- package/dist/_vendor/schema/planner.d.ts.map +1 -1
- package/dist/_vendor/schema/planner.js.map +1 -1
- package/dist/_vendor/schema/validators.d.ts +180 -4
- package/dist/_vendor/schema/validators.d.ts.map +1 -1
- package/dist/_vendor/schema/validators.js +35 -1
- package/dist/_vendor/schema/validators.js.map +1 -1
- package/dist/_vendor/svelte/index.d.ts +207 -7
- package/dist/_vendor/svelte/index.d.ts.map +1 -1
- package/dist/_vendor/svelte/index.js +201 -6
- package/dist/_vendor/svelte/index.js.map +1 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -1
- 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
|
|
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
|
|
42
|
+
/** The data model that defines the available tables and indexes. */
|
|
19
43
|
schema: TSchema;
|
|
20
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* Namespace prefix for blob storage keys. Defaults to `databaseName` or
|
|
114
|
+
* `"syncore"`.
|
|
115
|
+
*/
|
|
41
116
|
storageNamespace?: string;
|
|
42
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
133
|
+
/**
|
|
134
|
+
* Platform label reported to the devtools dashboard.
|
|
135
|
+
* Defaults to `"browser"`.
|
|
136
|
+
*/
|
|
47
137
|
platform?: string;
|
|
48
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
76
|
-
*
|
|
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
|
-
*
|
|
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>):
|
|
284
|
+
declare function createWebWorkerRuntime<TSchema extends WebSyncoreSchema>(options: CreateWebWorkerRuntimeOptions<TSchema>): import("../core/index.d.mts").AttachedRuntimeBridge;
|
|
96
285
|
/**
|
|
97
|
-
*
|
|
286
|
+
* Alias of {@link createWebWorkerRuntime} for the `syncorejs/browser` surface.
|
|
287
|
+
* @see createWebWorkerRuntime
|
|
98
288
|
*/
|
|
99
|
-
declare function createBrowserWorkerRuntime(options: CreateBrowserWorkerRuntimeOptions):
|
|
289
|
+
declare function createBrowserWorkerRuntime(options: CreateBrowserWorkerRuntimeOptions): import("../core/index.d.mts").AttachedRuntimeBridge;
|
|
100
290
|
/**
|
|
101
|
-
* Create a client
|
|
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>):
|
|
304
|
+
declare function createWebSyncoreClient<TSchema extends WebSyncoreSchema>(runtime: SyncoreRuntime<TSchema>): import("../core/index.d.mts").SyncoreClient;
|
|
104
305
|
/**
|
|
105
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":"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"}
|