on-zero 0.4.3 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli.cjs +46 -41
- package/dist/cjs/cli.native.js +48 -43
- package/dist/cjs/cli.native.js.map +1 -1
- package/dist/cjs/constants.cjs +14 -12
- package/dist/cjs/constants.native.js +14 -12
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/createPermissions.cjs +66 -34
- package/dist/cjs/createPermissions.native.js +143 -87
- package/dist/cjs/createPermissions.native.js.map +1 -1
- package/dist/cjs/createSchemaFromDrizzle.cjs +15 -13
- package/dist/cjs/createSchemaFromDrizzle.native.js +15 -13
- package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -1
- package/dist/cjs/createUseQuery.cjs +48 -35
- package/dist/cjs/createUseQuery.native.js +52 -38
- package/dist/cjs/createUseQuery.native.js.map +1 -1
- package/dist/cjs/createZeroClient.cjs +177 -135
- package/dist/cjs/createZeroClient.native.js +246 -195
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/createZeroServer.cjs +175 -129
- package/dist/cjs/createZeroServer.native.js +170 -138
- package/dist/cjs/createZeroServer.native.js.map +1 -1
- package/dist/cjs/generate-helpers.cjs +122 -88
- package/dist/cjs/generate-helpers.native.js +209 -174
- package/dist/cjs/generate-helpers.native.js.map +1 -1
- package/dist/cjs/generate-lite.cjs +90 -58
- package/dist/cjs/generate-lite.native.js +200 -140
- package/dist/cjs/generate-lite.native.js.map +1 -1
- package/dist/cjs/generate-lite.test.cjs +229 -192
- package/dist/cjs/generate-lite.test.native.js +229 -194
- package/dist/cjs/generate-lite.test.native.js.map +1 -1
- package/dist/cjs/generate.cjs +455 -291
- package/dist/cjs/generate.native.js +747 -565
- package/dist/cjs/generate.native.js.map +1 -1
- package/dist/cjs/generate.test.cjs +170 -106
- package/dist/cjs/generate.test.native.js +171 -107
- package/dist/cjs/generate.test.native.js.map +1 -1
- package/dist/cjs/helpers/batchQuery.cjs +29 -18
- package/dist/cjs/helpers/batchQuery.native.js +36 -21
- package/dist/cjs/helpers/batchQuery.native.js.map +1 -1
- package/dist/cjs/helpers/clearZeroClientData.cjs +30 -21
- package/dist/cjs/helpers/clearZeroClientData.native.js +42 -33
- package/dist/cjs/helpers/clearZeroClientData.native.js.map +1 -1
- package/dist/cjs/helpers/createMutators.cjs +80 -42
- package/dist/cjs/helpers/createMutators.native.js +139 -87
- package/dist/cjs/helpers/createMutators.native.js.map +1 -1
- package/dist/cjs/helpers/didRunPermissionCheck.cjs +19 -13
- package/dist/cjs/helpers/didRunPermissionCheck.native.js +22 -20
- package/dist/cjs/helpers/didRunPermissionCheck.native.js.map +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.cjs +16 -13
- package/dist/cjs/helpers/ensureLoggedIn.native.js +21 -18
- package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
- package/dist/cjs/helpers/getAuth.cjs +25 -15
- package/dist/cjs/helpers/getAuth.native.js +25 -15
- package/dist/cjs/helpers/getAuth.native.js.map +1 -1
- package/dist/cjs/helpers/mutatorContext.cjs +21 -14
- package/dist/cjs/helpers/mutatorContext.native.js +21 -15
- package/dist/cjs/helpers/mutatorContext.native.js.map +1 -1
- package/dist/cjs/helpers/prettyFormatZeroQuery.cjs +126 -81
- package/dist/cjs/helpers/prettyFormatZeroQuery.native.js +135 -92
- package/dist/cjs/helpers/prettyFormatZeroQuery.native.js.map +1 -1
- package/dist/cjs/helpers/queryContext.cjs +12 -10
- package/dist/cjs/helpers/queryContext.native.js +16 -13
- package/dist/cjs/helpers/queryContext.native.js.map +1 -1
- package/dist/cjs/helpers/showZeroClientError.cjs +24 -19
- package/dist/cjs/helpers/showZeroClientError.native.js +38 -34
- package/dist/cjs/helpers/showZeroClientError.native.js.map +1 -1
- package/dist/cjs/helpers/useZeroDebug.cjs +82 -49
- package/dist/cjs/helpers/useZeroDebug.native.js +83 -55
- package/dist/cjs/helpers/useZeroDebug.native.js.map +1 -1
- package/dist/cjs/index.cjs +17 -15
- package/dist/cjs/index.native.js +17 -15
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/modelRegistry.cjs +12 -10
- package/dist/cjs/modelRegistry.native.js +12 -10
- package/dist/cjs/modelRegistry.native.js.map +1 -1
- package/dist/cjs/mutations.cjs +66 -42
- package/dist/cjs/mutations.native.js +68 -46
- package/dist/cjs/mutations.native.js.map +1 -1
- package/dist/cjs/queryRegistry.cjs +13 -10
- package/dist/cjs/queryRegistry.native.js +14 -11
- package/dist/cjs/queryRegistry.native.js.map +1 -1
- package/dist/cjs/resolveQuery.cjs +22 -18
- package/dist/cjs/resolveQuery.native.js +32 -28
- package/dist/cjs/resolveQuery.native.js.map +1 -1
- package/dist/cjs/run.cjs +35 -28
- package/dist/cjs/run.native.js +35 -29
- package/dist/cjs/run.native.js.map +1 -1
- package/dist/cjs/server.cjs +7 -5
- package/dist/cjs/serverWhere.cjs +13 -11
- package/dist/cjs/serverWhere.native.js +13 -11
- package/dist/cjs/serverWhere.native.js.map +1 -1
- package/dist/cjs/serverWhere.test.cjs +83 -55
- package/dist/cjs/serverWhere.test.native.js +72 -50
- package/dist/cjs/serverWhere.test.native.js.map +1 -1
- package/dist/cjs/state.cjs +49 -44
- package/dist/cjs/state.native.js +56 -53
- package/dist/cjs/state.native.js.map +1 -1
- package/dist/cjs/types.cjs +7 -5
- package/dist/cjs/types.native.js +7 -5
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/usePermission.test.cjs +58 -45
- package/dist/cjs/usePermission.test.native.js +59 -48
- package/dist/cjs/usePermission.test.native.js.map +1 -1
- package/dist/cjs/vite-plugin.cjs +41 -21
- package/dist/cjs/vite-plugin.native.js +61 -47
- package/dist/cjs/vite-plugin.native.js.map +1 -1
- package/dist/cjs/where.cjs +39 -24
- package/dist/cjs/where.native.js +44 -29
- package/dist/cjs/where.native.js.map +1 -1
- package/dist/cjs/zeroRunner.cjs +18 -12
- package/dist/cjs/zeroRunner.native.js +22 -16
- package/dist/cjs/zeroRunner.native.js.map +1 -1
- package/dist/cjs/zql.cjs +14 -11
- package/dist/cjs/zql.native.js +19 -17
- package/dist/cjs/zql.native.js.map +1 -1
- package/dist/esm/cli.mjs +43 -38
- package/dist/esm/cli.mjs.map +1 -1
- package/dist/esm/cli.native.js +44 -39
- package/dist/esm/cli.native.js.map +1 -1
- package/dist/esm/constants.mjs +2 -2
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/constants.native.js +2 -2
- package/dist/esm/constants.native.js.map +1 -1
- package/dist/esm/createPermissions.mjs +48 -18
- package/dist/esm/createPermissions.mjs.map +1 -1
- package/dist/esm/createPermissions.native.js +125 -71
- package/dist/esm/createPermissions.native.js.map +1 -1
- package/dist/esm/createUseQuery.mjs +32 -21
- package/dist/esm/createUseQuery.mjs.map +1 -1
- package/dist/esm/createUseQuery.native.js +36 -24
- package/dist/esm/createUseQuery.native.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +148 -108
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +217 -168
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/createZeroServer.mjs +148 -104
- package/dist/esm/createZeroServer.mjs.map +1 -1
- package/dist/esm/createZeroServer.native.js +143 -113
- package/dist/esm/createZeroServer.native.js.map +1 -1
- package/dist/esm/generate-helpers.mjs +110 -78
- package/dist/esm/generate-helpers.mjs.map +1 -1
- package/dist/esm/generate-helpers.native.js +197 -164
- package/dist/esm/generate-helpers.native.js.map +1 -1
- package/dist/esm/generate-lite.mjs +78 -48
- package/dist/esm/generate-lite.mjs.map +1 -1
- package/dist/esm/generate-lite.native.js +188 -130
- package/dist/esm/generate-lite.native.js.map +1 -1
- package/dist/esm/generate-lite.test.mjs +227 -190
- package/dist/esm/generate-lite.test.mjs.map +1 -1
- package/dist/esm/generate-lite.test.native.js +227 -192
- package/dist/esm/generate-lite.test.native.js.map +1 -1
- package/dist/esm/generate.mjs +427 -265
- package/dist/esm/generate.mjs.map +1 -1
- package/dist/esm/generate.native.js +718 -538
- package/dist/esm/generate.native.js.map +1 -1
- package/dist/esm/generate.test.mjs +165 -101
- package/dist/esm/generate.test.mjs.map +1 -1
- package/dist/esm/generate.test.native.js +165 -101
- package/dist/esm/generate.test.native.js.map +1 -1
- package/dist/esm/helpers/batchQuery.mjs +17 -8
- package/dist/esm/helpers/batchQuery.mjs.map +1 -1
- package/dist/esm/helpers/batchQuery.native.js +24 -11
- package/dist/esm/helpers/batchQuery.native.js.map +1 -1
- package/dist/esm/helpers/clearZeroClientData.mjs +18 -11
- package/dist/esm/helpers/clearZeroClientData.mjs.map +1 -1
- package/dist/esm/helpers/clearZeroClientData.native.js +30 -23
- package/dist/esm/helpers/clearZeroClientData.native.js.map +1 -1
- package/dist/esm/helpers/createMutators.mjs +53 -17
- package/dist/esm/helpers/createMutators.mjs.map +1 -1
- package/dist/esm/helpers/createMutators.native.js +112 -62
- package/dist/esm/helpers/createMutators.native.js.map +1 -1
- package/dist/esm/helpers/didRunPermissionCheck.mjs +7 -3
- package/dist/esm/helpers/didRunPermissionCheck.mjs.map +1 -1
- package/dist/esm/helpers/didRunPermissionCheck.native.js +9 -9
- package/dist/esm/helpers/didRunPermissionCheck.native.js.map +1 -1
- package/dist/esm/helpers/ensureLoggedIn.mjs +2 -1
- package/dist/esm/helpers/ensureLoggedIn.mjs.map +1 -1
- package/dist/esm/helpers/ensureLoggedIn.native.js +2 -1
- package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -1
- package/dist/esm/helpers/getAuth.mjs +10 -2
- package/dist/esm/helpers/getAuth.mjs.map +1 -1
- package/dist/esm/helpers/getAuth.native.js +10 -2
- package/dist/esm/helpers/getAuth.native.js.map +1 -1
- package/dist/esm/helpers/mutatorContext.mjs +9 -4
- package/dist/esm/helpers/mutatorContext.mjs.map +1 -1
- package/dist/esm/helpers/mutatorContext.native.js +8 -4
- package/dist/esm/helpers/mutatorContext.native.js.map +1 -1
- package/dist/esm/helpers/prettyFormatZeroQuery.mjs +114 -71
- package/dist/esm/helpers/prettyFormatZeroQuery.mjs.map +1 -1
- package/dist/esm/helpers/prettyFormatZeroQuery.native.js +121 -80
- package/dist/esm/helpers/prettyFormatZeroQuery.native.js.map +1 -1
- package/dist/esm/helpers/queryContext.native.js +2 -1
- package/dist/esm/helpers/queryContext.native.js.map +1 -1
- package/dist/esm/helpers/showZeroClientError.mjs +12 -9
- package/dist/esm/helpers/showZeroClientError.mjs.map +1 -1
- package/dist/esm/helpers/showZeroClientError.native.js +25 -23
- package/dist/esm/helpers/showZeroClientError.native.js.map +1 -1
- package/dist/esm/helpers/useZeroDebug.mjs +67 -36
- package/dist/esm/helpers/useZeroDebug.mjs.map +1 -1
- package/dist/esm/helpers/useZeroDebug.native.js +68 -42
- package/dist/esm/helpers/useZeroDebug.native.js.map +1 -1
- package/dist/esm/mutations.mjs +51 -29
- package/dist/esm/mutations.mjs.map +1 -1
- package/dist/esm/mutations.native.js +53 -33
- package/dist/esm/mutations.native.js.map +1 -1
- package/dist/esm/queryRegistry.mjs +1 -0
- package/dist/esm/queryRegistry.mjs.map +1 -1
- package/dist/esm/queryRegistry.native.js +2 -1
- package/dist/esm/queryRegistry.native.js.map +1 -1
- package/dist/esm/resolveQuery.mjs +10 -8
- package/dist/esm/resolveQuery.mjs.map +1 -1
- package/dist/esm/resolveQuery.native.js +20 -18
- package/dist/esm/resolveQuery.native.js.map +1 -1
- package/dist/esm/run.mjs +21 -16
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/run.native.js +20 -16
- package/dist/esm/run.native.js.map +1 -1
- package/dist/esm/serverWhere.mjs +1 -1
- package/dist/esm/serverWhere.mjs.map +1 -1
- package/dist/esm/serverWhere.native.js +1 -1
- package/dist/esm/serverWhere.native.js.map +1 -1
- package/dist/esm/serverWhere.test.mjs +79 -51
- package/dist/esm/serverWhere.test.mjs.map +1 -1
- package/dist/esm/serverWhere.test.native.js +68 -46
- package/dist/esm/serverWhere.test.native.js.map +1 -1
- package/dist/esm/state.mjs +35 -32
- package/dist/esm/state.mjs.map +1 -1
- package/dist/esm/state.native.js +41 -40
- package/dist/esm/state.native.js.map +1 -1
- package/dist/esm/usePermission.test.mjs +53 -40
- package/dist/esm/usePermission.test.mjs.map +1 -1
- package/dist/esm/usePermission.test.native.js +54 -43
- package/dist/esm/usePermission.test.native.js.map +1 -1
- package/dist/esm/vite-plugin.mjs +27 -9
- package/dist/esm/vite-plugin.mjs.map +1 -1
- package/dist/esm/vite-plugin.native.js +47 -35
- package/dist/esm/vite-plugin.native.js.map +1 -1
- package/dist/esm/where.mjs +24 -11
- package/dist/esm/where.mjs.map +1 -1
- package/dist/esm/where.native.js +29 -16
- package/dist/esm/where.native.js.map +1 -1
- package/dist/esm/zeroRunner.mjs +6 -2
- package/dist/esm/zeroRunner.mjs.map +1 -1
- package/dist/esm/zeroRunner.native.js +8 -4
- package/dist/esm/zeroRunner.native.js.map +1 -1
- package/dist/esm/zql.mjs +2 -1
- package/dist/esm/zql.mjs.map +1 -1
- package/dist/esm/zql.native.js.map +1 -1
- package/package.json +3 -3
|
@@ -26,118 +26,146 @@ function createZeroServer({
|
|
|
26
26
|
defaultAllowAdminRole = "all",
|
|
27
27
|
defaultMutateAuthData = {}
|
|
28
28
|
}) {
|
|
29
|
-
setSchema(schema)
|
|
29
|
+
setSchema(schema);
|
|
30
|
+
setEnvironment("server");
|
|
30
31
|
let pool;
|
|
31
|
-
if (externalPool)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
if (externalPool) {
|
|
33
|
+
pool = externalPool;
|
|
34
|
+
} else {
|
|
35
|
+
const dbString = assertString(database, `createZeroServer "database"`);
|
|
36
|
+
const pgPool = new Pool({
|
|
37
|
+
connectionString: dbString,
|
|
38
|
+
// handle self-signed certificates in production
|
|
39
|
+
ssl: dbString.includes("sslmode=require") ? {
|
|
40
|
+
rejectUnauthorized: false
|
|
41
|
+
} : void 0
|
|
42
|
+
});
|
|
40
43
|
pgPool.on("error", error => {
|
|
41
|
-
console.error(
|
|
42
|
-
})
|
|
44
|
+
console.error(`[on-zero] pool error`, error.message);
|
|
45
|
+
});
|
|
46
|
+
pgPool.on("connect", client => {
|
|
43
47
|
client.on("error", error => {
|
|
44
|
-
console.error(
|
|
48
|
+
console.error(`[on-zero] client error`, error.message);
|
|
45
49
|
});
|
|
46
|
-
})
|
|
50
|
+
});
|
|
51
|
+
pool = pgPool;
|
|
47
52
|
}
|
|
48
|
-
const zeroDb = zeroNodePg(schema, pool)
|
|
49
|
-
|
|
53
|
+
const zeroDb = zeroNodePg(schema, pool);
|
|
54
|
+
const permissions = createPermissions({
|
|
55
|
+
environment: "server",
|
|
56
|
+
schema,
|
|
57
|
+
adminRoleMode: defaultAllowAdminRole
|
|
58
|
+
});
|
|
59
|
+
const processor = new PushProcessor(zeroDb);
|
|
60
|
+
const handleMutationRequest = async ({
|
|
61
|
+
authData,
|
|
62
|
+
request,
|
|
63
|
+
skipAsyncTasks
|
|
64
|
+
}) => {
|
|
65
|
+
const asyncTasks = [];
|
|
66
|
+
const mutators = createMutators({
|
|
67
|
+
asyncTasks,
|
|
68
|
+
can: permissions.can,
|
|
69
|
+
createServerActions,
|
|
50
70
|
environment: "server",
|
|
51
|
-
|
|
52
|
-
adminRoleMode: defaultAllowAdminRole
|
|
53
|
-
}),
|
|
54
|
-
processor = new PushProcessor(zeroDb),
|
|
55
|
-
handleMutationRequest = async ({
|
|
71
|
+
models,
|
|
56
72
|
authData,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
73
|
+
validateMutation,
|
|
74
|
+
mutationValidators
|
|
75
|
+
});
|
|
76
|
+
const response = await processor.process(mutators, request);
|
|
77
|
+
if (!skipAsyncTasks && asyncTasks.length) {
|
|
78
|
+
Promise.all(asyncTasks.map(task => runWithAuthScope(authData, task))).catch(err => {
|
|
79
|
+
console.error(`[push] async tasks failed`, err);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
response,
|
|
84
|
+
asyncTasks
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
const handleQueryRequest = async ({
|
|
88
|
+
authData,
|
|
89
|
+
request
|
|
90
|
+
}) => {
|
|
91
|
+
if (!queries) {
|
|
92
|
+
throw new Error("No queries registered with createZeroServer. Pass the syncedQueries registry to createZeroServer via the queries option.");
|
|
93
|
+
}
|
|
94
|
+
const response = await runWithQueryContext({
|
|
95
|
+
authData: authData || {}
|
|
96
|
+
}, () => zeroHandleQueryRequest((name, args) => {
|
|
97
|
+
if (name.startsWith("permission.")) {
|
|
98
|
+
const table = name.slice("permission.".length);
|
|
99
|
+
const {
|
|
100
|
+
objOrId
|
|
101
|
+
} = args;
|
|
102
|
+
const perm = getMutationsPermissions(table);
|
|
103
|
+
if (!perm) {
|
|
104
|
+
throw new Error(`[permission] no permission defined for table: ${table}`);
|
|
105
|
+
}
|
|
106
|
+
setEvaluatingPermission(true);
|
|
107
|
+
try {
|
|
108
|
+
return getZQL()[table].where(eb => {
|
|
109
|
+
return permissions.buildPermissionQuery(authData, eb, perm, objOrId, table);
|
|
110
|
+
}).one();
|
|
111
|
+
} finally {
|
|
112
|
+
setEvaluatingPermission(false);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (validateQuery) {
|
|
116
|
+
validateQuery({
|
|
67
117
|
authData,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
authData,
|
|
81
|
-
request
|
|
82
|
-
}) => {
|
|
83
|
-
if (!queries) throw new Error("No queries registered with createZeroServer. Pass the syncedQueries registry to createZeroServer via the queries option.");
|
|
84
|
-
return {
|
|
85
|
-
response: await runWithQueryContext({
|
|
86
|
-
authData: authData || {}
|
|
87
|
-
}, () => zeroHandleQueryRequest((name, args) => {
|
|
88
|
-
if (name.startsWith("permission.")) {
|
|
89
|
-
const table = name.slice(11),
|
|
90
|
-
{
|
|
91
|
-
objOrId
|
|
92
|
-
} = args,
|
|
93
|
-
perm = getMutationsPermissions(table);
|
|
94
|
-
if (!perm) throw new Error(`[permission] no permission defined for table: ${table}`);
|
|
95
|
-
setEvaluatingPermission(!0);
|
|
96
|
-
try {
|
|
97
|
-
return getZQL()[table].where(eb => permissions.buildPermissionQuery(authData, eb, perm, objOrId, table)).one();
|
|
98
|
-
} finally {
|
|
99
|
-
setEvaluatingPermission(!1);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return validateQuery && validateQuery({
|
|
103
|
-
authData,
|
|
104
|
-
queryName: name,
|
|
105
|
-
params: args
|
|
106
|
-
}), mustGetQuery(queries, name).fn({
|
|
107
|
-
args,
|
|
108
|
-
ctx: authData
|
|
109
|
-
});
|
|
110
|
-
}, schema, request))
|
|
111
|
-
};
|
|
118
|
+
queryName: name,
|
|
119
|
+
params: args
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
const query2 = mustGetQuery(queries, name);
|
|
123
|
+
return query2.fn({
|
|
124
|
+
args,
|
|
125
|
+
ctx: authData
|
|
126
|
+
});
|
|
127
|
+
}, schema, request));
|
|
128
|
+
return {
|
|
129
|
+
response
|
|
112
130
|
};
|
|
131
|
+
};
|
|
113
132
|
async function runMutate(modelName, mutatorName, mutatorArg, options) {
|
|
114
133
|
let authData = options?.authData;
|
|
115
134
|
if (!authData) {
|
|
116
135
|
const scoped = getScopedAuthData();
|
|
117
|
-
|
|
136
|
+
if (scoped) {
|
|
137
|
+
authData = scoped;
|
|
138
|
+
}
|
|
118
139
|
}
|
|
119
|
-
const asyncTasks = []
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
140
|
+
const asyncTasks = [];
|
|
141
|
+
const mutators = createMutators({
|
|
142
|
+
models,
|
|
143
|
+
environment: "server",
|
|
144
|
+
asyncTasks,
|
|
145
|
+
authData: {
|
|
146
|
+
...defaultMutateAuthData,
|
|
147
|
+
...authData
|
|
148
|
+
},
|
|
149
|
+
createServerActions,
|
|
150
|
+
can: permissions.can,
|
|
151
|
+
validateMutation,
|
|
152
|
+
mutationValidators
|
|
153
|
+
});
|
|
154
|
+
const modelMutators = mutators[modelName];
|
|
155
|
+
const mutator = modelMutators[mutatorName];
|
|
156
|
+
await transaction(async tx => {
|
|
134
157
|
await mutator(tx, mutatorArg);
|
|
135
|
-
})
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
158
|
+
});
|
|
159
|
+
if (asyncTasks.length) {
|
|
160
|
+
const resolvedAuth = authData ?? null;
|
|
161
|
+
const promise = Promise.all(asyncTasks.map(t => runWithAuthScope(resolvedAuth, t)));
|
|
162
|
+
if (options?.awaitEffects) {
|
|
163
|
+
await promise;
|
|
164
|
+
} else {
|
|
165
|
+
promise.catch(err => {
|
|
166
|
+
console.error(`[mutate] async tasks failed`, err);
|
|
167
|
+
});
|
|
168
|
+
}
|
|
141
169
|
}
|
|
142
170
|
}
|
|
143
171
|
const mutate = new Proxy({}, {
|
|
@@ -157,18 +185,34 @@ function createZeroServer({
|
|
|
157
185
|
} = mutatorContext();
|
|
158
186
|
return await query2(tx);
|
|
159
187
|
}
|
|
160
|
-
|
|
188
|
+
const output = await zeroDb.transaction(query2, dummyTransactionInput);
|
|
189
|
+
return output;
|
|
161
190
|
} catch (err) {
|
|
162
|
-
|
|
191
|
+
if (err?.name !== "PermissionError") {
|
|
192
|
+
console.error(`Error running transaction(): ${err}`);
|
|
193
|
+
}
|
|
194
|
+
throw err;
|
|
163
195
|
}
|
|
164
196
|
}
|
|
165
197
|
function query(cb, authData) {
|
|
166
|
-
const run = () => transaction(async tx =>
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
198
|
+
const run = () => transaction(async tx => {
|
|
199
|
+
return tx.run(cb(getZQL()));
|
|
200
|
+
});
|
|
201
|
+
if (authData !== void 0) {
|
|
202
|
+
return runWithQueryContext({
|
|
203
|
+
authData
|
|
204
|
+
}, run);
|
|
205
|
+
}
|
|
206
|
+
return run();
|
|
170
207
|
}
|
|
171
|
-
|
|
208
|
+
if (queries) {
|
|
209
|
+
setCustomQueries(queries);
|
|
210
|
+
}
|
|
211
|
+
setRunner(queryObj => {
|
|
212
|
+
return transaction(async tx => {
|
|
213
|
+
return tx.run(queryObj);
|
|
214
|
+
});
|
|
215
|
+
});
|
|
172
216
|
const dummyTransactionInput = {
|
|
173
217
|
clientGroupID: "unused",
|
|
174
218
|
clientID: "unused",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mustGetQuery","PushProcessor","handleQueryRequest","zeroHandleQueryRequest","zeroNodePg","assertString","Pool","createPermissions","createMutators","getScopedAuthData","isInZeroMutation","mutatorContext","runWithAuthScope","runWithQueryContext","getMutationsPermissions","setCustomQueries","getZQL","setEnvironment","setSchema","setEvaluatingPermission","setRunner","createZeroServer","createServerActions","database","pool","externalPool","schema","models","queries","mutations","mutationValidators","validateQuery","validateMutation","defaultAllowAdminRole","defaultMutateAuthData","dbString","pgPool","connectionString","ssl","includes","rejectUnauthorized","on","error","console","message","client","zeroDb","permissions","environment","adminRoleMode","processor","handleMutationRequest","authData","request","skipAsyncTasks","asyncTasks","mutators","can","response","process","length","Promise","all","map","task","catch","err","Error","name","args","startsWith","table","slice","objOrId","perm","where","eb","buildPermissionQuery","one","queryName","params","fn","ctx","runMutate","modelName","mutatorName","mutatorArg","options","scoped","mutator","transaction","tx","resolvedAuth","promise","t","awaitEffects","mutate","Proxy","get","_","_2","arg","
|
|
1
|
+
{"version":3,"names":["mustGetQuery","PushProcessor","handleQueryRequest","zeroHandleQueryRequest","zeroNodePg","assertString","Pool","createPermissions","createMutators","getScopedAuthData","isInZeroMutation","mutatorContext","runWithAuthScope","runWithQueryContext","getMutationsPermissions","setCustomQueries","getZQL","setEnvironment","setSchema","setEvaluatingPermission","setRunner","createZeroServer","createServerActions","database","pool","externalPool","schema","models","queries","mutations","mutationValidators","validateQuery","validateMutation","defaultAllowAdminRole","defaultMutateAuthData","dbString","pgPool","connectionString","ssl","includes","rejectUnauthorized","on","error","console","message","client","zeroDb","permissions","environment","adminRoleMode","processor","handleMutationRequest","authData","request","skipAsyncTasks","asyncTasks","mutators","can","response","process","length","Promise","all","map","task","catch","err","Error","name","args","startsWith","table","slice","objOrId","perm","where","eb","buildPermissionQuery","one","queryName","params","query2","fn","ctx","runMutate","modelName","mutatorName","mutatorArg","options","scoped","modelMutators","mutator","transaction","tx","resolvedAuth","promise","t","awaitEffects","mutate","Proxy","get","_","_2","arg","output","dummyTransactionInput","query","cb","run","queryObj","clientGroupID","clientID","mutationID","upstreamSchema"],"sources":["../../src/createZeroServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -27,133 +27,154 @@ function createZeroServer(param) {
|
|
|
27
27
|
defaultAllowAdminRole = "all",
|
|
28
28
|
defaultMutateAuthData = {}
|
|
29
29
|
} = param;
|
|
30
|
-
setSchema(schema)
|
|
30
|
+
setSchema(schema);
|
|
31
|
+
setEnvironment("server");
|
|
31
32
|
var pool;
|
|
32
|
-
if (externalPool)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
if (externalPool) {
|
|
34
|
+
pool = externalPool;
|
|
35
|
+
} else {
|
|
36
|
+
var dbString = assertString(database, `createZeroServer "database"`);
|
|
37
|
+
var pgPool = new Pool({
|
|
38
|
+
connectionString: dbString,
|
|
39
|
+
// handle self-signed certificates in production
|
|
40
|
+
ssl: dbString.includes("sslmode=require") ? {
|
|
41
|
+
rejectUnauthorized: false
|
|
42
|
+
} : void 0
|
|
43
|
+
});
|
|
41
44
|
pgPool.on("error", function (error) {
|
|
42
|
-
console.error(
|
|
43
|
-
})
|
|
45
|
+
console.error(`[on-zero] pool error`, error.message);
|
|
46
|
+
});
|
|
47
|
+
pgPool.on("connect", function (client) {
|
|
44
48
|
client.on("error", function (error) {
|
|
45
|
-
console.error(
|
|
49
|
+
console.error(`[on-zero] client error`, error.message);
|
|
46
50
|
});
|
|
47
|
-
})
|
|
51
|
+
});
|
|
52
|
+
pool = pgPool;
|
|
48
53
|
}
|
|
49
|
-
var zeroDb = zeroNodePg(schema, pool)
|
|
50
|
-
|
|
54
|
+
var zeroDb = zeroNodePg(schema, pool);
|
|
55
|
+
var permissions = createPermissions({
|
|
56
|
+
environment: "server",
|
|
57
|
+
schema,
|
|
58
|
+
adminRoleMode: defaultAllowAdminRole
|
|
59
|
+
});
|
|
60
|
+
var processor = new PushProcessor(zeroDb);
|
|
61
|
+
var handleMutationRequest = async function (param2) {
|
|
62
|
+
var {
|
|
63
|
+
authData,
|
|
64
|
+
request,
|
|
65
|
+
skipAsyncTasks
|
|
66
|
+
} = param2;
|
|
67
|
+
var asyncTasks = [];
|
|
68
|
+
var mutators = createMutators({
|
|
69
|
+
asyncTasks,
|
|
70
|
+
can: permissions.can,
|
|
71
|
+
createServerActions,
|
|
51
72
|
environment: "server",
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
skipAsyncTasks
|
|
61
|
-
} = param2,
|
|
62
|
-
asyncTasks = [],
|
|
63
|
-
mutators = createMutators({
|
|
64
|
-
asyncTasks,
|
|
65
|
-
can: permissions.can,
|
|
66
|
-
createServerActions,
|
|
67
|
-
environment: "server",
|
|
68
|
-
models,
|
|
69
|
-
authData,
|
|
70
|
-
validateMutation,
|
|
71
|
-
mutationValidators
|
|
72
|
-
}),
|
|
73
|
-
response = await processor.process(mutators, request);
|
|
74
|
-
return !skipAsyncTasks && asyncTasks.length && Promise.all(asyncTasks.map(function (task) {
|
|
73
|
+
models,
|
|
74
|
+
authData,
|
|
75
|
+
validateMutation,
|
|
76
|
+
mutationValidators
|
|
77
|
+
});
|
|
78
|
+
var response = await processor.process(mutators, request);
|
|
79
|
+
if (!skipAsyncTasks && asyncTasks.length) {
|
|
80
|
+
Promise.all(asyncTasks.map(function (task) {
|
|
75
81
|
return runWithAuthScope(authData, task);
|
|
76
82
|
})).catch(function (err) {
|
|
77
|
-
console.error(
|
|
78
|
-
})
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
83
|
+
console.error(`[push] async tasks failed`, err);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
response,
|
|
88
|
+
asyncTasks
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
var handleQueryRequest = async function (param2) {
|
|
92
|
+
var {
|
|
93
|
+
authData,
|
|
94
|
+
request
|
|
95
|
+
} = param2;
|
|
96
|
+
if (!queries) {
|
|
97
|
+
throw new Error("No queries registered with createZeroServer. Pass the syncedQueries registry to createZeroServer via the queries option.");
|
|
98
|
+
}
|
|
99
|
+
var response = await runWithQueryContext({
|
|
100
|
+
authData: authData || {}
|
|
101
|
+
}, function () {
|
|
102
|
+
return zeroHandleQueryRequest(function (name, args) {
|
|
103
|
+
if (name.startsWith("permission.")) {
|
|
104
|
+
var table = name.slice("permission.".length);
|
|
105
|
+
var {
|
|
106
|
+
objOrId
|
|
107
|
+
} = args;
|
|
108
|
+
var perm = getMutationsPermissions(table);
|
|
109
|
+
if (!perm) {
|
|
110
|
+
throw new Error(`[permission] no permission defined for table: ${table}`);
|
|
111
|
+
}
|
|
112
|
+
setEvaluatingPermission(true);
|
|
113
|
+
try {
|
|
114
|
+
return getZQL()[table].where(function (eb) {
|
|
115
|
+
return permissions.buildPermissionQuery(authData, eb, perm, objOrId, table);
|
|
116
|
+
}).one();
|
|
117
|
+
} finally {
|
|
118
|
+
setEvaluatingPermission(false);
|
|
108
119
|
}
|
|
109
|
-
|
|
120
|
+
}
|
|
121
|
+
if (validateQuery) {
|
|
122
|
+
validateQuery({
|
|
110
123
|
authData,
|
|
111
124
|
queryName: name,
|
|
112
125
|
params: args
|
|
113
126
|
});
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
127
|
+
}
|
|
128
|
+
var _$query = mustGetQuery(queries, name);
|
|
129
|
+
return _$query.fn({
|
|
130
|
+
args,
|
|
131
|
+
ctx: authData
|
|
132
|
+
});
|
|
133
|
+
}, schema, request);
|
|
134
|
+
});
|
|
135
|
+
return {
|
|
136
|
+
response
|
|
124
137
|
};
|
|
138
|
+
};
|
|
125
139
|
async function runMutate(modelName, mutatorName, mutatorArg, options) {
|
|
126
|
-
var authData = options
|
|
140
|
+
var authData = options === null || options === void 0 ? void 0 : options.authData;
|
|
127
141
|
if (!authData) {
|
|
128
142
|
var scoped = getScopedAuthData();
|
|
129
|
-
|
|
143
|
+
if (scoped) {
|
|
144
|
+
authData = scoped;
|
|
145
|
+
}
|
|
130
146
|
}
|
|
131
|
-
var asyncTasks = []
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
147
|
+
var asyncTasks = [];
|
|
148
|
+
var mutators = createMutators({
|
|
149
|
+
models,
|
|
150
|
+
environment: "server",
|
|
151
|
+
asyncTasks,
|
|
152
|
+
authData: {
|
|
153
|
+
...defaultMutateAuthData,
|
|
154
|
+
...authData
|
|
155
|
+
},
|
|
156
|
+
createServerActions,
|
|
157
|
+
can: permissions.can,
|
|
158
|
+
validateMutation,
|
|
159
|
+
mutationValidators
|
|
160
|
+
});
|
|
161
|
+
var modelMutators = mutators[modelName];
|
|
162
|
+
var mutator = modelMutators[mutatorName];
|
|
163
|
+
await transaction(async function (tx) {
|
|
148
164
|
await mutator(tx, mutatorArg);
|
|
149
|
-
})
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
165
|
+
});
|
|
166
|
+
if (asyncTasks.length) {
|
|
167
|
+
var resolvedAuth = authData !== null && authData !== void 0 ? authData : null;
|
|
168
|
+
var promise = Promise.all(asyncTasks.map(function (t) {
|
|
169
|
+
return runWithAuthScope(resolvedAuth, t);
|
|
170
|
+
}));
|
|
171
|
+
if (options === null || options === void 0 ? void 0 : options.awaitEffects) {
|
|
172
|
+
await promise;
|
|
173
|
+
} else {
|
|
174
|
+
promise.catch(function (err) {
|
|
175
|
+
console.error(`[mutate] async tasks failed`, err);
|
|
176
|
+
});
|
|
177
|
+
}
|
|
157
178
|
}
|
|
158
179
|
}
|
|
159
180
|
var mutate = new Proxy({}, {
|
|
@@ -178,7 +199,10 @@ function createZeroServer(param) {
|
|
|
178
199
|
var output = await zeroDb.transaction(query2, dummyTransactionInput);
|
|
179
200
|
return output;
|
|
180
201
|
} catch (err) {
|
|
181
|
-
|
|
202
|
+
if ((err === null || err === void 0 ? void 0 : err.name) !== "PermissionError") {
|
|
203
|
+
console.error(`Error running transaction(): ${err}`);
|
|
204
|
+
}
|
|
205
|
+
throw err;
|
|
182
206
|
}
|
|
183
207
|
}
|
|
184
208
|
function query(cb, authData) {
|
|
@@ -187,11 +211,17 @@ function createZeroServer(param) {
|
|
|
187
211
|
return tx.run(cb(getZQL()));
|
|
188
212
|
});
|
|
189
213
|
};
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
214
|
+
if (authData !== void 0) {
|
|
215
|
+
return runWithQueryContext({
|
|
216
|
+
authData
|
|
217
|
+
}, run);
|
|
218
|
+
}
|
|
219
|
+
return run();
|
|
220
|
+
}
|
|
221
|
+
if (queries) {
|
|
222
|
+
setCustomQueries(queries);
|
|
193
223
|
}
|
|
194
|
-
|
|
224
|
+
setRunner(function (queryObj) {
|
|
195
225
|
return transaction(async function (tx) {
|
|
196
226
|
return tx.run(queryObj);
|
|
197
227
|
});
|