on-zero 0.6.14 → 0.6.16
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/cjs/asyncTasks.cjs +51 -0
- package/dist/cjs/asyncTasks.native.js +84 -0
- package/dist/cjs/asyncTasks.native.js.map +1 -0
- package/dist/cjs/cli.cjs +8 -1
- package/dist/cjs/cli.native.js +8 -1
- package/dist/cjs/cli.native.js.map +1 -1
- package/dist/cjs/createSchemaFromDrizzle.cjs +4 -4
- package/dist/cjs/createSchemaFromDrizzle.native.js +4 -4
- package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -1
- package/dist/cjs/createZeroDirectServer.cjs +269 -0
- package/dist/cjs/createZeroDirectServer.native.js +287 -0
- package/dist/cjs/createZeroDirectServer.native.js.map +1 -0
- package/dist/cjs/createZeroSQLiteServer.cjs +8 -277
- package/dist/cjs/createZeroSQLiteServer.native.js +8 -390
- package/dist/cjs/createZeroSQLiteServer.native.js.map +1 -1
- package/dist/cjs/createZeroSQLiteServer.test.cjs +36 -9
- package/dist/cjs/createZeroSQLiteServer.test.native.js +37 -9
- package/dist/cjs/createZeroSQLiteServer.test.native.js.map +1 -1
- package/dist/cjs/createZeroServer.test.cjs +79 -1
- package/dist/cjs/createZeroServer.test.native.js +85 -1
- package/dist/cjs/createZeroServer.test.native.js.map +1 -1
- package/dist/cjs/createZeroServerCore.cjs +28 -208
- package/dist/cjs/createZeroServerCore.native.js +33 -218
- package/dist/cjs/createZeroServerCore.native.js.map +1 -1
- package/dist/cjs/generate.cjs +15 -5
- package/dist/cjs/generate.native.js +15 -5
- package/dist/cjs/generate.native.js.map +1 -1
- package/dist/cjs/generate.test.cjs +55 -0
- package/dist/cjs/generate.test.native.js +55 -0
- package/dist/cjs/generate.test.native.js.map +1 -1
- package/dist/cjs/helpers/createMutators.cjs +2 -2
- package/dist/cjs/helpers/createMutators.native.js +2 -2
- package/dist/cjs/helpers/createMutators.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/server.cjs +2 -1
- package/dist/cjs/sqliteRuntime.cjs +318 -0
- package/dist/cjs/sqliteRuntime.native.js +438 -0
- package/dist/cjs/sqliteRuntime.native.js.map +1 -0
- package/dist/cjs/syncHost.cjs +26 -12
- package/dist/cjs/syncHost.native.js +32 -16
- package/dist/cjs/syncHost.native.js.map +1 -1
- package/dist/cjs/syncHost.test.cjs +15 -4
- package/dist/cjs/syncHost.test.native.js +16 -4
- package/dist/cjs/syncHost.test.native.js.map +1 -1
- package/dist/cjs/vite-plugin.cjs +2 -1
- package/dist/cjs/vite-plugin.native.js +2 -1
- package/dist/cjs/vite-plugin.native.js.map +1 -1
- package/dist/esm/asyncTasks.mjs +26 -0
- package/dist/esm/asyncTasks.mjs.map +1 -0
- package/dist/esm/asyncTasks.native.js +56 -0
- package/dist/esm/asyncTasks.native.js.map +1 -0
- package/dist/esm/cli.mjs +8 -1
- package/dist/esm/cli.mjs.map +1 -1
- package/dist/esm/cli.native.js +8 -1
- package/dist/esm/cli.native.js.map +1 -1
- package/dist/esm/createSchemaFromDrizzle.mjs +2 -2
- package/dist/esm/createSchemaFromDrizzle.native.js +2 -2
- package/dist/esm/createZeroDirectServer.mjs +241 -0
- package/dist/esm/createZeroDirectServer.mjs.map +1 -0
- package/dist/esm/createZeroDirectServer.native.js +256 -0
- package/dist/esm/createZeroDirectServer.native.js.map +1 -0
- package/dist/esm/createZeroSQLiteServer.mjs +3 -272
- package/dist/esm/createZeroSQLiteServer.mjs.map +1 -1
- package/dist/esm/createZeroSQLiteServer.native.js +3 -385
- package/dist/esm/createZeroSQLiteServer.native.js.map +1 -1
- package/dist/esm/createZeroSQLiteServer.test.mjs +36 -9
- package/dist/esm/createZeroSQLiteServer.test.mjs.map +1 -1
- package/dist/esm/createZeroSQLiteServer.test.native.js +37 -9
- package/dist/esm/createZeroSQLiteServer.test.native.js.map +1 -1
- package/dist/esm/createZeroServer.test.mjs +80 -2
- package/dist/esm/createZeroServer.test.mjs.map +1 -1
- package/dist/esm/createZeroServer.test.native.js +86 -2
- package/dist/esm/createZeroServer.test.native.js.map +1 -1
- package/dist/esm/createZeroServerCore.mjs +26 -205
- package/dist/esm/createZeroServerCore.mjs.map +1 -1
- package/dist/esm/createZeroServerCore.native.js +32 -216
- package/dist/esm/createZeroServerCore.native.js.map +1 -1
- package/dist/esm/generate.mjs +15 -5
- package/dist/esm/generate.mjs.map +1 -1
- package/dist/esm/generate.native.js +15 -5
- package/dist/esm/generate.native.js.map +1 -1
- package/dist/esm/generate.test.mjs +55 -1
- package/dist/esm/generate.test.mjs.map +1 -1
- package/dist/esm/generate.test.native.js +55 -1
- package/dist/esm/generate.test.native.js.map +1 -1
- package/dist/esm/helpers/createMutators.mjs +2 -2
- package/dist/esm/helpers/createMutators.mjs.map +1 -1
- package/dist/esm/helpers/createMutators.native.js +2 -2
- package/dist/esm/helpers/createMutators.native.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +1 -0
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/server.mjs +1 -0
- package/dist/esm/server.mjs.map +1 -1
- package/dist/esm/sqliteRuntime.mjs +289 -0
- package/dist/esm/sqliteRuntime.mjs.map +1 -0
- package/dist/esm/sqliteRuntime.native.js +406 -0
- package/dist/esm/sqliteRuntime.native.js.map +1 -0
- package/dist/esm/syncHost.mjs +24 -10
- package/dist/esm/syncHost.mjs.map +1 -1
- package/dist/esm/syncHost.native.js +30 -14
- package/dist/esm/syncHost.native.js.map +1 -1
- package/dist/esm/syncHost.test.mjs +15 -4
- package/dist/esm/syncHost.test.mjs.map +1 -1
- package/dist/esm/syncHost.test.native.js +16 -4
- package/dist/esm/syncHost.test.native.js.map +1 -1
- package/dist/esm/vite-plugin.mjs +2 -1
- package/dist/esm/vite-plugin.mjs.map +1 -1
- package/dist/esm/vite-plugin.native.js +2 -1
- package/dist/esm/vite-plugin.native.js.map +1 -1
- package/lint/ssr-guards.js +8 -7
- package/package.json +5 -6
- package/readme.md +13 -4
- package/src/asyncTasks.ts +33 -0
- package/src/cli.ts +7 -1
- package/src/createSchemaFromDrizzle.ts +2 -2
- package/src/createZeroDirectServer.ts +411 -0
- package/src/createZeroSQLiteServer.test.ts +28 -12
- package/src/createZeroSQLiteServer.ts +14 -481
- package/src/createZeroServer.test.ts +86 -2
- package/src/createZeroServerCore.ts +39 -343
- package/src/generate.test.ts +75 -1
- package/src/generate.ts +30 -4
- package/src/helpers/createMutators.ts +3 -3
- package/src/helpers/mutatorContext.ts +1 -1
- package/src/index.ts +1 -0
- package/src/server.ts +2 -0
- package/src/sqliteRuntime.ts +512 -0
- package/src/syncHost.test.ts +12 -5
- package/src/syncHost.ts +55 -16
- package/src/types.ts +21 -3
- package/src/vite-plugin.ts +1 -0
- package/test-fixtures/server-return-types.ts +20 -2
- package/types/asyncTasks.d.ts +7 -0
- package/types/asyncTasks.d.ts.map +1 -0
- package/types/createSchemaFromDrizzle.d.ts +2 -2
- package/types/createSchemaFromDrizzle.d.ts.map +1 -1
- package/types/createZeroDirectServer.d.ts +80 -0
- package/types/createZeroDirectServer.d.ts.map +1 -0
- package/types/createZeroSQLiteServer.d.ts +5 -30
- package/types/createZeroSQLiteServer.d.ts.map +1 -1
- package/types/createZeroServerCore.d.ts +30 -87
- package/types/createZeroServerCore.d.ts.map +1 -1
- package/types/generate.d.ts +2 -0
- package/types/generate.d.ts.map +1 -1
- package/types/helpers/createMutators.d.ts +3 -3
- package/types/helpers/createMutators.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/server.d.ts +2 -0
- package/types/server.d.ts.map +1 -1
- package/types/sqliteRuntime.d.ts +71 -0
- package/types/sqliteRuntime.d.ts.map +1 -0
- package/types/syncHost.d.ts +10 -19
- package/types/syncHost.d.ts.map +1 -1
- package/types/types.d.ts +18 -2
- package/types/types.d.ts.map +1 -1
- package/types/vite-plugin.d.ts.map +1 -1
package/src/syncHost.ts
CHANGED
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
import { asQueryInternals } from '@rocicorp/zero/bindings'
|
|
2
2
|
|
|
3
3
|
import { createPermissions } from './createPermissions'
|
|
4
|
-
import { resolveServerQuery, type ZeroServerCommonOptions } from './createZeroServerCore'
|
|
5
4
|
import {
|
|
6
|
-
|
|
5
|
+
createZeroDirectServer,
|
|
6
|
+
resolveServerQuery,
|
|
7
|
+
type ZeroDirectServer,
|
|
8
|
+
type ZeroServerCommonOptions,
|
|
9
|
+
} from './createZeroDirectServer'
|
|
10
|
+
import {
|
|
11
|
+
createSQLiteDatabase,
|
|
7
12
|
createZeroSQLiteTransaction,
|
|
13
|
+
defaultLedgerTables,
|
|
14
|
+
encodeSQLiteValue,
|
|
15
|
+
type SqlStatementMetadata,
|
|
16
|
+
type SQLiteExecResult,
|
|
8
17
|
type SQLiteTransactionExecutor,
|
|
18
|
+
type SQLiteTransactionProvider,
|
|
9
19
|
type ZeroSQLiteTransactionOptions,
|
|
10
|
-
} from './
|
|
20
|
+
} from './sqliteRuntime'
|
|
11
21
|
import { createMutators } from './helpers/createMutators'
|
|
12
22
|
import { runWithAuthScope } from './helpers/mutatorContext'
|
|
13
23
|
import { runWithQueryContext } from './helpers/queryContext'
|
|
14
24
|
import { setEnvironment, setSchema } from './state'
|
|
15
25
|
|
|
16
|
-
import type { AuthData, GenericModels } from './types'
|
|
26
|
+
import type { AsyncTaskEntry, AuthData, GenericModels } from './types'
|
|
17
27
|
import type { Schema as ZeroSchema } from '@rocicorp/zero'
|
|
18
28
|
|
|
19
29
|
export type SyncHostJsonValue =
|
|
@@ -34,14 +44,18 @@ export type SyncHostTransactionContext = {
|
|
|
34
44
|
}
|
|
35
45
|
|
|
36
46
|
export type SyncHostTransactionExecutor = {
|
|
37
|
-
exec(
|
|
47
|
+
exec(
|
|
48
|
+
sql: string,
|
|
49
|
+
params?: readonly unknown[],
|
|
50
|
+
metadata?: SqlStatementMetadata,
|
|
51
|
+
): SQLiteExecResult | Promise<SQLiteExecResult>
|
|
38
52
|
query<Row extends Record<string, unknown> = Record<string, unknown>>(
|
|
39
53
|
sql: string,
|
|
40
54
|
params?: readonly unknown[],
|
|
41
55
|
): Row[] | Promise<Row[]>
|
|
42
56
|
queryAst<Result = unknown>(
|
|
43
57
|
ast: SyncHostJsonValue,
|
|
44
|
-
format: import('./
|
|
58
|
+
format: import('./sqliteRuntime').SQLiteQueryFormat,
|
|
45
59
|
queryName?: string,
|
|
46
60
|
): Result | Promise<Result>
|
|
47
61
|
}
|
|
@@ -79,6 +93,19 @@ export type CreateZeroSyncHostAdapterOptions<
|
|
|
79
93
|
defaultMutateAuthData?: Pick<AuthData, 'email' | 'id'> & Partial<AuthData>
|
|
80
94
|
}
|
|
81
95
|
|
|
96
|
+
export type ZeroSyncHostAdapter<
|
|
97
|
+
Schema extends ZeroSchema,
|
|
98
|
+
Models extends GenericModels,
|
|
99
|
+
> = {
|
|
100
|
+
mutators: Readonly<Record<string, SyncHostRegisteredMutator>>
|
|
101
|
+
resolveQuery(
|
|
102
|
+
name: string,
|
|
103
|
+
args: readonly SyncHostJsonValue[],
|
|
104
|
+
claims: SyncHostClaims,
|
|
105
|
+
): Promise<SyncHostJsonValue>
|
|
106
|
+
server: ZeroDirectServer<Schema, Models>
|
|
107
|
+
}
|
|
108
|
+
|
|
82
109
|
export class MutationApplicationError extends Error {
|
|
83
110
|
constructor(
|
|
84
111
|
readonly details: string,
|
|
@@ -98,7 +125,10 @@ export function createZeroSyncHostAdapter<
|
|
|
98
125
|
mapAuthData = defaultMapAuthData,
|
|
99
126
|
transaction,
|
|
100
127
|
...options
|
|
101
|
-
}: CreateZeroSyncHostAdapterOptions<Schema, Models, ServerActions>)
|
|
128
|
+
}: CreateZeroSyncHostAdapterOptions<Schema, Models, ServerActions>): ZeroSyncHostAdapter<
|
|
129
|
+
Schema,
|
|
130
|
+
Models
|
|
131
|
+
> {
|
|
102
132
|
setSchema(options.schema)
|
|
103
133
|
setEnvironment('server')
|
|
104
134
|
|
|
@@ -117,9 +147,11 @@ export function createZeroSyncHostAdapter<
|
|
|
117
147
|
for (const mutatorName of Object.keys(model.mutate ?? {})) {
|
|
118
148
|
mutators[`${modelName}|${mutatorName}`] = async (executor, args, context) => {
|
|
119
149
|
const authData = mapAuthData(context.claims)
|
|
120
|
-
const
|
|
150
|
+
const asyncTaskEntries: AsyncTaskEntry[] = []
|
|
121
151
|
const modelMutators = createMutators({
|
|
122
|
-
|
|
152
|
+
enqueueTask(task, opts) {
|
|
153
|
+
asyncTaskEntries.push({ task, barrier: opts?.barrier === true })
|
|
154
|
+
},
|
|
123
155
|
authData,
|
|
124
156
|
can: permissions.can,
|
|
125
157
|
createServerActions: options.createServerActions,
|
|
@@ -151,7 +183,7 @@ export function createZeroSyncHostAdapter<
|
|
|
151
183
|
} catch (error) {
|
|
152
184
|
throw asMutationApplicationError(error)
|
|
153
185
|
}
|
|
154
|
-
for (const task of
|
|
186
|
+
for (const { task } of asyncTaskEntries) {
|
|
155
187
|
context.defer(() => runWithAuthScope(authData, task))
|
|
156
188
|
}
|
|
157
189
|
}
|
|
@@ -163,11 +195,18 @@ export function createZeroSyncHostAdapter<
|
|
|
163
195
|
// creating a second on-zero cleanup ledger.
|
|
164
196
|
mutators._zero_cleanupResults = async () => {}
|
|
165
197
|
|
|
166
|
-
const
|
|
198
|
+
const transactionProvider: SQLiteTransactionProvider = (work) =>
|
|
199
|
+
transaction((executor) => work(toSQLiteExecutor(executor)))
|
|
200
|
+
const directDatabaseOptions = {
|
|
201
|
+
encodeValue: encodeValue ?? encodeSQLiteValue,
|
|
202
|
+
initializedLedgers: new Set<string>(),
|
|
203
|
+
ledgerTables: defaultLedgerTables,
|
|
204
|
+
schema: options.schema,
|
|
205
|
+
transactionProvider,
|
|
206
|
+
}
|
|
207
|
+
const direct = createZeroDirectServer({
|
|
167
208
|
...options,
|
|
168
|
-
|
|
169
|
-
transactionProvider: (work) =>
|
|
170
|
-
transaction((executor) => work(toSQLiteExecutor(executor))),
|
|
209
|
+
createDatabase: () => createSQLiteDatabase(directDatabaseOptions),
|
|
171
210
|
})
|
|
172
211
|
|
|
173
212
|
return {
|
|
@@ -214,8 +253,8 @@ function toSQLiteExecutor(
|
|
|
214
253
|
executor: SyncHostTransactionExecutor,
|
|
215
254
|
): SQLiteTransactionExecutor {
|
|
216
255
|
return {
|
|
217
|
-
exec(sql, params) {
|
|
218
|
-
return executor.exec(sql, params)
|
|
256
|
+
exec(sql, params, metadata) {
|
|
257
|
+
return executor.exec(sql, params, metadata)
|
|
219
258
|
},
|
|
220
259
|
query<Row extends Record<string, unknown>>(sql: string, params?: readonly unknown[]) {
|
|
221
260
|
return executor.query<Row>(sql, params)
|
package/src/types.ts
CHANGED
|
@@ -60,6 +60,17 @@ export type ServerActions =
|
|
|
60
60
|
|
|
61
61
|
export type QueryBuilder = SchemaQuery<Schema>
|
|
62
62
|
|
|
63
|
+
export type AsyncTask = () => Promise<void>
|
|
64
|
+
|
|
65
|
+
export type AsyncTaskOptions = {
|
|
66
|
+
barrier?: boolean
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export type AsyncTaskEntry = {
|
|
70
|
+
task: AsyncTask
|
|
71
|
+
barrier: boolean
|
|
72
|
+
}
|
|
73
|
+
|
|
63
74
|
/**
|
|
64
75
|
* ➗0️⃣ END OVERRIDDEN TYPES
|
|
65
76
|
*/
|
|
@@ -71,7 +82,16 @@ export type MutatorContext = {
|
|
|
71
82
|
environment: 'server' | 'client'
|
|
72
83
|
server?: {
|
|
73
84
|
actions: ServerActions
|
|
74
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Schedules work after the mutation transaction commits. Tasks run in the
|
|
87
|
+
* background by default, following Zero's async task model, so they do not
|
|
88
|
+
* block the push response.
|
|
89
|
+
*
|
|
90
|
+
* Set `barrier: true` only when the client's next writes depend on the
|
|
91
|
+
* effect, such as provisioning a namespace before the client writes
|
|
92
|
+
* through a new instance. Barrier tasks finish before the push response.
|
|
93
|
+
*/
|
|
94
|
+
enqueueTask(task: AsyncTask, opts?: AsyncTaskOptions): void
|
|
75
95
|
}
|
|
76
96
|
can: Can
|
|
77
97
|
}
|
|
@@ -112,8 +132,6 @@ export type Can = <PWhere extends Where>(
|
|
|
112
132
|
obj: string | Record<string, unknown>,
|
|
113
133
|
) => Promise<void>
|
|
114
134
|
|
|
115
|
-
export type AsyncAction = () => Promise<void>
|
|
116
|
-
|
|
117
135
|
type GenericTable = TableBuilderWithColumns<any>
|
|
118
136
|
|
|
119
137
|
type GetTableSchema<TS extends GenericTable> =
|
package/src/vite-plugin.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
createZeroServer,
|
|
3
|
+
runAsyncTaskEntries,
|
|
4
|
+
type AsyncTaskEntry,
|
|
5
|
+
} from 'on-zero/server'
|
|
6
|
+
import { createZeroSQLiteServer, type SqlStatementMetadata } from 'on-zero/sqlite'
|
|
3
7
|
|
|
4
8
|
import type { Config, MutatorContext } from 'on-zero'
|
|
5
9
|
import type { Schema as ZeroSchema } from '@rocicorp/zero'
|
|
@@ -30,6 +34,7 @@ type SQLiteServer = ReturnType<typeof createZeroSQLiteServer<ZeroSchema, Models,
|
|
|
30
34
|
|
|
31
35
|
declare const postgresServer: PostgresServer
|
|
32
36
|
declare const sqliteServer: SQLiteServer
|
|
37
|
+
declare const taskEntries: AsyncTaskEntry[]
|
|
33
38
|
|
|
34
39
|
const authData: Config['authData'] = {
|
|
35
40
|
email: 'admin@example.com',
|
|
@@ -37,6 +42,19 @@ const authData: Config['authData'] = {
|
|
|
37
42
|
role: 'admin',
|
|
38
43
|
}
|
|
39
44
|
|
|
45
|
+
const sqliteWrite: SqlStatementMetadata = {
|
|
46
|
+
table: 'project_records',
|
|
47
|
+
publicTable: 'project',
|
|
48
|
+
kind: 'upsert',
|
|
49
|
+
}
|
|
50
|
+
void sqliteWrite
|
|
51
|
+
|
|
52
|
+
void runAsyncTaskEntries(taskEntries, {
|
|
53
|
+
background(promise) {
|
|
54
|
+
void promise
|
|
55
|
+
},
|
|
56
|
+
})
|
|
57
|
+
|
|
40
58
|
postgresServer.mutate.project.create(
|
|
41
59
|
{ id: 'pg' },
|
|
42
60
|
{ authData: { email: authData.email, id: authData.id, role: authData.role } },
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AsyncTaskEntry } from './types';
|
|
2
|
+
export type RunAsyncTaskEntriesOptions = {
|
|
3
|
+
/** Receives the background-task promise. Omit this to await all entries. */
|
|
4
|
+
background?: (promise: Promise<void>) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare function runAsyncTaskEntries(entries: readonly AsyncTaskEntry[], { background }?: RunAsyncTaskEntriesOptions): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=asyncTasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncTasks.d.ts","sourceRoot":"","sources":["../src/asyncTasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,MAAM,MAAM,0BAA0B,GAAG;IACvC,4EAA4E;IAC5E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;CAC9C,CAAA;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,EAAE,UAAU,EAAE,GAAE,0BAA+B,GAC9C,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { drizzleZeroConfig as createSchemaFromDrizzle } from 'drizzle-zero';
|
|
2
|
-
export { createZeroTableBuilder } from 'drizzle-zero';
|
|
1
|
+
export { drizzleZeroConfig as createSchemaFromDrizzle } from 'drizzle-zero-sqlite';
|
|
2
|
+
export { createZeroTableBuilder } from 'drizzle-zero-sqlite';
|
|
3
3
|
export { generateDrizzleSchemaFile } from './generate';
|
|
4
4
|
//# sourceMappingURL=createSchemaFromDrizzle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSchemaFromDrizzle.d.ts","sourceRoot":"","sources":["../src/createSchemaFromDrizzle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"createSchemaFromDrizzle.d.ts","sourceRoot":"","sources":["../src/createSchemaFromDrizzle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { createPermissions } from './createPermissions';
|
|
2
|
+
import type { AdminRoleMode, AsyncTask, AsyncTaskEntry, AsyncTaskOptions, AuthData, GenericModels, MutatorContext, QueryBuilder, Transaction } from './types';
|
|
3
|
+
import type { AnyQueryRegistry, HumanReadable, Query, Schema as ZeroSchema } from '@rocicorp/zero';
|
|
4
|
+
import type { Database } from '@rocicorp/zero/server';
|
|
5
|
+
type MutateAuthData = Pick<AuthData, 'email' | 'id'> & Partial<AuthData>;
|
|
6
|
+
export type MutateOptions = {
|
|
7
|
+
authData?: MutateAuthData;
|
|
8
|
+
awaitEffects?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type ServerMutate<Models extends GenericModels> = {
|
|
11
|
+
[Key in keyof Models]: {
|
|
12
|
+
[K in keyof Models[Key]['mutate']]: Models[Key]['mutate'][K] extends (ctx: MutatorContext, arg: infer Arg) => any ? (arg: Arg, options?: MutateOptions) => Promise<void> : (options?: MutateOptions) => Promise<void>;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export type ValidateQueryArgs = {
|
|
16
|
+
authData: AuthData | null;
|
|
17
|
+
queryName: string;
|
|
18
|
+
params: unknown;
|
|
19
|
+
};
|
|
20
|
+
export type ValidateMutationArgs = {
|
|
21
|
+
authData: AuthData | null;
|
|
22
|
+
mutatorName: string;
|
|
23
|
+
tableName: string;
|
|
24
|
+
args: unknown;
|
|
25
|
+
};
|
|
26
|
+
export type ValidateQueryFn = (args: ValidateQueryArgs) => void;
|
|
27
|
+
export type ValidateMutationFn = (args: ValidateMutationArgs) => void | Promise<void>;
|
|
28
|
+
export type ServerQueryResolverOptions = {
|
|
29
|
+
authData: AuthData | null;
|
|
30
|
+
name: string;
|
|
31
|
+
args: unknown;
|
|
32
|
+
queries: AnyQueryRegistry;
|
|
33
|
+
permissions: ReturnType<typeof createPermissions>;
|
|
34
|
+
validateQuery?: ValidateQueryFn;
|
|
35
|
+
};
|
|
36
|
+
export declare function resolveServerQuery({ authData, name, args, queries, permissions, validateQuery, }: ServerQueryResolverOptions): any;
|
|
37
|
+
export type TransactionAttemptLifecycle = {
|
|
38
|
+
beginAttempt(): void;
|
|
39
|
+
completeAttempt(): void;
|
|
40
|
+
rollbackAttempt(): void;
|
|
41
|
+
commitTransaction(): void;
|
|
42
|
+
rollbackTransaction(): void;
|
|
43
|
+
};
|
|
44
|
+
export type ZeroServerDatabase = Database<Transaction>;
|
|
45
|
+
export type ZeroServerCommonOptions<Schema extends ZeroSchema, Models extends GenericModels, ServerActions extends Record<string, unknown>> = {
|
|
46
|
+
schema: Schema;
|
|
47
|
+
models: Models;
|
|
48
|
+
createServerActions: () => ServerActions;
|
|
49
|
+
queries?: AnyQueryRegistry;
|
|
50
|
+
/** generated validators keyed by model and mutation name */
|
|
51
|
+
mutations?: Record<string, Record<string, any>>;
|
|
52
|
+
/** synchronous query authorization hook; throw to reject */
|
|
53
|
+
validateQuery?: ValidateQueryFn;
|
|
54
|
+
/** mutation authorization hook; throw to reject */
|
|
55
|
+
validateMutation?: ValidateMutationFn;
|
|
56
|
+
/** controls which operations the admin role bypasses */
|
|
57
|
+
defaultAllowAdminRole?: AdminRoleMode;
|
|
58
|
+
/** auth data used by direct server mutations when no scope provides it */
|
|
59
|
+
defaultMutateAuthData?: MutateAuthData;
|
|
60
|
+
};
|
|
61
|
+
export type ZeroDirectServerOptions<Schema extends ZeroSchema, Models extends GenericModels, ServerActions extends Record<string, unknown>> = ZeroServerCommonOptions<Schema, Models, ServerActions> & {
|
|
62
|
+
createDatabase: () => ZeroServerDatabase;
|
|
63
|
+
};
|
|
64
|
+
export type ZeroDirectServer<Schema extends ZeroSchema, Models extends GenericModels> = {
|
|
65
|
+
transaction: <CB extends (tx: Transaction) => Promise<any>, Returns extends CB extends (tx: Transaction) => Promise<infer X> ? X : never>(query: CB) => Promise<Returns>;
|
|
66
|
+
mutate: ServerMutate<Models>;
|
|
67
|
+
query: <R>(cb: (q: QueryBuilder) => Query<any, Schema, R>, authData?: AuthData | null) => Promise<HumanReadable<R>>;
|
|
68
|
+
};
|
|
69
|
+
export declare function createAsyncTaskCollector(): {
|
|
70
|
+
committed: AsyncTaskEntry[];
|
|
71
|
+
enqueueTask: (task: AsyncTask, opts?: AsyncTaskOptions) => void;
|
|
72
|
+
lifecycle: TransactionAttemptLifecycle;
|
|
73
|
+
};
|
|
74
|
+
export declare function createZeroDirectServerRuntime<Schema extends ZeroSchema, Models extends GenericModels, ServerActions extends Record<string, unknown>>({ createDatabase, createServerActions, defaultAllowAdminRole, defaultMutateAuthData, models, mutations: mutationValidators, queries, schema, validateMutation, validateQuery, }: ZeroDirectServerOptions<Schema, Models, ServerActions>): {
|
|
75
|
+
permissions: ReturnType<typeof createPermissions<Schema>>;
|
|
76
|
+
server: ZeroDirectServer<Schema, Models>;
|
|
77
|
+
};
|
|
78
|
+
export declare function createZeroDirectServer<Schema extends ZeroSchema, Models extends GenericModels, ServerActions extends Record<string, unknown>>(options: ZeroDirectServerOptions<Schema, Models, ServerActions>): ZeroDirectServer<Schema, Models>;
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=createZeroDirectServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createZeroDirectServer.d.ts","sourceRoot":"","sources":["../src/createZeroDirectServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,12 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
export type SQLiteTransactionExecutor = {
|
|
6
|
-
exec(sql: string, params?: readonly unknown[]): void | Promise<void>;
|
|
7
|
-
query<Row extends Record<string, unknown> = Record<string, unknown>>(sql: string, params?: readonly unknown[]): Row[] | Promise<Row[]>;
|
|
8
|
-
queryAst<Result = unknown>(ast: AST, format: SQLiteQueryFormat, queryName?: string): Result | Promise<Result>;
|
|
9
|
-
};
|
|
10
|
-
export type SQLiteQueryFormat = {
|
|
11
|
-
relationships: Record<string, SQLiteQueryFormat>;
|
|
12
|
-
singular: boolean;
|
|
13
|
-
};
|
|
14
|
-
export type SQLiteTransactionProvider = <R>(callback: (tx: SQLiteTransactionExecutor) => Promise<R>) => Promise<R>;
|
|
15
|
-
type SQLiteColumn = ZeroSchema['tables'][string]['columns'][string];
|
|
16
|
-
export type SQLiteValueContext = {
|
|
17
|
-
column: SQLiteColumn;
|
|
18
|
-
columnName: string;
|
|
19
|
-
tableName: string;
|
|
20
|
-
};
|
|
21
|
-
export type ZeroSQLiteTransactionOptions<Schema extends ZeroSchema> = {
|
|
22
|
-
schema: Schema;
|
|
23
|
-
encodeValue?: (value: unknown, context: SQLiteValueContext) => unknown;
|
|
24
|
-
};
|
|
25
|
-
export type SQLiteLedgerTables = {
|
|
26
|
-
clients: string;
|
|
27
|
-
mutations: string;
|
|
28
|
-
};
|
|
1
|
+
import { type SQLiteLedgerTables, type SQLiteTransactionProvider, type SQLiteValueContext } from './sqliteRuntime';
|
|
2
|
+
import type { ZeroServer, ZeroServerCommonOptions } from './createZeroServerCore';
|
|
3
|
+
import type { GenericModels } from './types';
|
|
4
|
+
import type { Schema as ZeroSchema } from '@rocicorp/zero';
|
|
29
5
|
export type CreateZeroSQLiteServerOptions<Schema extends ZeroSchema, Models extends GenericModels, ServerActions extends Record<string, unknown>> = ZeroServerCommonOptions<Schema, Models, ServerActions> & {
|
|
30
6
|
transactionProvider: SQLiteTransactionProvider;
|
|
31
7
|
ledgerTables?: (upstreamSchema: string) => SQLiteLedgerTables;
|
|
32
8
|
encodeValue?: (value: unknown, context: SQLiteValueContext) => unknown;
|
|
33
9
|
};
|
|
34
10
|
export declare function createZeroSQLiteServer<Schema extends ZeroSchema, Models extends GenericModels, ServerActions extends Record<string, unknown>>({ encodeValue, ledgerTables, transactionProvider, ...options }: CreateZeroSQLiteServerOptions<Schema, Models, ServerActions>): ZeroServer<Schema, Models, ServerActions>;
|
|
35
|
-
export
|
|
36
|
-
export {};
|
|
11
|
+
export * from './sqliteRuntime';
|
|
37
12
|
//# sourceMappingURL=createZeroSQLiteServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createZeroSQLiteServer.d.ts","sourceRoot":"","sources":["../src/createZeroSQLiteServer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createZeroSQLiteServer.d.ts","sourceRoot":"","sources":["../src/createZeroSQLiteServer.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE1D,MAAM,MAAM,6BAA6B,CACvC,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC3C,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG;IAC3D,mBAAmB,EAAE,yBAAyB,CAAA;IAC9C,YAAY,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,kBAAkB,CAAA;IAC7D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAA;CACvE,CAAA;AAED,wBAAgB,sBAAsB,CACpC,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7C,EACA,WAA+B,EAC/B,YAAkC,EAClC,mBAAmB,EACnB,GAAG,OAAO,EACX,EAAE,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,UAAU,CAC1E,MAAM,EACN,MAAM,EACN,aAAa,CACd,CAeA;AAED,cAAc,iBAAiB,CAAA"}
|