over-zero 0.0.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 (259) hide show
  1. package/dist/cjs/build/readPermissions.cjs +51 -0
  2. package/dist/cjs/build/readPermissions.js +48 -0
  3. package/dist/cjs/build/readPermissions.js.map +6 -0
  4. package/dist/cjs/build/readPermissions.native.js +56 -0
  5. package/dist/cjs/build/readPermissions.native.js.map +6 -0
  6. package/dist/cjs/build/schema.cjs +28 -0
  7. package/dist/cjs/build/schema.js +22 -0
  8. package/dist/cjs/build/schema.js.map +6 -0
  9. package/dist/cjs/build/schema.native.js +28 -0
  10. package/dist/cjs/build/schema.native.js.map +6 -0
  11. package/dist/cjs/createClient.cjs +89 -0
  12. package/dist/cjs/createClient.js +76 -0
  13. package/dist/cjs/createClient.js.map +6 -0
  14. package/dist/cjs/createClient.native.js +81 -0
  15. package/dist/cjs/createClient.native.js.map +6 -0
  16. package/dist/cjs/createMutations.cjs +50 -0
  17. package/dist/cjs/createMutations.js +43 -0
  18. package/dist/cjs/createMutations.js.map +6 -0
  19. package/dist/cjs/createMutations.native.js +50 -0
  20. package/dist/cjs/createMutations.native.js.map +6 -0
  21. package/dist/cjs/createPermissions.cjs +128 -0
  22. package/dist/cjs/createPermissions.js +121 -0
  23. package/dist/cjs/createPermissions.js.map +6 -0
  24. package/dist/cjs/createPermissions.native.js +135 -0
  25. package/dist/cjs/createPermissions.native.js.map +6 -0
  26. package/dist/cjs/createServer.cjs +92 -0
  27. package/dist/cjs/createServer.js +71 -0
  28. package/dist/cjs/createServer.js.map +6 -0
  29. package/dist/cjs/createServer.native.js +75 -0
  30. package/dist/cjs/createServer.native.js.map +6 -0
  31. package/dist/cjs/helpers/batchQuery.cjs +49 -0
  32. package/dist/cjs/helpers/batchQuery.js +38 -0
  33. package/dist/cjs/helpers/batchQuery.js.map +6 -0
  34. package/dist/cjs/helpers/batchQuery.native.js +42 -0
  35. package/dist/cjs/helpers/batchQuery.native.js.map +6 -0
  36. package/dist/cjs/helpers/clearZeroDatabase.cjs +57 -0
  37. package/dist/cjs/helpers/clearZeroDatabase.js +57 -0
  38. package/dist/cjs/helpers/clearZeroDatabase.js.map +6 -0
  39. package/dist/cjs/helpers/clearZeroDatabase.native.js +71 -0
  40. package/dist/cjs/helpers/clearZeroDatabase.native.js.map +6 -0
  41. package/dist/cjs/helpers/context.cjs +40 -0
  42. package/dist/cjs/helpers/context.js +36 -0
  43. package/dist/cjs/helpers/context.js.map +6 -0
  44. package/dist/cjs/helpers/context.native.js +42 -0
  45. package/dist/cjs/helpers/context.native.js.map +6 -0
  46. package/dist/cjs/helpers/createMutators.cjs +87 -0
  47. package/dist/cjs/helpers/createMutators.js +81 -0
  48. package/dist/cjs/helpers/createMutators.js.map +6 -0
  49. package/dist/cjs/helpers/createMutators.native.js +116 -0
  50. package/dist/cjs/helpers/createMutators.native.js.map +6 -0
  51. package/dist/cjs/helpers/ensureLoggedIn.cjs +33 -0
  52. package/dist/cjs/helpers/ensureLoggedIn.js +25 -0
  53. package/dist/cjs/helpers/ensureLoggedIn.js.map +6 -0
  54. package/dist/cjs/helpers/ensureLoggedIn.native.js +29 -0
  55. package/dist/cjs/helpers/ensureLoggedIn.native.js.map +6 -0
  56. package/dist/cjs/helpers/getAuthData.cjs +36 -0
  57. package/dist/cjs/helpers/getAuthData.js +29 -0
  58. package/dist/cjs/helpers/getAuthData.js.map +6 -0
  59. package/dist/cjs/helpers/getAuthData.native.js +33 -0
  60. package/dist/cjs/helpers/getAuthData.native.js.map +6 -0
  61. package/dist/cjs/helpers/prettyFormatZeroQuery.cjs +107 -0
  62. package/dist/cjs/helpers/prettyFormatZeroQuery.js +92 -0
  63. package/dist/cjs/helpers/prettyFormatZeroQuery.js.map +6 -0
  64. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js +99 -0
  65. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js.map +6 -0
  66. package/dist/cjs/helpers/setupZeroClientGlobalEffects.cjs +40 -0
  67. package/dist/cjs/helpers/setupZeroClientGlobalEffects.js +36 -0
  68. package/dist/cjs/helpers/setupZeroClientGlobalEffects.js.map +6 -0
  69. package/dist/cjs/helpers/setupZeroClientGlobalEffects.native.js +36 -0
  70. package/dist/cjs/helpers/setupZeroClientGlobalEffects.native.js.map +6 -0
  71. package/dist/cjs/helpers/useAuthData.cjs +32 -0
  72. package/dist/cjs/helpers/useAuthData.js +25 -0
  73. package/dist/cjs/helpers/useAuthData.js.map +6 -0
  74. package/dist/cjs/helpers/useAuthData.native.js +33 -0
  75. package/dist/cjs/helpers/useAuthData.native.js.map +6 -0
  76. package/dist/cjs/helpers/useZDB.cjs +70 -0
  77. package/dist/cjs/helpers/useZDB.js +51 -0
  78. package/dist/cjs/helpers/useZDB.js.map +6 -0
  79. package/dist/cjs/helpers/useZDB.native.js +68 -0
  80. package/dist/cjs/helpers/useZDB.native.js.map +6 -0
  81. package/dist/cjs/helpers/zeroEmitter.cjs +27 -0
  82. package/dist/cjs/helpers/zeroEmitter.js +22 -0
  83. package/dist/cjs/helpers/zeroEmitter.js.map +6 -0
  84. package/dist/cjs/helpers/zeroEmitter.native.js +26 -0
  85. package/dist/cjs/helpers/zeroEmitter.native.js.map +6 -0
  86. package/dist/cjs/index.cjs +23 -0
  87. package/dist/cjs/index.js +20 -0
  88. package/dist/cjs/index.js.map +6 -0
  89. package/dist/cjs/index.native.js +30 -0
  90. package/dist/cjs/index.native.js.map +6 -0
  91. package/dist/cjs/types.cjs +16 -0
  92. package/dist/cjs/types.js +14 -0
  93. package/dist/cjs/types.js.map +6 -0
  94. package/dist/cjs/types.native.js +15 -0
  95. package/dist/cjs/types.native.js.map +6 -0
  96. package/dist/esm/build/readPermissions.js +36 -0
  97. package/dist/esm/build/readPermissions.js.map +6 -0
  98. package/dist/esm/build/readPermissions.mjs +28 -0
  99. package/dist/esm/build/readPermissions.mjs.map +1 -0
  100. package/dist/esm/build/readPermissions.native.js +34 -0
  101. package/dist/esm/build/readPermissions.native.js.map +1 -0
  102. package/dist/esm/build/schema.js +7 -0
  103. package/dist/esm/build/schema.js.map +6 -0
  104. package/dist/esm/build/schema.mjs +4 -0
  105. package/dist/esm/build/schema.mjs.map +1 -0
  106. package/dist/esm/build/schema.native.js +4 -0
  107. package/dist/esm/build/schema.native.js.map +1 -0
  108. package/dist/esm/createClient.js +68 -0
  109. package/dist/esm/createClient.js.map +6 -0
  110. package/dist/esm/createClient.mjs +66 -0
  111. package/dist/esm/createClient.mjs.map +1 -0
  112. package/dist/esm/createClient.native.js +74 -0
  113. package/dist/esm/createClient.native.js.map +1 -0
  114. package/dist/esm/createMutations.js +27 -0
  115. package/dist/esm/createMutations.js.map +6 -0
  116. package/dist/esm/createMutations.mjs +27 -0
  117. package/dist/esm/createMutations.mjs.map +1 -0
  118. package/dist/esm/createMutations.native.js +29 -0
  119. package/dist/esm/createMutations.native.js.map +1 -0
  120. package/dist/esm/createPermissions.js +106 -0
  121. package/dist/esm/createPermissions.js.map +6 -0
  122. package/dist/esm/createPermissions.mjs +105 -0
  123. package/dist/esm/createPermissions.mjs.map +1 -0
  124. package/dist/esm/createPermissions.native.js +129 -0
  125. package/dist/esm/createPermissions.native.js.map +1 -0
  126. package/dist/esm/createServer.js +54 -0
  127. package/dist/esm/createServer.js.map +6 -0
  128. package/dist/esm/createServer.mjs +58 -0
  129. package/dist/esm/createServer.mjs.map +1 -0
  130. package/dist/esm/createServer.native.js +61 -0
  131. package/dist/esm/createServer.native.js.map +1 -0
  132. package/dist/esm/helpers/batchQuery.js +22 -0
  133. package/dist/esm/helpers/batchQuery.js.map +6 -0
  134. package/dist/esm/helpers/batchQuery.mjs +26 -0
  135. package/dist/esm/helpers/batchQuery.mjs.map +1 -0
  136. package/dist/esm/helpers/batchQuery.native.js +23 -0
  137. package/dist/esm/helpers/batchQuery.native.js.map +1 -0
  138. package/dist/esm/helpers/clearZeroDatabase.js +42 -0
  139. package/dist/esm/helpers/clearZeroDatabase.js.map +6 -0
  140. package/dist/esm/helpers/clearZeroDatabase.mjs +34 -0
  141. package/dist/esm/helpers/clearZeroDatabase.mjs.map +1 -0
  142. package/dist/esm/helpers/clearZeroDatabase.native.js +50 -0
  143. package/dist/esm/helpers/clearZeroDatabase.native.js.map +1 -0
  144. package/dist/esm/helpers/context.js +20 -0
  145. package/dist/esm/helpers/context.js.map +6 -0
  146. package/dist/esm/helpers/context.mjs +15 -0
  147. package/dist/esm/helpers/context.mjs.map +1 -0
  148. package/dist/esm/helpers/context.native.js +15 -0
  149. package/dist/esm/helpers/context.native.js.map +1 -0
  150. package/dist/esm/helpers/createMutators.js +69 -0
  151. package/dist/esm/helpers/createMutators.js.map +6 -0
  152. package/dist/esm/helpers/createMutators.mjs +64 -0
  153. package/dist/esm/helpers/createMutators.mjs.map +1 -0
  154. package/dist/esm/helpers/createMutators.native.js +101 -0
  155. package/dist/esm/helpers/createMutators.native.js.map +1 -0
  156. package/dist/esm/helpers/ensureLoggedIn.js +10 -0
  157. package/dist/esm/helpers/ensureLoggedIn.js.map +6 -0
  158. package/dist/esm/helpers/ensureLoggedIn.mjs +10 -0
  159. package/dist/esm/helpers/ensureLoggedIn.mjs.map +1 -0
  160. package/dist/esm/helpers/ensureLoggedIn.native.js +10 -0
  161. package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -0
  162. package/dist/esm/helpers/getAuthData.js +13 -0
  163. package/dist/esm/helpers/getAuthData.js.map +6 -0
  164. package/dist/esm/helpers/getAuthData.mjs +13 -0
  165. package/dist/esm/helpers/getAuthData.mjs.map +1 -0
  166. package/dist/esm/helpers/getAuthData.native.js +13 -0
  167. package/dist/esm/helpers/getAuthData.native.js.map +1 -0
  168. package/dist/esm/helpers/prettyFormatZeroQuery.js +76 -0
  169. package/dist/esm/helpers/prettyFormatZeroQuery.js.map +6 -0
  170. package/dist/esm/helpers/prettyFormatZeroQuery.mjs +84 -0
  171. package/dist/esm/helpers/prettyFormatZeroQuery.mjs.map +1 -0
  172. package/dist/esm/helpers/prettyFormatZeroQuery.native.js +93 -0
  173. package/dist/esm/helpers/prettyFormatZeroQuery.native.js.map +1 -0
  174. package/dist/esm/helpers/setupZeroClientGlobalEffects.js +40 -0
  175. package/dist/esm/helpers/setupZeroClientGlobalEffects.js.map +6 -0
  176. package/dist/esm/helpers/setupZeroClientGlobalEffects.mjs +41 -0
  177. package/dist/esm/helpers/setupZeroClientGlobalEffects.mjs.map +1 -0
  178. package/dist/esm/helpers/setupZeroClientGlobalEffects.native.js +41 -0
  179. package/dist/esm/helpers/setupZeroClientGlobalEffects.native.js.map +1 -0
  180. package/dist/esm/helpers/useAuthData.js +11 -0
  181. package/dist/esm/helpers/useAuthData.js.map +6 -0
  182. package/dist/esm/helpers/useAuthData.mjs +9 -0
  183. package/dist/esm/helpers/useAuthData.mjs.map +1 -0
  184. package/dist/esm/helpers/useAuthData.native.js +13 -0
  185. package/dist/esm/helpers/useAuthData.native.js.map +1 -0
  186. package/dist/esm/helpers/useZDB.js +38 -0
  187. package/dist/esm/helpers/useZDB.js.map +6 -0
  188. package/dist/esm/helpers/useZDB.mjs +47 -0
  189. package/dist/esm/helpers/useZDB.mjs.map +1 -0
  190. package/dist/esm/helpers/useZDB.native.js +55 -0
  191. package/dist/esm/helpers/useZDB.native.js.map +1 -0
  192. package/dist/esm/helpers/zeroEmitter.js +6 -0
  193. package/dist/esm/helpers/zeroEmitter.js.map +6 -0
  194. package/dist/esm/helpers/zeroEmitter.mjs +4 -0
  195. package/dist/esm/helpers/zeroEmitter.mjs.map +1 -0
  196. package/dist/esm/helpers/zeroEmitter.native.js +4 -0
  197. package/dist/esm/helpers/zeroEmitter.native.js.map +1 -0
  198. package/dist/esm/index.js +7 -0
  199. package/dist/esm/index.js.map +6 -0
  200. package/dist/esm/index.mjs +7 -0
  201. package/dist/esm/index.mjs.map +1 -0
  202. package/dist/esm/index.native.js +7 -0
  203. package/dist/esm/index.native.js.map +1 -0
  204. package/dist/esm/types.js +1 -0
  205. package/dist/esm/types.js.map +6 -0
  206. package/dist/esm/types.mjs +2 -0
  207. package/dist/esm/types.mjs.map +1 -0
  208. package/dist/esm/types.native.js +2 -0
  209. package/dist/esm/types.native.js.map +1 -0
  210. package/package.json +51 -0
  211. package/readme.md +16 -0
  212. package/src/createPermissions.ts +281 -0
  213. package/src/createZeroClient.tsx +191 -0
  214. package/src/createZeroServer.ts +153 -0
  215. package/src/helpers/batchQuery.ts +45 -0
  216. package/src/helpers/clearZeroDatabase.ts +68 -0
  217. package/src/helpers/context.ts +28 -0
  218. package/src/helpers/createMutators.ts +139 -0
  219. package/src/helpers/ensureLoggedIn.ts +8 -0
  220. package/src/helpers/getAuthData.tsx +12 -0
  221. package/src/helpers/prettyFormatZeroQuery.ts +167 -0
  222. package/src/helpers/useAuthData.ts +13 -0
  223. package/src/helpers/useZeroDebug.ts +104 -0
  224. package/src/helpers/zeroEmitter.ts +5 -0
  225. package/src/index.ts +15 -0
  226. package/src/mutations.ts +121 -0
  227. package/src/types.ts +49 -0
  228. package/types/createMutations.d.ts +20 -0
  229. package/types/createMutations.d.ts.map +1 -0
  230. package/types/createPermissions.d.ts +37 -0
  231. package/types/createPermissions.d.ts.map +1 -0
  232. package/types/createZeroClient.d.ts +45 -0
  233. package/types/createZeroClient.d.ts.map +1 -0
  234. package/types/createZeroServer.d.ts +61 -0
  235. package/types/createZeroServer.d.ts.map +1 -0
  236. package/types/helpers/batchQuery.d.ts +7 -0
  237. package/types/helpers/batchQuery.d.ts.map +1 -0
  238. package/types/helpers/clearZeroDatabase.d.ts +2 -0
  239. package/types/helpers/clearZeroDatabase.d.ts.map +1 -0
  240. package/types/helpers/context.d.ts +5 -0
  241. package/types/helpers/context.d.ts.map +1 -0
  242. package/types/helpers/createMutators.d.ts +16 -0
  243. package/types/helpers/createMutators.d.ts.map +1 -0
  244. package/types/helpers/ensureLoggedIn.d.ts +2 -0
  245. package/types/helpers/ensureLoggedIn.d.ts.map +1 -0
  246. package/types/helpers/getAuthData.d.ts +1 -0
  247. package/types/helpers/getAuthData.d.ts.map +1 -0
  248. package/types/helpers/prettyFormatZeroQuery.d.ts +3 -0
  249. package/types/helpers/prettyFormatZeroQuery.d.ts.map +1 -0
  250. package/types/helpers/useAuthData.d.ts +1 -0
  251. package/types/helpers/useAuthData.d.ts.map +1 -0
  252. package/types/helpers/useZeroDebug.d.ts +3 -0
  253. package/types/helpers/useZeroDebug.d.ts.map +1 -0
  254. package/types/helpers/zeroEmitter.d.ts +2 -0
  255. package/types/helpers/zeroEmitter.d.ts.map +1 -0
  256. package/types/index.d.ts +9 -0
  257. package/types/index.d.ts.map +1 -0
  258. package/types/types.d.ts +21 -0
  259. package/types/types.d.ts.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useZero","ZeroProvider","useQuery","zeroUseQuery","mapObject","useMemo","createPermissions","context","createMutators","useZDB","zeroEmitter","jsx","jsxs","createZero","schema","models","disable","modelPermissions","val","permissions","modelMutators","mutate","permissionsHelpers","latestZeroInstance","zero","Proxy","get","_","key","Reflect","query","options","type","out","process","env","NODE_ENV","ProvideZero","children","authData","props","mutators","environment","kvStore","onError","error","console","emit","message","SetZeroInstance","zero2"],"sources":["../../src/createClient.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,OAAA,EAASC,YAAA,EAAcC,QAAA,IAAYC,YAAA,QAAoB;AAChE,SAASC,SAAA,QAAiB;AAC1B,SAASC,OAAA,QAA+B;AACxC,SAASC,iBAAA,QAAyB;AAClC,SAASC,OAAA,QAAe;AACxB,SAASC,cAAA,QAAsB;AAC/B,SAASC,MAAA,QAAc;AACvB,SAASC,WAAA,QAAmB;AA2EtB,SAaEC,GAAA,EAbFC,IAAA;AAzEC,SAASC,WAA6B;EAC3CC,MAAA;EACAC,MAAA;EACAC;AACF,GAIG;EAGD,MAAMC,gBAAA,GAAmBb,SAAA,CAAUW,MAAA,EAASG,GAAA,IAAQA,GAAA,CAAIC,WAAW;IAI7DC,aAAA,GAAgBhB,SAAA,CAAUW,MAAA,EAASG,GAAA,IAAQA,GAAA,CAAIG,MAAM;IAIrDC,kBAAA,GAAqBhB,iBAAA,CAAgCQ,MAAA,EAAQP,OAAO;EAS1E,IAAIgB,kBAAA,GAA0C;EAI9C,MAAMC,IAAA,GAAqB,IAAIC,KAAA,CAAM,CAAC,GAAY;MAChDC,IAAIC,CAAA,EAAGC,GAAA,EAAK;QACV,OAAOC,OAAA,CAAQH,GAAA,CAAIH,kBAAA,EAAqBK,GAAA,EAAKL,kBAAkB;MACjE;IACF,CAAC;IAEKrB,QAAA,GAAgCA,CAAC4B,KAAA,EAAOC,OAAA,KAAY;MACxD,IAAIf,OAAA,EACF,OAAO,CAAC,MAAM;QAAEgB,IAAA,EAAM;MAAU,CAAC;MAGnC,MAAMC,GAAA,GAAM9B,YAAA,CAAa2B,KAAA,EAAOC,OAAO;MAEvC,OAAIG,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,iBAE3B3B,MAAA,CAAOqB,KAAA,EAAOC,OAAA,EAASE,GAAG,GAGrBA,GAAA;IACT;IAEMI,WAAA,GAAcA,CAAC;MACnBC,QAAA;MACAC,QAAA;MACA,GAAGC;IACL,MAGM;MACJ,MAAMC,QAAA,GAAWpC,OAAA,CAAQ,MAChBG,cAAA,CAAe;QACpBkC,WAAA,EAAa;QACbH;MACF,CAAC,GACA,CAACA,QAAQ,CAAC;MAEb,OAAIvB,OAAA,GACKsB,QAAA,GAIP,eAAA1B,IAAA,CAACX,YAAA;QACCa,MAAA;QACA6B,OAAA,EAAS;QACTC,OAAA,EAAUC,KAAA,IAAU;UAClBC,OAAA,CAAQD,KAAA,CAAM,eAAeA,KAAK,GAClCnC,WAAA,CAAYqC,IAAA,CAAK;YACff,IAAA,EAAM;YACNgB,OAAA,EAASH;UACX,CAAC;QACH;QACAJ,QAAA;QACC,GAAGD,KAAA;QAEJF,QAAA,kBAAA3B,GAAA,CAACsC,eAAA,IAAgB,GAChBX,QAAA;MAAA,CACH;IAEJ;IAEMW,eAAA,GAAkBA,CAAA,KAAM;MAC5B,MAAMC,KAAA,GAAOlD,OAAA,CAAqB;MAQlC,OAAIkD,KAAA,KAAS3B,kBAAA,KACXA,kBAAA,GAAqB2B,KAAA,GAGhB;IACT;EAEA,OAAO;IACLb,WAAA;IACAnC,QAAA;IACAsB,IAAA;IACA,GAAGF;EACL;AACF","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useZero, ZeroProvider, useQuery as zeroUseQuery } from "@rocicorp/zero/react";
