over-zero 0.0.0 → 0.0.2

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 (204) hide show
  1. package/dist/cjs/createPermissions.cjs +43 -57
  2. package/dist/cjs/createPermissions.js +46 -48
  3. package/dist/cjs/createPermissions.js.map +2 -2
  4. package/dist/cjs/createPermissions.native.js +46 -53
  5. package/dist/cjs/createPermissions.native.js.map +2 -2
  6. package/dist/cjs/createZero.cjs +128 -0
  7. package/dist/cjs/createZero.js +107 -0
  8. package/dist/cjs/createZero.js.map +6 -0
  9. package/dist/cjs/createZero.native.js +115 -0
  10. package/dist/cjs/createZero.native.js.map +6 -0
  11. package/dist/cjs/createZeroClient.cjs +128 -0
  12. package/dist/cjs/createZeroClient.js +103 -0
  13. package/dist/cjs/createZeroClient.js.map +6 -0
  14. package/dist/cjs/createZeroClient.native.js +115 -0
  15. package/dist/cjs/createZeroClient.native.js.map +6 -0
  16. package/dist/cjs/createZeroServer.cjs +131 -0
  17. package/dist/cjs/createZeroServer.js +108 -0
  18. package/dist/cjs/createZeroServer.js.map +6 -0
  19. package/dist/cjs/createZeroServer.native.js +107 -0
  20. package/dist/cjs/createZeroServer.native.js.map +6 -0
  21. package/dist/cjs/helpers/context.js.map +1 -1
  22. package/dist/cjs/helpers/context.native.js.map +1 -1
  23. package/dist/cjs/helpers/createMutators.cjs +11 -11
  24. package/dist/cjs/helpers/createMutators.js +9 -7
  25. package/dist/cjs/helpers/createMutators.js.map +1 -1
  26. package/dist/cjs/helpers/createMutators.native.js +8 -6
  27. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  28. package/dist/cjs/helpers/ensureLoggedIn.cjs +1 -1
  29. package/dist/cjs/helpers/ensureLoggedIn.js +1 -1
  30. package/dist/cjs/helpers/ensureLoggedIn.js.map +1 -1
  31. package/dist/cjs/helpers/ensureLoggedIn.native.js +1 -1
  32. package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
  33. package/dist/cjs/helpers/getAuthData.cjs +0 -36
  34. package/dist/cjs/helpers/getAuthData.js +0 -28
  35. package/dist/cjs/helpers/getAuthData.js.map +2 -2
  36. package/dist/cjs/helpers/getAuthData.native.js +0 -31
  37. package/dist/cjs/helpers/getAuthData.native.js.map +2 -2
  38. package/dist/cjs/helpers/useAuthData.cjs +0 -32
  39. package/dist/cjs/helpers/useAuthData.js +0 -24
  40. package/dist/cjs/helpers/useAuthData.js.map +2 -2
  41. package/dist/cjs/helpers/useAuthData.native.js +0 -31
  42. package/dist/cjs/helpers/useAuthData.native.js.map +2 -2
  43. package/dist/cjs/helpers/useZeroDebug.cjs +68 -0
  44. package/dist/cjs/helpers/useZeroDebug.js +49 -0
  45. package/dist/cjs/helpers/useZeroDebug.js.map +6 -0
  46. package/dist/cjs/helpers/useZeroDebug.native.js +66 -0
  47. package/dist/cjs/helpers/useZeroDebug.native.js.map +6 -0
  48. package/dist/cjs/helpers/zeroEmitter.cjs +2 -2
  49. package/dist/cjs/helpers/zeroEmitter.js +2 -2
  50. package/dist/cjs/helpers/zeroEmitter.native.js +1 -1
  51. package/dist/cjs/helpers/zeroEmitter.native.js.map +1 -1
  52. package/dist/cjs/index.cjs +3 -1
  53. package/dist/cjs/index.js +3 -1
  54. package/dist/cjs/index.js.map +1 -1
  55. package/dist/cjs/index.native.js +6 -2
  56. package/dist/cjs/index.native.js.map +1 -1
  57. package/dist/cjs/mutations.cjs +50 -0
  58. package/dist/cjs/mutations.js +43 -0
  59. package/dist/cjs/mutations.js.map +6 -0
  60. package/dist/cjs/mutations.native.js +50 -0
  61. package/dist/cjs/mutations.native.js.map +6 -0
  62. package/dist/cjs/server.cjs +18 -0
  63. package/dist/cjs/server.js +15 -0
  64. package/dist/cjs/server.js.map +6 -0
  65. package/dist/cjs/server.native.js +20 -0
  66. package/dist/cjs/server.native.js.map +6 -0
  67. package/dist/cjs/where.cjs +33 -0
  68. package/dist/cjs/where.js +28 -0
  69. package/dist/cjs/where.js.map +6 -0
  70. package/dist/cjs/where.native.js +34 -0
  71. package/dist/cjs/where.native.js.map +6 -0
  72. package/dist/esm/createPermissions.js +48 -47
  73. package/dist/esm/createPermissions.js.map +2 -2
  74. package/dist/esm/createPermissions.mjs +41 -55
  75. package/dist/esm/createPermissions.mjs.map +1 -1
  76. package/dist/esm/createPermissions.native.js +55 -69
  77. package/dist/esm/createPermissions.native.js.map +1 -1
  78. package/dist/esm/createZero.js +99 -0
  79. package/dist/esm/createZero.js.map +6 -0
  80. package/dist/esm/createZero.mjs +105 -0
  81. package/dist/esm/createZero.mjs.map +1 -0
  82. package/dist/esm/createZero.native.js +119 -0
  83. package/dist/esm/createZero.native.js.map +1 -0
  84. package/dist/esm/createZeroClient.js +95 -0
  85. package/dist/esm/createZeroClient.js.map +6 -0
  86. package/dist/esm/createZeroClient.mjs +105 -0
  87. package/dist/esm/createZeroClient.mjs.map +1 -0
  88. package/dist/esm/createZeroClient.native.js +119 -0
  89. package/dist/esm/createZeroClient.native.js.map +1 -0
  90. package/dist/esm/createZeroServer.js +90 -0
  91. package/dist/esm/createZeroServer.js.map +6 -0
  92. package/dist/esm/createZeroServer.mjs +97 -0
  93. package/dist/esm/createZeroServer.mjs.map +1 -0
  94. package/dist/esm/createZeroServer.native.js +104 -0
  95. package/dist/esm/createZeroServer.native.js.map +1 -0
  96. package/dist/esm/helpers/context.js.map +1 -1
  97. package/dist/esm/helpers/context.mjs.map +1 -1
  98. package/dist/esm/helpers/context.native.js.map +1 -1
  99. package/dist/esm/helpers/createMutators.js +6 -7
  100. package/dist/esm/helpers/createMutators.js.map +1 -1
  101. package/dist/esm/helpers/createMutators.mjs +7 -7
  102. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  103. package/dist/esm/helpers/createMutators.native.js +9 -7
  104. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  105. package/dist/esm/helpers/ensureLoggedIn.js +1 -1
  106. package/dist/esm/helpers/ensureLoggedIn.js.map +1 -1
  107. package/dist/esm/helpers/ensureLoggedIn.mjs +1 -1
  108. package/dist/esm/helpers/ensureLoggedIn.mjs.map +1 -1
  109. package/dist/esm/helpers/ensureLoggedIn.native.js +1 -1
  110. package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -1
  111. package/dist/esm/helpers/getAuthData.js +0 -12
  112. package/dist/esm/helpers/getAuthData.js.map +2 -2
  113. package/dist/esm/helpers/getAuthData.mjs +1 -12
  114. package/dist/esm/helpers/getAuthData.mjs.map +1 -1
  115. package/dist/esm/helpers/getAuthData.native.js +1 -12
  116. package/dist/esm/helpers/getAuthData.native.js.map +1 -1
  117. package/dist/esm/helpers/useAuthData.js +0 -10
  118. package/dist/esm/helpers/useAuthData.js.map +2 -2
  119. package/dist/esm/helpers/useAuthData.mjs +1 -8
  120. package/dist/esm/helpers/useAuthData.mjs.map +1 -1
  121. package/dist/esm/helpers/useAuthData.native.js +1 -12
  122. package/dist/esm/helpers/useAuthData.native.js.map +1 -1
  123. package/dist/esm/helpers/useZeroDebug.js +35 -0
  124. package/dist/esm/helpers/useZeroDebug.js.map +6 -0
  125. package/dist/esm/helpers/useZeroDebug.mjs +45 -0
  126. package/dist/esm/helpers/useZeroDebug.mjs.map +1 -0
  127. package/dist/esm/helpers/useZeroDebug.native.js +53 -0
  128. package/dist/esm/helpers/useZeroDebug.native.js.map +1 -0
  129. package/dist/esm/helpers/zeroEmitter.js +1 -1
  130. package/dist/esm/helpers/zeroEmitter.mjs +1 -1
  131. package/dist/esm/helpers/zeroEmitter.native.js +1 -1
  132. package/dist/esm/index.js +3 -1
  133. package/dist/esm/index.js.map +1 -1
  134. package/dist/esm/index.mjs +3 -1
  135. package/dist/esm/index.mjs.map +1 -1
  136. package/dist/esm/index.native.js +3 -1
  137. package/dist/esm/index.native.js.map +1 -1
  138. package/dist/esm/mutations.js +27 -0
  139. package/dist/esm/mutations.js.map +6 -0
  140. package/dist/esm/mutations.mjs +27 -0
  141. package/dist/esm/mutations.mjs.map +1 -0
  142. package/dist/esm/mutations.native.js +29 -0
  143. package/dist/esm/mutations.native.js.map +1 -0
  144. package/dist/esm/server.js +2 -0
  145. package/dist/esm/server.js.map +6 -0
  146. package/dist/esm/server.mjs +2 -0
  147. package/dist/esm/server.mjs.map +1 -0
  148. package/dist/esm/server.native.js +2 -0
  149. package/dist/esm/server.native.js.map +1 -0
  150. package/dist/esm/where.js +12 -0
  151. package/dist/esm/where.js.map +6 -0
  152. package/dist/esm/where.mjs +9 -0
  153. package/dist/esm/where.mjs.map +1 -0
  154. package/dist/esm/where.native.js +9 -0
  155. package/dist/esm/where.native.js.map +1 -0
  156. package/package.json +12 -6
  157. package/src/createPermissions.ts +17 -77
  158. package/src/createZeroClient.tsx +29 -26
  159. package/src/createZeroServer.ts +43 -43
  160. package/src/helpers/createMutators.ts +19 -29
  161. package/src/helpers/ensureLoggedIn.ts +2 -1
  162. package/src/helpers/prettyFormatZeroQuery.ts +1 -1
  163. package/src/helpers/useZeroDebug.ts +1 -0
  164. package/src/index.ts +1 -5
  165. package/src/mutations.ts +20 -7
  166. package/src/server.ts +1 -0
  167. package/src/types.ts +74 -7
  168. package/src/where.ts +28 -0
  169. package/src/helpers/clearZeroDatabase.ts +0 -68
  170. package/src/helpers/getAuthData.tsx +0 -12
  171. package/src/helpers/useAuthData.ts +0 -13
  172. package/src/helpers/zeroEmitter.ts +0 -5
  173. package/types/createMutations.d.ts +0 -20
  174. package/types/createMutations.d.ts.map +0 -1
  175. package/types/createPermissions.d.ts +0 -37
  176. package/types/createPermissions.d.ts.map +0 -1
  177. package/types/createZeroClient.d.ts +0 -45
  178. package/types/createZeroClient.d.ts.map +0 -1
  179. package/types/createZeroServer.d.ts +0 -61
  180. package/types/createZeroServer.d.ts.map +0 -1
  181. package/types/helpers/batchQuery.d.ts +0 -7
  182. package/types/helpers/batchQuery.d.ts.map +0 -1
  183. package/types/helpers/clearZeroDatabase.d.ts +0 -2
  184. package/types/helpers/clearZeroDatabase.d.ts.map +0 -1
  185. package/types/helpers/context.d.ts +0 -5
  186. package/types/helpers/context.d.ts.map +0 -1
  187. package/types/helpers/createMutators.d.ts +0 -16
  188. package/types/helpers/createMutators.d.ts.map +0 -1
  189. package/types/helpers/ensureLoggedIn.d.ts +0 -2
  190. package/types/helpers/ensureLoggedIn.d.ts.map +0 -1
  191. package/types/helpers/getAuthData.d.ts +0 -1
  192. package/types/helpers/getAuthData.d.ts.map +0 -1
  193. package/types/helpers/prettyFormatZeroQuery.d.ts +0 -3
  194. package/types/helpers/prettyFormatZeroQuery.d.ts.map +0 -1
  195. package/types/helpers/useAuthData.d.ts +0 -1
  196. package/types/helpers/useAuthData.d.ts.map +0 -1
  197. package/types/helpers/useZeroDebug.d.ts +0 -3
  198. package/types/helpers/useZeroDebug.d.ts.map +0 -1
  199. package/types/helpers/zeroEmitter.d.ts +0 -2
  200. package/types/helpers/zeroEmitter.d.ts.map +0 -1
  201. package/types/index.d.ts +0 -9
  202. package/types/index.d.ts.map +0 -1
  203. package/types/types.d.ts +0 -21
  204. package/types/types.d.ts.map +0 -1
