on-zero 0.2.10 → 0.3.0

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 (242) hide show
  1. package/dist/cjs/cli.cjs +0 -0
  2. package/dist/cjs/cli.native.js +0 -0
  3. package/dist/cjs/createPermissions.native.js.map +1 -1
  4. package/dist/cjs/createSchemaFromDrizzle.cjs +30 -0
  5. package/dist/cjs/createSchemaFromDrizzle.native.js +33 -0
  6. package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -0
  7. package/dist/cjs/createUseQuery.cjs +1 -1
  8. package/dist/cjs/createUseQuery.native.js +1 -1
  9. package/dist/cjs/createZeroClient.cjs +1 -1
  10. package/dist/cjs/createZeroClient.native.js +1 -1
  11. package/dist/cjs/createZeroClient.native.js.map +1 -1
  12. package/dist/cjs/createZeroServer.native.js.map +1 -1
  13. package/dist/cjs/generate.cjs +64 -12
  14. package/dist/cjs/generate.native.js +114 -12
  15. package/dist/cjs/generate.native.js.map +1 -1
  16. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  17. package/dist/cjs/index.cjs +2 -1
  18. package/dist/cjs/index.native.js +1 -0
  19. package/dist/cjs/index.native.js.map +1 -1
  20. package/dist/cjs/mutations.cjs +1 -1
  21. package/dist/cjs/mutations.native.js +1 -1
  22. package/dist/cjs/mutations.native.js.map +1 -1
  23. package/dist/cjs/server.native.js +1 -18
  24. package/dist/cjs/server.native.js.map +1 -1
  25. package/dist/cjs/vite-plugin.cjs +1 -1
  26. package/dist/cjs/vite-plugin.native.js +1 -1
  27. package/dist/cjs/vite-plugin.native.js.map +1 -1
  28. package/dist/esm/cli.mjs +0 -0
  29. package/dist/esm/cli.native.js +0 -0
  30. package/dist/esm/createPermissions.mjs.map +1 -1
  31. package/dist/esm/createPermissions.native.js.map +1 -1
  32. package/dist/esm/createSchemaFromDrizzle.mjs +5 -0
  33. package/dist/esm/createSchemaFromDrizzle.mjs.map +1 -0
  34. package/dist/esm/createSchemaFromDrizzle.native.js +5 -0
  35. package/dist/esm/createSchemaFromDrizzle.native.js.map +1 -0
  36. package/dist/esm/createUseQuery.mjs +2 -2
  37. package/dist/esm/createUseQuery.mjs.map +1 -1
  38. package/dist/esm/createUseQuery.native.js +2 -2
  39. package/dist/esm/createUseQuery.native.js.map +1 -1
  40. package/dist/esm/createZeroClient.mjs +2 -2
  41. package/dist/esm/createZeroClient.mjs.map +1 -1
  42. package/dist/esm/createZeroClient.native.js +2 -2
  43. package/dist/esm/createZeroClient.native.js.map +1 -1
  44. package/dist/esm/createZeroServer.mjs.map +1 -1
  45. package/dist/esm/createZeroServer.native.js.map +1 -1
  46. package/dist/esm/generate.mjs +64 -13
  47. package/dist/esm/generate.mjs.map +1 -1
  48. package/dist/esm/generate.native.js +114 -13
  49. package/dist/esm/generate.native.js.map +1 -1
  50. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  51. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  52. package/dist/esm/index.js +19 -24
  53. package/dist/esm/index.js.map +1 -6
  54. package/dist/esm/index.mjs +1 -0
  55. package/dist/esm/index.mjs.map +1 -1
  56. package/dist/esm/index.native.js +1 -0
  57. package/dist/esm/index.native.js.map +1 -1
  58. package/dist/esm/mutations.mjs +1 -1
  59. package/dist/esm/mutations.mjs.map +1 -1
  60. package/dist/esm/mutations.native.js +1 -1
  61. package/dist/esm/mutations.native.js.map +1 -1
  62. package/dist/esm/server.native.js +1 -1
  63. package/dist/esm/server.native.js.map +1 -1
  64. package/dist/esm/vite-plugin.mjs +1 -1
  65. package/dist/esm/vite-plugin.mjs.map +1 -1
  66. package/dist/esm/vite-plugin.native.js +1 -1
  67. package/dist/esm/vite-plugin.native.js.map +1 -1
  68. package/package.json +10 -4
  69. package/readme.md +80 -54
  70. package/src/createPermissions.ts +4 -9
  71. package/src/createSchemaFromDrizzle.ts +3 -0
  72. package/src/createUseQuery.tsx +4 -4
  73. package/src/createZeroClient.tsx +14 -14
  74. package/src/createZeroServer.ts +12 -12
  75. package/src/generate.test.ts +32 -32
  76. package/src/generate.ts +208 -55
  77. package/src/helpers/batchQuery.ts +1 -1
  78. package/src/helpers/createMutators.ts +7 -6
  79. package/src/helpers/didRunPermissionCheck.ts +1 -1
  80. package/src/helpers/mutatorContext.ts +2 -2
  81. package/src/helpers/prettyFormatZeroQuery.ts +1 -1
  82. package/src/helpers/queryContext.ts +1 -1
  83. package/src/helpers/useZeroDebug.ts +2 -2
  84. package/src/index.ts +2 -0
  85. package/src/mutations.ts +33 -7
  86. package/src/queryRegistry.ts +1 -1
  87. package/src/resolveQuery.ts +3 -3
  88. package/src/run.ts +5 -5
  89. package/src/server.native.ts +3 -0
  90. package/src/serverWhere.ts +2 -2
  91. package/src/types.ts +4 -2
  92. package/src/vite-plugin.ts +2 -2
  93. package/src/where.ts +5 -5
  94. package/src/zeroRunner.ts +2 -2
  95. package/types/createPermissions.d.ts +1 -1
  96. package/types/createPermissions.d.ts.map +1 -1
  97. package/types/createSchemaFromDrizzle.d.ts +4 -0
  98. package/types/createSchemaFromDrizzle.d.ts.map +1 -0
  99. package/types/createUseQuery.d.ts.map +1 -1
  100. package/types/createZeroServer.d.ts +11 -11
  101. package/types/generate.d.ts +29 -0
  102. package/types/generate.d.ts.map +1 -1
  103. package/types/helpers/createMutators.d.ts.map +1 -1
  104. package/types/index.d.ts +1 -0
  105. package/types/index.d.ts.map +1 -1
  106. package/types/mutations.d.ts +4 -1
  107. package/types/mutations.d.ts.map +1 -1
  108. package/types/resolveQuery.d.ts +1 -1
  109. package/types/resolveQuery.d.ts.map +1 -1
  110. package/types/server.native.d.ts +1 -0
  111. package/types/server.native.d.ts.map +1 -0
  112. package/types/types.d.ts.map +1 -1
  113. package/dist/cjs/cli.js +0 -42
  114. package/dist/cjs/cli.js.map +0 -6
  115. package/dist/cjs/constants.js +0 -23
  116. package/dist/cjs/constants.js.map +0 -6
  117. package/dist/cjs/createPermissions.js +0 -92
  118. package/dist/cjs/createPermissions.js.map +0 -6
  119. package/dist/cjs/createUseQuery.js +0 -35
  120. package/dist/cjs/createUseQuery.js.map +0 -6
  121. package/dist/cjs/createZeroClient.js +0 -178
  122. package/dist/cjs/createZeroClient.js.map +0 -6
  123. package/dist/cjs/createZeroServer.js +0 -189
  124. package/dist/cjs/createZeroServer.js.map +0 -6
  125. package/dist/cjs/generate.js +0 -811
  126. package/dist/cjs/generate.js.map +0 -6
  127. package/dist/cjs/generate.test.js +0 -404
  128. package/dist/cjs/generate.test.js.map +0 -6
  129. package/dist/cjs/helpers/batchQuery.js +0 -41
  130. package/dist/cjs/helpers/batchQuery.js.map +0 -6
  131. package/dist/cjs/helpers/createMutators.js +0 -118
  132. package/dist/cjs/helpers/createMutators.js.map +0 -6
  133. package/dist/cjs/helpers/didRunPermissionCheck.js +0 -26
  134. package/dist/cjs/helpers/didRunPermissionCheck.js.map +0 -6
  135. package/dist/cjs/helpers/ensureLoggedIn.js +0 -25
  136. package/dist/cjs/helpers/ensureLoggedIn.js.map +0 -6
  137. package/dist/cjs/helpers/getAuth.js +0 -31
  138. package/dist/cjs/helpers/getAuth.js.map +0 -6
  139. package/dist/cjs/helpers/mutatorContext.js +0 -44
  140. package/dist/cjs/helpers/mutatorContext.js.map +0 -6
  141. package/dist/cjs/helpers/prettyFormatZeroQuery.js +0 -92
  142. package/dist/cjs/helpers/prettyFormatZeroQuery.js.map +0 -6
  143. package/dist/cjs/helpers/queryContext.js +0 -33
  144. package/dist/cjs/helpers/queryContext.js.map +0 -6
  145. package/dist/cjs/helpers/useZeroDebug.js +0 -49
  146. package/dist/cjs/helpers/useZeroDebug.js.map +0 -6
  147. package/dist/cjs/index.js +0 -40
  148. package/dist/cjs/index.js.map +0 -6
  149. package/dist/cjs/modelRegistry.js +0 -32
  150. package/dist/cjs/modelRegistry.js.map +0 -6
  151. package/dist/cjs/mutations.js +0 -70
  152. package/dist/cjs/mutations.js.map +0 -6
  153. package/dist/cjs/queryRegistry.js +0 -32
  154. package/dist/cjs/queryRegistry.js.map +0 -6
  155. package/dist/cjs/resolveQuery.js +0 -40
  156. package/dist/cjs/resolveQuery.js.map +0 -6
  157. package/dist/cjs/run.js +0 -42
  158. package/dist/cjs/run.js.map +0 -6
  159. package/dist/cjs/server.js +0 -15
  160. package/dist/cjs/server.js.map +0 -6
  161. package/dist/cjs/serverWhere.js +0 -24
  162. package/dist/cjs/serverWhere.js.map +0 -6
  163. package/dist/cjs/serverWhere.test.js +0 -52
  164. package/dist/cjs/serverWhere.test.js.map +0 -6
  165. package/dist/cjs/state.js +0 -48
  166. package/dist/cjs/state.js.map +0 -6
  167. package/dist/cjs/types.js +0 -14
  168. package/dist/cjs/types.js.map +0 -6
  169. package/dist/cjs/usePermission.test.js +0 -29
  170. package/dist/cjs/usePermission.test.js.map +0 -6
  171. package/dist/cjs/vite-plugin.js +0 -89
  172. package/dist/cjs/vite-plugin.js.map +0 -6
  173. package/dist/cjs/where.js +0 -50
  174. package/dist/cjs/where.js.map +0 -6
  175. package/dist/cjs/zeroRunner.js +0 -35
  176. package/dist/cjs/zeroRunner.js.map +0 -6
  177. package/dist/cjs/zql.js +0 -26
  178. package/dist/cjs/zql.js.map +0 -6
  179. package/dist/esm/cli.js +0 -44
  180. package/dist/esm/cli.js.map +0 -6
  181. package/dist/esm/constants.js +0 -7
  182. package/dist/esm/constants.js.map +0 -6
  183. package/dist/esm/createPermissions.js +0 -81
  184. package/dist/esm/createPermissions.js.map +0 -6
  185. package/dist/esm/createUseQuery.js +0 -22
  186. package/dist/esm/createUseQuery.js.map +0 -6
  187. package/dist/esm/createZeroClient.js +0 -185
  188. package/dist/esm/createZeroClient.js.map +0 -6
  189. package/dist/esm/createZeroServer.js +0 -192
  190. package/dist/esm/createZeroServer.js.map +0 -6
  191. package/dist/esm/generate.js +0 -789
  192. package/dist/esm/generate.js.map +0 -6
  193. package/dist/esm/generate.test.js +0 -408
  194. package/dist/esm/generate.test.js.map +0 -6
  195. package/dist/esm/helpers/batchQuery.js +0 -25
  196. package/dist/esm/helpers/batchQuery.js.map +0 -6
  197. package/dist/esm/helpers/createMutators.js +0 -96
  198. package/dist/esm/helpers/createMutators.js.map +0 -6
  199. package/dist/esm/helpers/didRunPermissionCheck.js +0 -10
  200. package/dist/esm/helpers/didRunPermissionCheck.js.map +0 -6
  201. package/dist/esm/helpers/ensureLoggedIn.js +0 -10
  202. package/dist/esm/helpers/ensureLoggedIn.js.map +0 -6
  203. package/dist/esm/helpers/getAuth.js +0 -17
  204. package/dist/esm/helpers/getAuth.js.map +0 -6
  205. package/dist/esm/helpers/mutatorContext.js +0 -28
  206. package/dist/esm/helpers/mutatorContext.js.map +0 -6
  207. package/dist/esm/helpers/prettyFormatZeroQuery.js +0 -76
  208. package/dist/esm/helpers/prettyFormatZeroQuery.js.map +0 -6
  209. package/dist/esm/helpers/queryContext.js +0 -17
  210. package/dist/esm/helpers/queryContext.js.map +0 -6
  211. package/dist/esm/helpers/useZeroDebug.js +0 -35
  212. package/dist/esm/helpers/useZeroDebug.js.map +0 -6
  213. package/dist/esm/modelRegistry.js +0 -16
  214. package/dist/esm/modelRegistry.js.map +0 -6
  215. package/dist/esm/mutations.js +0 -56
  216. package/dist/esm/mutations.js.map +0 -6
  217. package/dist/esm/queryRegistry.js +0 -16
  218. package/dist/esm/queryRegistry.js.map +0 -6
  219. package/dist/esm/resolveQuery.js +0 -24
  220. package/dist/esm/resolveQuery.js.map +0 -6
  221. package/dist/esm/run.js +0 -27
  222. package/dist/esm/run.js.map +0 -6
  223. package/dist/esm/server.js +0 -2
  224. package/dist/esm/server.js.map +0 -6
  225. package/dist/esm/serverWhere.js +0 -8
  226. package/dist/esm/serverWhere.js.map +0 -6
  227. package/dist/esm/serverWhere.test.js +0 -55
  228. package/dist/esm/serverWhere.test.js.map +0 -6
  229. package/dist/esm/state.js +0 -33
  230. package/dist/esm/state.js.map +0 -6
  231. package/dist/esm/types.js +0 -1
  232. package/dist/esm/types.js.map +0 -6
  233. package/dist/esm/usePermission.test.js +0 -33
  234. package/dist/esm/usePermission.test.js.map +0 -6
  235. package/dist/esm/vite-plugin.js +0 -74
  236. package/dist/esm/vite-plugin.js.map +0 -6
  237. package/dist/esm/where.js +0 -36
  238. package/dist/esm/where.js.map +0 -6
  239. package/dist/esm/zeroRunner.js +0 -19
  240. package/dist/esm/zeroRunner.js.map +0 -6
  241. package/dist/esm/zql.js +0 -10
  242. package/dist/esm/zql.js.map +0 -6
