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
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { mustGetQuery } from "@rocicorp/zero";
|
|
2
|
+
import { runAsyncTaskEntries } from "./asyncTasks.mjs";
|
|
3
|
+
import { createPermissions } from "./createPermissions.mjs";
|
|
4
|
+
import { createMutators } from "./helpers/createMutators.mjs";
|
|
5
|
+
import { getScopedAuthData, isInZeroMutation, mutatorContext, runWithAuthScope } from "./helpers/mutatorContext.mjs";
|
|
6
|
+
import { runWithQueryContext } from "./helpers/queryContext.mjs";
|
|
7
|
+
import { getMutationsPermissions } from "./modelRegistry.mjs";
|
|
8
|
+
import { setCustomQueries } from "./run.mjs";
|
|
9
|
+
import { getZQL, setEnvironment, setSchema } from "./state.mjs";
|
|
10
|
+
import { setEvaluatingPermission } from "./where.mjs";
|
|
11
|
+
import { setRunner } from "./zeroRunner.mjs";
|
|
12
|
+
function resolveServerQuery({
|
|
13
|
+
authData,
|
|
14
|
+
name,
|
|
15
|
+
args,
|
|
16
|
+
queries,
|
|
17
|
+
permissions,
|
|
18
|
+
validateQuery
|
|
19
|
+
}) {
|
|
20
|
+
if (name.startsWith("permission.")) {
|
|
21
|
+
const table = name.slice("permission.".length);
|
|
22
|
+
const {
|
|
23
|
+
objOrId
|
|
24
|
+
} = args;
|
|
25
|
+
const permission = getMutationsPermissions(table);
|
|
26
|
+
if (!permission) {
|
|
27
|
+
throw new Error(`[permission] no permission defined for table: ${table}`);
|
|
28
|
+
}
|
|
29
|
+
setEvaluatingPermission(true);
|
|
30
|
+
try {
|
|
31
|
+
return getZQL()[table].where(eb => {
|
|
32
|
+
return permissions.buildPermissionQuery(authData, eb, permission, objOrId, table);
|
|
33
|
+
}).one();
|
|
34
|
+
} finally {
|
|
35
|
+
setEvaluatingPermission(false);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (validateQuery) {
|
|
39
|
+
validateQuery({
|
|
40
|
+
authData,
|
|
41
|
+
queryName: name,
|
|
42
|
+
params: args
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const query = mustGetQuery(queries, name);
|
|
46
|
+
return query.fn({
|
|
47
|
+
args,
|
|
48
|
+
ctx: authData
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function createAsyncTaskCollector() {
|
|
52
|
+
const committed = [];
|
|
53
|
+
let attempt;
|
|
54
|
+
let completedAttempt;
|
|
55
|
+
const enqueueTask = (task, opts) => {
|
|
56
|
+
const entries = attempt ?? committed;
|
|
57
|
+
entries.push({
|
|
58
|
+
task,
|
|
59
|
+
barrier: opts?.barrier === true
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
const lifecycle = {
|
|
63
|
+
beginAttempt() {
|
|
64
|
+
attempt = [];
|
|
65
|
+
completedAttempt = void 0;
|
|
66
|
+
},
|
|
67
|
+
completeAttempt() {
|
|
68
|
+
completedAttempt = attempt;
|
|
69
|
+
attempt = void 0;
|
|
70
|
+
},
|
|
71
|
+
rollbackAttempt() {
|
|
72
|
+
attempt = void 0;
|
|
73
|
+
completedAttempt = void 0;
|
|
74
|
+
},
|
|
75
|
+
commitTransaction() {
|
|
76
|
+
if (completedAttempt) committed.push(...completedAttempt);
|
|
77
|
+
completedAttempt = void 0;
|
|
78
|
+
},
|
|
79
|
+
rollbackTransaction() {
|
|
80
|
+
attempt = void 0;
|
|
81
|
+
completedAttempt = void 0;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
return {
|
|
85
|
+
committed,
|
|
86
|
+
enqueueTask,
|
|
87
|
+
lifecycle
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function createZeroDirectServerRuntime({
|
|
91
|
+
createDatabase,
|
|
92
|
+
createServerActions,
|
|
93
|
+
defaultAllowAdminRole = "all",
|
|
94
|
+
defaultMutateAuthData = {},
|
|
95
|
+
models,
|
|
96
|
+
mutations: mutationValidators,
|
|
97
|
+
queries,
|
|
98
|
+
schema,
|
|
99
|
+
validateMutation,
|
|
100
|
+
validateQuery
|
|
101
|
+
}) {
|
|
102
|
+
setSchema(schema);
|
|
103
|
+
setEnvironment("server");
|
|
104
|
+
const permissions = createPermissions({
|
|
105
|
+
environment: "server",
|
|
106
|
+
schema,
|
|
107
|
+
adminRoleMode: defaultAllowAdminRole
|
|
108
|
+
});
|
|
109
|
+
async function runTransaction(database, query2) {
|
|
110
|
+
try {
|
|
111
|
+
if (isInZeroMutation()) {
|
|
112
|
+
const {
|
|
113
|
+
tx
|
|
114
|
+
} = mutatorContext();
|
|
115
|
+
return await query2(tx);
|
|
116
|
+
}
|
|
117
|
+
return await database.transaction(query2, dummyTransactionInput);
|
|
118
|
+
} catch (err) {
|
|
119
|
+
if (err?.name !== "PermissionError") {
|
|
120
|
+
console.error(`Error running transaction(): ${err}`);
|
|
121
|
+
}
|
|
122
|
+
throw err;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async function transaction(query2) {
|
|
126
|
+
return runTransaction(createDatabase(), query2);
|
|
127
|
+
}
|
|
128
|
+
async function runMutate(modelName, mutatorName, mutatorArg, options) {
|
|
129
|
+
let authData = options?.authData;
|
|
130
|
+
if (!authData) {
|
|
131
|
+
const scoped = getScopedAuthData();
|
|
132
|
+
if (scoped) authData = scoped;
|
|
133
|
+
}
|
|
134
|
+
const tasks = createAsyncTaskCollector();
|
|
135
|
+
const mutators = createMutators({
|
|
136
|
+
models,
|
|
137
|
+
environment: "server",
|
|
138
|
+
enqueueTask: tasks.enqueueTask,
|
|
139
|
+
authData: {
|
|
140
|
+
...defaultMutateAuthData,
|
|
141
|
+
...authData
|
|
142
|
+
},
|
|
143
|
+
createServerActions,
|
|
144
|
+
can: permissions.can,
|
|
145
|
+
validateMutation,
|
|
146
|
+
mutationValidators
|
|
147
|
+
});
|
|
148
|
+
const modelMutators = mutators[modelName];
|
|
149
|
+
const mutator = modelMutators[mutatorName];
|
|
150
|
+
await runTransaction(createDatabaseWithLifecycle(createDatabase(), tasks.lifecycle), async tx => {
|
|
151
|
+
await mutator(tx, mutatorArg);
|
|
152
|
+
});
|
|
153
|
+
if (tasks.committed.length) {
|
|
154
|
+
const resolvedAuth = authData ?? null;
|
|
155
|
+
const entries = tasks.committed.map(entry => ({
|
|
156
|
+
...entry,
|
|
157
|
+
task: () => runWithAuthScope(resolvedAuth, entry.task)
|
|
158
|
+
}));
|
|
159
|
+
if (options?.awaitEffects) {
|
|
160
|
+
await Promise.all(entries.map(({
|
|
161
|
+
task
|
|
162
|
+
}) => task()));
|
|
163
|
+
} else {
|
|
164
|
+
await runAsyncTaskEntries(entries, {
|
|
165
|
+
background: () => void 0
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
const mutate = new Proxy({}, {
|
|
171
|
+
get(_, modelName) {
|
|
172
|
+
return new Proxy({}, {
|
|
173
|
+
get(_2, mutatorName) {
|
|
174
|
+
return (arg, options) => runMutate(modelName, mutatorName, arg, options);
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
function query(cb, authData) {
|
|
180
|
+
const run = () => transaction(async tx => {
|
|
181
|
+
return tx.run(cb(getZQL()));
|
|
182
|
+
});
|
|
183
|
+
if (authData !== void 0) {
|
|
184
|
+
return runWithQueryContext({
|
|
185
|
+
authData
|
|
186
|
+
}, run);
|
|
187
|
+
}
|
|
188
|
+
return run();
|
|
189
|
+
}
|
|
190
|
+
if (queries) {
|
|
191
|
+
setCustomQueries(queries);
|
|
192
|
+
}
|
|
193
|
+
setRunner(queryObj => {
|
|
194
|
+
return transaction(async tx => {
|
|
195
|
+
return tx.run(queryObj);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
return {
|
|
199
|
+
permissions,
|
|
200
|
+
server: {
|
|
201
|
+
transaction,
|
|
202
|
+
mutate,
|
|
203
|
+
query
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function createZeroDirectServer(options) {
|
|
208
|
+
return createZeroDirectServerRuntime(options).server;
|
|
209
|
+
}
|
|
210
|
+
function createDatabaseWithLifecycle(database, lifecycle) {
|
|
211
|
+
return {
|
|
212
|
+
async transaction(callback, input) {
|
|
213
|
+
try {
|
|
214
|
+
const value = await database.transaction(async (tx, hooks) => {
|
|
215
|
+
lifecycle.beginAttempt();
|
|
216
|
+
try {
|
|
217
|
+
const result = await callback(tx, hooks);
|
|
218
|
+
lifecycle.completeAttempt();
|
|
219
|
+
return result;
|
|
220
|
+
} catch (error) {
|
|
221
|
+
lifecycle.rollbackAttempt();
|
|
222
|
+
throw error;
|
|
223
|
+
}
|
|
224
|
+
}, input);
|
|
225
|
+
lifecycle.commitTransaction();
|
|
226
|
+
return value;
|
|
227
|
+
} catch (error) {
|
|
228
|
+
lifecycle.rollbackTransaction();
|
|
229
|
+
throw error;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
const dummyTransactionInput = {
|
|
235
|
+
clientGroupID: "unused",
|
|
236
|
+
clientID: "unused",
|
|
237
|
+
mutationID: 42,
|
|
238
|
+
upstreamSchema: "unused"
|
|
239
|
+
};
|
|
240
|
+
export { createAsyncTaskCollector, createZeroDirectServer, createZeroDirectServerRuntime, resolveServerQuery };
|
|
241
|
+
//# sourceMappingURL=createZeroDirectServer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["mustGetQuery","runAsyncTaskEntries","createPermissions","createMutators","getScopedAuthData","isInZeroMutation","mutatorContext","runWithAuthScope","runWithQueryContext","getMutationsPermissions","setCustomQueries","getZQL","setEnvironment","setSchema","setEvaluatingPermission","setRunner","resolveServerQuery","authData","name","args","queries","permissions","validateQuery","startsWith","table","slice","length","objOrId","permission","Error","where","eb","buildPermissionQuery","one","queryName","params","query","fn","ctx","createAsyncTaskCollector","committed","attempt","completedAttempt","enqueueTask","task","opts","entries","push","barrier","lifecycle","beginAttempt","completeAttempt","rollbackAttempt","commitTransaction","rollbackTransaction","createZeroDirectServerRuntime","createDatabase","createServerActions","defaultAllowAdminRole","defaultMutateAuthData","models","mutations","mutationValidators","schema","validateMutation","environment","adminRoleMode","runTransaction","database","query2","tx","transaction","dummyTransactionInput","err","console","error","runMutate","modelName","mutatorName","mutatorArg","options","scoped","tasks","mutators","can","modelMutators","mutator","createDatabaseWithLifecycle","resolvedAuth","map","entry","awaitEffects","Promise","all","background","mutate","Proxy","get","_","_2","arg","cb","run","queryObj","server","createZeroDirectServer","callback","input","value","hooks","result","clientGroupID","clientID","mutationID","upstreamSchema"],"sources":["../../src/createZeroDirectServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { mustGetQuery } from "@rocicorp/zero";
|
|
2
|
+
import { runAsyncTaskEntries } from "./asyncTasks.native.js";
|
|
3
|
+
import { createPermissions } from "./createPermissions.native.js";
|
|
4
|
+
import { createMutators } from "./helpers/createMutators.native.js";
|
|
5
|
+
import { getScopedAuthData, isInZeroMutation, mutatorContext, runWithAuthScope } from "./helpers/mutatorContext.native.js";
|
|
6
|
+
import { runWithQueryContext } from "./helpers/queryContext.native.js";
|
|
7
|
+
import { getMutationsPermissions } from "./modelRegistry.native.js";
|
|
8
|
+
import { setCustomQueries } from "./run.native.js";
|
|
9
|
+
import { getZQL, setEnvironment, setSchema } from "./state.native.js";
|
|
10
|
+
import { setEvaluatingPermission } from "./where.native.js";
|
|
11
|
+
import { setRunner } from "./zeroRunner.native.js";
|
|
12
|
+
function resolveServerQuery(param) {
|
|
13
|
+
var {
|
|
14
|
+
authData,
|
|
15
|
+
name,
|
|
16
|
+
args,
|
|
17
|
+
queries,
|
|
18
|
+
permissions,
|
|
19
|
+
validateQuery
|
|
20
|
+
} = param;
|
|
21
|
+
if (name.startsWith("permission.")) {
|
|
22
|
+
var table = name.slice("permission.".length);
|
|
23
|
+
var {
|
|
24
|
+
objOrId
|
|
25
|
+
} = args;
|
|
26
|
+
var permission = getMutationsPermissions(table);
|
|
27
|
+
if (!permission) {
|
|
28
|
+
throw new Error(`[permission] no permission defined for table: ${table}`);
|
|
29
|
+
}
|
|
30
|
+
setEvaluatingPermission(true);
|
|
31
|
+
try {
|
|
32
|
+
return getZQL()[table].where(function (eb) {
|
|
33
|
+
return permissions.buildPermissionQuery(authData, eb, permission, objOrId, table);
|
|
34
|
+
}).one();
|
|
35
|
+
} finally {
|
|
36
|
+
setEvaluatingPermission(false);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (validateQuery) {
|
|
40
|
+
validateQuery({
|
|
41
|
+
authData,
|
|
42
|
+
queryName: name,
|
|
43
|
+
params: args
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
var query = mustGetQuery(queries, name);
|
|
47
|
+
return query.fn({
|
|
48
|
+
args,
|
|
49
|
+
ctx: authData
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function createAsyncTaskCollector() {
|
|
53
|
+
var committed = [];
|
|
54
|
+
var attempt;
|
|
55
|
+
var completedAttempt;
|
|
56
|
+
var enqueueTask = function (task, opts) {
|
|
57
|
+
var entries = attempt !== null && attempt !== void 0 ? attempt : committed;
|
|
58
|
+
entries.push({
|
|
59
|
+
task,
|
|
60
|
+
barrier: (opts === null || opts === void 0 ? void 0 : opts.barrier) === true
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
var lifecycle = {
|
|
64
|
+
beginAttempt() {
|
|
65
|
+
attempt = [];
|
|
66
|
+
completedAttempt = void 0;
|
|
67
|
+
},
|
|
68
|
+
completeAttempt() {
|
|
69
|
+
completedAttempt = attempt;
|
|
70
|
+
attempt = void 0;
|
|
71
|
+
},
|
|
72
|
+
rollbackAttempt() {
|
|
73
|
+
attempt = void 0;
|
|
74
|
+
completedAttempt = void 0;
|
|
75
|
+
},
|
|
76
|
+
commitTransaction() {
|
|
77
|
+
if (completedAttempt) committed.push(...completedAttempt);
|
|
78
|
+
completedAttempt = void 0;
|
|
79
|
+
},
|
|
80
|
+
rollbackTransaction() {
|
|
81
|
+
attempt = void 0;
|
|
82
|
+
completedAttempt = void 0;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
committed,
|
|
87
|
+
enqueueTask,
|
|
88
|
+
lifecycle
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function createZeroDirectServerRuntime(param) {
|
|
92
|
+
var {
|
|
93
|
+
createDatabase,
|
|
94
|
+
createServerActions,
|
|
95
|
+
defaultAllowAdminRole = "all",
|
|
96
|
+
defaultMutateAuthData = {},
|
|
97
|
+
models,
|
|
98
|
+
mutations: mutationValidators,
|
|
99
|
+
queries,
|
|
100
|
+
schema,
|
|
101
|
+
validateMutation,
|
|
102
|
+
validateQuery
|
|
103
|
+
} = param;
|
|
104
|
+
setSchema(schema);
|
|
105
|
+
setEnvironment("server");
|
|
106
|
+
var permissions = createPermissions({
|
|
107
|
+
environment: "server",
|
|
108
|
+
schema,
|
|
109
|
+
adminRoleMode: defaultAllowAdminRole
|
|
110
|
+
});
|
|
111
|
+
async function runTransaction(database, query2) {
|
|
112
|
+
try {
|
|
113
|
+
if (isInZeroMutation()) {
|
|
114
|
+
var {
|
|
115
|
+
tx
|
|
116
|
+
} = mutatorContext();
|
|
117
|
+
return await query2(tx);
|
|
118
|
+
}
|
|
119
|
+
return await database.transaction(query2, dummyTransactionInput);
|
|
120
|
+
} catch (err) {
|
|
121
|
+
if ((err === null || err === void 0 ? void 0 : err.name) !== "PermissionError") {
|
|
122
|
+
console.error(`Error running transaction(): ${err}`);
|
|
123
|
+
}
|
|
124
|
+
throw err;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async function transaction(query2) {
|
|
128
|
+
return runTransaction(createDatabase(), query2);
|
|
129
|
+
}
|
|
130
|
+
async function runMutate(modelName, mutatorName, mutatorArg, options) {
|
|
131
|
+
var authData = options === null || options === void 0 ? void 0 : options.authData;
|
|
132
|
+
if (!authData) {
|
|
133
|
+
var scoped = getScopedAuthData();
|
|
134
|
+
if (scoped) authData = scoped;
|
|
135
|
+
}
|
|
136
|
+
var tasks = createAsyncTaskCollector();
|
|
137
|
+
var mutators = createMutators({
|
|
138
|
+
models,
|
|
139
|
+
environment: "server",
|
|
140
|
+
enqueueTask: tasks.enqueueTask,
|
|
141
|
+
authData: {
|
|
142
|
+
...defaultMutateAuthData,
|
|
143
|
+
...authData
|
|
144
|
+
},
|
|
145
|
+
createServerActions,
|
|
146
|
+
can: permissions.can,
|
|
147
|
+
validateMutation,
|
|
148
|
+
mutationValidators
|
|
149
|
+
});
|
|
150
|
+
var modelMutators = mutators[modelName];
|
|
151
|
+
var mutator = modelMutators[mutatorName];
|
|
152
|
+
await runTransaction(createDatabaseWithLifecycle(createDatabase(), tasks.lifecycle), async function (tx) {
|
|
153
|
+
await mutator(tx, mutatorArg);
|
|
154
|
+
});
|
|
155
|
+
if (tasks.committed.length) {
|
|
156
|
+
var resolvedAuth = authData !== null && authData !== void 0 ? authData : null;
|
|
157
|
+
var entries = tasks.committed.map(function (entry) {
|
|
158
|
+
return {
|
|
159
|
+
...entry,
|
|
160
|
+
task: function () {
|
|
161
|
+
return runWithAuthScope(resolvedAuth, entry.task);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
if (options === null || options === void 0 ? void 0 : options.awaitEffects) {
|
|
166
|
+
await Promise.all(entries.map(function (param2) {
|
|
167
|
+
var {
|
|
168
|
+
task
|
|
169
|
+
} = param2;
|
|
170
|
+
return task();
|
|
171
|
+
}));
|
|
172
|
+
} else {
|
|
173
|
+
await runAsyncTaskEntries(entries, {
|
|
174
|
+
background: function () {
|
|
175
|
+
return void 0;
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
var mutate = new Proxy({}, {
|
|
182
|
+
get(_, modelName) {
|
|
183
|
+
return new Proxy({}, {
|
|
184
|
+
get(_2, mutatorName) {
|
|
185
|
+
return function (arg, options) {
|
|
186
|
+
return runMutate(modelName, mutatorName, arg, options);
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
function query(cb, authData) {
|
|
193
|
+
var run = function () {
|
|
194
|
+
return transaction(async function (tx) {
|
|
195
|
+
return tx.run(cb(getZQL()));
|
|
196
|
+
});
|
|
197
|
+
};
|
|
198
|
+
if (authData !== void 0) {
|
|
199
|
+
return runWithQueryContext({
|
|
200
|
+
authData
|
|
201
|
+
}, run);
|
|
202
|
+
}
|
|
203
|
+
return run();
|
|
204
|
+
}
|
|
205
|
+
if (queries) {
|
|
206
|
+
setCustomQueries(queries);
|
|
207
|
+
}
|
|
208
|
+
setRunner(function (queryObj) {
|
|
209
|
+
return transaction(async function (tx) {
|
|
210
|
+
return tx.run(queryObj);
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
return {
|
|
214
|
+
permissions,
|
|
215
|
+
server: {
|
|
216
|
+
transaction,
|
|
217
|
+
mutate,
|
|
218
|
+
query
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
function createZeroDirectServer(options) {
|
|
223
|
+
return createZeroDirectServerRuntime(options).server;
|
|
224
|
+
}
|
|
225
|
+
function createDatabaseWithLifecycle(database, lifecycle) {
|
|
226
|
+
return {
|
|
227
|
+
async transaction(callback, input) {
|
|
228
|
+
try {
|
|
229
|
+
var value = await database.transaction(async function (tx, hooks) {
|
|
230
|
+
lifecycle.beginAttempt();
|
|
231
|
+
try {
|
|
232
|
+
var result = await callback(tx, hooks);
|
|
233
|
+
lifecycle.completeAttempt();
|
|
234
|
+
return result;
|
|
235
|
+
} catch (error) {
|
|
236
|
+
lifecycle.rollbackAttempt();
|
|
237
|
+
throw error;
|
|
238
|
+
}
|
|
239
|
+
}, input);
|
|
240
|
+
lifecycle.commitTransaction();
|
|
241
|
+
return value;
|
|
242
|
+
} catch (error) {
|
|
243
|
+
lifecycle.rollbackTransaction();
|
|
244
|
+
throw error;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
var dummyTransactionInput = {
|
|
250
|
+
clientGroupID: "unused",
|
|
251
|
+
clientID: "unused",
|
|
252
|
+
mutationID: 42,
|
|
253
|
+
upstreamSchema: "unused"
|
|
254
|
+
};
|
|
255
|
+
export { createAsyncTaskCollector, createZeroDirectServer, createZeroDirectServerRuntime, resolveServerQuery };
|
|
256
|
+
//# sourceMappingURL=createZeroDirectServer.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["mustGetQuery","runAsyncTaskEntries","createPermissions","createMutators","getScopedAuthData","isInZeroMutation","mutatorContext","runWithAuthScope","runWithQueryContext","getMutationsPermissions","setCustomQueries","getZQL","setEnvironment","setSchema","setEvaluatingPermission","setRunner","resolveServerQuery","param","authData","name","args","queries","permissions","validateQuery","startsWith","table","slice","length","objOrId","permission","Error","where","eb","buildPermissionQuery","one","queryName","params","query","fn","ctx","createAsyncTaskCollector","committed","attempt","completedAttempt","enqueueTask","task","opts","entries","push","barrier","lifecycle","beginAttempt","completeAttempt","rollbackAttempt","commitTransaction","rollbackTransaction","createZeroDirectServerRuntime","createDatabase","createServerActions","defaultAllowAdminRole","defaultMutateAuthData","models","mutations","mutationValidators","schema","validateMutation","environment","adminRoleMode","runTransaction","database","query2","tx","transaction","dummyTransactionInput","err","console","error","runMutate","modelName","mutatorName","mutatorArg","options","scoped","tasks","mutators","can","modelMutators","mutator","createDatabaseWithLifecycle","resolvedAuth","map","entry","awaitEffects","Promise","all","param2","background","mutate","Proxy","get","_","_2","arg","cb","run","queryObj","server","createZeroDirectServer","callback","input","value","hooks","result","clientGroupID","clientID","mutationID","upstreamSchema"],"sources":["../../src/createZeroDirectServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|