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.
Files changed (93) hide show
  1. package/dist/cjs/createSchemaFromDrizzle.cjs +4 -4
  2. package/dist/cjs/createSchemaFromDrizzle.native.js +4 -4
  3. package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -1
  4. package/dist/cjs/createZeroDirectServer.cjs +279 -0
  5. package/dist/cjs/createZeroDirectServer.native.js +292 -0
  6. package/dist/cjs/createZeroDirectServer.native.js.map +1 -0
  7. package/dist/cjs/createZeroSQLiteServer.cjs +8 -277
  8. package/dist/cjs/createZeroSQLiteServer.native.js +8 -390
  9. package/dist/cjs/createZeroSQLiteServer.native.js.map +1 -1
  10. package/dist/cjs/createZeroSQLiteServer.test.cjs +30 -3
  11. package/dist/cjs/createZeroSQLiteServer.test.native.js +31 -3
  12. package/dist/cjs/createZeroSQLiteServer.test.native.js.map +1 -1
  13. package/dist/cjs/createZeroServerCore.cjs +20 -205
  14. package/dist/cjs/createZeroServerCore.native.js +19 -213
  15. package/dist/cjs/createZeroServerCore.native.js.map +1 -1
  16. package/dist/cjs/generate.cjs +10 -3
  17. package/dist/cjs/generate.native.js +10 -3
  18. package/dist/cjs/generate.native.js.map +1 -1
  19. package/dist/cjs/generate.test.cjs +39 -0
  20. package/dist/cjs/generate.test.native.js +39 -0
  21. package/dist/cjs/generate.test.native.js.map +1 -1
  22. package/dist/cjs/sqliteRuntime.cjs +318 -0
  23. package/dist/cjs/sqliteRuntime.native.js +438 -0
  24. package/dist/cjs/sqliteRuntime.native.js.map +1 -0
  25. package/dist/cjs/syncHost.cjs +16 -9
  26. package/dist/cjs/syncHost.native.js +21 -12
  27. package/dist/cjs/syncHost.native.js.map +1 -1
  28. package/dist/cjs/syncHost.test.cjs +13 -2
  29. package/dist/cjs/syncHost.test.native.js +14 -2
  30. package/dist/cjs/syncHost.test.native.js.map +1 -1
  31. package/dist/esm/createSchemaFromDrizzle.mjs +2 -2
  32. package/dist/esm/createSchemaFromDrizzle.native.js +2 -2
  33. package/dist/esm/createZeroDirectServer.mjs +251 -0
  34. package/dist/esm/createZeroDirectServer.mjs.map +1 -0
  35. package/dist/esm/createZeroDirectServer.native.js +261 -0
  36. package/dist/esm/createZeroDirectServer.native.js.map +1 -0
  37. package/dist/esm/createZeroSQLiteServer.mjs +3 -272
  38. package/dist/esm/createZeroSQLiteServer.mjs.map +1 -1
  39. package/dist/esm/createZeroSQLiteServer.native.js +3 -385
  40. package/dist/esm/createZeroSQLiteServer.native.js.map +1 -1
  41. package/dist/esm/createZeroSQLiteServer.test.mjs +30 -3
  42. package/dist/esm/createZeroSQLiteServer.test.mjs.map +1 -1
  43. package/dist/esm/createZeroSQLiteServer.test.native.js +31 -3
  44. package/dist/esm/createZeroSQLiteServer.test.native.js.map +1 -1
  45. package/dist/esm/createZeroServerCore.mjs +18 -202
  46. package/dist/esm/createZeroServerCore.mjs.map +1 -1
  47. package/dist/esm/createZeroServerCore.native.js +18 -211
  48. package/dist/esm/createZeroServerCore.native.js.map +1 -1
  49. package/dist/esm/generate.mjs +10 -3
  50. package/dist/esm/generate.mjs.map +1 -1
  51. package/dist/esm/generate.native.js +10 -3
  52. package/dist/esm/generate.native.js.map +1 -1
  53. package/dist/esm/generate.test.mjs +39 -1
  54. package/dist/esm/generate.test.mjs.map +1 -1
  55. package/dist/esm/generate.test.native.js +39 -1
  56. package/dist/esm/generate.test.native.js.map +1 -1
  57. package/dist/esm/sqliteRuntime.mjs +289 -0
  58. package/dist/esm/sqliteRuntime.mjs.map +1 -0
  59. package/dist/esm/sqliteRuntime.native.js +406 -0
  60. package/dist/esm/sqliteRuntime.native.js.map +1 -0
  61. package/dist/esm/syncHost.mjs +14 -7
  62. package/dist/esm/syncHost.mjs.map +1 -1
  63. package/dist/esm/syncHost.native.js +19 -10
  64. package/dist/esm/syncHost.native.js.map +1 -1
  65. package/dist/esm/syncHost.test.mjs +13 -2
  66. package/dist/esm/syncHost.test.mjs.map +1 -1
  67. package/dist/esm/syncHost.test.native.js +14 -2
  68. package/dist/esm/syncHost.test.native.js.map +1 -1
  69. package/package.json +5 -6
  70. package/src/createSchemaFromDrizzle.ts +2 -2
  71. package/src/createZeroDirectServer.ts +427 -0
  72. package/src/createZeroSQLiteServer.test.ts +20 -5
  73. package/src/createZeroSQLiteServer.ts +14 -481
  74. package/src/createZeroServerCore.ts +32 -337
  75. package/src/generate.test.ts +57 -1
  76. package/src/generate.ts +23 -3
  77. package/src/sqliteRuntime.ts +512 -0
  78. package/src/syncHost.test.ts +10 -3
  79. package/src/syncHost.ts +49 -12
  80. package/test-fixtures/server-return-types.ts +8 -1
  81. package/types/createSchemaFromDrizzle.d.ts +2 -2
  82. package/types/createSchemaFromDrizzle.d.ts.map +1 -1
  83. package/types/createZeroDirectServer.d.ts +80 -0
  84. package/types/createZeroDirectServer.d.ts.map +1 -0
  85. package/types/createZeroSQLiteServer.d.ts +5 -30
  86. package/types/createZeroSQLiteServer.d.ts.map +1 -1
  87. package/types/createZeroServerCore.d.ts +30 -87
  88. package/types/createZeroServerCore.d.ts.map +1 -1
  89. package/types/generate.d.ts.map +1 -1
  90. package/types/sqliteRuntime.d.ts +71 -0
  91. package/types/sqliteRuntime.d.ts.map +1 -0
  92. package/types/syncHost.d.ts +10 -19
  93. 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: () => import_drizzle_zero.drizzleZeroConfig,
26
- createZeroTableBuilder: () => import_drizzle_zero2.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 import_drizzle_zero = require("drizzle-zero");
31
- var import_drizzle_zero2 = require("drizzle-zero");
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: () => import_drizzle_zero.drizzleZeroConfig,
28
- createZeroTableBuilder: () => import_drizzle_zero2.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 import_drizzle_zero = require("drizzle-zero");
33
- var import_drizzle_zero2 = require("drizzle-zero");
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","import_drizzle_zero","drizzleZeroConfig","createZeroTableBuilder","import_drizzle_zero2","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,mBAAA,CAAAC,iBAAA;EAAAC,sBAAA,EAAAA,CAAA,KAAAC,oBAAA,CAAAD,sBAAA;EAAAE,yBAAA,EAAAA,CAAA,KAAAC,eAAA,CAAAD;AAAA;AAAAE,MAAA,CAAAC,OAAA,GAAAf,YAA6D,CAAAK,+BAAA;AAC7D,IAAAG,mBAAA,GAAAQ,OAAuC;AACvC,IAAAL,oBAA0C,GAAAK,OAAA","ignoreList":[]}
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":[]}