on-zero 0.6.14 → 0.6.15
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/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 +279 -0
- package/dist/cjs/createZeroDirectServer.native.js +292 -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 +30 -3
- package/dist/cjs/createZeroSQLiteServer.test.native.js +31 -3
- package/dist/cjs/createZeroSQLiteServer.test.native.js.map +1 -1
- package/dist/cjs/createZeroServerCore.cjs +20 -205
- package/dist/cjs/createZeroServerCore.native.js +19 -213
- package/dist/cjs/createZeroServerCore.native.js.map +1 -1
- package/dist/cjs/generate.cjs +10 -3
- package/dist/cjs/generate.native.js +10 -3
- package/dist/cjs/generate.native.js.map +1 -1
- package/dist/cjs/generate.test.cjs +39 -0
- package/dist/cjs/generate.test.native.js +39 -0
- package/dist/cjs/generate.test.native.js.map +1 -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 +16 -9
- package/dist/cjs/syncHost.native.js +21 -12
- package/dist/cjs/syncHost.native.js.map +1 -1
- package/dist/cjs/syncHost.test.cjs +13 -2
- package/dist/cjs/syncHost.test.native.js +14 -2
- package/dist/cjs/syncHost.test.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 +251 -0
- package/dist/esm/createZeroDirectServer.mjs.map +1 -0
- package/dist/esm/createZeroDirectServer.native.js +261 -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 +30 -3
- package/dist/esm/createZeroSQLiteServer.test.mjs.map +1 -1
- package/dist/esm/createZeroSQLiteServer.test.native.js +31 -3
- package/dist/esm/createZeroSQLiteServer.test.native.js.map +1 -1
- package/dist/esm/createZeroServerCore.mjs +18 -202
- package/dist/esm/createZeroServerCore.mjs.map +1 -1
- package/dist/esm/createZeroServerCore.native.js +18 -211
- package/dist/esm/createZeroServerCore.native.js.map +1 -1
- package/dist/esm/generate.mjs +10 -3
- package/dist/esm/generate.mjs.map +1 -1
- package/dist/esm/generate.native.js +10 -3
- package/dist/esm/generate.native.js.map +1 -1
- package/dist/esm/generate.test.mjs +39 -1
- package/dist/esm/generate.test.mjs.map +1 -1
- package/dist/esm/generate.test.native.js +39 -1
- package/dist/esm/generate.test.native.js.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 +14 -7
- package/dist/esm/syncHost.mjs.map +1 -1
- package/dist/esm/syncHost.native.js +19 -10
- package/dist/esm/syncHost.native.js.map +1 -1
- package/dist/esm/syncHost.test.mjs +13 -2
- package/dist/esm/syncHost.test.mjs.map +1 -1
- package/dist/esm/syncHost.test.native.js +14 -2
- package/dist/esm/syncHost.test.native.js.map +1 -1
- package/package.json +5 -6
- package/src/createSchemaFromDrizzle.ts +2 -2
- package/src/createZeroDirectServer.ts +427 -0
- package/src/createZeroSQLiteServer.test.ts +20 -5
- package/src/createZeroSQLiteServer.ts +14 -481
- package/src/createZeroServerCore.ts +32 -337
- package/src/generate.test.ts +57 -1
- package/src/generate.ts +23 -3
- package/src/sqliteRuntime.ts +512 -0
- package/src/syncHost.test.ts +10 -3
- package/src/syncHost.ts +49 -12
- package/test-fixtures/server-return-types.ts +8 -1
- 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.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
|
@@ -22,11 +22,11 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
|
22
22
|
}), mod);
|
|
23
23
|
var createSchemaFromDrizzle_exports = {};
|
|
24
24
|
__export(createSchemaFromDrizzle_exports, {
|
|
25
|
-
createSchemaFromDrizzle: () =>
|
|
26
|
-
createZeroTableBuilder: () =>
|
|
25
|
+
createSchemaFromDrizzle: () => import_drizzle_zero_sqlite.drizzleZeroConfig,
|
|
26
|
+
createZeroTableBuilder: () => import_drizzle_zero_sqlite2.createZeroTableBuilder,
|
|
27
27
|
generateDrizzleSchemaFile: () => import_generate.generateDrizzleSchemaFile
|
|
28
28
|
});
|
|
29
29
|
module.exports = __toCommonJS(createSchemaFromDrizzle_exports);
|
|
30
|
-
var
|
|
31
|
-
var
|
|
30
|
+
var import_drizzle_zero_sqlite = require("drizzle-zero-sqlite");
|
|
31
|
+
var import_drizzle_zero_sqlite2 = require("drizzle-zero-sqlite");
|
|
32
32
|
var import_generate = require("./generate.cjs");
|
|
@@ -24,12 +24,12 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
|
24
24
|
}), mod);
|
|
25
25
|
var createSchemaFromDrizzle_exports = {};
|
|
26
26
|
__export(createSchemaFromDrizzle_exports, {
|
|
27
|
-
createSchemaFromDrizzle: () =>
|
|
28
|
-
createZeroTableBuilder: () =>
|
|
27
|
+
createSchemaFromDrizzle: () => import_drizzle_zero_sqlite.drizzleZeroConfig,
|
|
28
|
+
createZeroTableBuilder: () => import_drizzle_zero_sqlite2.createZeroTableBuilder,
|
|
29
29
|
generateDrizzleSchemaFile: () => import_generate.generateDrizzleSchemaFile
|
|
30
30
|
});
|
|
31
31
|
module.exports = __toCommonJS(createSchemaFromDrizzle_exports);
|
|
32
|
-
var
|
|
33
|
-
var
|
|
32
|
+
var import_drizzle_zero_sqlite = require("drizzle-zero-sqlite");
|
|
33
|
+
var import_drizzle_zero_sqlite2 = require("drizzle-zero-sqlite");
|
|
34
34
|
var import_generate = require("./generate.native.js");
|
|
35
35
|
//# sourceMappingURL=createSchemaFromDrizzle.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createSchemaFromDrizzle_exports","__export","createSchemaFromDrizzle","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createSchemaFromDrizzle_exports","__export","createSchemaFromDrizzle","import_drizzle_zero_sqlite","drizzleZeroConfig","createZeroTableBuilder","import_drizzle_zero_sqlite2","generateDrizzleSchemaFile","import_generate","module","exports","require"],"sources":["../../src/createSchemaFromDrizzle.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,+BAAA;AAAAC,QAAA,CAAAD,+BAAA;EAAAE,uBAAA,EAAAA,CAAA,KAAAC,0BAAA,CAAAC,iBAAA;EAAAC,sBAAA,EAAAA,CAAA,KAAAC,2BAAA,CAAAD,sBAAA;EAAAE,yBAAA,EAAAA,CAAA,KAAAC,eAAA,CAAAD;AAAA;AAAAE,MAAA,CAAAC,OAAA,GAAAf,YAAA,CAAAK,+BAA6D;AAC7D,IAAAG,0BAAA,GAAAQ,OAAuC;AACvC,IAAAL,2BAA0C,GAAAK,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
+
get: () => from[key],
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
+
value: true
|
|
22
|
+
}), mod);
|
|
23
|
+
var createZeroDirectServer_exports = {};
|
|
24
|
+
__export(createZeroDirectServer_exports, {
|
|
25
|
+
createAsyncTaskCollector: () => createAsyncTaskCollector,
|
|
26
|
+
createZeroDirectServer: () => createZeroDirectServer,
|
|
27
|
+
createZeroDirectServerRuntime: () => createZeroDirectServerRuntime,
|
|
28
|
+
resolveServerQuery: () => resolveServerQuery
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(createZeroDirectServer_exports);
|
|
31
|
+
var import_zero = require("@rocicorp/zero");
|
|
32
|
+
var import_createPermissions = require("./createPermissions.cjs");
|
|
33
|
+
var import_createMutators = require("./helpers/createMutators.cjs");
|
|
34
|
+
var import_mutatorContext = require("./helpers/mutatorContext.cjs");
|
|
35
|
+
var import_queryContext = require("./helpers/queryContext.cjs");
|
|
36
|
+
var import_modelRegistry = require("./modelRegistry.cjs");
|
|
37
|
+
var import_run = require("./run.cjs");
|
|
38
|
+
var import_state = require("./state.cjs");
|
|
39
|
+
var import_where = require("./where.cjs");
|
|
40
|
+
var import_zeroRunner = require("./zeroRunner.cjs");
|
|
41
|
+
function resolveServerQuery({
|
|
42
|
+
authData,
|
|
43
|
+
name,
|
|
44
|
+
args,
|
|
45
|
+
queries,
|
|
46
|
+
permissions,
|
|
47
|
+
validateQuery
|
|
48
|
+
}) {
|
|
49
|
+
if (name.startsWith("permission.")) {
|
|
50
|
+
const table = name.slice("permission.".length);
|
|
51
|
+
const {
|
|
52
|
+
objOrId
|
|
53
|
+
} = args;
|
|
54
|
+
const permission = (0, import_modelRegistry.getMutationsPermissions)(table);
|
|
55
|
+
if (!permission) {
|
|
56
|
+
throw new Error(`[permission] no permission defined for table: ${table}`);
|
|
57
|
+
}
|
|
58
|
+
(0, import_where.setEvaluatingPermission)(true);
|
|
59
|
+
try {
|
|
60
|
+
return (0, import_state.getZQL)()[table].where(eb => {
|
|
61
|
+
return permissions.buildPermissionQuery(authData, eb, permission, objOrId, table);
|
|
62
|
+
}).one();
|
|
63
|
+
} finally {
|
|
64
|
+
(0, import_where.setEvaluatingPermission)(false);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (validateQuery) {
|
|
68
|
+
validateQuery({
|
|
69
|
+
authData,
|
|
70
|
+
queryName: name,
|
|
71
|
+
params: args
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
const query = (0, import_zero.mustGetQuery)(queries, name);
|
|
75
|
+
return query.fn({
|
|
76
|
+
args,
|
|
77
|
+
ctx: authData
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function createAsyncTaskCollector() {
|
|
81
|
+
const committed = [];
|
|
82
|
+
let attempt;
|
|
83
|
+
let completedAttempt;
|
|
84
|
+
const current = () => attempt ?? committed;
|
|
85
|
+
const queue = new Proxy([], {
|
|
86
|
+
deleteProperty(_target, property) {
|
|
87
|
+
return Reflect.deleteProperty(current(), property);
|
|
88
|
+
},
|
|
89
|
+
get(_target, property) {
|
|
90
|
+
const target = current();
|
|
91
|
+
const value = Reflect.get(target, property, target);
|
|
92
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
93
|
+
},
|
|
94
|
+
getOwnPropertyDescriptor(_target, property) {
|
|
95
|
+
return Reflect.getOwnPropertyDescriptor(current(), property);
|
|
96
|
+
},
|
|
97
|
+
has(_target, property) {
|
|
98
|
+
return Reflect.has(current(), property);
|
|
99
|
+
},
|
|
100
|
+
ownKeys() {
|
|
101
|
+
return Reflect.ownKeys(current());
|
|
102
|
+
},
|
|
103
|
+
set(_target, property, value) {
|
|
104
|
+
return Reflect.set(current(), property, value);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
const lifecycle = {
|
|
108
|
+
beginAttempt() {
|
|
109
|
+
attempt = [];
|
|
110
|
+
completedAttempt = void 0;
|
|
111
|
+
},
|
|
112
|
+
completeAttempt() {
|
|
113
|
+
completedAttempt = attempt;
|
|
114
|
+
attempt = void 0;
|
|
115
|
+
},
|
|
116
|
+
rollbackAttempt() {
|
|
117
|
+
attempt = void 0;
|
|
118
|
+
completedAttempt = void 0;
|
|
119
|
+
},
|
|
120
|
+
commitTransaction() {
|
|
121
|
+
if (completedAttempt) committed.push(...completedAttempt);
|
|
122
|
+
completedAttempt = void 0;
|
|
123
|
+
},
|
|
124
|
+
rollbackTransaction() {
|
|
125
|
+
attempt = void 0;
|
|
126
|
+
completedAttempt = void 0;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
return {
|
|
130
|
+
committed,
|
|
131
|
+
lifecycle,
|
|
132
|
+
queue
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function createZeroDirectServerRuntime({
|
|
136
|
+
createDatabase,
|
|
137
|
+
createServerActions,
|
|
138
|
+
defaultAllowAdminRole = "all",
|
|
139
|
+
defaultMutateAuthData = {},
|
|
140
|
+
models,
|
|
141
|
+
mutations: mutationValidators,
|
|
142
|
+
queries,
|
|
143
|
+
schema,
|
|
144
|
+
validateMutation,
|
|
145
|
+
validateQuery
|
|
146
|
+
}) {
|
|
147
|
+
(0, import_state.setSchema)(schema);
|
|
148
|
+
(0, import_state.setEnvironment)("server");
|
|
149
|
+
const permissions = (0, import_createPermissions.createPermissions)({
|
|
150
|
+
environment: "server",
|
|
151
|
+
schema,
|
|
152
|
+
adminRoleMode: defaultAllowAdminRole
|
|
153
|
+
});
|
|
154
|
+
async function runTransaction(database, query2) {
|
|
155
|
+
try {
|
|
156
|
+
if ((0, import_mutatorContext.isInZeroMutation)()) {
|
|
157
|
+
const {
|
|
158
|
+
tx
|
|
159
|
+
} = (0, import_mutatorContext.mutatorContext)();
|
|
160
|
+
return await query2(tx);
|
|
161
|
+
}
|
|
162
|
+
return await database.transaction(query2, dummyTransactionInput);
|
|
163
|
+
} catch (err) {
|
|
164
|
+
if (err?.name !== "PermissionError") {
|
|
165
|
+
console.error(`Error running transaction(): ${err}`);
|
|
166
|
+
}
|
|
167
|
+
throw err;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async function transaction(query2) {
|
|
171
|
+
return runTransaction(createDatabase(), query2);
|
|
172
|
+
}
|
|
173
|
+
async function runMutate(modelName, mutatorName, mutatorArg, options) {
|
|
174
|
+
let authData = options?.authData;
|
|
175
|
+
if (!authData) {
|
|
176
|
+
const scoped = (0, import_mutatorContext.getScopedAuthData)();
|
|
177
|
+
if (scoped) authData = scoped;
|
|
178
|
+
}
|
|
179
|
+
const tasks = createAsyncTaskCollector();
|
|
180
|
+
const mutators = (0, import_createMutators.createMutators)({
|
|
181
|
+
models,
|
|
182
|
+
environment: "server",
|
|
183
|
+
asyncTasks: tasks.queue,
|
|
184
|
+
authData: {
|
|
185
|
+
...defaultMutateAuthData,
|
|
186
|
+
...authData
|
|
187
|
+
},
|
|
188
|
+
createServerActions,
|
|
189
|
+
can: permissions.can,
|
|
190
|
+
validateMutation,
|
|
191
|
+
mutationValidators
|
|
192
|
+
});
|
|
193
|
+
const modelMutators = mutators[modelName];
|
|
194
|
+
const mutator = modelMutators[mutatorName];
|
|
195
|
+
await runTransaction(createDatabaseWithLifecycle(createDatabase(), tasks.lifecycle), async tx => {
|
|
196
|
+
await mutator(tx, mutatorArg);
|
|
197
|
+
});
|
|
198
|
+
if (tasks.committed.length) {
|
|
199
|
+
const resolvedAuth = authData ?? null;
|
|
200
|
+
const promise = Promise.all(tasks.committed.map(task => (0, import_mutatorContext.runWithAuthScope)(resolvedAuth, task)));
|
|
201
|
+
if (options?.awaitEffects) {
|
|
202
|
+
await promise;
|
|
203
|
+
} else {
|
|
204
|
+
promise.catch(err => {
|
|
205
|
+
console.error("[mutate] async tasks failed", err);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const mutate = new Proxy({}, {
|
|
211
|
+
get(_, modelName) {
|
|
212
|
+
return new Proxy({}, {
|
|
213
|
+
get(_2, mutatorName) {
|
|
214
|
+
return (arg, options) => runMutate(modelName, mutatorName, arg, options);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
function query(cb, authData) {
|
|
220
|
+
const run = () => transaction(async tx => {
|
|
221
|
+
return tx.run(cb((0, import_state.getZQL)()));
|
|
222
|
+
});
|
|
223
|
+
if (authData !== void 0) {
|
|
224
|
+
return (0, import_queryContext.runWithQueryContext)({
|
|
225
|
+
authData
|
|
226
|
+
}, run);
|
|
227
|
+
}
|
|
228
|
+
return run();
|
|
229
|
+
}
|
|
230
|
+
if (queries) {
|
|
231
|
+
(0, import_run.setCustomQueries)(queries);
|
|
232
|
+
}
|
|
233
|
+
(0, import_zeroRunner.setRunner)(queryObj => {
|
|
234
|
+
return transaction(async tx => {
|
|
235
|
+
return tx.run(queryObj);
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
return {
|
|
239
|
+
permissions,
|
|
240
|
+
server: {
|
|
241
|
+
transaction,
|
|
242
|
+
mutate,
|
|
243
|
+
query
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
function createZeroDirectServer(options) {
|
|
248
|
+
return createZeroDirectServerRuntime(options).server;
|
|
249
|
+
}
|
|
250
|
+
function createDatabaseWithLifecycle(database, lifecycle) {
|
|
251
|
+
return {
|
|
252
|
+
async transaction(callback, input) {
|
|
253
|
+
try {
|
|
254
|
+
const value = await database.transaction(async (tx, hooks) => {
|
|
255
|
+
lifecycle.beginAttempt();
|
|
256
|
+
try {
|
|
257
|
+
const result = await callback(tx, hooks);
|
|
258
|
+
lifecycle.completeAttempt();
|
|
259
|
+
return result;
|
|
260
|
+
} catch (error) {
|
|
261
|
+
lifecycle.rollbackAttempt();
|
|
262
|
+
throw error;
|
|
263
|
+
}
|
|
264
|
+
}, input);
|
|
265
|
+
lifecycle.commitTransaction();
|
|
266
|
+
return value;
|
|
267
|
+
} catch (error) {
|
|
268
|
+
lifecycle.rollbackTransaction();
|
|
269
|
+
throw error;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
const dummyTransactionInput = {
|
|
275
|
+
clientGroupID: "unused",
|
|
276
|
+
clientID: "unused",
|
|
277
|
+
mutationID: 42,
|
|
278
|
+
upstreamSchema: "unused"
|
|
279
|
+
};
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
}), mod);
|
|
25
|
+
var createZeroDirectServer_exports = {};
|
|
26
|
+
__export(createZeroDirectServer_exports, {
|
|
27
|
+
createAsyncTaskCollector: () => createAsyncTaskCollector,
|
|
28
|
+
createZeroDirectServer: () => createZeroDirectServer,
|
|
29
|
+
createZeroDirectServerRuntime: () => createZeroDirectServerRuntime,
|
|
30
|
+
resolveServerQuery: () => resolveServerQuery
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(createZeroDirectServer_exports);
|
|
33
|
+
var import_zero = require("@rocicorp/zero");
|
|
34
|
+
var import_createPermissions = require("./createPermissions.native.js");
|
|
35
|
+
var import_createMutators = require("./helpers/createMutators.native.js");
|
|
36
|
+
var import_mutatorContext = require("./helpers/mutatorContext.native.js");
|
|
37
|
+
var import_queryContext = require("./helpers/queryContext.native.js");
|
|
38
|
+
var import_modelRegistry = require("./modelRegistry.native.js");
|
|
39
|
+
var import_run = require("./run.native.js");
|
|
40
|
+
var import_state = require("./state.native.js");
|
|
41
|
+
var import_where = require("./where.native.js");
|
|
42
|
+
var import_zeroRunner = require("./zeroRunner.native.js");
|
|
43
|
+
function resolveServerQuery(param) {
|
|
44
|
+
var {
|
|
45
|
+
authData,
|
|
46
|
+
name,
|
|
47
|
+
args,
|
|
48
|
+
queries,
|
|
49
|
+
permissions,
|
|
50
|
+
validateQuery
|
|
51
|
+
} = param;
|
|
52
|
+
if (name.startsWith("permission.")) {
|
|
53
|
+
var table = name.slice("permission.".length);
|
|
54
|
+
var {
|
|
55
|
+
objOrId
|
|
56
|
+
} = args;
|
|
57
|
+
var permission = (0, import_modelRegistry.getMutationsPermissions)(table);
|
|
58
|
+
if (!permission) {
|
|
59
|
+
throw new Error(`[permission] no permission defined for table: ${table}`);
|
|
60
|
+
}
|
|
61
|
+
(0, import_where.setEvaluatingPermission)(true);
|
|
62
|
+
try {
|
|
63
|
+
return (0, import_state.getZQL)()[table].where(function (eb) {
|
|
64
|
+
return permissions.buildPermissionQuery(authData, eb, permission, objOrId, table);
|
|
65
|
+
}).one();
|
|
66
|
+
} finally {
|
|
67
|
+
(0, import_where.setEvaluatingPermission)(false);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (validateQuery) {
|
|
71
|
+
validateQuery({
|
|
72
|
+
authData,
|
|
73
|
+
queryName: name,
|
|
74
|
+
params: args
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
var query = (0, import_zero.mustGetQuery)(queries, name);
|
|
78
|
+
return query.fn({
|
|
79
|
+
args,
|
|
80
|
+
ctx: authData
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function createAsyncTaskCollector() {
|
|
84
|
+
var committed = [];
|
|
85
|
+
var attempt;
|
|
86
|
+
var completedAttempt;
|
|
87
|
+
var current = function () {
|
|
88
|
+
return attempt !== null && attempt !== void 0 ? attempt : committed;
|
|
89
|
+
};
|
|
90
|
+
var queue = new Proxy([], {
|
|
91
|
+
deleteProperty(_target, property) {
|
|
92
|
+
return Reflect.deleteProperty(current(), property);
|
|
93
|
+
},
|
|
94
|
+
get(_target, property) {
|
|
95
|
+
var target = current();
|
|
96
|
+
var value = Reflect.get(target, property, target);
|
|
97
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
98
|
+
},
|
|
99
|
+
getOwnPropertyDescriptor(_target, property) {
|
|
100
|
+
return Reflect.getOwnPropertyDescriptor(current(), property);
|
|
101
|
+
},
|
|
102
|
+
has(_target, property) {
|
|
103
|
+
return Reflect.has(current(), property);
|
|
104
|
+
},
|
|
105
|
+
ownKeys() {
|
|
106
|
+
return Reflect.ownKeys(current());
|
|
107
|
+
},
|
|
108
|
+
set(_target, property, value) {
|
|
109
|
+
return Reflect.set(current(), property, value);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
var lifecycle = {
|
|
113
|
+
beginAttempt() {
|
|
114
|
+
attempt = [];
|
|
115
|
+
completedAttempt = void 0;
|
|
116
|
+
},
|
|
117
|
+
completeAttempt() {
|
|
118
|
+
completedAttempt = attempt;
|
|
119
|
+
attempt = void 0;
|
|
120
|
+
},
|
|
121
|
+
rollbackAttempt() {
|
|
122
|
+
attempt = void 0;
|
|
123
|
+
completedAttempt = void 0;
|
|
124
|
+
},
|
|
125
|
+
commitTransaction() {
|
|
126
|
+
if (completedAttempt) committed.push(...completedAttempt);
|
|
127
|
+
completedAttempt = void 0;
|
|
128
|
+
},
|
|
129
|
+
rollbackTransaction() {
|
|
130
|
+
attempt = void 0;
|
|
131
|
+
completedAttempt = void 0;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
return {
|
|
135
|
+
committed,
|
|
136
|
+
lifecycle,
|
|
137
|
+
queue
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function createZeroDirectServerRuntime(param) {
|
|
141
|
+
var {
|
|
142
|
+
createDatabase,
|
|
143
|
+
createServerActions,
|
|
144
|
+
defaultAllowAdminRole = "all",
|
|
145
|
+
defaultMutateAuthData = {},
|
|
146
|
+
models,
|
|
147
|
+
mutations: mutationValidators,
|
|
148
|
+
queries,
|
|
149
|
+
schema,
|
|
150
|
+
validateMutation,
|
|
151
|
+
validateQuery
|
|
152
|
+
} = param;
|
|
153
|
+
(0, import_state.setSchema)(schema);
|
|
154
|
+
(0, import_state.setEnvironment)("server");
|
|
155
|
+
var permissions = (0, import_createPermissions.createPermissions)({
|
|
156
|
+
environment: "server",
|
|
157
|
+
schema,
|
|
158
|
+
adminRoleMode: defaultAllowAdminRole
|
|
159
|
+
});
|
|
160
|
+
async function runTransaction(database, query2) {
|
|
161
|
+
try {
|
|
162
|
+
if ((0, import_mutatorContext.isInZeroMutation)()) {
|
|
163
|
+
var {
|
|
164
|
+
tx
|
|
165
|
+
} = (0, import_mutatorContext.mutatorContext)();
|
|
166
|
+
return await query2(tx);
|
|
167
|
+
}
|
|
168
|
+
return await database.transaction(query2, dummyTransactionInput);
|
|
169
|
+
} catch (err) {
|
|
170
|
+
if ((err === null || err === void 0 ? void 0 : err.name) !== "PermissionError") {
|
|
171
|
+
console.error(`Error running transaction(): ${err}`);
|
|
172
|
+
}
|
|
173
|
+
throw err;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
async function transaction(query2) {
|
|
177
|
+
return runTransaction(createDatabase(), query2);
|
|
178
|
+
}
|
|
179
|
+
async function runMutate(modelName, mutatorName, mutatorArg, options) {
|
|
180
|
+
var authData = options === null || options === void 0 ? void 0 : options.authData;
|
|
181
|
+
if (!authData) {
|
|
182
|
+
var scoped = (0, import_mutatorContext.getScopedAuthData)();
|
|
183
|
+
if (scoped) authData = scoped;
|
|
184
|
+
}
|
|
185
|
+
var tasks = createAsyncTaskCollector();
|
|
186
|
+
var mutators = (0, import_createMutators.createMutators)({
|
|
187
|
+
models,
|
|
188
|
+
environment: "server",
|
|
189
|
+
asyncTasks: tasks.queue,
|
|
190
|
+
authData: {
|
|
191
|
+
...defaultMutateAuthData,
|
|
192
|
+
...authData
|
|
193
|
+
},
|
|
194
|
+
createServerActions,
|
|
195
|
+
can: permissions.can,
|
|
196
|
+
validateMutation,
|
|
197
|
+
mutationValidators
|
|
198
|
+
});
|
|
199
|
+
var modelMutators = mutators[modelName];
|
|
200
|
+
var mutator = modelMutators[mutatorName];
|
|
201
|
+
await runTransaction(createDatabaseWithLifecycle(createDatabase(), tasks.lifecycle), async function (tx) {
|
|
202
|
+
await mutator(tx, mutatorArg);
|
|
203
|
+
});
|
|
204
|
+
if (tasks.committed.length) {
|
|
205
|
+
var resolvedAuth = authData !== null && authData !== void 0 ? authData : null;
|
|
206
|
+
var promise = Promise.all(tasks.committed.map(function (task) {
|
|
207
|
+
return (0, import_mutatorContext.runWithAuthScope)(resolvedAuth, task);
|
|
208
|
+
}));
|
|
209
|
+
if (options === null || options === void 0 ? void 0 : options.awaitEffects) {
|
|
210
|
+
await promise;
|
|
211
|
+
} else {
|
|
212
|
+
promise.catch(function (err) {
|
|
213
|
+
console.error("[mutate] async tasks failed", err);
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
var mutate = new Proxy({}, {
|
|
219
|
+
get(_, modelName) {
|
|
220
|
+
return new Proxy({}, {
|
|
221
|
+
get(_2, mutatorName) {
|
|
222
|
+
return function (arg, options) {
|
|
223
|
+
return runMutate(modelName, mutatorName, arg, options);
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
function query(cb, authData) {
|
|
230
|
+
var run = function () {
|
|
231
|
+
return transaction(async function (tx) {
|
|
232
|
+
return tx.run(cb((0, import_state.getZQL)()));
|
|
233
|
+
});
|
|
234
|
+
};
|
|
235
|
+
if (authData !== void 0) {
|
|
236
|
+
return (0, import_queryContext.runWithQueryContext)({
|
|
237
|
+
authData
|
|
238
|
+
}, run);
|
|
239
|
+
}
|
|
240
|
+
return run();
|
|
241
|
+
}
|
|
242
|
+
if (queries) {
|
|
243
|
+
(0, import_run.setCustomQueries)(queries);
|
|
244
|
+
}
|
|
245
|
+
(0, import_zeroRunner.setRunner)(function (queryObj) {
|
|
246
|
+
return transaction(async function (tx) {
|
|
247
|
+
return tx.run(queryObj);
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
return {
|
|
251
|
+
permissions,
|
|
252
|
+
server: {
|
|
253
|
+
transaction,
|
|
254
|
+
mutate,
|
|
255
|
+
query
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
function createZeroDirectServer(options) {
|
|
260
|
+
return createZeroDirectServerRuntime(options).server;
|
|
261
|
+
}
|
|
262
|
+
function createDatabaseWithLifecycle(database, lifecycle) {
|
|
263
|
+
return {
|
|
264
|
+
async transaction(callback, input) {
|
|
265
|
+
try {
|
|
266
|
+
var value = await database.transaction(async function (tx, hooks) {
|
|
267
|
+
lifecycle.beginAttempt();
|
|
268
|
+
try {
|
|
269
|
+
var result = await callback(tx, hooks);
|
|
270
|
+
lifecycle.completeAttempt();
|
|
271
|
+
return result;
|
|
272
|
+
} catch (error) {
|
|
273
|
+
lifecycle.rollbackAttempt();
|
|
274
|
+
throw error;
|
|
275
|
+
}
|
|
276
|
+
}, input);
|
|
277
|
+
lifecycle.commitTransaction();
|
|
278
|
+
return value;
|
|
279
|
+
} catch (error) {
|
|
280
|
+
lifecycle.rollbackTransaction();
|
|
281
|
+
throw error;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
var dummyTransactionInput = {
|
|
287
|
+
clientGroupID: "unused",
|
|
288
|
+
clientID: "unused",
|
|
289
|
+
mutationID: 42,
|
|
290
|
+
upstreamSchema: "unused"
|
|
291
|
+
};
|
|
292
|
+
//# sourceMappingURL=createZeroDirectServer.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createZeroDirectServer_exports","__export","createAsyncTaskCollector","createZeroDirectServer","createZeroDirectServerRuntime","resolveServerQuery","module","exports","import_zero","require","import_createPermissions","import_createMutators","import_mutatorContext","import_queryContext","import_modelRegistry","import_run","import_state","import_where","import_zeroRunner","param","authData","name","args","queries","permissions","validateQuery","startsWith","table","slice","length","objOrId","permission","getMutationsPermissions","Error","setEvaluatingPermission","getZQL","where","eb","buildPermissionQuery","one","queryName","params","query","mustGetQuery","fn","ctx","committed","attempt","completedAttempt","current","queue","Proxy","deleteProperty","_target","property","Reflect","get","target","bind","getOwnPropertyDescriptor","has","ownKeys","set","lifecycle","beginAttempt","completeAttempt","rollbackAttempt","commitTransaction","push","rollbackTransaction","createDatabase","createServerActions","defaultAllowAdminRole","defaultMutateAuthData","models","mutations","mutationValidators","schema","validateMutation","setSchema","setEnvironment","createPermissions","environment","adminRoleMode","runTransaction","database","query2","isInZeroMutation","tx","mutatorContext","transaction","dummyTransactionInput","err","console","error","runMutate","modelName","mutatorName","mutatorArg","options","scoped","getScopedAuthData","tasks","mutators","createMutators","asyncTasks","can","modelMutators","mutator","createDatabaseWithLifecycle","resolvedAuth","promise","Promise","all","map","task","runWithAuthScope","awaitEffects","catch","mutate","_","_2","arg","cb","run","runWithQueryContext","setCustomQueries","setRunner","queryObj","server","callback","input","hooks","result","clientGroupID","clientID","mutationID","upstreamSchema"],"sources":["../../src/createZeroDirectServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|