3
+ import { mapObject } from "@vxrn/helpers";
4
+ import { useMemo } from "react";
5
+ import { createPermissions } from "./createPermissions.native.js";
6
+ import { context } from "./helpers/context.native.js";
7
+ import { createMutators } from "./helpers/createMutators.native.js";
8
+ import { useZDB } from "./helpers/useZDB.native.js";
9
+ import { zeroEmitter } from "./helpers/zeroEmitter.native.js";
10
+ function createZero(param) {
11
+ var {
12
+ schema,
13
+ models,
14
+ disable
15
+ } = param,
16
+ modelPermissions = mapObject(models, function (val) {
17
+ return val.permissions;
18
+ }),
19
+ modelMutators = mapObject(models, function (val) {
20
+ return val.mutate;
21
+ }),
22
+ permissionsHelpers = createPermissions(schema, context),
23
+ latestZeroInstance = null,
24
+ zero = new Proxy({}, {
25
+ get(_, key) {
26
+ return Reflect.get(latestZeroInstance, key, latestZeroInstance);
27
+ }
28
+ }),
29
+ useQuery = function (query, options) {
30
+ if (disable) return [null, {
31
+ type: "unknown"
32
+ }];
33
+ var out = zeroUseQuery(query, options);
34
+ return process.env.NODE_ENV === "development" && useZDB(query, options, out), out;
35
+ },
36
+ ProvideZero = function (param2) {
37
+ var {
38
+ children,
39
+ authData,
40
+ ...props
41
+ } = param2,
42
+ mutators = useMemo(function () {
43
+ return createMutators({
44
+ environment: "client",
45
+ authData
46
+ });
47
+ }, [authData]);
48
+ return disable ? children : /* @__PURE__ */_jsxs(ZeroProvider, {
49
+ schema,
50
+ kvStore: "mem",
51
+ onError: function (error) {
52
+ console.error("Zero Error:", error), zeroEmitter.emit({
53
+ type: "error",
54
+ message: error
55
+ });
56
+ },
57
+ mutators,
58
+ ...props,
59
+ children: [/* @__PURE__ */_jsx(SetZeroInstance, {}), children]
60
+ });
61
+ },
62
+ SetZeroInstance = function () {
63
+ var zero2 = useZero();
64
+ return zero2 !== latestZeroInstance && (latestZeroInstance = zero2), null;
65
+ };
66
+ return {
67
+ ProvideZero,
68
+ useQuery,
69
+ zero,
70
+ ...permissionsHelpers
71
+ };
72
+ }
73
+ export { createZero };
74
+ //# sourceMappingURL=createClient.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","useZero","ZeroProvider","useQuery","zeroUseQuery","mapObject","useMemo","createPermissions","context","createMutators","useZDB","zeroEmitter","createZero","param","schema","models","disable","modelPermissions","val","permissions","modelMutators","mutate","permissionsHelpers","latestZeroInstance","zero","Proxy","get","_","key","Reflect","query","options","type","out","process","env","NODE_ENV","ProvideZero","param2","children","authData","props","mutators","environment","kvStore","onError","error","console","emit","message","SetZeroInstance","zero2"],"sources":["../../src/createClient.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,GAAA,IAAAC,IAAS,EAAAC,IAAA,IAAAC,KAAc,2BAAY;AAC5C,SAASC,OAAA,EAAAC,YAAiB,EAAAC,QAAA,IAAAC,YAAA;AAC1B,SAASC,SAAA,QAA+B;AACxC,SAASC,OAAA;AACT,SAASC,iBAAe;AACxB,SAASC,OAAA,qCAAsB;AAC/B,SAASC,cAAc;AACvB,SAASC,MAAA,oCAAmB;AA2EtB,SAaEC,WAbF;AAzEC,SAASC,WAA6BC,KAAA;EAC3C;MAAAC,MAAA;MAAAC,MAAA;MAAAC;IAAA,IAAAH,KAAA;IAAAI,gBAAA,GAAAZ,SAAA,CAAAU,MAAA,YAAAG,GAAA;MACA,OAAAA,GAAA,CAAAC,WAAA;IACA;IAAAC,aAAA,GAAAf,SAAA,CAAAU,MAAA,YAAAG,GAAA;MAKC,OAAAA,GAAA,CAAAG,MAAA;IAGD;IAAAC,kBAAM,GAAmBf,iBAAU,CAAQO,MAAC,EAAAN,OAAY;IAAAe,kBAIlD,OAAgB;IAAAC,IAAA,OAAUC,KAAQ,CAAC;MAazCC,GAAIA,CAAAC,CAAA,EAAAC,GAAA;QAIJ,OAAMC,OAAyB,CAAAH,GAAA,CAAMH,kBAAa,EAAAK,GAAA,EAAAL,kBAAA;MAChD;IACE;IAAApB,QAAO,YAAAA,CAAY2B,KAAA,EAAAC,OAAA;MACrB,IAAAf,OAAA,EAGI,QACA,MACF;QAGIgB,IAAA,EAAM;MAEZ,EAQI;MACJ,IAAAC,GAAA,GAAA7B,YAAA,CAAA0B,KAAA,EAAAC,OAAA;MACA,OAAAG,OAAA,CAAAC,GAAA,CAAAC,QAAA,sBAAA1B,MAAA,CAAAoB,KAAA,EAAAC,OAAA,EAAAE,GAAA,GAAAA,GAAA;IAAA;IACAI,WAAG,YAAAA,CAAAC,MAAA;MACL,IAGM;UAAAC,QAAA;UAAAC,QAAA;UAAA,GAAAC;QAAA,IAAAH,MAAA;QAAAI,QAAA,GAAApC,OAAA;UACJ,OAAMG,cAAW;YAEbkC,WAAa;YACbH;UACD,EACA;QAEH,IAKGA,QAAA;MAAA,OACCxB,OAAA,GAAAuB,QAAA,kBAAAvC,KAAA,CAAAE,YAAA;QAAAY,MACA;QAAS8B,OACT,OAAU;QACRC,OAAA,WAAAA,CAAcC,KAAA;UACGC,OACf,CAAAD,KAAM,gBAAAA,KAAA,GAAAnC,WAAA,CAAAqC,IAAA;YAAAhB,IACN,SAAS;YACXiB,OAAC,EAAAH;UACH;QAAA;QACAJ,QACI;QAAA,GAEJD,KAAA;QAAAF,QAAA,GAAiB,eAChBzC,IAAA,CAAAoD,eAAA,OAAAX,QAAA;MACH;IAEJ;IAEMW,eAAA,GAAkB,SAAAA,CAAA,EAAM;MAC5B,IAAAC,KAAM,GAAAlD,OAAO;MAQb,OAAIkD,KAAA,KAAS5B,kBAAA,KACXA,kBAAA,GAAqB4B,KAAA,GAGhB;IACT;EAEA,OAAO;IACLd,WAAA;IACAlC,QAAA;IACAqB,IAAA;IACA,GAAGF;EACL;AACF","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ function mutations(table, permissions, mutations2) {
2
+ if (permissions) {
3
+ const tableName = table.schema.name, createCRUDMutation = (action) => async (ctx, obj) => {
4
+ const runServerPermissionCheck = async () => {
5
+ ctx.didCanPermissionsRun || process.env.VITE_ENVIRONMENT === "ssr" && await ctx.can(permissions, action, obj);
6
+ };
7
+ action === "delete" && await runServerPermissionCheck();
8
+ const existing = mutations2?.[action];
9
+ existing ? await existing(ctx, obj) : await ctx.tx.mutate[tableName][action](obj), action !== "delete" && await runServerPermissionCheck();
10
+ }, crudMutations = {
11
+ insert: createCRUDMutation("insert"),
12
+ update: createCRUDMutation("update"),
13
+ delete: createCRUDMutation("delete"),
14
+ upsert: createCRUDMutation("upsert")
15
+ };
16
+ return {
17
+ ...mutations2,
18
+ // overwrite regular mutations but call them if they are defined by user
19
+ ...crudMutations
20
+ };
21
+ }
22
+ return table;
23
+ }
24
+ export {
25
+ mutations
26
+ };
27
+ //# sourceMappingURL=createMutations.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createMutations.ts"],
4
+ "mappings": "AAgEO,SAAS,UAGd,OAA0B,aAAqBA,YAAkC;AACjF,MAAI,aAAa;AACf,UAAM,YAAa,MAAgB,OAAO,MAEpC,qBAAqB,CAAC,WACnB,OAAO,KAAqB,QAAa;AAG9C,YAAM,2BAA2B,YAAY;AAC3C,QAAI,IAAI,wBAMJ,QAAQ,IAAI,qBAAqB,SACnC,MAAM,IAAI,IAAI,aAAa,QAAQ,GAAG;AAAA,MAE1C;AAEA,MAAI,WAAW,YACb,MAAM,yBAAyB;AAIjC,YAAM,WAAWA,aAAY,MAAM;AAEnC,MAAI,WACF,MAAM,SAAS,KAAK,GAAG,IAEvB,MAAM,IAAI,GAAG,OAAO,SAAS,EAAE,MAAM,EAAE,GAAG,GAGxC,WAAW,YACb,MAAM,yBAAyB;AAAA,IAEnC,GAGI,gBAAoC;AAAA,MACxC,QAAQ,mBAAmB,QAAQ;AAAA,MACnC,QAAQ,mBAAmB,QAAQ;AAAA,MACnC,QAAQ,mBAAmB,QAAQ;AAAA,MACnC,QAAQ,mBAAmB,QAAQ;AAAA,IACrC;AAEA,WAAO;AAAA,MACL,GAAGA;AAAA;AAAA,MAEH,GAAG;AAAA,IACL;AAAA,EACF;AAGA,SAAO;AACT;",
5
+ "names": ["mutations"]
6
+ }
@@ -0,0 +1,27 @@
1
+ function mutations(table, permissions, mutations2) {
2
+ if (permissions) {
3
+ const tableName = table.schema.name,
4
+ createCRUDMutation = action => async (ctx, obj) => {
5
+ const runServerPermissionCheck = async () => {
6
+ ctx.didCanPermissionsRun || process.env.VITE_ENVIRONMENT === "ssr" && (await ctx.can(permissions, action, obj));
7
+ };
8
+ action === "delete" && (await runServerPermissionCheck());
9
+ const existing = mutations2?.[action];
10
+ existing ? await existing(ctx, obj) : await ctx.tx.mutate[tableName][action](obj), action !== "delete" && (await runServerPermissionCheck());
11
+ },
12
+ crudMutations = {
13
+ insert: createCRUDMutation("insert"),
14
+ update: createCRUDMutation("update"),
15
+ delete: createCRUDMutation("delete"),
16
+ upsert: createCRUDMutation("upsert")
17
+ };
18
+ return {
19
+ ...mutations2,
20
+ // overwrite regular mutations but call them if they are defined by user
21
+ ...crudMutations
22
+ };
23
+ }
24
+ return table;
25
+ }
26
+ export { mutations };
27
+ //# sourceMappingURL=createMutations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mutations","table","permissions","mutations2","tableName","schema","name","createCRUDMutation","action","ctx","obj","runServerPermissionCheck","didCanPermissionsRun","process","env","VITE_ENVIRONMENT","can","existing","tx","mutate","crudMutations","insert","update","delete","upsert"],"sources":["../../src/createMutations.ts"],"sourcesContent":[null],"mappings":"AAgEO,SAASA,UAGdC,KAAA,EAA0BC,WAAA,EAAqBC,UAAA,EAAkC;EACjF,IAAID,WAAA,EAAa;IACf,MAAME,SAAA,GAAaH,KAAA,CAAgBI,MAAA,CAAOC,IAAA;MAEpCC,kBAAA,GAAsBC,MAAA,IACnB,OAAOC,GAAA,EAAqBC,GAAA,KAAa;QAG9C,MAAMC,wBAAA,GAA2B,MAAAA,CAAA,KAAY;UACvCF,GAAA,CAAIG,oBAAA,IAMJC,OAAA,CAAQC,GAAA,CAAIC,gBAAA,KAAqB,UACnC,MAAMN,GAAA,CAAIO,GAAA,CAAId,WAAA,EAAaM,MAAA,EAAQE,GAAG;QAE1C;QAEIF,MAAA,KAAW,aACb,MAAMG,wBAAA,CAAyB;QAIjC,MAAMM,QAAA,GAAWd,UAAA,GAAYK,MAAM;QAE/BS,QAAA,GACF,MAAMA,QAAA,CAASR,GAAA,EAAKC,GAAG,IAEvB,MAAMD,GAAA,CAAIS,EAAA,CAAGC,MAAA,CAAOf,SAAS,EAAEI,MAAM,EAAEE,GAAG,GAGxCF,MAAA,KAAW,aACb,MAAMG,wBAAA,CAAyB;MAEnC;MAGIS,aAAA,GAAoC;QACxCC,MAAA,EAAQd,kBAAA,CAAmB,QAAQ;QACnCe,MAAA,EAAQf,kBAAA,CAAmB,QAAQ;QACnCgB,MAAA,EAAQhB,kBAAA,CAAmB,QAAQ;QACnCiB,MAAA,EAAQjB,kBAAA,CAAmB,QAAQ;MACrC;IAEA,OAAO;MACL,GAAGJ,UAAA;MAAA;MAEH,GAAGiB;IACL;EACF;EAGA,OAAOnB,KAAA;AACT","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ function mutations(table, permissions, mutations2) {
2
+ if (permissions) {
3
+ var tableName = table.schema.name,
4
+ createCRUDMutation = function (action) {
5
+ return async function (ctx, obj) {
6
+ var runServerPermissionCheck = async function () {
7
+ ctx.didCanPermissionsRun || process.env.VITE_ENVIRONMENT === "ssr" && (await ctx.can(permissions, action, obj));
8
+ };
9
+ action === "delete" && (await runServerPermissionCheck());
10
+ var existing = mutations2?.[action];
11
+ existing ? await existing(ctx, obj) : await ctx.tx.mutate[tableName][action](obj), action !== "delete" && (await runServerPermissionCheck());
12
+ };
13
+ },
14
+ crudMutations = {
15
+ insert: createCRUDMutation("insert"),
16
+ update: createCRUDMutation("update"),
17
+ delete: createCRUDMutation("delete"),
18
+ upsert: createCRUDMutation("upsert")
19
+ };
20
+ return {
21
+ ...mutations2,
22
+ // overwrite regular mutations but call them if they are defined by user
23
+ ...crudMutations
24
+ };
25
+ }
26
+ return table;
27
+ }
28
+ export { mutations };
29
+ //# sourceMappingURL=createMutations.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mutations","table","permissions","mutations2","tableName","schema","name","createCRUDMutation","action","ctx","obj","runServerPermissionCheck","didCanPermissionsRun","process","env","VITE_ENVIRONMENT","can","existing","tx","mutate","crudMutations","insert","update","delete","upsert"],"sources":["../../src/createMutations.ts"],"sourcesContent":[null],"mappings":"AAgEO,SAASA,UAGdC,KAAA,EAA0BC,WAAA,EAAqBC,UAAA,EAAkC;EACjF,IAAID,WAAA,EAAa;IACf,IAAAE,SAAM,GAAAH,KAAa,CAAAI,MAAgB,CAAAC,IAAO;MAAAC,kBAEpC,YAAAA,CAAsBC,MACnB;QAGL,OAAM,gBAAAC,GAAA,EAAAC,GAAA;UACA,IAAIC,wBAMJ,kBAAAA,CAAA,EAAY;YAGlBF,GAAA,CAAAG,oBAAA,IAAAC,OAAA,CAAAC,GAAA,CAAAC,gBAAA,qBAAAN,GAAA,CAAAO,GAAA,CAAAd,WAAA,EAAAM,MAAA,EAAAE,GAAA;UAEI;UAKJF,MAAM,aAAW,WAAYG,wBAAM;UAE/B,IAAAM,QACF,GAAMd,UAAS,GAAAK,MAAQ;UAWvBS,QAAA,SAAoCA,QAAA,CAAAR,GAAA,EAAAC,GAAA,UAAAD,GAAA,CAAAS,EAAA,CAAAC,MAAA,CAAAf,SAAA,EAAAI,MAAA,EAAAE,GAAA,GAAAF,MAAA,wBAAAG,wBAAA;QACxC;MAAmC;MACnCS,aAAQ;QACRC,MAAA,EAAQd,kBAAA,CAAmB,QAAQ;QACnCe,MAAA,EAAQf,kBAAA,CAAmB,QAAQ;QACrCgB,MAAA,EAAAhB,kBAAA;QAEAiB,MAAO,EAAAjB,kBAAA;MAAA;IACF;MAEH,GAAGJ,UAAA;MACL;MACF,GAAAiB;IAGA;EACF","ignoreList":[]}
@@ -0,0 +1,106 @@
1
+ import { createLocalStorage, ensure, EnsureError } from "@vxrn/helpers";
2
+ import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery";
3
+ function createPermissions(schema, getContext) {
4
+ runEnvironmentSafetyCheck();
5
+ const permissionCache = createLocalStorage("permissions-cache", {
6
+ storageLimit: 24
7
+ });
8
+ function where(a, b) {
9
+ return b && WhereTableNameMap.set(b, a), b || a;
10
+ }
11
+ const WhereTableNameMap = /* @__PURE__ */ new WeakMap();
12
+ function getWhereTableName(where2) {
13
+ return WhereTableNameMap.get(where2);
14
+ }
15
+ const fallbackActions = {
16
+ select: "read",
17
+ insert: "write",
18
+ update: "write",
19
+ upsert: "write",
20
+ delete: "write"
21
+ };
22
+ function buildPermissionQuery(authData, eb, permissionWhere, action, objOrId) {
23
+ const tableName = getWhereTableName(permissionWhere);
24
+ if (!tableName)
25
+ throw new Error("Must use PermissionWhere for buildPermissionQuery");
26
+ const primaryKeys = schema.tables[tableName].primaryKey, permissionQueryBuilder = permissionWhere(eb, authData), fallbackAction = fallbackActions[action], permissionCondition = permissionQueryBuilder[action] || (fallbackAction ? permissionQueryBuilder[fallbackAction] : void 0);
27
+ if (permissionCondition == null)
28
+ throw new Error(`No permission defined for ${action} (or ${fallbackAction})`);
29
+ if (permissionCondition === !0)
30
+ return eb.cmpLit(!0, "=", !0);
31
+ if (permissionCondition === !1)
32
+ return eb.cmpLit(!0, "=", !1);
33
+ const primaryKeyWheres = [];
34
+ for (const key of primaryKeys) {
35
+ const value = typeof objOrId == "string" ? objOrId : objOrId[key];
36
+ primaryKeyWheres.push(eb.cmp(key, value));
37
+ }
38
+ return eb.and(permissionCondition, ...primaryKeyWheres);
39
+ }
40
+ async function can(where2, action, obj) {
41
+ const ctx = getContext(), tableName = getWhereTableName(where2);
42
+ if (!tableName)
43
+ throw new Error("Must use where('table') style where to pass to can()");
44
+ process.env.VITE_ENVIRONMENT === "ssr" && (await ensurePermission(
45
+ ctx.tx,
46
+ ctx.authData,
47
+ tableName,
48
+ where2,
49
+ action,
50
+ obj
51
+ ), ctx.didCanPermissionsRun = !0);
52
+ }
53
+ async function ensurePermission(tx, authData, tableName, where2, actionIn, obj) {
54
+ if (authData?.role === "admin")
55
+ return;
56
+ const action = String(actionIn), name = `${tableName}.${action}`, queryBase = tx.query[tableName];
57
+ let query = null;
58
+ try {
59
+ query = queryBase.where((eb) => buildPermissionQuery(authData, eb, where2, action, obj)).one(), ensure(await query);
60
+ } catch (err) {
61
+ const errorTitle = `${name} with auth id: ${authData?.id}`;
62
+ if (err instanceof EnsureError) {
63
+ let msg = `[permission] \u{1F6AB} Not Allowed: ${errorTitle}`;
64
+ throw process.env.NODE_ENV === "development" && query && (msg += `
65
+ ${prettyFormatZeroQuery(query)}`), new Error(msg);
66
+ }
67
+ throw new Error(`Error running permission ${errorTitle}
68
+ ${err}`);
69
+ }
70
+ }
71
+ function usePermission(table, action, objOrId, enabled = typeof objOrId < "u", debug = !1) {
72
+ const keyBase = `${table}${action}`, key = `${keyBase}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`, cacheVal = permissionCache.get(key) ?? permissionCache.get(keyBase), authData = useAuthData(), permission = modelPermissions[table], query = (() => {
73
+ let baseQuery = zero.query[table].one();
74
+ return enabled ? baseQuery.where((eb) => buildPermissionQuery(authData, eb, permission, action, objOrId)) : baseQuery;
75
+ })(), [data, status] = useQuery(query, {
76
+ enabled: !!(enabled && authData && objOrId)
77
+ });
78
+ debug && console.info(
79
+ "usePermission()",
80
+ { data, status, action, authData, permission },
81
+ prettyFormatZeroQuery(query)
82
+ );
83
+ const allowed = !!data;
84
+ return objOrId ? allowed : !1;
85
+ }
86
+ return {
87
+ where,
88
+ can,
89
+ usePermission
90
+ };
91
+ }
92
+ function runEnvironmentSafetyCheck() {
93
+ typeof document < "u" || typeof navigator < "u" && navigator.product === "ReactNative" || process.env.VITE_ENVIRONMENT !== "ssr" && console.error(`\u274C\u274C\u274C\u274C
94
+
95
+ ERROR: VITE_ENVIRONMENT is not set to "ssr" on server, which means permissions checks won't run when they should
96
+ This is makes Zero entirely insecure and needs to be fixed immediately.
97
+
98
+ This is likely a One framework issue, unless the user Vite config is overwriting the value.
99
+ One automatically sets this value.
100
+
101
+ `);
102
+ }
103
+ export {
104
+ createPermissions
105
+ };
106
+ //# sourceMappingURL=createPermissions.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createPermissions.ts"],
4
+ "mappings": "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",
5
+ "names": ["where"]
6
+ }
@@ -0,0 +1,105 @@
1
+ import { createLocalStorage, ensure, EnsureError } from "@vxrn/helpers";
2
+ import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery.mjs";
3
+ function createPermissions(schema, getContext) {
4
+ runEnvironmentSafetyCheck();
5
+ const permissionCache = createLocalStorage("permissions-cache", {
6
+ storageLimit: 24
7
+ });
8
+ function where(a, b) {
9
+ return b && WhereTableNameMap.set(b, a), b || a;
10
+ }
11
+ const WhereTableNameMap = /* @__PURE__ */new WeakMap();
12
+ function getWhereTableName(where2) {
13
+ return WhereTableNameMap.get(where2);
14
+ }
15
+ const fallbackActions = {
16
+ select: "read",
17
+ insert: "write",
18
+ update: "write",
19
+ upsert: "write",
20
+ delete: "write"
21
+ };
22
+ function buildPermissionQuery(authData, eb, permissionWhere, action, objOrId) {
23
+ const tableName = getWhereTableName(permissionWhere);
24
+ if (!tableName) throw new Error("Must use PermissionWhere for buildPermissionQuery");
25
+ const primaryKeys = schema.tables[tableName].primaryKey,
26
+ permissionQueryBuilder = permissionWhere(eb, authData),
27
+ fallbackAction = fallbackActions[action],
28
+ permissionCondition = permissionQueryBuilder[action] || (fallbackAction ? permissionQueryBuilder[fallbackAction] : void 0);
29
+ if (permissionCondition == null) throw new Error(`No permission defined for ${action} (or ${fallbackAction})`);
30
+ if (permissionCondition === !0) return eb.cmpLit(!0, "=", !0);
31
+ if (permissionCondition === !1) return eb.cmpLit(!0, "=", !1);
32
+ const primaryKeyWheres = [];
33
+ for (const key of primaryKeys) {
34
+ const value = typeof objOrId == "string" ? objOrId : objOrId[key];
35
+ primaryKeyWheres.push(eb.cmp(key, value));
36
+ }
37
+ return eb.and(permissionCondition, ...primaryKeyWheres);
38
+ }
39
+ async function can(where2, action, obj) {
40
+ const ctx = getContext(),
41
+ tableName = getWhereTableName(where2);
42
+ if (!tableName) throw new Error("Must use where('table') style where to pass to can()");
43
+ process.env.VITE_ENVIRONMENT === "ssr" && (await ensurePermission(ctx.tx, ctx.authData, tableName, where2, action, obj), ctx.didCanPermissionsRun = !0);
44
+ }
45
+ async function ensurePermission(tx, authData, tableName, where2, actionIn, obj) {
46
+ if (authData?.role === "admin") return;
47
+ const action = String(actionIn),
48
+ name = `${tableName}.${action}`,
49
+ queryBase = tx.query[tableName];
50
+ let query = null;
51
+ try {
52
+ query = queryBase.where(eb => buildPermissionQuery(authData, eb, where2, action, obj)).one(), ensure(await query);
53
+ } catch (err) {
54
+ const errorTitle = `${name} with auth id: ${authData?.id}`;
55
+ if (err instanceof EnsureError) {
56
+ let msg = `[permission] \u{1F6AB} Not Allowed: ${errorTitle}`;
57
+ throw process.env.NODE_ENV === "development" && query && (msg += `
58
+ ${prettyFormatZeroQuery(query)}`), new Error(msg);
59
+ }
60
+ throw new Error(`Error running permission ${errorTitle}
61
+ ${err}`);
62
+ }
63
+ }
64
+ function usePermission(table, action, objOrId, enabled = typeof objOrId < "u", debug = !1) {
65
+ const keyBase = `${table}${action}`,
66
+ key = `${keyBase}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`,
67
+ cacheVal = permissionCache.get(key) ?? permissionCache.get(keyBase),
68
+ authData = useAuthData(),
69
+ permission = modelPermissions[table],
70
+ query = (() => {
71
+ let baseQuery = zero.query[table].one();
72
+ return enabled ? baseQuery.where(eb => buildPermissionQuery(authData, eb, permission, action, objOrId)) : baseQuery;
73
+ })(),
74
+ [data, status] = useQuery(query, {
75
+ enabled: !!(enabled && authData && objOrId)
76
+ });
77
+ debug && console.info("usePermission()", {
78
+ data,
79
+ status,
80
+ action,
81
+ authData,
82
+ permission
83
+ }, prettyFormatZeroQuery(query));
84
+ const allowed = !!data;
85
+ return objOrId ? allowed : !1;
86
+ }
87
+ return {
88
+ where,
89
+ can,
90
+ usePermission
91
+ };
92
+ }
93
+ function runEnvironmentSafetyCheck() {
94
+ typeof document < "u" || typeof navigator < "u" && navigator.product === "ReactNative" || process.env.VITE_ENVIRONMENT !== "ssr" && console.error(`\u274C\u274C\u274C\u274C
95
+
96
+ ERROR: VITE_ENVIRONMENT is not set to "ssr" on server, which means permissions checks won't run when they should
97
+ This is makes Zero entirely insecure and needs to be fixed immediately.
98
+
99
+ This is likely a One framework issue, unless the user Vite config is overwriting the value.
100
+ One automatically sets this value.
101
+
102
+ `);
103
+ }
104
+ export { createPermissions };
105
+ //# sourceMappingURL=createPermissions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createLocalStorage","ensure","EnsureError","prettyFormatZeroQuery","createPermissions","schema","getContext","runEnvironmentSafetyCheck","permissionCache","storageLimit","where","a","b","WhereTableNameMap","set","WeakMap","getWhereTableName","where2","get","fallbackActions","select","insert","update","upsert","delete","buildPermissionQuery","authData","eb","permissionWhere","action","objOrId","tableName","Error","primaryKeys","tables","primaryKey","permissionQueryBuilder","fallbackAction","permissionCondition","cmpLit","primaryKeyWheres","key","value","push","cmp","and","can","obj","ctx","process","env","VITE_ENVIRONMENT","ensurePermission","tx","didCanPermissionsRun","actionIn","role","String","name","queryBase","query","one","err","errorTitle","id","msg","NODE_ENV","usePermission","table","enabled","debug","keyBase","JSON","stringify","cacheVal","useAuthData","permission","modelPermissions","baseQuery","zero","data","status","useQuery","console","info","allowed","document","navigator","product","error"],"sources":["../../src/createPermissions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,129 @@
1
+ import { createLocalStorage, ensure, EnsureError } from "@vxrn/helpers";
2
+ import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery.native.js";
3
+ function createPermissions(schema, getContext) {
4
+ runEnvironmentSafetyCheck();
5
+ var permissionCache = createLocalStorage("permissions-cache", {
6
+ storageLimit: 24
7
+ });
8
+ function where(a, b) {
9
+ return b && WhereTableNameMap.set(b, a), b || a;
10
+ }
11
+ var WhereTableNameMap = /* @__PURE__ */new WeakMap();
12
+ function getWhereTableName(where2) {
13
+ return WhereTableNameMap.get(where2);
14
+ }
15
+ var fallbackActions = {
16
+ select: "read",
17
+ insert: "write",
18
+ update: "write",
19
+ upsert: "write",
20
+ delete: "write"
21
+ };
22
+ function buildPermissionQuery(authData, eb, permissionWhere, action, objOrId) {
23
+ var tableName = getWhereTableName(permissionWhere);
24
+ if (!tableName) throw new Error("Must use PermissionWhere for buildPermissionQuery");
25
+ var tableSchema = schema.tables[tableName],
26
+ primaryKeys = tableSchema.primaryKey,
27
+ permissionQueryBuilder = permissionWhere(eb, authData),
28
+ fallbackAction = fallbackActions[action],
29
+ permissionCondition = permissionQueryBuilder[action] || (fallbackAction ? permissionQueryBuilder[fallbackAction] : void 0);
30
+ if (permissionCondition == null) throw new Error(`No permission defined for ${action} (or ${fallbackAction})`);
31
+ if (permissionCondition === !0) return eb.cmpLit(!0, "=", !0);
32
+ if (permissionCondition === !1) return eb.cmpLit(!0, "=", !1);
33
+ var primaryKeyWheres = [],
34
+ _iteratorNormalCompletion = !0,
35
+ _didIteratorError = !1,
36
+ _iteratorError = void 0;
37
+ try {
38
+ for (var _iterator = primaryKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
39
+ var key = _step.value,
40
+ value = typeof objOrId == "string" ? objOrId : objOrId[key];
41
+ primaryKeyWheres.push(eb.cmp(key, value));
42
+ }
43
+ } catch (err) {
44
+ _didIteratorError = !0, _iteratorError = err;
45
+ } finally {
46
+ try {
47
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
48
+ } finally {
49
+ if (_didIteratorError) throw _iteratorError;
50
+ }
51
+ }
52
+ return eb.and(permissionCondition, ...primaryKeyWheres);
53
+ }
54
+ async function can(where2, action, obj) {
55
+ var ctx = getContext(),
56
+ tableName = getWhereTableName(where2);
57
+ if (!tableName) throw new Error("Must use where('table') style where to pass to can()");
58
+ process.env.VITE_ENVIRONMENT === "ssr" && (await ensurePermission(ctx.tx, ctx.authData, tableName, where2, action, obj), ctx.didCanPermissionsRun = !0);
59
+ }
60
+ async function ensurePermission(tx, authData, tableName, where2, actionIn, obj) {
61
+ if (authData?.role !== "admin") {
62
+ var action = String(actionIn),
63
+ name = `${tableName}.${action}`,
64
+ queryBase = tx.query[tableName],
65
+ query = null;
66
+ try {
67
+ query = queryBase.where(function (eb) {
68
+ return buildPermissionQuery(authData, eb, where2, action, obj);
69
+ }).one(), ensure(await query);
70
+ } catch (err) {
71
+ var errorTitle = `${name} with auth id: ${authData?.id}`;
72
+ if (err instanceof EnsureError) {
73
+ var msg = `[permission] \u{1F6AB} Not Allowed: ${errorTitle}`;
74
+ throw process.env.NODE_ENV === "development" && query && (msg += `
75
+ ${prettyFormatZeroQuery(query)}`), new Error(msg);
76
+ }
77
+ throw new Error(`Error running permission ${errorTitle}
78
+ ${err}`);
79
+ }
80
+ }
81
+ }
82
+ function usePermission(table, action, objOrId) {
83
+ var enabled = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : typeof objOrId < "u",
84
+ debug = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !1,
85
+ keyBase = `${table}${action}`,
86
+ key = `${keyBase}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`,
87
+ _permissionCache_get,
88
+ cacheVal = (_permissionCache_get = permissionCache.get(key)) !== null && _permissionCache_get !== void 0 ? _permissionCache_get : permissionCache.get(keyBase),
89
+ authData = useAuthData(),
90
+ permission = modelPermissions[table],
91
+ query = function () {
92
+ var baseQuery = zero.query[table].one();
93
+ return enabled ? baseQuery.where(function (eb) {
94
+ return buildPermissionQuery(authData, eb, permission, action, objOrId);
95
+ }) : baseQuery;
96
+ }(),
97
+ [data, status] = useQuery(query, {
98
+ enabled: !!(enabled && authData && objOrId)
99
+ });
100
+ debug && console.info("usePermission()", {
101
+ data,
102
+ status,
103
+ action,
104
+ authData,
105
+ permission
106
+ }, prettyFormatZeroQuery(query));
107
+ var result = data,
108
+ allowed = !!result;
109
+ return objOrId ? allowed : !1;
110
+ }
111
+ return {
112
+ where,
113
+ can,
114
+ usePermission
115
+ };
116
+ }
117
+ function runEnvironmentSafetyCheck() {
118
+ typeof document < "u" || typeof navigator < "u" && navigator.product === "ReactNative" || process.env.VITE_ENVIRONMENT !== "ssr" && console.error(`\u274C\u274C\u274C\u274C
119
+
120
+ ERROR: VITE_ENVIRONMENT is not set to "ssr" on server, which means permissions checks won't run when they should
121
+ This is makes Zero entirely insecure and needs to be fixed immediately.
122
+
123
+ This is likely a One framework issue, unless the user Vite config is overwriting the value.
124
+ One automatically sets this value.
125
+
126
+ `);
127
+ }
128
+ export { createPermissions };
129
+ //# sourceMappingURL=createPermissions.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createLocalStorage","ensure","EnsureError","prettyFormatZeroQuery","createPermissions","schema","getContext","runEnvironmentSafetyCheck","permissionCache","storageLimit","where","a","b","WhereTableNameMap","set","WeakMap","getWhereTableName","where2","get","fallbackActions","select","insert","update","upsert","delete","buildPermissionQuery","authData","eb","permissionWhere","action","objOrId","tableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionQueryBuilder","fallbackAction","permissionCondition","cmpLit","primaryKeyWheres","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","key","value","push","cmp","err","return","and","can","obj","ctx","process","env","VITE_ENVIRONMENT","ensurePermission","tx","didCanPermissionsRun","actionIn","role","String","name","queryBase","query","one","errorTitle","id","msg","NODE_ENV","usePermission","table","enabled","arguments","length","debug","keyBase","JSON","stringify","_permissionCache_get","cacheVal","useAuthData","permission","modelPermissions","baseQuery","zero","data","status","useQuery","console","info","result","allowed","document","navigator","product","error"],"sources":["../../src/createPermissions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ import { PostgresJSConnection } from "@rocicorp/zero/pg";
2
+ import { ZQLDatabase } from "@rocicorp/zero/server";
3
+ import postgres from "postgres";
4
+ import { context, isInZeroMutation } from "src/context";
5
+ import { createMutators } from "~/data/helpers/createMutators";
6
+ import { schema } from "~/data/schema";
7
+ import { createServerActions } from "~/data/server/createServerActions";
8
+ import { assertString } from "@vxrn/helpers";
9
+ function createServer({ actions }) {
10
+ const dbString = assertString(process.env.ZERO_UPSTREAM_DB), zeroServerDatabase = new ZQLDatabase(
11
+ new PostgresJSConnection(postgres(dbString)),
12
+ schema
13
+ ), serverMutate = async (run, authData) => {
14
+ const asyncTasks = [], mutators = createMutators({
15
+ environment: "server",
16
+ asyncTasks,
17
+ authData: {
18
+ id: "",
19
+ email: "admin@start.chat",
20
+ role: "admin",
21
+ ...authData
22
+ },
23
+ createServerActions
24
+ });
25
+ await serverTransaction(async (tx) => {
26
+ await run(tx, mutators);
27
+ }), await Promise.all(asyncTasks.map((t) => t()));
28
+ }, serverQuery = serverTransaction, dummyTransactionInput = {
29
+ clientGroupID: "unused",
30
+ clientID: "unused",
31
+ mutationID: 42,
32
+ upstreamSchema: "unused"
33
+ };
34
+ async function serverTransaction(query) {
35
+ try {
36
+ if (isInZeroMutation()) {
37
+ const { tx } = context();
38
+ return await query(tx);
39
+ }
40
+ return await zeroServerDatabase.transaction(query, dummyTransactionInput);
41
+ } catch (err) {
42
+ throw console.error(`Error running serverTransaction(): ${err}`), err;
43
+ }
44
+ }
45
+ return {
46
+ serverTransaction,
47
+ serverMutate,
48
+ serverQuery
49
+ };
50
+ }
51
+ export {
52
+ createServer
53
+ };
54
+ //# sourceMappingURL=createServer.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createServer.ts"],
4
+ "mappings": "AACA,SAAS,4BAA4B;AACrC,SAAS,mBAAmB;AAC5B,OAAO,cAAc;AACrB,SAAS,SAAS,wBAAwB;AAE1C,SAAwB,sBAAsB;AAC9C,SAAS,cAAc;AACvB,SAAS,2BAA2B;AAEpC,SAAS,oBAAoB;AAEtB,SAAS,aAAa,EAAE,QAAQ,GAAqB;AAC1D,QAAM,WAAW,aAAa,QAAQ,IAAI,gBAAgB,GAEpD,qBAAqB,IAAI;AAAA,IAC7B,IAAI,qBAAqB,SAAS,QAAQ,CAAC;AAAA,IAC3C;AAAA,EACF,GAEM,eAAe,OACnB,KACA,aACG;AACH,UAAM,aAAyC,CAAC,GAE1C,WAAW,eAAe;AAAA,MAC9B,aAAa;AAAA,MACb;AAAA,MACA,UAAU;AAAA,QACR,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,GAAG;AAAA,MACL;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,kBAAkB,OAAO,OAAO;AACpC,YAAM,IAAI,IAAI,QAAQ;AAAA,IACxB,CAAC,GAED,MAAM,QAAQ,IAAI,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAAA,EAC9C,GAIM,cAAc,mBAGd,wBAAkD;AAAA,IACtD,eAAe;AAAA,IACf,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAClB;AAEA,iBAAe,kBAGb,OAA6B;AAC7B,QAAI;AACF,UAAI,iBAAiB,GAAG;AACtB,cAAM,EAAE,GAAG,IAAI,QAAQ;AACvB,eAAO,MAAM,MAAM,EAAE;AAAA,MACvB;AACA,aAAQ,MAAM,mBAAmB,YAAY,OAAO,qBAAqB;AAAA,IAC3E,SAAS,KAAK;AACZ,oBAAQ,MAAM,sCAAsC,GAAG,EAAE,GACnD;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
5
+ "names": []
6
+ }