syncorejs 0.1.0 → 0.2.0
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/{core/src/cli.d.ts → _vendor/cli/app.d.mts} +4 -2
- package/dist/_vendor/cli/app.d.mts.map +1 -0
- package/dist/_vendor/cli/app.mjs +997 -0
- package/dist/_vendor/cli/app.mjs.map +1 -0
- package/dist/_vendor/cli/context.mjs +180 -0
- package/dist/_vendor/cli/context.mjs.map +1 -0
- package/dist/_vendor/cli/dev-session.mjs +49 -0
- package/dist/_vendor/cli/dev-session.mjs.map +1 -0
- package/dist/_vendor/cli/doctor.mjs +80 -0
- package/dist/_vendor/cli/doctor.mjs.map +1 -0
- package/dist/_vendor/cli/errors.mjs +22 -0
- package/dist/_vendor/cli/errors.mjs.map +1 -0
- package/dist/_vendor/cli/help.mjs +26 -0
- package/dist/_vendor/cli/help.mjs.map +1 -0
- package/dist/_vendor/cli/index.d.mts +2 -0
- package/dist/_vendor/cli/index.mjs +23 -0
- package/dist/_vendor/cli/index.mjs.map +1 -0
- package/dist/_vendor/cli/messages.mjs +32 -0
- package/dist/_vendor/cli/messages.mjs.map +1 -0
- package/dist/_vendor/cli/preflight.mjs +35 -0
- package/dist/_vendor/cli/preflight.mjs.map +1 -0
- package/dist/_vendor/cli/project.mjs +583 -0
- package/dist/_vendor/cli/project.mjs.map +1 -0
- package/dist/_vendor/cli/render.mjs +133 -0
- package/dist/_vendor/cli/render.mjs.map +1 -0
- package/dist/_vendor/cli/targets.mjs +87 -0
- package/dist/_vendor/cli/targets.mjs.map +1 -0
- package/dist/_vendor/core/cli.d.mts +59 -1
- package/dist/_vendor/core/cli.d.mts.map +1 -1
- package/dist/_vendor/core/cli.mjs +528 -75
- package/dist/_vendor/core/cli.mjs.map +1 -1
- package/dist/_vendor/core/index.d.mts +12 -4
- package/dist/_vendor/core/index.d.mts.map +1 -0
- package/dist/_vendor/core/index.mjs +4 -3
- package/dist/_vendor/core/index.mjs.map +1 -1
- package/dist/_vendor/core/runtime/devtools.d.mts +32 -6
- package/dist/_vendor/core/runtime/devtools.d.mts.map +1 -1
- package/dist/_vendor/core/runtime/devtools.mjs +397 -182
- package/dist/_vendor/core/runtime/devtools.mjs.map +1 -1
- package/dist/_vendor/core/runtime/functions.mjs.map +1 -1
- package/dist/_vendor/core/runtime/runtime.d.mts +89 -7
- package/dist/_vendor/core/runtime/runtime.d.mts.map +1 -1
- package/dist/_vendor/core/runtime/runtime.mjs +303 -32
- package/dist/_vendor/core/runtime/runtime.mjs.map +1 -1
- package/dist/_vendor/devtools-protocol/index.d.ts +189 -82
- package/dist/_vendor/devtools-protocol/index.d.ts.map +1 -1
- package/dist/_vendor/devtools-protocol/index.js +39 -0
- package/dist/_vendor/devtools-protocol/index.js.map +1 -0
- package/dist/_vendor/next/config.d.ts.map +1 -1
- package/dist/_vendor/next/config.js +2 -5
- package/dist/_vendor/next/config.js.map +1 -1
- package/dist/_vendor/platform-expo/index.d.ts +15 -5
- package/dist/_vendor/platform-expo/index.d.ts.map +1 -1
- package/dist/_vendor/platform-expo/index.js +33 -3
- package/dist/_vendor/platform-expo/index.js.map +1 -1
- package/dist/_vendor/platform-expo/react.js.map +1 -1
- package/dist/_vendor/platform-node/index.d.mts +10 -5
- package/dist/_vendor/platform-node/index.d.mts.map +1 -1
- package/dist/_vendor/platform-node/index.mjs +145 -35
- package/dist/_vendor/platform-node/index.mjs.map +1 -1
- package/dist/_vendor/platform-node/ipc-react.mjs.map +1 -1
- package/dist/_vendor/platform-web/external-change.d.ts +39 -0
- package/dist/_vendor/platform-web/external-change.d.ts.map +1 -0
- package/dist/_vendor/platform-web/external-change.js +61 -0
- package/dist/_vendor/platform-web/external-change.js.map +1 -0
- package/dist/_vendor/platform-web/index.d.ts +27 -5
- package/dist/_vendor/platform-web/index.d.ts.map +1 -1
- package/dist/_vendor/platform-web/index.js +310 -44
- package/dist/_vendor/platform-web/index.js.map +1 -1
- package/dist/_vendor/platform-web/indexeddb.js.map +1 -1
- package/dist/_vendor/platform-web/opfs.js.map +1 -1
- package/dist/_vendor/platform-web/persistence.js.map +1 -1
- package/dist/_vendor/platform-web/react.js.map +1 -1
- package/dist/_vendor/platform-web/sqljs.js +22 -2
- package/dist/_vendor/platform-web/sqljs.js.map +1 -1
- package/dist/_vendor/schema/definition.js.map +1 -1
- package/dist/_vendor/schema/planner.js.map +1 -1
- package/dist/_vendor/schema/validators.js.map +1 -1
- package/dist/browser-react.d.ts +1 -1
- package/dist/browser-react.js +1 -1
- package/dist/browser.d.ts +6 -7
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +4 -5
- package/dist/browser.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +12 -3
- package/dist/cli.js.map +1 -1
- package/dist/expo-react.d.ts +1 -1
- package/dist/expo-react.js +1 -1
- package/dist/expo.d.ts +1 -2
- package/dist/expo.js +1 -2
- package/dist/index.d.ts +3 -7
- package/dist/index.js +3 -8
- package/dist/next-config.d.ts +1 -2
- package/dist/next-config.js +1 -2
- package/dist/next.d.ts +1 -3
- package/dist/next.js +1 -3
- package/dist/node-ipc-react.d.ts +1 -1
- package/dist/node-ipc-react.js +1 -1
- package/dist/node-ipc.d.ts +1 -2
- package/dist/node-ipc.js +1 -2
- package/dist/node.d.ts +1 -4
- package/dist/node.js +1 -3
- package/dist/react.d.ts +1 -2
- package/dist/react.js +1 -2
- package/dist/svelte.d.ts +1 -2
- package/dist/svelte.js +1 -2
- package/package.json +6 -3
- package/dist/core/src/cli.d.ts.map +0 -1
- package/dist/core/src/cli.js +0 -1196
- package/dist/core/src/cli.js.map +0 -1
- package/dist/core/src/index.js +0 -7
- package/dist/core/src/runtime/devtools.d.ts +0 -7
- package/dist/core/src/runtime/devtools.d.ts.map +0 -1
- package/dist/core/src/runtime/devtools.js +0 -300
- package/dist/core/src/runtime/devtools.js.map +0 -1
- package/dist/core/src/runtime/functions.d.ts +0 -123
- package/dist/core/src/runtime/functions.d.ts.map +0 -1
- package/dist/core/src/runtime/functions.js +0 -71
- package/dist/core/src/runtime/functions.js.map +0 -1
- package/dist/core/src/runtime/id.d.ts +0 -13
- package/dist/core/src/runtime/id.d.ts.map +0 -1
- package/dist/core/src/runtime/id.js +0 -28
- package/dist/core/src/runtime/id.js.map +0 -1
- package/dist/core/src/runtime/runtime.d.ts +0 -371
- package/dist/core/src/runtime/runtime.d.ts.map +0 -1
- package/dist/core/src/runtime/runtime.js +0 -1143
- package/dist/core/src/runtime/runtime.js.map +0 -1
- package/dist/devtools-protocol/src/index.d.ts +0 -201
- package/dist/devtools-protocol/src/index.d.ts.map +0 -1
- package/dist/next/src/config.d.ts +0 -17
- package/dist/next/src/config.d.ts.map +0 -1
- package/dist/next/src/config.js +0 -73
- package/dist/next/src/config.js.map +0 -1
- package/dist/next/src/index.d.ts +0 -80
- package/dist/next/src/index.d.ts.map +0 -1
- package/dist/next/src/index.js +0 -82
- package/dist/next/src/index.js.map +0 -1
- package/dist/platform-expo/src/index.d.ts +0 -96
- package/dist/platform-expo/src/index.d.ts.map +0 -1
- package/dist/platform-expo/src/index.js +0 -198
- package/dist/platform-expo/src/index.js.map +0 -1
- package/dist/platform-expo/src/react.d.ts +0 -26
- package/dist/platform-expo/src/react.d.ts.map +0 -1
- package/dist/platform-expo/src/react.js +0 -30
- package/dist/platform-expo/src/react.js.map +0 -1
- package/dist/platform-node/src/index.d.ts +0 -145
- package/dist/platform-node/src/index.d.ts.map +0 -1
- package/dist/platform-node/src/index.js +0 -407
- package/dist/platform-node/src/index.js.map +0 -1
- package/dist/platform-node/src/ipc-react.d.ts +0 -25
- package/dist/platform-node/src/ipc-react.d.ts.map +0 -1
- package/dist/platform-node/src/ipc-react.js +0 -21
- package/dist/platform-node/src/ipc-react.js.map +0 -1
- package/dist/platform-node/src/ipc.d.ts +0 -76
- package/dist/platform-node/src/ipc.d.ts.map +0 -1
- package/dist/platform-node/src/ipc.js +0 -344
- package/dist/platform-node/src/ipc.js.map +0 -1
- package/dist/platform-web/src/index.d.ts +0 -106
- package/dist/platform-web/src/index.d.ts.map +0 -1
- package/dist/platform-web/src/index.js +0 -311
- package/dist/platform-web/src/index.js.map +0 -1
- package/dist/platform-web/src/indexeddb.js +0 -125
- package/dist/platform-web/src/indexeddb.js.map +0 -1
- package/dist/platform-web/src/opfs.js +0 -146
- package/dist/platform-web/src/opfs.js.map +0 -1
- package/dist/platform-web/src/persistence.d.ts +0 -20
- package/dist/platform-web/src/persistence.d.ts.map +0 -1
- package/dist/platform-web/src/persistence.js +0 -23
- package/dist/platform-web/src/persistence.js.map +0 -1
- package/dist/platform-web/src/react.d.ts +0 -35
- package/dist/platform-web/src/react.d.ts.map +0 -1
- package/dist/platform-web/src/react.js +0 -42
- package/dist/platform-web/src/react.js.map +0 -1
- package/dist/platform-web/src/sqljs.js +0 -133
- package/dist/platform-web/src/sqljs.js.map +0 -1
- package/dist/platform-web/src/worker.d.ts +0 -79
- package/dist/platform-web/src/worker.d.ts.map +0 -1
- package/dist/platform-web/src/worker.js +0 -308
- package/dist/platform-web/src/worker.js.map +0 -1
- package/dist/react/src/index.d.ts +0 -59
- package/dist/react/src/index.d.ts.map +0 -1
- package/dist/react/src/index.js +0 -151
- package/dist/react/src/index.js.map +0 -1
- package/dist/schema/src/definition.d.ts +0 -98
- package/dist/schema/src/definition.d.ts.map +0 -1
- package/dist/schema/src/definition.js +0 -84
- package/dist/schema/src/definition.js.map +0 -1
- package/dist/schema/src/planner.d.ts +0 -42
- package/dist/schema/src/planner.d.ts.map +0 -1
- package/dist/schema/src/planner.js +0 -131
- package/dist/schema/src/planner.js.map +0 -1
- package/dist/schema/src/validators.d.ts +0 -194
- package/dist/schema/src/validators.d.ts.map +0 -1
- package/dist/schema/src/validators.js +0 -158
- package/dist/schema/src/validators.js.map +0 -1
- package/dist/svelte/src/index.d.ts +0 -44
- package/dist/svelte/src/index.d.ts.map +0 -1
- package/dist/svelte/src/index.js +0 -75
- package/dist/svelte/src/index.js.map +0 -1
|
@@ -1,82 +1,73 @@
|
|
|
1
1
|
//#region src/index.d.ts
|
|
2
|
-
type
|
|
3
|
-
|
|
2
|
+
type SyncoreDevtoolsEventOrigin = "runtime" | "dashboard";
|
|
3
|
+
type SyncoreDevtoolsEventBase = {
|
|
4
4
|
runtimeId: string;
|
|
5
|
-
platform: string;
|
|
6
5
|
timestamp: number;
|
|
7
|
-
|
|
6
|
+
origin?: SyncoreDevtoolsEventOrigin;
|
|
7
|
+
};
|
|
8
|
+
type SyncoreDevtoolsEvent = (SyncoreDevtoolsEventBase & {
|
|
9
|
+
type: "runtime.connected";
|
|
10
|
+
platform: string;
|
|
11
|
+
}) | (SyncoreDevtoolsEventBase & {
|
|
8
12
|
type: "runtime.disconnected";
|
|
9
|
-
|
|
10
|
-
timestamp: number;
|
|
11
|
-
} | {
|
|
13
|
+
}) | (SyncoreDevtoolsEventBase & {
|
|
12
14
|
type: "query.executed";
|
|
13
|
-
runtimeId: string;
|
|
14
15
|
queryId: string;
|
|
15
16
|
functionName: string;
|
|
16
17
|
dependencies: string[];
|
|
17
18
|
durationMs: number;
|
|
18
|
-
|
|
19
|
-
} | {
|
|
19
|
+
}) | (SyncoreDevtoolsEventBase & {
|
|
20
20
|
type: "query.invalidated";
|
|
21
|
-
runtimeId: string;
|
|
22
21
|
queryId: string;
|
|
23
22
|
reason: string;
|
|
24
|
-
|
|
25
|
-
} | {
|
|
23
|
+
}) | (SyncoreDevtoolsEventBase & {
|
|
26
24
|
type: "mutation.committed";
|
|
27
|
-
runtimeId: string;
|
|
28
25
|
mutationId: string;
|
|
29
26
|
functionName: string;
|
|
30
27
|
changedTables: string[];
|
|
31
28
|
durationMs: number;
|
|
32
|
-
|
|
33
|
-
} | {
|
|
29
|
+
}) | (SyncoreDevtoolsEventBase & {
|
|
34
30
|
type: "action.completed";
|
|
35
|
-
runtimeId: string;
|
|
36
31
|
actionId: string;
|
|
37
32
|
functionName: string;
|
|
38
33
|
durationMs: number;
|
|
39
|
-
timestamp: number;
|
|
40
34
|
error?: string;
|
|
41
|
-
} | {
|
|
35
|
+
}) | (SyncoreDevtoolsEventBase & {
|
|
42
36
|
type: "scheduler.tick";
|
|
43
|
-
runtimeId: string;
|
|
44
37
|
executedJobIds: string[];
|
|
45
|
-
|
|
46
|
-
} | {
|
|
38
|
+
}) | (SyncoreDevtoolsEventBase & {
|
|
47
39
|
type: "storage.updated";
|
|
48
|
-
runtimeId: string;
|
|
49
40
|
storageId: string;
|
|
50
41
|
operation: "put" | "delete";
|
|
51
|
-
|
|
52
|
-
} | {
|
|
42
|
+
}) | (SyncoreDevtoolsEventBase & {
|
|
53
43
|
type: "log";
|
|
54
|
-
runtimeId: string;
|
|
55
44
|
level: "info" | "warn" | "error";
|
|
56
45
|
message: string;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
46
|
+
});
|
|
47
|
+
interface SyncoreActiveQueryInfo {
|
|
48
|
+
id: string;
|
|
49
|
+
functionName: string;
|
|
50
|
+
dependencyKeys: string[];
|
|
51
|
+
lastRunAt: number;
|
|
52
|
+
}
|
|
53
|
+
interface SyncoreRuntimeSummary {
|
|
60
54
|
runtimeId: string;
|
|
61
55
|
platform: string;
|
|
62
56
|
appName?: string;
|
|
63
57
|
origin?: string;
|
|
64
58
|
sessionLabel?: string;
|
|
59
|
+
targetKind?: "client" | "project";
|
|
60
|
+
storageProtocol?: string;
|
|
61
|
+
databaseLabel?: string;
|
|
62
|
+
storageIdentity?: string;
|
|
65
63
|
connectedAt: number;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
functionName: string;
|
|
69
|
-
dependencyKeys: string[];
|
|
70
|
-
lastRunAt: number;
|
|
71
|
-
}>;
|
|
72
|
-
pendingJobs: Array<{
|
|
73
|
-
id: string;
|
|
74
|
-
functionName: string;
|
|
75
|
-
runAt: number;
|
|
76
|
-
status: string;
|
|
77
|
-
}>;
|
|
78
|
-
recentEvents: SyncoreDevtoolsEvent[];
|
|
64
|
+
activeQueryCount: number;
|
|
65
|
+
recentEventCount: number;
|
|
79
66
|
}
|
|
67
|
+
declare function createBasePublicId(input: string): string;
|
|
68
|
+
declare function createPublicId(key: string, keys: Iterable<string>): string;
|
|
69
|
+
declare function createPublicRuntimeId(runtimeId: string, runtimeIds?: Iterable<string>): string;
|
|
70
|
+
declare function createPublicTargetId(targetKey: string, targetKeys: Iterable<string>): string;
|
|
80
71
|
type SyncoreDevtoolsMessage = {
|
|
81
72
|
type: "hello";
|
|
82
73
|
runtimeId: string;
|
|
@@ -84,41 +75,62 @@ type SyncoreDevtoolsMessage = {
|
|
|
84
75
|
appName?: string;
|
|
85
76
|
origin?: string;
|
|
86
77
|
sessionLabel?: string;
|
|
78
|
+
targetKind?: "client" | "project";
|
|
79
|
+
storageProtocol?: string;
|
|
80
|
+
databaseLabel?: string;
|
|
81
|
+
storageIdentity?: string;
|
|
87
82
|
} | {
|
|
88
83
|
type: "event";
|
|
89
84
|
event: SyncoreDevtoolsEvent;
|
|
90
85
|
} | {
|
|
91
|
-
type: "
|
|
92
|
-
|
|
86
|
+
type: "event.batch";
|
|
87
|
+
runtimeId: string;
|
|
88
|
+
events: SyncoreDevtoolsEvent[];
|
|
93
89
|
} | {
|
|
94
90
|
type: "ping";
|
|
95
91
|
} | {
|
|
96
92
|
type: "pong";
|
|
97
93
|
} | {
|
|
98
|
-
type: "
|
|
99
|
-
|
|
94
|
+
type: "command.result";
|
|
95
|
+
commandId: string;
|
|
96
|
+
runtimeId: string;
|
|
97
|
+
payload: SyncoreDevtoolsCommandResultPayload;
|
|
98
|
+
} | {
|
|
99
|
+
type: "subscription.data";
|
|
100
|
+
subscriptionId: string;
|
|
101
|
+
runtimeId: string;
|
|
102
|
+
payload: SyncoreDevtoolsSubscriptionResultPayload;
|
|
103
|
+
} | {
|
|
104
|
+
type: "subscription.error";
|
|
105
|
+
subscriptionId: string;
|
|
100
106
|
runtimeId: string;
|
|
101
|
-
|
|
107
|
+
error: string;
|
|
102
108
|
};
|
|
103
|
-
interface
|
|
104
|
-
type: "
|
|
105
|
-
|
|
109
|
+
interface SyncoreDevtoolsCommand {
|
|
110
|
+
type: "command";
|
|
111
|
+
commandId: string;
|
|
106
112
|
targetRuntimeId: string;
|
|
107
|
-
payload:
|
|
113
|
+
payload: SyncoreDevtoolsCommandPayload;
|
|
108
114
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
115
|
+
interface SyncoreDevtoolsSubscribe {
|
|
116
|
+
type: "subscribe";
|
|
117
|
+
subscriptionId: string;
|
|
118
|
+
targetRuntimeId: string;
|
|
119
|
+
payload: SyncoreDevtoolsSubscriptionPayload;
|
|
120
|
+
}
|
|
121
|
+
interface SyncoreDevtoolsUnsubscribe {
|
|
122
|
+
type: "unsubscribe";
|
|
123
|
+
subscriptionId: string;
|
|
124
|
+
targetRuntimeId: string;
|
|
125
|
+
}
|
|
126
|
+
type SyncoreDevtoolsClientMessage = {
|
|
127
|
+
type: "ping";
|
|
128
|
+
} | SyncoreDevtoolsCommand | SyncoreDevtoolsSubscribe | SyncoreDevtoolsUnsubscribe;
|
|
129
|
+
type SyncoreDevtoolsCommandPayload = {
|
|
112
130
|
kind: "fn.run";
|
|
113
131
|
functionName: string;
|
|
114
132
|
functionType: "query" | "mutation" | "action";
|
|
115
133
|
args: Record<string, unknown>;
|
|
116
|
-
} | {
|
|
117
|
-
kind: "data.query";
|
|
118
|
-
table: string;
|
|
119
|
-
filters?: DataFilter[];
|
|
120
|
-
limit?: number;
|
|
121
|
-
cursor?: string;
|
|
122
134
|
} | {
|
|
123
135
|
kind: "data.insert";
|
|
124
136
|
table: string;
|
|
@@ -133,59 +145,117 @@ type SyncoreRequestPayload = {
|
|
|
133
145
|
table: string;
|
|
134
146
|
id: string;
|
|
135
147
|
} | {
|
|
136
|
-
kind: "
|
|
137
|
-
} | {
|
|
138
|
-
kind: "sql.execute";
|
|
148
|
+
kind: "sql.read";
|
|
139
149
|
query: string;
|
|
140
150
|
} | {
|
|
141
|
-
kind: "
|
|
151
|
+
kind: "sql.write";
|
|
152
|
+
query: string;
|
|
142
153
|
} | {
|
|
143
154
|
kind: "scheduler.cancel";
|
|
144
155
|
jobId: string;
|
|
156
|
+
} | {
|
|
157
|
+
kind: "scheduler.update";
|
|
158
|
+
jobId: string;
|
|
159
|
+
schedule: SchedulerRecurringSchedule;
|
|
160
|
+
args: Record<string, unknown>;
|
|
161
|
+
misfirePolicy: SchedulerMisfirePolicy;
|
|
162
|
+
runAt?: number;
|
|
163
|
+
};
|
|
164
|
+
type SyncoreDevtoolsSubscriptionPayload = {
|
|
165
|
+
kind: "runtime.summary";
|
|
166
|
+
} | {
|
|
167
|
+
kind: "runtime.activeQueries";
|
|
168
|
+
} | {
|
|
169
|
+
kind: "schema.tables";
|
|
170
|
+
} | {
|
|
171
|
+
kind: "fn.watch";
|
|
172
|
+
functionName: string;
|
|
173
|
+
functionType: "query";
|
|
174
|
+
args: Record<string, unknown>;
|
|
175
|
+
} | {
|
|
176
|
+
kind: "data.table";
|
|
177
|
+
table: string;
|
|
178
|
+
filters?: DataFilter[];
|
|
179
|
+
limit?: number;
|
|
180
|
+
cursor?: string;
|
|
181
|
+
} | {
|
|
182
|
+
kind: "scheduler.jobs";
|
|
183
|
+
} | {
|
|
184
|
+
kind: "functions.catalog";
|
|
185
|
+
} | {
|
|
186
|
+
kind: "sql.watch";
|
|
187
|
+
query: string;
|
|
145
188
|
};
|
|
146
189
|
interface DataFilter {
|
|
147
190
|
field: string;
|
|
148
191
|
operator: "eq" | "neq" | "gt" | "gte" | "lt" | "lte" | "contains" | "startsWith";
|
|
149
192
|
value: unknown;
|
|
150
193
|
}
|
|
151
|
-
type
|
|
152
|
-
kind: "fn.list.result";
|
|
153
|
-
functions: FunctionDefinition[];
|
|
154
|
-
} | {
|
|
194
|
+
type SyncoreDevtoolsCommandResultPayload = {
|
|
155
195
|
kind: "fn.run.result";
|
|
156
196
|
result?: unknown;
|
|
157
197
|
error?: string;
|
|
158
198
|
durationMs: number;
|
|
159
|
-
} | {
|
|
160
|
-
kind: "data.result";
|
|
161
|
-
rows: Record<string, unknown>[];
|
|
162
|
-
totalCount: number;
|
|
163
|
-
cursor?: string;
|
|
164
199
|
} | {
|
|
165
200
|
kind: "data.mutate.result";
|
|
166
201
|
success: boolean;
|
|
167
202
|
id?: string;
|
|
168
203
|
error?: string;
|
|
169
204
|
} | {
|
|
170
|
-
kind: "
|
|
171
|
-
tables: TableSchema[];
|
|
172
|
-
} | {
|
|
173
|
-
kind: "sql.result";
|
|
205
|
+
kind: "sql.read.result";
|
|
174
206
|
columns: string[];
|
|
175
207
|
rows: unknown[][];
|
|
176
|
-
rowsAffected: number;
|
|
177
208
|
error?: string;
|
|
178
209
|
} | {
|
|
179
|
-
kind: "
|
|
180
|
-
|
|
210
|
+
kind: "sql.write.result";
|
|
211
|
+
rowsAffected: number;
|
|
212
|
+
error?: string;
|
|
213
|
+
invalidationScopes: string[];
|
|
181
214
|
} | {
|
|
182
215
|
kind: "scheduler.cancel.result";
|
|
183
216
|
success: boolean;
|
|
217
|
+
cancelled: boolean;
|
|
218
|
+
error?: string;
|
|
219
|
+
} | {
|
|
220
|
+
kind: "scheduler.update.result";
|
|
221
|
+
success: boolean;
|
|
222
|
+
updated: boolean;
|
|
184
223
|
error?: string;
|
|
224
|
+
job?: SchedulerJob;
|
|
185
225
|
} | {
|
|
186
226
|
kind: "error";
|
|
187
227
|
message: string;
|
|
188
228
|
};
|
|
229
|
+
type SyncoreDevtoolsSubscriptionResultPayload = {
|
|
230
|
+
kind: "runtime.summary.result";
|
|
231
|
+
summary: SyncoreRuntimeSummary;
|
|
232
|
+
} | {
|
|
233
|
+
kind: "runtime.activeQueries.result";
|
|
234
|
+
activeQueries: SyncoreActiveQueryInfo[];
|
|
235
|
+
} | {
|
|
236
|
+
kind: "fn.watch.result";
|
|
237
|
+
result?: unknown;
|
|
238
|
+
error?: string;
|
|
239
|
+
} | {
|
|
240
|
+
kind: "schema.tables.result";
|
|
241
|
+
tables: TableSchema[];
|
|
242
|
+
} | {
|
|
243
|
+
kind: "data.table.result";
|
|
244
|
+
rows: Record<string, unknown>[];
|
|
245
|
+
totalCount: number;
|
|
246
|
+
cursor?: string;
|
|
247
|
+
} | {
|
|
248
|
+
kind: "scheduler.jobs.result";
|
|
249
|
+
jobs: SchedulerJob[];
|
|
250
|
+
} | {
|
|
251
|
+
kind: "functions.catalog.result";
|
|
252
|
+
functions: FunctionDefinition[];
|
|
253
|
+
} | {
|
|
254
|
+
kind: "sql.watch.result";
|
|
255
|
+
columns: string[];
|
|
256
|
+
rows: unknown[][];
|
|
257
|
+
observedTables: string[];
|
|
258
|
+
};
|
|
189
259
|
interface FunctionDefinition {
|
|
190
260
|
name: string;
|
|
191
261
|
type: "query" | "mutation" | "action";
|
|
@@ -222,9 +292,46 @@ interface SchedulerJob {
|
|
|
222
292
|
result?: unknown;
|
|
223
293
|
error?: string;
|
|
224
294
|
durationMs?: number;
|
|
225
|
-
|
|
295
|
+
recurringName?: string;
|
|
296
|
+
schedule?: SchedulerRecurringSchedule;
|
|
297
|
+
scheduleLabel?: string;
|
|
298
|
+
misfirePolicy?: SchedulerMisfirePolicy;
|
|
299
|
+
timezone?: string;
|
|
300
|
+
lastRunAt?: number;
|
|
301
|
+
updatedAt?: number;
|
|
302
|
+
/** Compatibility label for older UI code. */
|
|
226
303
|
cronSchedule?: string;
|
|
227
304
|
}
|
|
305
|
+
interface SchedulerRecurringIntervalSchedule {
|
|
306
|
+
type: "interval";
|
|
307
|
+
seconds?: number;
|
|
308
|
+
minutes?: number;
|
|
309
|
+
hours?: number;
|
|
310
|
+
}
|
|
311
|
+
interface SchedulerRecurringDailySchedule {
|
|
312
|
+
type: "daily";
|
|
313
|
+
hour: number;
|
|
314
|
+
minute: number;
|
|
315
|
+
timezone?: string;
|
|
316
|
+
}
|
|
317
|
+
interface SchedulerRecurringWeeklySchedule {
|
|
318
|
+
type: "weekly";
|
|
319
|
+
dayOfWeek: "sunday" | "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday";
|
|
320
|
+
hour: number;
|
|
321
|
+
minute: number;
|
|
322
|
+
timezone?: string;
|
|
323
|
+
}
|
|
324
|
+
type SchedulerRecurringSchedule = SchedulerRecurringIntervalSchedule | SchedulerRecurringDailySchedule | SchedulerRecurringWeeklySchedule;
|
|
325
|
+
type SchedulerMisfirePolicy = {
|
|
326
|
+
type: "catch_up";
|
|
327
|
+
} | {
|
|
328
|
+
type: "skip";
|
|
329
|
+
} | {
|
|
330
|
+
type: "run_once_if_missed";
|
|
331
|
+
} | {
|
|
332
|
+
type: "windowed";
|
|
333
|
+
windowMs: number;
|
|
334
|
+
};
|
|
228
335
|
//#endregion
|
|
229
|
-
export { DataFilter, FunctionDefinition, SchedulerJob, SyncoreDevtoolsEvent, SyncoreDevtoolsMessage,
|
|
336
|
+
export { DataFilter, FunctionDefinition, SchedulerJob, SchedulerMisfirePolicy, SchedulerRecurringDailySchedule, SchedulerRecurringIntervalSchedule, SchedulerRecurringSchedule, SchedulerRecurringWeeklySchedule, SyncoreActiveQueryInfo, SyncoreDevtoolsClientMessage, SyncoreDevtoolsCommand, SyncoreDevtoolsCommandPayload, SyncoreDevtoolsCommandResultPayload, SyncoreDevtoolsEvent, SyncoreDevtoolsEventOrigin, SyncoreDevtoolsMessage, SyncoreDevtoolsSubscribe, SyncoreDevtoolsSubscriptionPayload, SyncoreDevtoolsSubscriptionResultPayload, SyncoreDevtoolsUnsubscribe, SyncoreRuntimeSummary, TableField, TableIndex, TableSchema, createBasePublicId, createPublicId, createPublicRuntimeId, createPublicTargetId };
|
|
230
337
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";KAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region src/index.ts
|
|
2
|
+
function createBasePublicId(input) {
|
|
3
|
+
return stablePublicId(input, 0);
|
|
4
|
+
}
|
|
5
|
+
function createPublicId(key, keys) {
|
|
6
|
+
const used = /* @__PURE__ */ new Set();
|
|
7
|
+
for (const existingKey of [...keys].sort()) {
|
|
8
|
+
let attempt = 0;
|
|
9
|
+
while (true) {
|
|
10
|
+
const candidate = stablePublicId(existingKey, attempt);
|
|
11
|
+
if (existingKey === key && !used.has(candidate)) return candidate;
|
|
12
|
+
if (!used.has(candidate)) {
|
|
13
|
+
used.add(candidate);
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
attempt += 1;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return createBasePublicId(key);
|
|
20
|
+
}
|
|
21
|
+
function createPublicRuntimeId(runtimeId, runtimeIds) {
|
|
22
|
+
return runtimeIds ? createPublicId(runtimeId, runtimeIds) : createBasePublicId(runtimeId);
|
|
23
|
+
}
|
|
24
|
+
function createPublicTargetId(targetKey, targetKeys) {
|
|
25
|
+
return createPublicId(targetKey, targetKeys);
|
|
26
|
+
}
|
|
27
|
+
function stablePublicId(input, salt) {
|
|
28
|
+
const hashInput = salt === 0 ? input : `${input}#${salt}`;
|
|
29
|
+
let hash = 2166136261;
|
|
30
|
+
for (let index = 0; index < hashInput.length; index += 1) {
|
|
31
|
+
hash ^= hashInput.charCodeAt(index);
|
|
32
|
+
hash = Math.imul(hash, 16777619);
|
|
33
|
+
}
|
|
34
|
+
return ((hash >>> 0) % 1e5).toString().padStart(5, "0");
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { createBasePublicId, createPublicId, createPublicRuntimeId, createPublicTargetId };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export type SyncoreDevtoolsEventOrigin = \"runtime\" | \"dashboard\";\n\ntype SyncoreDevtoolsEventBase = {\n runtimeId: string;\n timestamp: number;\n origin?: SyncoreDevtoolsEventOrigin;\n};\n\nexport type SyncoreDevtoolsEvent =\n | (SyncoreDevtoolsEventBase & {\n type: \"runtime.connected\";\n platform: string;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"runtime.disconnected\";\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"query.executed\";\n queryId: string;\n functionName: string;\n dependencies: string[];\n durationMs: number;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"query.invalidated\";\n queryId: string;\n reason: string;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"mutation.committed\";\n mutationId: string;\n functionName: string;\n changedTables: string[];\n durationMs: number;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"action.completed\";\n actionId: string;\n functionName: string;\n durationMs: number;\n error?: string;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"scheduler.tick\";\n executedJobIds: string[];\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"storage.updated\";\n storageId: string;\n operation: \"put\" | \"delete\";\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"log\";\n level: \"info\" | \"warn\" | \"error\";\n message: string;\n });\n\nexport interface SyncoreActiveQueryInfo {\n id: string;\n functionName: string;\n dependencyKeys: string[];\n lastRunAt: number;\n}\n\nexport interface SyncoreRuntimeSummary {\n runtimeId: string;\n platform: string;\n appName?: string;\n origin?: string;\n sessionLabel?: string;\n targetKind?: \"client\" | \"project\";\n storageProtocol?: string;\n databaseLabel?: string;\n storageIdentity?: string;\n connectedAt: number;\n activeQueryCount: number;\n recentEventCount: number;\n}\n\nexport function createBasePublicId(input: string): string {\n return stablePublicId(input, 0);\n}\n\nexport function createPublicId(\n key: string,\n keys: Iterable<string>\n): string {\n const used = new Set<string>();\n for (const existingKey of [...keys].sort()) {\n let attempt = 0;\n while (true) {\n const candidate = stablePublicId(existingKey, attempt);\n if (existingKey === key && !used.has(candidate)) {\n return candidate;\n }\n if (!used.has(candidate)) {\n used.add(candidate);\n break;\n }\n attempt += 1;\n }\n }\n return createBasePublicId(key);\n}\n\nexport function createPublicRuntimeId(\n runtimeId: string,\n runtimeIds?: Iterable<string>\n): string {\n return runtimeIds ? createPublicId(runtimeId, runtimeIds) : createBasePublicId(runtimeId);\n}\n\nexport function createPublicTargetId(\n targetKey: string,\n targetKeys: Iterable<string>\n): string {\n return createPublicId(targetKey, targetKeys);\n}\n\nfunction stablePublicId(input: string, salt: number): string {\n const hashInput = salt === 0 ? input : `${input}#${salt}`;\n let hash = 2166136261;\n for (let index = 0; index < hashInput.length; index += 1) {\n hash ^= hashInput.charCodeAt(index);\n hash = Math.imul(hash, 16777619);\n }\n const value = (hash >>> 0) % 100000;\n return value.toString().padStart(5, \"0\");\n}\n\n/* ------------------------------------------------------------------ */\n/* Runtime → Dashboard messages */\n/* ------------------------------------------------------------------ */\n\nexport type SyncoreDevtoolsMessage =\n | {\n type: \"hello\";\n runtimeId: string;\n platform: string;\n appName?: string;\n origin?: string;\n sessionLabel?: string;\n targetKind?: \"client\" | \"project\";\n storageProtocol?: string;\n databaseLabel?: string;\n storageIdentity?: string;\n }\n | { type: \"event\"; event: SyncoreDevtoolsEvent }\n | {\n type: \"event.batch\";\n runtimeId: string;\n events: SyncoreDevtoolsEvent[];\n }\n | { type: \"ping\" }\n | { type: \"pong\" }\n | {\n type: \"command.result\";\n commandId: string;\n runtimeId: string;\n payload: SyncoreDevtoolsCommandResultPayload;\n }\n | {\n type: \"subscription.data\";\n subscriptionId: string;\n runtimeId: string;\n payload: SyncoreDevtoolsSubscriptionResultPayload;\n }\n | {\n type: \"subscription.error\";\n subscriptionId: string;\n runtimeId: string;\n error: string;\n };\n\n/* ------------------------------------------------------------------ */\n/* Dashboard → Runtime requests */\n/* ------------------------------------------------------------------ */\n\nexport interface SyncoreDevtoolsCommand {\n type: \"command\";\n commandId: string;\n targetRuntimeId: string;\n payload: SyncoreDevtoolsCommandPayload;\n}\n\nexport interface SyncoreDevtoolsSubscribe {\n type: \"subscribe\";\n subscriptionId: string;\n targetRuntimeId: string;\n payload: SyncoreDevtoolsSubscriptionPayload;\n}\n\nexport interface SyncoreDevtoolsUnsubscribe {\n type: \"unsubscribe\";\n subscriptionId: string;\n targetRuntimeId: string;\n}\n\nexport type SyncoreDevtoolsClientMessage =\n | { type: \"ping\" }\n | SyncoreDevtoolsCommand\n | SyncoreDevtoolsSubscribe\n | SyncoreDevtoolsUnsubscribe;\n\nexport type SyncoreDevtoolsCommandPayload =\n /* Functions */\n | {\n kind: \"fn.run\";\n functionName: string;\n functionType: \"query\" | \"mutation\" | \"action\";\n args: Record<string, unknown>;\n }\n | { kind: \"data.insert\"; table: string; document: Record<string, unknown> }\n | {\n kind: \"data.patch\";\n table: string;\n id: string;\n fields: Record<string, unknown>;\n }\n | { kind: \"data.delete\"; table: string; id: string }\n /* SQL */\n | { kind: \"sql.read\"; query: string }\n | { kind: \"sql.write\"; query: string }\n /* Scheduler */\n | { kind: \"scheduler.cancel\"; jobId: string }\n | {\n kind: \"scheduler.update\";\n jobId: string;\n schedule: SchedulerRecurringSchedule;\n args: Record<string, unknown>;\n misfirePolicy: SchedulerMisfirePolicy;\n runAt?: number;\n };\n\nexport type SyncoreDevtoolsSubscriptionPayload =\n | { kind: \"runtime.summary\" }\n | { kind: \"runtime.activeQueries\" }\n | { kind: \"schema.tables\" }\n | {\n kind: \"fn.watch\";\n functionName: string;\n functionType: \"query\";\n args: Record<string, unknown>;\n }\n | {\n kind: \"data.table\";\n table: string;\n filters?: DataFilter[];\n limit?: number;\n cursor?: string;\n }\n | { kind: \"scheduler.jobs\" }\n | { kind: \"functions.catalog\" }\n | { kind: \"sql.watch\"; query: string };\n\nexport interface DataFilter {\n field: string;\n operator:\n | \"eq\"\n | \"neq\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"contains\"\n | \"startsWith\";\n value: unknown;\n}\n\n/* ------------------------------------------------------------------ */\n/* Response payloads */\n/* ------------------------------------------------------------------ */\n\nexport type SyncoreDevtoolsCommandResultPayload =\n | {\n kind: \"fn.run.result\";\n result?: unknown;\n error?: string;\n durationMs: number;\n }\n | {\n kind: \"data.mutate.result\";\n success: boolean;\n id?: string;\n error?: string;\n }\n | {\n kind: \"sql.read.result\";\n columns: string[];\n rows: unknown[][];\n error?: string;\n }\n | {\n kind: \"sql.write.result\";\n rowsAffected: number;\n error?: string;\n invalidationScopes: string[];\n }\n | {\n kind: \"scheduler.cancel.result\";\n success: boolean;\n cancelled: boolean;\n error?: string;\n }\n | {\n kind: \"scheduler.update.result\";\n success: boolean;\n updated: boolean;\n error?: string;\n job?: SchedulerJob;\n }\n | { kind: \"error\"; message: string };\n\nexport type SyncoreDevtoolsSubscriptionResultPayload =\n | { kind: \"runtime.summary.result\"; summary: SyncoreRuntimeSummary }\n | {\n kind: \"runtime.activeQueries.result\";\n activeQueries: SyncoreActiveQueryInfo[];\n }\n | {\n kind: \"fn.watch.result\";\n result?: unknown;\n error?: string;\n }\n | { kind: \"schema.tables.result\"; tables: TableSchema[] }\n | {\n kind: \"data.table.result\";\n rows: Record<string, unknown>[];\n totalCount: number;\n cursor?: string;\n }\n | { kind: \"scheduler.jobs.result\"; jobs: SchedulerJob[] }\n | { kind: \"functions.catalog.result\"; functions: FunctionDefinition[] }\n | {\n kind: \"sql.watch.result\";\n columns: string[];\n rows: unknown[][];\n observedTables: string[];\n };\n\n/* ------------------------------------------------------------------ */\n/* Shared data shapes */\n/* ------------------------------------------------------------------ */\n\nexport interface FunctionDefinition {\n name: string;\n type: \"query\" | \"mutation\" | \"action\";\n file: string;\n /** Argument validator schema (JSON Schema-like), if available */\n args?: Record<string, unknown>;\n /** Return validator schema, if available */\n returns?: Record<string, unknown>;\n}\n\nexport interface TableSchema {\n name: string;\n fields: TableField[];\n indexes: TableIndex[];\n documentCount: number;\n}\n\nexport interface TableField {\n name: string;\n type: string;\n optional: boolean;\n}\n\nexport interface TableIndex {\n name: string;\n fields: string[];\n unique: boolean;\n}\n\nexport interface SchedulerJob {\n id: string;\n functionName: string;\n args: Record<string, unknown>;\n scheduledAt: number;\n runAt: number;\n status: \"pending\" | \"running\" | \"completed\" | \"failed\" | \"cancelled\";\n completedAt?: number;\n result?: unknown;\n error?: string;\n durationMs?: number;\n recurringName?: string;\n schedule?: SchedulerRecurringSchedule;\n scheduleLabel?: string;\n misfirePolicy?: SchedulerMisfirePolicy;\n timezone?: string;\n lastRunAt?: number;\n updatedAt?: number;\n /** Compatibility label for older UI code. */\n cronSchedule?: string;\n}\n\nexport interface SchedulerRecurringIntervalSchedule {\n type: \"interval\";\n seconds?: number;\n minutes?: number;\n hours?: number;\n}\n\nexport interface SchedulerRecurringDailySchedule {\n type: \"daily\";\n hour: number;\n minute: number;\n timezone?: string;\n}\n\nexport interface SchedulerRecurringWeeklySchedule {\n type: \"weekly\";\n dayOfWeek:\n | \"sunday\"\n | \"monday\"\n | \"tuesday\"\n | \"wednesday\"\n | \"thursday\"\n | \"friday\"\n | \"saturday\";\n hour: number;\n minute: number;\n timezone?: string;\n}\n\nexport type SchedulerRecurringSchedule =\n | SchedulerRecurringIntervalSchedule\n | SchedulerRecurringDailySchedule\n | SchedulerRecurringWeeklySchedule;\n\nexport type SchedulerMisfirePolicy =\n | { type: \"catch_up\" }\n | { type: \"skip\" }\n | { type: \"run_once_if_missed\" }\n | { type: \"windowed\"; windowMs: number };\n"],"mappings":";AA+EA,SAAgB,mBAAmB,OAAuB;AACxD,QAAO,eAAe,OAAO,EAAE;;AAGjC,SAAgB,eACd,KACA,MACQ;CACR,MAAM,uBAAO,IAAI,KAAa;AAC9B,MAAK,MAAM,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;EAC1C,IAAI,UAAU;AACd,SAAO,MAAM;GACX,MAAM,YAAY,eAAe,aAAa,QAAQ;AACtD,OAAI,gBAAgB,OAAO,CAAC,KAAK,IAAI,UAAU,CAC7C,QAAO;AAET,OAAI,CAAC,KAAK,IAAI,UAAU,EAAE;AACxB,SAAK,IAAI,UAAU;AACnB;;AAEF,cAAW;;;AAGf,QAAO,mBAAmB,IAAI;;AAGhC,SAAgB,sBACd,WACA,YACQ;AACR,QAAO,aAAa,eAAe,WAAW,WAAW,GAAG,mBAAmB,UAAU;;AAG3F,SAAgB,qBACd,WACA,YACQ;AACR,QAAO,eAAe,WAAW,WAAW;;AAG9C,SAAS,eAAe,OAAe,MAAsB;CAC3D,MAAM,YAAY,SAAS,IAAI,QAAQ,GAAG,MAAM,GAAG;CACnD,IAAI,OAAO;AACX,MAAK,IAAI,QAAQ,GAAG,QAAQ,UAAU,QAAQ,SAAS,GAAG;AACxD,UAAQ,UAAU,WAAW,MAAM;AACnC,SAAO,KAAK,KAAK,MAAM,SAAS;;AAGlC,UADe,SAAS,KAAK,KAChB,UAAU,CAAC,SAAS,GAAG,IAAI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","names":[],"sources":["../src/config.ts"],"mappings":";;AAaA;;;;;;iBAAgB,eAAA,iBAAgC,MAAA,kBAAA,CAC9C,MAAA,EAAQ,OAAA,GACP,OAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"config.d.ts","names":[],"sources":["../src/config.ts"],"mappings":";;AAaA;;;;;;iBAAgB,eAAA,iBAAgC,MAAA,kBAAA,CAC9C,MAAA,EAAQ,OAAA,GACP,OAAA;AAAA,iBA0Fa,mBAAA,CAAA;;;;iBAOA,0BAAA,CACd,YAAA,YAAoC,GAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//#region src/config.ts
|
|
2
2
|
const WORKER_NAME = "syncore-worker";
|
|
3
3
|
function joinAppWorkerPath(dir) {
|
|
4
|
-
return `${dir.replace(/[\\/]$/, "")}/app/syncore.worker
|
|
4
|
+
return `${dir.replace(/[\\/]$/, "")}/app/syncore.worker`;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
7
|
* Wrap a Next config with the settings Syncore needs for SQL.js and worker assets.
|
|
@@ -36,11 +36,8 @@ function withSyncoreNext(config) {
|
|
|
36
36
|
const entry = nextConfig.entry ?? (async () => ({}));
|
|
37
37
|
const workerPath = joinAppWorkerPath(ctx.dir);
|
|
38
38
|
nextConfig.entry = async () => {
|
|
39
|
-
const entries = await entry();
|
|
40
|
-
const mainAppEntry = entries["main-app"];
|
|
41
39
|
return {
|
|
42
|
-
...
|
|
43
|
-
...mainAppEntry && !entries.main ? { main: mainAppEntry } : {},
|
|
40
|
+
...await entry(),
|
|
44
41
|
[WORKER_NAME]: {
|
|
45
42
|
import: workerPath,
|
|
46
43
|
filename: "static/chunks/[name].js"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","names":[],"sources":["../src/config.ts"],"sourcesContent":["const WORKER_NAME = \"syncore-worker\";\n\nfunction joinAppWorkerPath(dir: string) {\n return `${dir.replace(/[\\\\/]$/, \"\")}/app/syncore.worker
|
|
1
|
+
{"version":3,"file":"config.js","names":[],"sources":["../src/config.ts"],"sourcesContent":["const WORKER_NAME = \"syncore-worker\";\n\nfunction joinAppWorkerPath(dir: string) {\n return `${dir.replace(/[\\\\/]$/, \"\")}/app/syncore.worker`;\n}\n\n/**\n * Wrap a Next config with the settings Syncore needs for SQL.js and worker assets.\n *\n * This enables async WebAssembly support and, for non-exported apps, adds a\n * long-lived cache header for `sql-wasm.wasm`. It also configures webpack to\n * bundle the syncore worker as a separate entry point.\n */\nexport function withSyncoreNext<TConfig extends Record<string, unknown>>(\n config: TConfig\n): TConfig {\n const baseConfig = config as Record<string, unknown>;\n const isStaticExport = baseConfig.output === \"export\";\n const headers = (baseConfig.headers ?? []) as Array<Record<string, unknown>>;\n const userWebpack =\n typeof baseConfig.webpack === \"function\"\n ? (baseConfig.webpack as (\n config: Record<string, unknown>,\n context: unknown\n ) => Record<string, unknown>)\n : undefined;\n const userHeaders =\n typeof baseConfig.headers === \"function\"\n ? (baseConfig.headers as () =>\n | Array<Record<string, unknown>>\n | Promise<Array<Record<string, unknown>>>)\n : undefined;\n const syncoreHeaders = {\n source: \"/sql-wasm.wasm\",\n headers: [\n {\n key: \"Cache-Control\",\n value: \"public, max-age=31536000, immutable\"\n }\n ]\n };\n\n const nextConfig: Record<string, unknown> = {\n ...config,\n webpack(currentConfig: Record<string, unknown>, context: unknown) {\n const nextConfig = { ...currentConfig };\n const experiments = (nextConfig.experiments ?? {}) as Record<\n string,\n unknown\n >;\n nextConfig.experiments = {\n ...experiments,\n asyncWebAssembly: true\n };\n\n type WebpackContext = {\n dev?: boolean;\n isServer: boolean;\n nextRuntime?: string;\n dir: string;\n };\n const ctx = context as WebpackContext | undefined;\n if (\n isStaticExport &&\n ctx &&\n !ctx.dev &&\n !ctx.isServer &&\n ctx.nextRuntime !== \"edge\"\n ) {\n const entry =\n (nextConfig.entry as () => Promise<Record<string, unknown>>) ??\n (async () => ({}));\n const workerPath = joinAppWorkerPath(ctx.dir);\n nextConfig.entry = async () => {\n const entries = await entry();\n return {\n ...entries,\n [WORKER_NAME]: {\n import: workerPath,\n filename: \"static/chunks/[name].js\"\n }\n };\n };\n }\n\n if (userWebpack) {\n return userWebpack(nextConfig, context);\n }\n\n return nextConfig;\n }\n };\n\n if (!isStaticExport || userHeaders) {\n nextConfig.headers = async () => {\n const resolvedHeaders = userHeaders ? await userHeaders() : headers;\n return isStaticExport\n ? resolvedHeaders\n : [...resolvedHeaders, syncoreHeaders];\n };\n }\n\n return nextConfig as TConfig;\n}\n\nexport function getSyncoreWorkerUrl(): string {\n return `/_next/static/chunks/${WORKER_NAME}.js`;\n}\n\n/**\n * Create the default worker URL used by the Next integration.\n */\nexport function createSyncoreNextWorkerUrl(\n relativePath = \"./syncore.worker.js\"\n) {\n return new URL(relativePath, import.meta.url);\n}\n"],"mappings":";AAAA,MAAM,cAAc;AAEpB,SAAS,kBAAkB,KAAa;AACtC,QAAO,GAAG,IAAI,QAAQ,UAAU,GAAG,CAAC;;;;;;;;;AAUtC,SAAgB,gBACd,QACS;CACT,MAAM,aAAa;CACnB,MAAM,iBAAiB,WAAW,WAAW;CAC7C,MAAM,UAAW,WAAW,WAAW,EAAE;CACzC,MAAM,cACJ,OAAO,WAAW,YAAY,aACzB,WAAW,UAIZ,KAAA;CACN,MAAM,cACJ,OAAO,WAAW,YAAY,aACzB,WAAW,UAGZ,KAAA;CACN,MAAM,iBAAiB;EACrB,QAAQ;EACR,SAAS,CACP;GACE,KAAK;GACL,OAAO;GACR,CACF;EACF;CAED,MAAM,aAAsC;EAC1C,GAAG;EACH,QAAQ,eAAwC,SAAkB;GAChE,MAAM,aAAa,EAAE,GAAG,eAAe;AAKvC,cAAW,cAAc;IACvB,GALmB,WAAW,eAAe,EAAE;IAM/C,kBAAkB;IACnB;GAQD,MAAM,MAAM;AACZ,OACE,kBACA,OACA,CAAC,IAAI,OACL,CAAC,IAAI,YACL,IAAI,gBAAgB,QACpB;IACA,MAAM,QACH,WAAW,UACX,aAAa,EAAE;IAClB,MAAM,aAAa,kBAAkB,IAAI,IAAI;AAC7C,eAAW,QAAQ,YAAY;AAE7B,YAAO;MACL,GAFc,MAAM,OAAO;OAG1B,cAAc;OACb,QAAQ;OACR,UAAU;OACX;MACF;;;AAIL,OAAI,YACF,QAAO,YAAY,YAAY,QAAQ;AAGzC,UAAO;;EAEV;AAED,KAAI,CAAC,kBAAkB,YACrB,YAAW,UAAU,YAAY;EAC/B,MAAM,kBAAkB,cAAc,MAAM,aAAa,GAAG;AAC5D,SAAO,iBACH,kBACA,CAAC,GAAG,iBAAiB,eAAe;;AAI5C,QAAO;;AAGT,SAAgB,sBAA8B;AAC5C,QAAO,wBAAwB,YAAY;;;;;AAM7C,SAAgB,2BACd,eAAe,uBACf;AACA,QAAO,IAAI,IAAI,cAAc,OAAO,KAAK,IAAI"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SQLiteDatabase } from "expo-sqlite";
|
|
2
2
|
import * as _syncore_core0 from "../core/index.d.mts";
|
|
3
|
-
import { AnySyncoreSchema, DevtoolsSink, SchedulerOptions, StorageObject, StorageWriteInput, SyncoreCapabilities, SyncoreExperimentalPlugin, SyncoreRuntime, SyncoreRuntimeOptions, SyncoreSqlDriver, SyncoreStorageAdapter } from "../core/index.d.mts";
|
|
3
|
+
import { AnySyncoreSchema, DevtoolsSink, SchedulerOptions, StorageObject, StorageWriteInput, SyncoreCapabilities, SyncoreExperimentalPlugin, SyncoreExternalChangeApplier, SyncoreExternalChangeSignal, SyncoreRuntime, SyncoreRuntimeOptions, SyncoreSqlDriver, SyncoreStorageAdapter } from "../core/index.d.mts";
|
|
4
4
|
|
|
5
5
|
//#region src/index.d.ts
|
|
6
6
|
type ExpoSyncoreSchema = AnySyncoreSchema;
|
|
@@ -35,13 +35,17 @@ interface CreateExpoRuntimeOptions {
|
|
|
35
35
|
devtools?: DevtoolsSink;
|
|
36
36
|
/** Optional scheduler configuration for jobs and recurring work. */
|
|
37
37
|
scheduler?: SchedulerOptions;
|
|
38
|
+
/** Optional shared signal used to synchronize browser instances. */
|
|
39
|
+
externalChangeSignal?: SyncoreExternalChangeSignal;
|
|
40
|
+
/** Optional applier used to reconcile browser-side external changes. */
|
|
41
|
+
externalChangeApplier?: SyncoreExternalChangeApplier;
|
|
38
42
|
}
|
|
39
43
|
/**
|
|
40
44
|
* A reusable bootstrap that lazily creates, starts, and stops an Expo Syncore runtime.
|
|
41
45
|
*/
|
|
42
46
|
interface ExpoSyncoreBootstrap {
|
|
43
|
-
/**
|
|
44
|
-
getRuntime():
|
|
47
|
+
/** Synchronous access is unavailable; use `getClient()` instead. */
|
|
48
|
+
getRuntime(): never;
|
|
45
49
|
/** Start the runtime if needed and return a ready client. */
|
|
46
50
|
getClient(): Promise<ReturnType<SyncoreRuntime<ExpoSyncoreSchema>["createClient"]>>;
|
|
47
51
|
/** Stop the current runtime instance if one exists. */
|
|
@@ -65,10 +69,15 @@ declare function createExpoSyncoreBootstrap(options: CreateExpoRuntimeOptions):
|
|
|
65
69
|
* Syncore SQL driver implementation backed by `expo-sqlite`.
|
|
66
70
|
*/
|
|
67
71
|
declare class ExpoSqliteDriver implements SyncoreSqlDriver {
|
|
68
|
-
private
|
|
72
|
+
private database;
|
|
69
73
|
private transactionDepth;
|
|
70
74
|
private closed;
|
|
71
|
-
|
|
75
|
+
private readonly databaseName;
|
|
76
|
+
private readonly databaseDirectory;
|
|
77
|
+
constructor(database: SQLiteDatabase, options?: {
|
|
78
|
+
databaseName?: string;
|
|
79
|
+
databaseDirectory?: string;
|
|
80
|
+
});
|
|
72
81
|
exec(sql: string): Promise<void>;
|
|
73
82
|
run(sql: string, params?: unknown[]): Promise<{
|
|
74
83
|
changes: number;
|
|
@@ -80,6 +89,7 @@ declare class ExpoSqliteDriver implements SyncoreSqlDriver {
|
|
|
80
89
|
withSavepoint<T>(name: string, callback: () => Promise<T>): Promise<T>;
|
|
81
90
|
close(): Promise<void>;
|
|
82
91
|
private ensureOpen;
|
|
92
|
+
reopen(): Promise<void>;
|
|
83
93
|
}
|
|
84
94
|
/**
|
|
85
95
|
* Syncore file/blob storage backed by the Expo file system.
|
|
@@ -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":";;;;;KA0BY,iBAAA,GAAoB,gBAAA;;;AAAhC;;;;UAQiB,wBAAA;EAAA;EAEf,MAAA,EAAQ,iBAAA;;EAGR,SAAA,EAAW,qBAAA,CAAsB,iBAAA;EAAA;EAGjC,YAAA,GAAe,mBAAA;EAAA;EAGf,MAAA,GAAS,gBAAA;EAG6C;EAAtD,mBAAA,GAAsB,KAAA,CAAM,yBAAA,CAA0B,iBAAA;EAAhC;EAGtB,OAAA,GAAU,qBAAA;EAeC;EAZX,YAAA;EAkBuB;EAfvB,iBAAA;EAkBoD;EAfpD,oBAAA;EAxBA;EA2BA,QAAA;EAxBA;EA2BA,QAAA,GAAW,YAAA;EA3BsB;EA8BjC,SAAA,GAAY,gBAAA;EA3BG;EA8Bf,oBAAA,GAAuB,2BAAA;EA3Bd;EA8BT,qBAAA,GAAwB,4BAAA;AAAA;;;;UAMT,oBAAA;EA3Bf;EA6BA,UAAA;EAvBA;EA0BA,SAAA,IAAa,OAAA,CACX,UAAA,CAAW,cAAA,CAAe,iBAAA;EArB5B;EAyBA,IAAA,IAAQ,OAAA;EAtBR;EAyBA,KAAA,IAAS,OAAA;AAAA;;;;iBAMK,wBAAA,CACd,OAAA,EAAS,wBAAA,GACR,cAAA,CAAe,iBAAA;;AArBlB;;iBA0FgB,uBAAA,CACd,OAAA,EAAS,cAAA,CAAe,iBAAA,IAAD,cAAA,CAAmB,aAAA;;;;iBAQ5B,0BAAA,CACd,OAAA,EAAS,wBAAA,GACR,oBAAA;;;;cA8CU,gBAAA,YAA4B,gBAAA;EAAA,QAO7B,QAAA;EAAA,QANF,gBAAA;EAAA,QACA,MAAA;EAAA,iBACS,YAAA;EAAA,iBACA,iBAAA;cAGP,QAAA,EAAU,cAAA,EAClB,OAAA;IACE,YAAA;IACA,iBAAA;EAAA;EAOE,IAAA,CAAK,GAAA,WAAc,OAAA;EAKnB,GAAA,CACJ,GAAA,UACA,MAAA,eACC,OAAA;IAAU,OAAA;IAAiB,eAAA;EAAA;EASxB,GAAA,GAAA,CAAO,GAAA,UAAa,MAAA,eAAyB,OAAA,CAAQ,CAAA;EASrD,GAAA,GAAA,CAAO,GAAA,UAAa,MAAA,eAAyB,OAAA,CAAQ,CAAA;EAKrD,eAAA,GAAA,CAAmB,QAAA,QAAgB,OAAA,CAAQ,CAAA,IAAK,OAAA,CAAQ,CAAA;EAoBxD,aAAA,GAAA,CAAiB,IAAA,UAAc,QAAA,QAAgB,OAAA,CAAQ,CAAA,IAAK,OAAA,CAAQ,CAAA;EAkBpE,KAAA,CAAA,GAAS,OAAA;EAAA,QAQP,UAAA;EAMF,MAAA,CAAA,GAAU,OAAA;AAAA;;;;cA4BL,sBAAA,YAAkC,qBAAA;EAAA,iBAC5B,aAAA;cAEL,oBAAA;EAON,GAAA,CAAI,EAAA,UAAY,KAAA,EAAO,iBAAA,GAAoB,OAAA,CAAQ,aAAA;EAenD,GAAA,CAAI,EAAA,WAAa,OAAA,CAAQ,aAAA;EAazB,IAAA,CAAK,EAAA,WAAa,OAAA,CAAQ,UAAA;EAQ1B,MAAA,CAAO,EAAA,WAAa,OAAA;AAAA"}
|