@@ -0,0 +1,107 @@
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)
7
+ __defProp(target, name, { get: all[name], enumerable: !0 });
8
+ }, __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from == "object" || typeof from == "function")
10
+ for (let key of __getOwnPropNames(from))
11
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
15
+ var createZero_exports = {};
16
+ __export(createZero_exports, {
17
+ createZero: () => createZero
18
+ });
19
+ module.exports = __toCommonJS(createZero_exports);
20
+ var import_react = require("@rocicorp/zero/react"), import_helpers = require("@vxrn/helpers"), import_react2 = require("react"), import_createPermissions = require("./createPermissions"), import_context = require("./helpers/context"), import_createMutators = require("./helpers/createMutators"), import_prettyFormatZeroQuery = require("./helpers/prettyFormatZeroQuery"), import_useZeroDebug = require("./helpers/useZeroDebug"), import_jsx_runtime = require("react/jsx-runtime");
21
+ function createZero({
22
+ schema,
23
+ models,
24
+ disable
25
+ }) {
26
+ const modelPermissions = (0, import_helpers.mapObject)(models, (val) => val.permissions), permissionsHelpers = (0, import_createPermissions.createPermissions)({
27
+ schema,
28
+ models,
29
+ getContext: import_context.context,
30
+ environment: "client"
31
+ }), permissionCache = (0, import_helpers.createLocalStorage)("permissions-cache", {
32
+ storageLimit: 24
33
+ }), zeroEvents = (0, import_helpers.createEmitter)("zero", null), AuthDataContext = (0, import_react2.createContext)({}), useAuthData = () => (0, import_react2.use)(AuthDataContext);
34
+ function usePermission(table, action, objOrId, enabled = typeof objOrId < "u", debug = !1) {
35
+ const keyBase = `${String(table)}${action}`, key = `${keyBase}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`, cacheVal = permissionCache.get(key) ?? permissionCache.get(keyBase), authData = useAuthData(), permission = modelPermissions[table], query = (() => {
36
+ let baseQuery = zero.query[table].one();
37
+ return enabled ? baseQuery.where((eb) => permissionsHelpers.buildPermissionQuery(
38
+ authData,
39
+ eb,
40
+ permission,
41
+ action,
42
+ objOrId
43
+ )) : baseQuery;
44
+ })(), [data, status] = useQuery(query, {
45
+ enabled: !!(enabled && authData && objOrId)
46
+ });
47
+ debug && console.info(
48
+ "usePermission()",
49
+ { data, status, action, authData, permission },
50
+ (0, import_prettyFormatZeroQuery.prettyFormatZeroQuery)(query)
51
+ );
52
+ const allowed = !!data;
53
+ return objOrId ? allowed : !1;
54
+ }
55
+ let latestZeroInstance = null;
56
+ const zero = new Proxy({}, {
57
+ get(_, key) {
58
+ return Reflect.get(latestZeroInstance, key, latestZeroInstance);
59
+ }
60
+ }), useQuery = (query, options) => {
61
+ if (disable)
62
+ return [null, { type: "unknown" }];
63
+ const out = (0, import_react.useQuery)(query, options);
64
+ return process.env.NODE_ENV === "development" && (0, import_useZeroDebug.useZeroDebug)(query, options, out), out;
65
+ }, ProvideZero = ({
66
+ children,
67
+ authData,
68
+ ...props
69
+ }) => {
70
+ const mutators = (0, import_react2.useMemo)(() => (0, import_createMutators.createMutators)({
71
+ models,
72
+ environment: "client",
73
+ authData,
74
+ can: permissionsHelpers.can
75
+ }), [models, authData]);
76
+ return disable ? children : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AuthDataContext.Provider, { value: authData, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
77
+ import_react.ZeroProvider,
78
+ {
79
+ schema,
80
+ kvStore: "mem",
81
+ onError: (error) => {
82
+ console.error("Zero Error:", error), zeroEvents.emit({
83
+ type: "error",
84
+ message: error
85
+ });
86
+ },
87
+ mutators,
88
+ ...props,
89
+ children: [
90
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SetZeroInstance, {}),
91
+ children
92
+ ]
93
+ }
94
+ ) });
95
+ }, SetZeroInstance = () => {
96
+ const zero2 = (0, import_react.useZero)();
97
+ return zero2 !== latestZeroInstance && (latestZeroInstance = zero2), null;
98
+ };
99
+ return {
100
+ zeroEvents,
101
+ ProvideZero,
102
+ useQuery,
103
+ usePermission,
104
+ zero
105
+ };
106
+ }
107
+ //# sourceMappingURL=createZero.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createZero.tsx"],
4
+ "mappings": "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",
5
+ "names": ["import_react", "zeroUseQuery", "zero"]
6
+ }
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var createZero_exports = {};
17
+ __export(createZero_exports, {
18
+ createZero: () => createZero
19
+ });
20
+ module.exports = __toCommonJS(createZero_exports);
21
+ var import_jsx_runtime = require("react/jsx-runtime"), import_react = require("@rocicorp/zero/react"), import_helpers = require("@vxrn/helpers"), import_react2 = require("react"), import_createPermissions = require("./createPermissions"), import_context = require("./helpers/context"), import_createMutators = require("./helpers/createMutators"), import_prettyFormatZeroQuery = require("./helpers/prettyFormatZeroQuery"), import_useZeroDebug = require("./helpers/useZeroDebug");
22
+ function createZero(param) {
23
+ var { schema, models, disable } = param, modelPermissions = (0, import_helpers.mapObject)(models, function(val) {
24
+ return val.permissions;
25
+ }), permissionsHelpers = (0, import_createPermissions.createPermissions)({
26
+ schema,
27
+ models,
28
+ getContext: import_context.context,
29
+ environment: "client"
30
+ }), permissionCache = (0, import_helpers.createLocalStorage)("permissions-cache", {
31
+ storageLimit: 24
32
+ }), zeroEvents = (0, import_helpers.createEmitter)("zero", null), AuthDataContext = /* @__PURE__ */ (0, import_react2.createContext)({}), useAuthData = function() {
33
+ return (0, import_react2.use)(AuthDataContext);
34
+ };
35
+ function usePermission(table, action, objOrId) {
36
+ var enabled = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : typeof objOrId < "u", debug = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !1, keyBase = `${String(table)}${action}`, key = `${keyBase}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`, _permissionCache_get, cacheVal = (_permissionCache_get = permissionCache.get(key)) !== null && _permissionCache_get !== void 0 ? _permissionCache_get : permissionCache.get(keyBase), authData = useAuthData(), permission = modelPermissions[table], query = (function() {
37
+ var baseQuery = zero.query[table].one();
38
+ return enabled ? baseQuery.where(function(eb) {
39
+ return permissionsHelpers.buildPermissionQuery(authData, eb, permission, action, objOrId);
40
+ }) : baseQuery;
41
+ })(), [data, status] = useQuery(query, {
42
+ enabled: !!(enabled && authData && objOrId)
43
+ });
44
+ debug && console.info("usePermission()", {
45
+ data,
46
+ status,
47
+ action,
48
+ authData,
49
+ permission
50
+ }, (0, import_prettyFormatZeroQuery.prettyFormatZeroQuery)(query));
51
+ var result = data, allowed = !!result;
52
+ return objOrId ? allowed : !1;
53
+ }
54
+ var latestZeroInstance = null, zero = new Proxy({}, {
55
+ get(_, key) {
56
+ return Reflect.get(latestZeroInstance, key, latestZeroInstance);
57
+ }
58
+ }), useQuery = function(query, options) {
59
+ if (disable)
60
+ return [
61
+ null,
62
+ {
63
+ type: "unknown"
64
+ }
65
+ ];
66
+ var out = (0, import_react.useQuery)(query, options);
67
+ return process.env.NODE_ENV === "development" && (0, import_useZeroDebug.useZeroDebug)(query, options, out), out;
68
+ }, ProvideZero = function(param2) {
69
+ var { children, authData, ...props } = param2, mutators = (0, import_react2.useMemo)(function() {
70
+ return (0, import_createMutators.createMutators)({
71
+ models,
72
+ environment: "client",
73
+ authData,
74
+ can: permissionsHelpers.can
75
+ });
76
+ }, [
77
+ models,
78
+ authData
79
+ ]);
80
+ return disable ? children : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AuthDataContext.Provider, {
81
+ value: authData,
82
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.ZeroProvider, {
83
+ schema,
84
+ kvStore: "mem",
85
+ onError: function(error) {
86
+ console.error("Zero Error:", error), zeroEvents.emit({
87
+ type: "error",
88
+ message: error
89
+ });
90
+ },
91
+ mutators,
92
+ ...props,
93
+ children: [
94
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SetZeroInstance, {}),
95
+ children
96
+ ]
97
+ })
98
+ });
99
+ }, SetZeroInstance = function() {
100
+ var zero2 = (0, import_react.useZero)();
101
+ return zero2 !== latestZeroInstance && (latestZeroInstance = zero2), null;
102
+ };
103
+ return {
104
+ zeroEvents,
105
+ ProvideZero,
106
+ useQuery,
107
+ usePermission,
108
+ zero
109
+ };
110
+ }
111
+ // Annotate the CommonJS export names for ESM import in node:
112
+ 0 && (module.exports = {
113
+ createZero
114
+ });
115
+ //# sourceMappingURL=createZero.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createZero.tsx"],
4
+ "mappings": "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",
5
+ "names": ["import_react", "zeroUseQuery", "param", "_jsx", "_jsxs", "zero"]
6
+ }
@@ -0,0 +1,128 @@
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: !0
9
+ });
10
+ },
11
+ __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ });
16
+ return to;
17
+ };
18
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
19
+ value: !0
20
+ }), mod);
21
+ var createZeroClient_exports = {};
22
+ __export(createZeroClient_exports, {
23
+ createZeroClient: () => createZeroClient
24
+ });
25
+ module.exports = __toCommonJS(createZeroClient_exports);
26
+ var import_react = require("@rocicorp/zero/react"),
27
+ import_helpers = require("@vxrn/helpers"),
28
+ import_react2 = require("react"),
29
+ import_createPermissions = require("./createPermissions.cjs"),
30
+ import_context = require("./helpers/context.cjs"),
31
+ import_createMutators = require("./helpers/createMutators.cjs"),
32
+ import_prettyFormatZeroQuery = require("./helpers/prettyFormatZeroQuery.cjs"),
33
+ import_useZeroDebug = require("./helpers/useZeroDebug.cjs"),
34
+ import_jsx_runtime = require("react/jsx-runtime");
35
+ function createZeroClient({
36
+ schema,
37
+ models,
38
+ disable
39
+ }) {
40
+ const modelPermissions = (0, import_helpers.mapObject)(models, val => val.permissions),
41
+ permissionsHelpers = (0, import_createPermissions.createPermissions)({
42
+ schema,
43
+ models,
44
+ getContext: import_context.context,
45
+ environment: "client"
46
+ }),
47
+ permissionCache = (0, import_helpers.createLocalStorage)("permissions-cache", {
48
+ storageLimit: 24
49
+ }),
50
+ zeroEvents = (0, import_helpers.createEmitter)("zero", null),
51
+ AuthDataContext = (0, import_react2.createContext)({}),
52
+ useAuthData = () => (0, import_react2.use)(AuthDataContext);
53
+ function usePermission(table, action, objOrId, enabled = typeof objOrId < "u", debug = !1) {
54
+ const keyBase = `${String(table)}${action}`,
55
+ key = `${keyBase}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`,
56
+ cacheVal = permissionCache.get(key) ?? permissionCache.get(keyBase),
57
+ authData = useAuthData(),
58
+ permission = modelPermissions[table],
59
+ query = (() => {
60
+ let baseQuery = zero.query[table].one();
61
+ return enabled ? baseQuery.where(eb => permissionsHelpers.buildPermissionQuery(authData, eb, permission, action, objOrId)) : baseQuery;
62
+ })(),
63
+ [data, status] = useQuery(query, {
64
+ enabled: !!(enabled && authData && objOrId)
65
+ });
66
+ debug && console.info("usePermission()", {
67
+ data,
68
+ status,
69
+ action,
70
+ authData,
71
+ permission
72
+ }, (0, import_prettyFormatZeroQuery.prettyFormatZeroQuery)(query));
73
+ const allowed = !!data;
74
+ return objOrId ? allowed : !1;
75
+ }
76
+ let latestZeroInstance = null;
77
+ const zero = new Proxy({}, {
78
+ get(_, key) {
79
+ return Reflect.get(latestZeroInstance, key, latestZeroInstance);
80
+ }
81
+ }),
82
+ useQuery = (query, options) => {
83
+ if (disable) return [null, {
84
+ type: "unknown"
85
+ }];
86
+ const out = (0, import_react.useQuery)(query, options);
87
+ return process.env.NODE_ENV === "development" && (0, import_useZeroDebug.useZeroDebug)(query, options, out), out;
88
+ },
89
+ ProvideZero = ({
90
+ children,
91
+ authData,
92
+ ...props
93
+ }) => {
94
+ const mutators = (0, import_react2.useMemo)(() => (0, import_createMutators.createMutators)({
95
+ models,
96
+ environment: "client",
97
+ authData,
98
+ can: permissionsHelpers.can
99
+ }), [models, authData]);
100
+ return disable ? children : /* @__PURE__ */(0, import_jsx_runtime.jsx)(AuthDataContext.Provider, {
101
+ value: authData,
102
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_react.ZeroProvider, {
103
+ schema,
104
+ kvStore: "mem",
105
+ onError: error => {
106
+ console.error("Zero Error:", error), zeroEvents.emit({
107
+ type: "error",
108
+ message: error
109
+ });
110
+ },
111
+ mutators,
112
+ ...props,
113
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(SetZeroInstance, {}), children]
114
+ })
115
+ });
116
+ },
117
+ SetZeroInstance = () => {
118
+ const zero2 = (0, import_react.useZero)();
119
+ return zero2 !== latestZeroInstance && (latestZeroInstance = zero2), null;
120
+ };
121
+ return {
122
+ zeroEvents,
123
+ ProvideZero,
124
+ useQuery,
125
+ usePermission,
126
+ zero
127
+ };
128
+ }
@@ -0,0 +1,103 @@
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)
7
+ __defProp(target, name, { get: all[name], enumerable: !0 });
8
+ }, __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from == "object" || typeof from == "function")
10
+ for (let key of __getOwnPropNames(from))
11
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
15
+ var createZeroClient_exports = {};
16
+ __export(createZeroClient_exports, {
17
+ createZeroClient: () => createZeroClient
18
+ });
19
+ module.exports = __toCommonJS(createZeroClient_exports);
20
+ var import_react = require("@rocicorp/zero/react"), import_helpers = require("@vxrn/helpers"), import_react2 = require("react"), import_createPermissions = require("./createPermissions"), import_context = require("./helpers/context"), import_createMutators = require("./helpers/createMutators"), import_prettyFormatZeroQuery = require("./helpers/prettyFormatZeroQuery"), import_useZeroDebug = require("./helpers/useZeroDebug"), import_jsx_runtime = require("react/jsx-runtime");
21
+ function createZeroClient({ schema, models, disable }) {
22
+ const modelPermissions = (0, import_helpers.mapObject)(models, (val) => val.permissions), permissionsHelpers = (0, import_createPermissions.createPermissions)({
23
+ schema,
24
+ models,
25
+ getContext: import_context.context,
26
+ environment: "client"
27
+ }), permissionCache = (0, import_helpers.createLocalStorage)("permissions-cache", {
28
+ storageLimit: 24
29
+ }), zeroEvents = (0, import_helpers.createEmitter)("zero", null), AuthDataContext = (0, import_react2.createContext)({}), useAuthData = () => (0, import_react2.use)(AuthDataContext);
30
+ function usePermission(table, action, objOrId, enabled = typeof objOrId < "u", debug = !1) {
31
+ const keyBase = `${String(table)}${action}`, key = `${keyBase}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`, cacheVal = permissionCache.get(key) ?? permissionCache.get(keyBase), authData = useAuthData(), permission = modelPermissions[table], query = (() => {
32
+ let baseQuery = zero.query[table].one();
33
+ return enabled ? baseQuery.where((eb) => permissionsHelpers.buildPermissionQuery(
34
+ authData,
35
+ eb,
36
+ permission,
37
+ action,
38
+ objOrId
39
+ )) : baseQuery;
40
+ })(), [data, status] = useQuery(query, {
41
+ enabled: !!(enabled && authData && objOrId)
42
+ });
43
+ debug && console.info(
44
+ "usePermission()",
45
+ { data, status, action, authData, permission },
46
+ (0, import_prettyFormatZeroQuery.prettyFormatZeroQuery)(query)
47
+ );
48
+ const allowed = !!data;
49
+ return objOrId ? allowed : !1;
50
+ }
51
+ let latestZeroInstance = null;
52
+ const zero = new Proxy({}, {
53
+ get(_, key) {
54
+ return Reflect.get(latestZeroInstance, key, latestZeroInstance);
55
+ }
56
+ }), useQuery = (query, options) => {
57
+ if (disable)
58
+ return [null, { type: "unknown" }];
59
+ const out = (0, import_react.useQuery)(query, options);
60
+ return process.env.NODE_ENV === "development" && (0, import_useZeroDebug.useZeroDebug)(query, options, out), out;
61
+ }, ProvideZero = ({
62
+ children,
63
+ authData,
64
+ ...props
65
+ }) => {
66
+ const mutators = (0, import_react2.useMemo)(() => (0, import_createMutators.createMutators)({
67
+ models,
68
+ environment: "client",
69
+ authData,
70
+ can: permissionsHelpers.can
71
+ }), [models, authData]);
72
+ return disable ? children : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AuthDataContext.Provider, { value: authData, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
73
+ import_react.ZeroProvider,
74
+ {
75
+ schema,
76
+ kvStore: "mem",
77
+ onError: (error) => {
78
+ console.error("Zero Error:", error), zeroEvents.emit({
79
+ type: "error",
80
+ message: error
81
+ });
82
+ },
83
+ mutators,
84
+ ...props,
85
+ children: [
86
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SetZeroInstance, {}),
87
+ children
88
+ ]
89
+ }
90
+ ) });
91
+ }, SetZeroInstance = () => {
92
+ const zero2 = (0, import_react.useZero)();
93
+ return zero2 !== latestZeroInstance && (latestZeroInstance = zero2), null;
94
+ };
95
+ return {
96
+ zeroEvents,
97
+ ProvideZero,
98
+ useQuery,
99
+ usePermission,
100
+ zero
101
+ };
102
+ }
103
+ //# sourceMappingURL=createZeroClient.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createZeroClient.tsx"],
4
+ "mappings": "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",
5
+ "names": ["import_react", "zeroUseQuery", "zero"]
6
+ }
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var createZeroClient_exports = {};
17
+ __export(createZeroClient_exports, {
18
+ createZeroClient: () => createZeroClient
19
+ });
20
+ module.exports = __toCommonJS(createZeroClient_exports);
21
+ var import_jsx_runtime = require("react/jsx-runtime"), import_react = require("@rocicorp/zero/react"), import_helpers = require("@vxrn/helpers"), import_react2 = require("react"), import_createPermissions = require("./createPermissions"), import_context = require("./helpers/context"), import_createMutators = require("./helpers/createMutators"), import_prettyFormatZeroQuery = require("./helpers/prettyFormatZeroQuery"), import_useZeroDebug = require("./helpers/useZeroDebug");
22
+ function createZeroClient(param) {
23
+ var { schema, models, disable } = param, modelPermissions = (0, import_helpers.mapObject)(models, function(val) {
24
+ return val.permissions;
25
+ }), permissionsHelpers = (0, import_createPermissions.createPermissions)({
26
+ schema,
27
+ models,
28
+ getContext: import_context.context,
29
+ environment: "client"
30
+ }), permissionCache = (0, import_helpers.createLocalStorage)("permissions-cache", {
31
+ storageLimit: 24
32
+ }), zeroEvents = (0, import_helpers.createEmitter)("zero", null), AuthDataContext = /* @__PURE__ */ (0, import_react2.createContext)({}), useAuthData = function() {
33
+ return (0, import_react2.use)(AuthDataContext);
34
+ };
35
+ function usePermission(table, action, objOrId) {
36
+ var enabled = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : typeof objOrId < "u", debug = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !1, keyBase = `${String(table)}${action}`, key = `${keyBase}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`, _permissionCache_get, cacheVal = (_permissionCache_get = permissionCache.get(key)) !== null && _permissionCache_get !== void 0 ? _permissionCache_get : permissionCache.get(keyBase), authData = useAuthData(), permission = modelPermissions[table], query = (function() {
37
+ var baseQuery = zero.query[table].one();
38
+ return enabled ? baseQuery.where(function(eb) {
39
+ return permissionsHelpers.buildPermissionQuery(authData, eb, permission, action, objOrId);
40
+ }) : baseQuery;
41
+ })(), [data, status] = useQuery(query, {
42
+ enabled: !!(enabled && authData && objOrId)
43
+ });
44
+ debug && console.info("usePermission()", {
45
+ data,
46
+ status,
47
+ action,
48
+ authData,
49
+ permission
50
+ }, (0, import_prettyFormatZeroQuery.prettyFormatZeroQuery)(query));
51
+ var result = data, allowed = !!result;
52
+ return objOrId ? allowed : !1;
53
+ }
54
+ var latestZeroInstance = null, zero = new Proxy({}, {
55
+ get(_, key) {
56
+ return Reflect.get(latestZeroInstance, key, latestZeroInstance);
57
+ }
58
+ }), useQuery = function(query, options) {
59
+ if (disable)
60
+ return [
61
+ null,
62
+ {
63
+ type: "unknown"
64
+ }
65
+ ];
66
+ var out = (0, import_react.useQuery)(query, options);
67
+ return process.env.NODE_ENV === "development" && (0, import_useZeroDebug.useZeroDebug)(query, options, out), out;
68
+ }, ProvideZero = function(param2) {
69
+ var { children, authData, ...props } = param2, mutators = (0, import_react2.useMemo)(function() {
70
+ return (0, import_createMutators.createMutators)({
71
+ models,
72
+ environment: "client",
73
+ authData,
74
+ can: permissionsHelpers.can
75
+ });
76
+ }, [
77
+ models,
78
+ authData
79
+ ]);
80
+ return disable ? children : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AuthDataContext.Provider, {
81
+ value: authData,
82
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.ZeroProvider, {
83
+ schema,
84
+ kvStore: "mem",
85
+ onError: function(error) {
86
+ console.error("Zero Error:", error), zeroEvents.emit({
87
+ type: "error",
88
+ message: error
89
+ });
90
+ },
91
+ mutators,
92
+ ...props,
93
+ children: [
94
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SetZeroInstance, {}),
95
+ children
96
+ ]
97
+ })
98
+ });
99
+ }, SetZeroInstance = function() {
100
+ var zero2 = (0, import_react.useZero)();
101
+ return zero2 !== latestZeroInstance && (latestZeroInstance = zero2), null;
102
+ };
103
+ return {
104
+ zeroEvents,
105
+ ProvideZero,
106
+ useQuery,
107
+ usePermission,
108
+ zero
109
+ };
110
+ }
111
+ // Annotate the CommonJS export names for ESM import in node:
112
+ 0 && (module.exports = {
113
+ createZeroClient
114
+ });
115
+ //# sourceMappingURL=createZeroClient.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createZeroClient.tsx"],
4
+ "mappings": "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",
5
+ "names": ["import_react", "zeroUseQuery", "param", "_jsx", "_jsxs", "zero"]
6
+ }