@@ -1,81 +0,0 @@
1
- import { ensure } from "@take-out/helpers";
2
- import { setDidRunPermissionCheck } from "./helpers/didRunPermissionCheck";
3
- import { mutatorContext } from "./helpers/mutatorContext";
4
- import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery";
5
- import { getZQL } from "./state";
6
- import { getWhereTableName } from "./where";
7
- class PermissionError extends Error {
8
- constructor(message) {
9
- super(message), this.name = "PermissionError";
10
- }
11
- }
12
- function createPermissions({
13
- environment,
14
- schema,
15
- adminRoleMode = "all"
16
- }) {
17
- function buildPermissionQuery(authData, eb, permissionWhere, objOrId, tableNameOverride) {
18
- if ((adminRoleMode === "all" || adminRoleMode === "queries") && authData?.role === "admin")
19
- return eb.cmpLit(!0, "=", !0);
20
- const tableName = tableNameOverride || getWhereTableName(permissionWhere);
21
- if (!tableName)
22
- throw new Error("Must use PermissionWhere for buildPermissionQuery");
23
- const tableSchema = schema.tables[tableName];
24
- if (!tableSchema)
25
- throw new Error("No schema?");
26
- const primaryKeys = tableSchema.primaryKey;
27
- let permissionReturn;
28
- try {
29
- permissionReturn = permissionWhere(eb, authData);
30
- } catch (err) {
31
- return process.env.NODE_ENV === "development" && err?.name !== "EnsureError" && console.warn(`[permission] ${tableName} threw:`, err), eb.cmpLit(!0, "=", !1);
32
- }
33
- if (permissionReturn == null)
34
- throw new Error(`No permission defined for ${tableName}`);
35
- if (permissionReturn === !0)
36
- return eb.cmpLit(!0, "=", !0);
37
- if (permissionReturn === !1)
38
- return eb.cmpLit(!0, "=", !1);
39
- const primaryKeyWheres = [];
40
- for (const key of primaryKeys) {
41
- const value = typeof objOrId == "string" ? objOrId : objOrId[key];
42
- primaryKeyWheres.push(eb.cmp(key, value));
43
- }
44
- return eb.and(permissionReturn, ...primaryKeyWheres);
45
- }
46
- const can = async (where, obj) => {
47
- if (environment === "server") {
48
- const ctx = mutatorContext(), tableName = getWhereTableName(where);
49
- if (!tableName)
50
- throw new Error("Must use where('table') style where to pass to can()");
51
- await ensurePermission(ctx.tx, ctx.authData, tableName, where, obj), setDidRunPermissionCheck(ctx);
52
- }
53
- };
54
- async function ensurePermission(tx, authData, tableName, where, obj) {
55
- if ((adminRoleMode === "all" || adminRoleMode === "mutations") && authData?.role === "admin")
56
- return;
57
- const queryBase = getZQL()[tableName];
58
- let query = null;
59
- try {
60
- query = queryBase.where((eb) => buildPermissionQuery(authData, eb, where, obj)).one(), ensure(await tx.run(query));
61
- } catch (err) {
62
- const errorTitle = `${tableName} with auth id: ${authData?.id}`;
63
- if (err?.name === "EnsureError") {
64
- let msg = `[permission] \u{1F6AB} Not Allowed: ${errorTitle}`;
65
- throw process.env.NODE_ENV === "development" && query && (msg += `
66
- ${prettyFormatZeroQuery(query)}`), new PermissionError(msg);
67
- }
68
- throw new Error(`Error running permission ${errorTitle}
69
- ${err}`);
70
- }
71
- }
72
- return {
73
- can,
74
- buildPermissionQuery
75
- };
76
- }
77
- export {
78
- PermissionError,
79
- createPermissions
80
- };
81
- //# sourceMappingURL=createPermissions.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/createPermissions.ts"],
4
- "mappings": "AAAA,SAAS,cAAc;AAEvB,SAAS,gCAAgC;AACzC,SAAS,sBAAsB;AAC/B,SAAS,6BAA6B;AACtC,SAAS,cAAc;AACvB,SAAS,yBAAyB;AAU3B,MAAM,wBAAwB,MAAM;AAAA,EACzC,YAAY,SAAiB;AAC3B,UAAM,OAAO,GACb,KAAK,OAAO;AAAA,EACd;AACF;AAEO,SAAS,kBAA6C;AAAA,EAC3D;AAAA,EACA;AAAA,EACA,gBAAgB;AAClB,GAIG;AAQD,WAAS,qBACP,UACA,IACA,iBAEA,SACA,mBACA;AAGA,SAD2B,kBAAkB,SAAS,kBAAkB,cAC9C,UAAU,SAAS;AAC3C,aAAO,GAAG,OAAO,IAAM,KAAK,EAAI;AAGlC,UAAM,YAAY,qBAAqB,kBAAkB,eAAe;AAExE,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,mDAAmD;AAGrE,UAAM,cAAc,OAAO,OAAO,SAAS;AAE3C,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,YAAY;AAG9B,UAAM,cAAc,YAAY;AAEhC,QAAI;AACJ,QAAI;AACF,yBAAmB,gBAAgB,IAAI,QAAQ;AAAA,IACjD,SAAS,KAAK;AAGZ,aACE,QAAQ,IAAI,aAAa,iBACxB,KAAa,SAAS,iBAEvB,QAAQ,KAAK,gBAAgB,SAAS,WAAW,GAAG,GAE/C,GAAG,OAAO,IAAM,KAAK,EAAK;AAAA,IACnC;AAEA,QAAI,oBAAoB;AACtB,YAAM,IAAI,MAAM,6BAA6B,SAAS,EAAE;AAG1D,QAAI,qBAAqB;AACvB,aAAO,GAAG,OAAO,IAAM,KAAK,EAAI;AAGlC,QAAI,qBAAqB;AACvB,aAAO,GAAG,OAAO,IAAM,KAAK,EAAK;AAGnC,UAAM,mBAAgC,CAAC;AAEvC,eAAW,OAAO,aAAa;AAC7B,YAAM,QAAQ,OAAO,WAAY,WAAW,UAAU,QAAQ,GAAG;AACjE,uBAAiB,KAAK,GAAG,IAAI,KAAY,KAAK,CAAC;AAAA,IACjD;AAEA,WAAO,GAAG,IAAI,kBAAkB,GAAG,gBAAgB;AAAA,EACrD;AAEA,QAAM,MAAW,OAAO,OAAO,QAAQ;AAErC,QAAI,gBAAgB,UAAU;AAC5B,YAAM,MAAM,eAAe,GACrB,YAAY,kBAAkB,KAAK;AACzC,UAAI,CAAC;AACH,cAAM,IAAI,MAAM,sDAAsD;AAExE,YAAM,iBAAiB,IAAI,IAAI,IAAI,UAAU,WAAW,OAAO,GAAG,GAClE,yBAAyB,GAAG;AAAA,IAC9B;AAAA,EACF;AAEA,iBAAe,iBACb,IACA,UACA,WACA,OACA,KACe;AAGf,SAD6B,kBAAkB,SAAS,kBAAkB,gBAC9C,UAAU,SAAS;AAC7C;AAIF,UAAM,YADa,OAAO,EACG,SAAS;AACtC,QAAI,QAAqC;AAEzC,QAAI;AACF,cAAQ,UACL,MAAM,CAAC,OACC,qBAAqB,UAAU,IAAI,OAAO,GAAG,CACrD,EACA,IAAI,GAEP,OAAO,MAAM,GAAG,IAAI,KAAK,CAAC;AAAA,IAC5B,SAAS,KAAK;AACZ,YAAM,aAAa,GAAG,SAAS,kBAAkB,UAAU,EAAE;AAE7D,UAAK,KAAa,SAAS,eAAe;AACxC,YAAI,MAAM,uCAAgC,UAAU;AACpD,cAAI,QAAQ,IAAI,aAAa,iBAAiB,UAC5C,OAAO;AAAA,GAAM,sBAAsB,KAAK,CAAC,KAErC,IAAI,gBAAgB,GAAG;AAAA,MAC/B;AAEA,YAAM,IAAI,MAAM,4BAA4B,UAAU;AAAA,EAAK,GAAG,EAAE;AAAA,IAClE;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;",
5
- "names": []
6
- }
@@ -1,22 +0,0 @@
1
- import { useQuery as zeroUseQuery } from "@rocicorp/zero/react";
2
- import { use, useMemo, useRef } from "react";
3
- import { useZeroDebug } from "./helpers/useZeroDebug";
4
- import { resolveQuery } from "./resolveQuery";
5
- const EMPTY_RESPONSE = [null, { type: "unknown" }];
6
- function createUseQuery({
7
- DisabledContext,
8
- customQueries
9
- }) {
10
- function useQuery(...args) {
11
- const disableMode = use(DisabledContext), lastRef = useRef(EMPTY_RESPONSE), [fn, paramsOrOptions, optionsArg] = args, { queryRequest, options } = useMemo(() => {
12
- const hasParams = optionsArg !== void 0 || paramsOrOptions && typeof paramsOrOptions == "object" && !("enabled" in paramsOrOptions) && !("ttl" in paramsOrOptions), params = hasParams ? paramsOrOptions : void 0, opts = hasParams ? optionsArg : paramsOrOptions;
13
- return { queryRequest: resolveQuery({ customQueries, fn, params }), options: opts };
14
- }, [fn, paramsOrOptions, optionsArg]), out = zeroUseQuery(queryRequest, options);
15
- return process.env.NODE_ENV === "development" && process.env.DEBUG_ZERO_QUERIES === "1" && useZeroDebug(queryRequest, options, out), disableMode ? disableMode === "last-value" ? lastRef.current : EMPTY_RESPONSE : (lastRef.current = out, out);
16
- }
17
- return useQuery;
18
- }
19
- export {
20
- createUseQuery
21
- };
22
- //# sourceMappingURL=createUseQuery.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/createUseQuery.tsx"],
4
- "mappings": "AAAA,SAAS,YAAY,oBAAoB;AACzC,SAAS,KAAK,SAAS,cAA4B;AAEnD,SAAS,oBAAoB;AAC7B,SAAS,oBAAuC;AAqChD,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC;AAE1C,SAAS,eAA0C;AAAA,EACxD;AAAA,EACA;AACF,GAGyB;AACvB,WAAS,YAAY,MAAkB;AACrC,UAAM,cAAc,IAAI,eAAe,GACjC,UAAU,OAAY,cAAc,GACpC,CAAC,IAAI,iBAAiB,UAAU,IAAI,MAEpC,EAAE,cAAc,QAAQ,IAAI,QAAQ,MAAM;AAE9C,YAAM,YACJ,eAAe,UACd,mBACC,OAAO,mBAAoB,YAC3B,EAAE,aAAa,oBACf,EAAE,SAAS,kBAET,SAAS,YAAY,kBAAkB,QACvC,OAAO,YAAY,aAAa;AAItC,aAAO,EAAE,cAFY,aAAa,EAAE,eAAe,IAAI,OAAO,CAAC,GAExC,SAAS,KAAK;AAAA,IACvC,GAAG,CAAC,IAAI,iBAAiB,UAAU,CAAC,GAE9B,MAAM,aAAa,cAAc,OAAO;AAQ9C,WANI,QAAQ,IAAI,aAAa,iBACvB,QAAQ,IAAI,uBAAuB,OAErC,aAAa,cAAc,SAAS,GAAG,GAGtC,cAKD,gBAAgB,eACX,QAAQ,UAGV,kBARL,QAAQ,UAAU,KACX;AAAA,EAQX;AAEA,SAAO;AACT;",
5
- "names": []
6
- }
@@ -1,185 +0,0 @@
1
- import { defineQueries, defineQuery } from "@rocicorp/zero";
2
- import { useConnectionState, useZero, ZeroProvider } from "@rocicorp/zero/react";
3
- import { createEmitter } from "@take-out/helpers";
4
- import {
5
- createContext,
6
- memo,
7
- use,
8
- useEffect,
9
- useMemo,
10
- useRef
11
- } from "react";
12
- import { createPermissions } from "./createPermissions";
13
- import { createUseQuery } from "./createUseQuery";
14
- import { createMutators } from "./helpers/createMutators";
15
- import { getAuth } from "./helpers/getAuth";
16
- import { getAllMutationsPermissions, getMutationsPermissions } from "./modelRegistry";
17
- import { registerQuery } from "./queryRegistry";
18
- import { resolveQuery } from "./resolveQuery";
19
- import { setCustomQueries } from "./run";
20
- import { getEnvironment, setAuthData, setEnvironment, setSchema } from "./state";
21
- import { getRawWhere, setEvaluatingPermission } from "./where";
22
- import { setRunner } from "./zeroRunner";
23
- import { zql } from "./zql";
24
- import { jsx, jsxs } from "react/jsx-runtime";
25
- function createZeroClient({
26
- schema,
27
- models,
28
- groupedQueries,
29
- permissionStrategy = "optimistic"
30
- }) {
31
- setSchema(schema), getEnvironment() === null && setEnvironment("client");
32
- const permissionsHelpers = createPermissions({
33
- schema,
34
- environment: "client"
35
- }), wrappedNamespaces = {};
36
- for (const [namespace, queries] of Object.entries(groupedQueries)) {
37
- wrappedNamespaces[namespace] = {};
38
- for (const [name, fn] of Object.entries(queries))
39
- registerQuery(fn, `${namespace}.${name}`), wrappedNamespaces[namespace][name] = defineQuery(
40
- ({ args }) => fn(args)
41
- );
42
- }
43
- const permissionCheckFns = {}, createPermissionCheckFn = (table) => {
44
- const fn = (args) => {
45
- const perm = getMutationsPermissions(table), base = zql[table];
46
- if (!args.objOrId)
47
- return base.where((eb) => eb.cmpLit(!0, "=", !1)).one();
48
- if (permissionStrategy === "optimistic") {
49
- const rawPerm = perm && (getRawWhere(perm) || perm);
50
- return base.where((eb) => {
51
- setEvaluatingPermission(!0);
52
- try {
53
- return permissionsHelpers.buildPermissionQuery(
54
- getAuth(),
55
- eb,
56
- rawPerm || ((e) => e.and()),
57
- args.objOrId,
58
- table
59
- );
60
- } finally {
61
- setEvaluatingPermission(!1);
62
- }
63
- }).one();
64
- }
65
- return permissionStrategy === "optimistic-deny" ? base.where((eb) => eb.cmpLit(!0, "=", !1)).one() : base.where((eb) => permissionsHelpers.buildPermissionQuery(
66
- getAuth(),
67
- eb,
68
- perm || ((e) => e.and()),
69
- args.objOrId,
70
- table
71
- )).one();
72
- };
73
- return permissionCheckFns[table] = fn, registerQuery(fn, `permission.${table}`), fn;
74
- };
75
- wrappedNamespaces.permission = {};
76
- for (const [table] of getAllMutationsPermissions()) {
77
- const fn = createPermissionCheckFn(table);
78
- wrappedNamespaces.permission[table] = defineQuery(({ args }) => fn(args));
79
- }
80
- const customQueries = defineQueries(wrappedNamespaces);
81
- setCustomQueries(customQueries);
82
- const DisabledContext = createContext(!1);
83
- let latestZeroInstance = null;
84
- const zero = new Proxy({}, {
85
- get(_, key) {
86
- if (latestZeroInstance === null)
87
- throw new Error(
88
- "Zero instance not initialized. Ensure ZeroProvider is mounted before accessing 'zero'."
89
- );
90
- return Reflect.get(latestZeroInstance, key, latestZeroInstance);
91
- }
92
- }), zeroEvents = createEmitter("zero", null), AuthDataContext = createContext({}), useQuery = createUseQuery({
93
- DisabledContext,
94
- customQueries
95
- });
96
- function usePermission(table, objOrId, enabled = typeof objOrId < "u", debug = !1) {
97
- const disableMode = use(DisabledContext), lastRef = useRef(null), checkFn = permissionCheckFns[table], _uid = getAuth()?.id || "anon", [data, status] = useQuery(
98
- checkFn,
99
- { objOrId, _uid },
100
- { enabled: !!(!disableMode && enabled && objOrId && checkFn) }
101
- );
102
- if (debug && console.info("usePermission()", { table, objOrId, data, status }), !objOrId) return !1;
103
- const result = status.type === "unknown" ? null : !!data;
104
- return disableMode ? disableMode === "last-value" ? lastRef.current : null : (lastRef.current = result, result);
105
- }
106
- const ProvideZero = ({
107
- children,
108
- authData: authDataIn,
109
- disable,
110
- ...props
111
- }) => {
112
- const authData = authDataIn ?? null;
113
- setAuthData(authData);
114
- const mutators = useMemo(() => createMutators({
115
- models,
116
- environment: "client",
117
- authData,
118
- can: permissionsHelpers.can
119
- }), [authData]);
120
- return disable ? children : /* @__PURE__ */ jsx(AuthDataContext.Provider, { value: authData, children: /* @__PURE__ */ jsxs(
121
- ZeroProvider,
122
- {
123
- schema,
124
- kvStore: "mem",
125
- mutators,
126
- ...props,
127
- children: [
128
- /* @__PURE__ */ jsx(SetZeroInstance, {}),
129
- /* @__PURE__ */ jsx(ConnectionMonitor, { zeroEvents }),
130
- children
131
- ]
132
- }
133
- ) });
134
- }, SetZeroInstance = () => {
135
- const zeroInstance = useZero();
136
- return zeroInstance !== latestZeroInstance && (latestZeroInstance = zeroInstance, setRunner((query, options) => zeroInstance.run(query, options))), null;
137
- }, ConnectionMonitor = memo(
138
- ({
139
- zeroEvents: zeroEvents2
140
- }) => {
141
- const state = useConnectionState(), prevState = useRef(state.name);
142
- return useEffect(() => {
143
- if (state.name !== prevState.current) {
144
- const reason = "reason" in state ? state.reason : "";
145
- if (prevState.current = state.name, state.name === "error" || state.name === "needs-auth") {
146
- const message = typeof reason == "string" ? reason : state.name;
147
- zeroEvents2.emit({
148
- type: "error",
149
- message
150
- });
151
- }
152
- }
153
- }, [state, zeroEvents2]), null;
154
- }
155
- );
156
- function preload(fnArg, paramsOrOptions, optionsArg) {
157
- const hasParams = optionsArg !== void 0 || paramsOrOptions && !("ttl" in paramsOrOptions), params = hasParams ? paramsOrOptions : void 0, options = hasParams ? optionsArg : paramsOrOptions, queryRequest = resolveQuery({ customQueries, fn: fnArg, params });
158
- return zero.preload(queryRequest, options);
159
- }
160
- function getQuery(fn, params) {
161
- return resolveQuery({ customQueries, fn, params });
162
- }
163
- function ControlQueries({
164
- children,
165
- action = "disable",
166
- whenDisabled = "empty"
167
- }) {
168
- const mode = action === "enable" ? !1 : whenDisabled;
169
- return /* @__PURE__ */ jsx(DisabledContext.Provider, { value: mode, children });
170
- }
171
- return {
172
- zeroEvents,
173
- ProvideZero,
174
- ControlQueries,
175
- useQuery,
176
- usePermission,
177
- zero,
178
- preload,
179
- getQuery
180
- };
181
- }
182
- export {
183
- createZeroClient
184
- };
185
- //# sourceMappingURL=createZeroClient.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/createZeroClient.tsx"],
4
- "mappings": "AAAA,SAAS,eAAe,mBAAmB;AAC3C,SAAS,oBAAoB,SAAS,oBAAoB;AAC1D,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,yBAAyB;AAClC,SAAS,sBAA6C;AACtD,SAAS,sBAAsB;AAC/B,SAAS,eAAe;AACxB,SAAS,4BAA4B,+BAA+B;AACpE,SAAS,qBAAqB;AAC9B,SAAS,oBAAuC;AAChD,SAAS,wBAAwB;AACjC,SAAS,gBAAgB,aAAa,gBAAgB,iBAAiB;AACvE,SAAS,aAAa,+BAA+B;AACrD,SAAS,iBAAiB;AAC1B,SAAS,WAAW;AAsPZ,SAOE,KAPF;AAvOD,SAAS,iBAGd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,qBAAqB;AACvB,GAKG;AAKD,YAAU,MAAM,GAIZ,eAAe,MAAM,QACvB,eAAe,QAAQ;AAGzB,QAAM,qBAAqB,kBAA0B;AAAA,IACnD;AAAA,IACA,aAAa;AAAA,EACf,CAAC,GAIK,oBAGF,CAAC;AAEL,aAAW,CAAC,WAAW,OAAO,KAAK,OAAO,QAAQ,cAAc,GAAG;AACjE,sBAAkB,SAAS,IAAI,CAAC;AAChC,eAAW,CAAC,MAAM,EAAE,KAAK,OAAO,QAAQ,OAAO;AAC7C,oBAAc,IAAI,GAAG,SAAS,IAAI,IAAI,EAAE,GAExC,kBAAkB,SAAS,EAAE,IAAI,IAAI;AAAA,QAAY,CAAC,EAAE,KAAK,MACvD,GAAG,IAAI;AAAA,MACT;AAAA,EAEJ;AAKA,QAAM,qBAGF,CAAC,GAEC,0BAA0B,CAAC,UAAkB;AACjD,UAAM,KAAK,CAAC,SAAoD;AAC9D,YAAM,OAAO,wBAAwB,KAAK,GACpC,OAAQ,IAAY,KAAK;AAE/B,UAAI,CAAC,KAAK;AACR,eAAO,KAAK,MAAM,CAAC,OAAY,GAAG,OAAO,IAAM,KAAK,EAAK,CAAC,EAAE,IAAI;AAGlE,UAAI,uBAAuB,cAAc;AAGvC,cAAM,UAAU,SAAO,YAAY,IAAI,KAAK;AAC5C,eAAO,KACJ,MAAM,CAAC,OAAY;AAClB,kCAAwB,EAAI;AAC5B,cAAI;AACF,mBAAO,mBAAmB;AAAA,cACxB,QAAQ;AAAA,cACR;AAAA,cACA,YAAY,CAAC,MAAW,EAAE,IAAI;AAAA,cAC9B,KAAK;AAAA,cACL;AAAA,YACF;AAAA,UACF,UAAE;AACA,oCAAwB,EAAK;AAAA,UAC/B;AAAA,QACF,CAAC,EACA,IAAI;AAAA,MACT;AAEA,aAAI,uBAAuB,oBAElB,KAAK,MAAM,CAAC,OAAY,GAAG,OAAO,IAAM,KAAK,EAAK,CAAC,EAAE,IAAI,IAM3D,KACJ,MAAM,CAAC,OACC,mBAAmB;AAAA,QACxB,QAAQ;AAAA,QACR;AAAA,QACA,SAAS,CAAC,MAAW,EAAE,IAAI;AAAA,QAC3B,KAAK;AAAA,QACL;AAAA,MACF,CACD,EACA,IAAI;AAAA,IACT;AACA,8BAAmB,KAAK,IAAI,IAC5B,cAAc,IAAI,cAAc,KAAK,EAAE,GAChC;AAAA,EACT;AAEA,oBAAkB,aAAgB,CAAC;AACnC,aAAW,CAAC,KAAK,KAAK,2BAA2B,GAAG;AAClD,UAAM,KAAK,wBAAwB,KAAK;AACxC,sBAAkB,WAAc,KAAK,IAAI,YAAY,CAAC,EAAE,KAAK,MAAW,GAAG,IAAI,CAAC;AAAA,EAClF;AAGA,QAAM,gBAAgB,cAAc,iBAAiB;AAGrD,mBAAiB,aAAa;AAE9B,QAAM,kBAAkB,cAAgC,EAAK;AAE7D,MAAI,qBAA0C;AAI9C,QAAM,OAAqB,IAAI,MAAM,CAAC,GAAY;AAAA,IAChD,IAAI,GAAG,KAAK;AACV,UAAI,uBAAuB;AACzB,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAEF,aAAO,QAAQ,IAAI,oBAAoB,KAAK,kBAAkB;AAAA,IAChE;AAAA,EACF,CAAC,GAEK,aAAa,cAAgC,QAAQ,IAAI,GAEzD,kBAAkB,cAAwB,CAAC,CAAa,GAExD,WAAW,eAAuB;AAAA,IACtC;AAAA,IACA;AAAA,EACF,CAAC;AAID,WAAS,cACP,OACA,SACA,UAAU,OAAO,UAAY,KAC7B,QAAQ,IACQ;AAChB,UAAM,cAAc,IAAI,eAAe,GACjC,UAAU,OAAuB,IAAI,GAErC,UAAU,mBADC,KAC0B,GAKrC,OADO,QAAQ,GACF,MAAM,QAEnB,CAAC,MAAM,MAAM,IAAI;AAAA,MACrB;AAAA,MACA,EAAE,SAAyB,KAAK;AAAA,MAChC,EAAE,SAAS,GAAQ,CAAC,eAAe,WAAW,WAAW,SAAS;AAAA,IACpE;AAMA,QAJI,SACF,QAAQ,KAAK,mBAAmB,EAAE,OAAO,SAAS,MAAM,OAAO,CAAC,GAG9D,CAAC,QAAS,QAAO;AAGrB,UAAM,SAAS,OAAO,SAAS,YAAY,OAAO,EAAQ;AAE1D,WAAK,cAKD,gBAAgB,eACX,QAAQ,UAGV,QARL,QAAQ,UAAU,QACX;AAAA,EAQX;AAEA,QAAM,cAAc,CAAC;AAAA,IACnB;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,GAAG;AAAA,EACL,MAIM;AACJ,UAAM,WAAY,cAAc;AAIhC,gBAAY,QAAQ;AAIpB,UAAM,WAAW,QAAQ,MAChB,eAAe;AAAA,MACpB;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA,KAAK,mBAAmB;AAAA,IAC1B,CAAC,GAEA,CAAC,QAAQ,CAAC;AAGb,WAAI,UACK,WAIP,oBAAC,gBAAgB,UAAhB,EAAyB,OAAO,UAC/B;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,SAAQ;AAAA,QAER;AAAA,QACC,GAAG;AAAA,QAEJ;AAAA,8BAAC,mBAAgB;AAAA,UACjB,oBAAC,qBAAkB,YAAwB;AAAA,UAC1C;AAAA;AAAA;AAAA,IACH,GACF;AAAA,EAEJ,GAEM,kBAAkB,MAAM;AAC5B,UAAM,eAAe,QAA8B;AAQnD,WAAI,iBAAiB,uBACnB,qBAAqB,cAErB,UAAU,CAAC,OAAO,YAAY,aAAa,IAAI,OAAc,OAAO,CAAC,IAGhE;AAAA,EACT,GAGM,oBAAoB;AAAA,IACxB,CAAC;AAAA,MACC,YAAAA;AAAA,IACF,MAEM;AACJ,YAAM,QAAQ,mBAAmB,GAC3B,YAAY,OAAO,MAAM,IAAI;AAEnC,uBAAU,MAAM;AACd,YAAI,MAAM,SAAS,UAAU,SAAS;AACpC,gBAAM,SAAS,YAAY,QAAQ,MAAM,SAAS;AAGlD,cAFA,UAAU,UAAU,MAAM,MAEtB,MAAM,SAAS,WAAW,MAAM,SAAS,cAAc;AACzD,kBAAM,UAAU,OAAO,UAAW,WAAW,SAAS,MAAM;AAC5D,YAAAA,YAAW,KAAK;AAAA,cACd,MAAM;AAAA,cACN;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF,GAAG,CAAC,OAAOA,WAAU,CAAC,GAEf;AAAA,IACT;AAAA,EACF;AAaA,WAAS,QACP,OACA,iBACA,YACkD;AAClD,UAAM,YACJ,eAAe,UAAc,mBAAmB,EAAE,SAAS,kBACvD,SAAS,YAAY,kBAAkB,QACvC,UAAU,YAAY,aAAa,iBAEnC,eAAe,aAAa,EAAE,eAAe,IAAI,OAAO,OAAO,CAAC;AACtE,WAAO,KAAK,QAAQ,cAAqB,OAAO;AAAA,EAClD;AASA,WAAS,SAAS,IAAS,QAAc;AACvC,WAAO,aAAa,EAAE,eAAe,IAAI,OAAO,CAAC;AAAA,EACnD;AAEA,WAAS,eAAe;AAAA,IACtB;AAAA,IACA,SAAS;AAAA,IACT,eAAe;AAAA,EACjB,GAIG;AACD,UAAM,OAAyB,WAAW,WAAW,KAAQ;AAC7D,WAAO,oBAAC,gBAAgB,UAAhB,EAAyB,OAAO,MAAO,UAAS;AAAA,EAC1D;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
5
- "names": ["zeroEvents"]
6
- }
@@ -1,192 +0,0 @@
1
- import { mustGetQuery } from "@rocicorp/zero";
2
- import { PushProcessor } from "@rocicorp/zero/pg";
3
- import { handleQueryRequest as zeroHandleQueryRequest } from "@rocicorp/zero/server";
4
- import { zeroNodePg } from "@rocicorp/zero/server/adapters/pg";
5
- import { assertString } from "@take-out/helpers";
6
- import { Pool } from "pg";
7
- import { createPermissions } from "./createPermissions";
8
- import { createMutators } from "./helpers/createMutators";
9
- import {
10
- getScopedAuthData,
11
- isInZeroMutation,
12
- mutatorContext,
13
- runWithAuthScope
14
- } from "./helpers/mutatorContext";
15
- import { runWithQueryContext } from "./helpers/queryContext";
16
- import { getMutationsPermissions } from "./modelRegistry";
17
- import { setCustomQueries } from "./run";
18
- import { getZQL, setEnvironment, setSchema } from "./state";
19
- import { setEvaluatingPermission } from "./where";
20
- import { setRunner } from "./zeroRunner";
21
- function createZeroServer({
22
- createServerActions,
23
- database,
24
- pool: externalPool,
25
- schema,
26
- models,
27
- queries,
28
- mutations: mutationValidators,
29
- validateQuery,
30
- validateMutation,
31
- defaultAllowAdminRole = "all",
32
- defaultMutateAuthData = {}
33
- }) {
34
- setSchema(schema), setEnvironment("server");
35
- let pool;
36
- if (externalPool)
37
- pool = externalPool;
38
- else {
39
- const dbString = assertString(database, 'createZeroServer "database"'), pgPool = new Pool({
40
- connectionString: dbString,
41
- // handle self-signed certificates in production
42
- ssl: dbString.includes("sslmode=require") ? { rejectUnauthorized: !1 } : void 0
43
- });
44
- pgPool.on("error", (error) => {
45
- console.error("[on-zero] pool error", error.message);
46
- }), pgPool.on("connect", (client) => {
47
- client.on("error", (error) => {
48
- console.error("[on-zero] client error", error.message);
49
- });
50
- }), pool = pgPool;
51
- }
52
- const zeroDb = zeroNodePg(schema, pool), permissions = createPermissions({
53
- environment: "server",
54
- schema,
55
- adminRoleMode: defaultAllowAdminRole
56
- }), processor = new PushProcessor(zeroDb), handleMutationRequest = async ({
57
- authData,
58
- request,
59
- skipAsyncTasks
60
- }) => {
61
- const asyncTasks = [], mutators = createMutators({
62
- asyncTasks,
63
- can: permissions.can,
64
- createServerActions,
65
- environment: "server",
66
- models,
67
- authData,
68
- validateMutation,
69
- mutationValidators
70
- }), response = await processor.process(mutators, request);
71
- return !skipAsyncTasks && asyncTasks.length && Promise.all(asyncTasks.map((task) => runWithAuthScope(authData, task))).catch(
72
- (err) => {
73
- console.error("[push] async tasks failed", err);
74
- }
75
- ), {
76
- response,
77
- asyncTasks
78
- };
79
- }, handleQueryRequest = async ({
80
- authData,
81
- request
82
- }) => {
83
- if (!queries)
84
- throw new Error(
85
- "No queries registered with createZeroServer. Pass the syncedQueries registry to createZeroServer via the queries option."
86
- );
87
- return {
88
- response: await runWithQueryContext(
89
- { authData: authData || {} },
90
- () => zeroHandleQueryRequest(
91
- (name, args) => {
92
- if (name.startsWith("permission.")) {
93
- const table = name.slice(11), { objOrId } = args, perm = getMutationsPermissions(table);
94
- if (!perm)
95
- throw new Error(`[permission] no permission defined for table: ${table}`);
96
- setEvaluatingPermission(!0);
97
- try {
98
- return getZQL()[table].where((eb) => permissions.buildPermissionQuery(
99
- authData,
100
- eb,
101
- perm,
102
- objOrId,
103
- table
104
- )).one();
105
- } finally {
106
- setEvaluatingPermission(!1);
107
- }
108
- }
109
- return validateQuery && validateQuery({ authData, queryName: name, params: args }), mustGetQuery(queries, name).fn({ args, ctx: authData });
110
- },
111
- schema,
112
- request
113
- )
114
- )
115
- };
116
- };
117
- async function runMutate(modelName, mutatorName, mutatorArg, options) {
118
- let authData = options?.authData;
119
- if (!authData) {
120
- const scoped = getScopedAuthData();
121
- scoped && (authData = scoped);
122
- }
123
- const asyncTasks = [], mutator = createMutators({
124
- models,
125
- environment: "server",
126
- asyncTasks,
127
- authData: {
128
- ...defaultMutateAuthData,
129
- ...authData
130
- },
131
- createServerActions,
132
- can: permissions.can,
133
- validateMutation,
134
- mutationValidators
135
- })[modelName][mutatorName];
136
- if (await transaction(async (tx) => {
137
- await mutator(tx, mutatorArg);
138
- }), asyncTasks.length) {
139
- const resolvedAuth = authData ?? null, promise = Promise.all(
140
- asyncTasks.map((t) => runWithAuthScope(resolvedAuth, t))
141
- );
142
- options?.awaitEffects ? await promise : promise.catch((err) => {
143
- console.error("[mutate] async tasks failed", err);
144
- });
145
- }
146
- }
147
- const mutate = new Proxy({}, {
148
- get(_, modelName) {
149
- return new Proxy(
150
- {},
151
- {
152
- get(_2, mutatorName) {
153
- return (arg, options) => runMutate(modelName, mutatorName, arg, options);
154
- }
155
- }
156
- );
157
- }
158
- });
159
- async function transaction(query2) {
160
- try {
161
- if (isInZeroMutation()) {
162
- const { tx } = mutatorContext();
163
- return await query2(tx);
164
- }
165
- return await zeroDb.transaction(query2, dummyTransactionInput);
166
- } catch (err) {
167
- throw err?.name !== "PermissionError" && console.error(`Error running transaction(): ${err}`), err;
168
- }
169
- }
170
- function query(cb, authData) {
171
- const run = () => transaction(async (tx) => tx.run(cb(getZQL())));
172
- return authData !== void 0 ? runWithQueryContext({ authData }, run) : run();
173
- }
174
- queries && setCustomQueries(queries), setRunner((queryObj) => transaction(async (tx) => tx.run(queryObj)));
175
- const dummyTransactionInput = {
176
- clientGroupID: "unused",
177
- clientID: "unused",
178
- mutationID: 42,
179
- upstreamSchema: "unused"
180
- };
181
- return {
182
- handleMutationRequest,
183
- handleQueryRequest,
184
- transaction,
185
- mutate,
186
- query
187
- };
188
- }
189
- export {
190
- createZeroServer
191
- };
192
- //# sourceMappingURL=createZeroServer.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/createZeroServer.ts"],
4
- "mappings": "AAAA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB,8BAA8B;AAC7D,SAAS,kBAA0C;AACnD,SAAS,oBAAoB;AAC7B,SAAS,YAAY;AAErB,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,2BAA2B;AACpC,SAAS,+BAA+B;AACxC,SAAS,wBAAwB;AACjC,SAAS,QAAQ,gBAAgB,iBAAiB;AAClD,SAAS,+BAA+B;AACxC,SAAS,iBAAiB;AAqDnB,SAAS,iBAId;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,EACxB,wBAAwB,CAAC;AAC3B,GA4CG;AACD,YAAU,MAAM,GAChB,eAAe,QAAQ;AAEvB,MAAI;AACJ,MAAI;AACF,WAAO;AAAA,OACF;AACL,UAAM,WAAW,aAAa,UAAU,6BAA6B,GAC/D,SAAS,IAAI,KAAK;AAAA,MACtB,kBAAkB;AAAA;AAAA,MAElB,KAAK,SAAS,SAAS,iBAAiB,IACpC,EAAE,oBAAoB,GAAM,IAC5B;AAAA,IACN,CAAC;AACD,WAAO,GAAG,SAAS,CAAC,UAAU;AAC5B,cAAQ,MAAM,wBAAwB,MAAM,OAAO;AAAA,IACrD,CAAC,GACD,OAAO,GAAG,WAAW,CAAC,WAAW;AAC/B,aAAO,GAAG,SAAS,CAAC,UAAU;AAC5B,gBAAQ,MAAM,0BAA0B,MAAM,OAAO;AAAA,MACvD,CAAC;AAAA,IACH,CAAC,GACD,OAAO;AAAA,EACT;AAEA,QAAM,SAAS,WAAW,QAAQ,IAAI,GAEhC,cAAc,kBAA0B;AAAA,IAC5C,aAAa;AAAA,IACb;AAAA,IACA,eAAe;AAAA,EACjB,CAAC,GAEK,YAAY,IAAI,cAAc,MAAM,GAEpC,wBAAwB,OAAO;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,EACF,MAIM;AAEJ,UAAM,aAA4B,CAAC,GAE7B,WAAW,eAAe;AAAA,MAC9B;AAAA,MACA,KAAK,YAAY;AAAA,MACjB;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GAGK,WAAW,MAAM,UAAU,QAAQ,UAAU,OAAO;AAG1D,WAAI,CAAC,kBAAkB,WAAW,UAChC,QAAQ,IAAI,WAAW,IAAI,CAAC,SAAS,iBAAiB,UAAU,IAAI,CAAC,CAAC,EAAE;AAAA,MACtE,CAAC,QAAQ;AACP,gBAAQ,MAAM,6BAA6B,GAAG;AAAA,MAChD;AAAA,IACF,GAGK;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF,GAEM,qBAAqB,OAAO;AAAA,IAChC;AAAA,IACA;AAAA,EACF,MAGM;AACJ,QAAI,CAAC;AACH,YAAM,IAAI;AAAA,QACR;AAAA,MAEF;AAmDF,WAAO;AAAA,MACL,UAjDe,MAAM;AAAA,QACrB,EAAE,UAAU,YAAa,CAAC,EAAe;AAAA,QACzC,MACE;AAAA,UACE,CAAC,MAAM,SAAS;AAEd,gBAAI,KAAK,WAAW,aAAa,GAAG;AAClC,oBAAM,QAAQ,KAAK,MAAM,EAAoB,GACvC,EAAE,QAAQ,IAAI,MAGd,OAAO,wBAAwB,KAAK;AAC1C,kBAAI,CAAC;AACH,sBAAM,IAAI,MAAM,iDAAiD,KAAK,EAAE;AAI1E,sCAAwB,EAAI;AAC5B,kBAAI;AACF,uBAAQ,OAAO,EAAU,KAAK,EAC3B,MAAM,CAAC,OACC,YAAY;AAAA,kBACjB;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CACD,EACA,IAAI;AAAA,cACT,UAAE;AACA,wCAAwB,EAAK;AAAA,cAC/B;AAAA,YACF;AAGA,mBAAI,iBACF,cAAc,EAAE,UAAU,WAAW,MAAM,QAAQ,KAAK,CAAC,GAG5C,aAAqB,SAAS,IAAI,EACpC,GAAG,EAAE,MAAM,KAAK,SAAS,CAAC;AAAA,UACzC;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACJ;AAAA,IAIA;AAAA,EACF;AAEA,iBAAe,UACb,WACA,aACA,YACA,SACA;AACA,QAAI,WAAW,SAAS;AAGxB,QAAI,CAAC,UAAU;AACb,YAAM,SAAS,kBAAkB;AACjC,MAAI,WACF,WAAW;AAAA,IAEf;AAEA,UAAM,aAAyC,CAAC,GAoB1C,UAlBW,eAAe;AAAA,MAC9B;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA,UAAU;AAAA,QACR,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA;AAAA,MACA,KAAK,YAAY;AAAA,MACjB;AAAA,MACA;AAAA,IACF,CAAC,EAE8B,SAAkC,EAInC,WAAW;AAMzC,QAJA,MAAM,YAAY,OAAO,OAAO;AAC9B,YAAM,QAAQ,IAAI,UAAU;AAAA,IAC9B,CAAC,GAEG,WAAW,QAAQ;AACrB,YAAM,eAAe,YAAY,MAC3B,UAAU,QAAQ;AAAA,QACtB,WAAW,IAAI,CAAC,MAAM,iBAAiB,cAAc,CAAC,CAAC;AAAA,MACzD;AACA,MAAI,SAAS,eACX,MAAM,UAEN,QAAQ,MAAM,CAAC,QAAQ;AACrB,gBAAQ,MAAM,+BAA+B,GAAG;AAAA,MAClD,CAAC;AAAA,IAEL;AAAA,EACF;AAGA,QAAM,SAAS,IAAI,MAAM,CAAC,GAA2B;AAAA,IACnD,IAAI,GAAG,WAAmB;AACxB,aAAO,IAAI;AAAA,QACT,CAAC;AAAA,QACD;AAAA,UACE,IAAIA,IAAG,aAAqB;AAC1B,mBAAO,CAAC,KAAc,YACpB,UAAU,WAAW,aAAa,KAAK,OAAO;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,iBAAe,YAGbC,QAA6B;AAC7B,QAAI;AACF,UAAI,iBAAiB,GAAG;AACtB,cAAM,EAAE,GAAG,IAAI,eAAe;AAC9B,eAAO,MAAMA,OAAM,EAAE;AAAA,MACvB;AAGA,aADe,MAAM,OAAO,YAAYA,QAAO,qBAAqB;AAAA,IAEtE,SAAS,KAAK;AACZ,YAAK,KAAa,SAAS,qBACzB,QAAQ,MAAM,gCAAgC,GAAG,EAAE,GAE/C;AAAA,IACR;AAAA,EACF;AAEA,WAAS,MACP,IACA,UAC2B;AAC3B,UAAM,MAAM,MACV,YAAY,OAAO,OACV,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,CAC3B;AAEH,WAAI,aAAa,SACR,oBAAoB,EAAE,SAAS,GAAG,GAAG,IAEvC,IAAI;AAAA,EACb;AAGA,EAAI,WACF,iBAAiB,OAAO,GAI1B,UAAU,CAAC,aACF,YAAY,OAAO,OACjB,GAAG,IAAI,QAAQ,CACvB,CACF;AAGD,QAAM,wBAAkD;AAAA,IACtD,eAAe;AAAA,IACf,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAClB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
5
- "names": ["_", "query"]
6
- }