over-zero 0.0.0 → 0.0.1

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 (193) 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/createZeroServer.cjs +131 -0
  12. package/dist/cjs/createZeroServer.js +108 -0
  13. package/dist/cjs/createZeroServer.js.map +6 -0
  14. package/dist/cjs/createZeroServer.native.js +107 -0
  15. package/dist/cjs/createZeroServer.native.js.map +6 -0
  16. package/dist/cjs/helpers/context.js.map +1 -1
  17. package/dist/cjs/helpers/context.native.js.map +1 -1
  18. package/dist/cjs/helpers/createMutators.cjs +11 -11
  19. package/dist/cjs/helpers/createMutators.js +9 -7
  20. package/dist/cjs/helpers/createMutators.js.map +1 -1
  21. package/dist/cjs/helpers/createMutators.native.js +8 -6
  22. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  23. package/dist/cjs/helpers/ensureLoggedIn.cjs +1 -1
  24. package/dist/cjs/helpers/ensureLoggedIn.js +1 -1
  25. package/dist/cjs/helpers/ensureLoggedIn.js.map +1 -1
  26. package/dist/cjs/helpers/ensureLoggedIn.native.js +1 -1
  27. package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
  28. package/dist/cjs/helpers/getAuthData.cjs +0 -36
  29. package/dist/cjs/helpers/getAuthData.js +0 -28
  30. package/dist/cjs/helpers/getAuthData.js.map +2 -2
  31. package/dist/cjs/helpers/getAuthData.native.js +0 -31
  32. package/dist/cjs/helpers/getAuthData.native.js.map +2 -2
  33. package/dist/cjs/helpers/useAuthData.cjs +0 -32
  34. package/dist/cjs/helpers/useAuthData.js +0 -24
  35. package/dist/cjs/helpers/useAuthData.js.map +2 -2
  36. package/dist/cjs/helpers/useAuthData.native.js +0 -31
  37. package/dist/cjs/helpers/useAuthData.native.js.map +2 -2
  38. package/dist/cjs/helpers/useZeroDebug.cjs +68 -0
  39. package/dist/cjs/helpers/useZeroDebug.js +49 -0
  40. package/dist/cjs/helpers/useZeroDebug.js.map +6 -0
  41. package/dist/cjs/helpers/useZeroDebug.native.js +66 -0
  42. package/dist/cjs/helpers/useZeroDebug.native.js.map +6 -0
  43. package/dist/cjs/helpers/zeroEmitter.cjs +2 -2
  44. package/dist/cjs/helpers/zeroEmitter.js +2 -2
  45. package/dist/cjs/helpers/zeroEmitter.native.js +1 -1
  46. package/dist/cjs/helpers/zeroEmitter.native.js.map +1 -1
  47. package/dist/cjs/index.cjs +3 -1
  48. package/dist/cjs/index.js +2 -0
  49. package/dist/cjs/index.js.map +1 -1
  50. package/dist/cjs/index.native.js +4 -0
  51. package/dist/cjs/index.native.js.map +1 -1
  52. package/dist/cjs/mutations.cjs +50 -0
  53. package/dist/cjs/mutations.js +43 -0
  54. package/dist/cjs/mutations.js.map +6 -0
  55. package/dist/cjs/mutations.native.js +50 -0
  56. package/dist/cjs/mutations.native.js.map +6 -0
  57. package/dist/cjs/server.cjs +18 -0
  58. package/dist/cjs/server.js +15 -0
  59. package/dist/cjs/server.js.map +6 -0
  60. package/dist/cjs/server.native.js +20 -0
  61. package/dist/cjs/server.native.js.map +6 -0
  62. package/dist/cjs/where.cjs +33 -0
  63. package/dist/cjs/where.js +28 -0
  64. package/dist/cjs/where.js.map +6 -0
  65. package/dist/cjs/where.native.js +34 -0
  66. package/dist/cjs/where.native.js.map +6 -0
  67. package/dist/esm/createPermissions.js +48 -47
  68. package/dist/esm/createPermissions.js.map +2 -2
  69. package/dist/esm/createPermissions.mjs +41 -55
  70. package/dist/esm/createPermissions.mjs.map +1 -1
  71. package/dist/esm/createPermissions.native.js +55 -69
  72. package/dist/esm/createPermissions.native.js.map +1 -1
  73. package/dist/esm/createZero.js +99 -0
  74. package/dist/esm/createZero.js.map +6 -0
  75. package/dist/esm/createZero.mjs +105 -0
  76. package/dist/esm/createZero.mjs.map +1 -0
  77. package/dist/esm/createZero.native.js +119 -0
  78. package/dist/esm/createZero.native.js.map +1 -0
  79. package/dist/esm/createZeroServer.js +90 -0
  80. package/dist/esm/createZeroServer.js.map +6 -0
  81. package/dist/esm/createZeroServer.mjs +97 -0
  82. package/dist/esm/createZeroServer.mjs.map +1 -0
  83. package/dist/esm/createZeroServer.native.js +104 -0
  84. package/dist/esm/createZeroServer.native.js.map +1 -0
  85. package/dist/esm/helpers/context.js.map +1 -1
  86. package/dist/esm/helpers/context.mjs.map +1 -1
  87. package/dist/esm/helpers/context.native.js.map +1 -1
  88. package/dist/esm/helpers/createMutators.js +6 -7
  89. package/dist/esm/helpers/createMutators.js.map +1 -1
  90. package/dist/esm/helpers/createMutators.mjs +7 -7
  91. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  92. package/dist/esm/helpers/createMutators.native.js +9 -7
  93. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  94. package/dist/esm/helpers/ensureLoggedIn.js +1 -1
  95. package/dist/esm/helpers/ensureLoggedIn.js.map +1 -1
  96. package/dist/esm/helpers/ensureLoggedIn.mjs +1 -1
  97. package/dist/esm/helpers/ensureLoggedIn.mjs.map +1 -1
  98. package/dist/esm/helpers/ensureLoggedIn.native.js +1 -1
  99. package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -1
  100. package/dist/esm/helpers/getAuthData.js +0 -12
  101. package/dist/esm/helpers/getAuthData.js.map +2 -2
  102. package/dist/esm/helpers/getAuthData.mjs +1 -12
  103. package/dist/esm/helpers/getAuthData.mjs.map +1 -1
  104. package/dist/esm/helpers/getAuthData.native.js +1 -12
  105. package/dist/esm/helpers/getAuthData.native.js.map +1 -1
  106. package/dist/esm/helpers/useAuthData.js +0 -10
  107. package/dist/esm/helpers/useAuthData.js.map +2 -2
  108. package/dist/esm/helpers/useAuthData.mjs +1 -8
  109. package/dist/esm/helpers/useAuthData.mjs.map +1 -1
  110. package/dist/esm/helpers/useAuthData.native.js +1 -12
  111. package/dist/esm/helpers/useAuthData.native.js.map +1 -1
  112. package/dist/esm/helpers/useZeroDebug.js +35 -0
  113. package/dist/esm/helpers/useZeroDebug.js.map +6 -0
  114. package/dist/esm/helpers/useZeroDebug.mjs +45 -0
  115. package/dist/esm/helpers/useZeroDebug.mjs.map +1 -0
  116. package/dist/esm/helpers/useZeroDebug.native.js +53 -0
  117. package/dist/esm/helpers/useZeroDebug.native.js.map +1 -0
  118. package/dist/esm/helpers/zeroEmitter.js +1 -1
  119. package/dist/esm/helpers/zeroEmitter.mjs +1 -1
  120. package/dist/esm/helpers/zeroEmitter.native.js +1 -1
  121. package/dist/esm/index.js +2 -0
  122. package/dist/esm/index.js.map +1 -1
  123. package/dist/esm/index.mjs +3 -1
  124. package/dist/esm/index.mjs.map +1 -1
  125. package/dist/esm/index.native.js +3 -1
  126. package/dist/esm/index.native.js.map +1 -1
  127. package/dist/esm/mutations.js +27 -0
  128. package/dist/esm/mutations.js.map +6 -0
  129. package/dist/esm/mutations.mjs +27 -0
  130. package/dist/esm/mutations.mjs.map +1 -0
  131. package/dist/esm/mutations.native.js +29 -0
  132. package/dist/esm/mutations.native.js.map +1 -0
  133. package/dist/esm/server.js +2 -0
  134. package/dist/esm/server.js.map +6 -0
  135. package/dist/esm/server.mjs +2 -0
  136. package/dist/esm/server.mjs.map +1 -0
  137. package/dist/esm/server.native.js +2 -0
  138. package/dist/esm/server.native.js.map +1 -0
  139. package/dist/esm/where.js +12 -0
  140. package/dist/esm/where.js.map +6 -0
  141. package/dist/esm/where.mjs +9 -0
  142. package/dist/esm/where.mjs.map +1 -0
  143. package/dist/esm/where.native.js +9 -0
  144. package/dist/esm/where.native.js.map +1 -0
  145. package/package.json +12 -6
  146. package/src/createPermissions.ts +17 -77
  147. package/src/{createZeroClient.tsx → createZero.tsx} +25 -17
  148. package/src/createZeroServer.ts +43 -43
  149. package/src/helpers/createMutators.ts +19 -29
  150. package/src/helpers/ensureLoggedIn.ts +2 -1
  151. package/src/helpers/prettyFormatZeroQuery.ts +1 -1
  152. package/src/helpers/useZeroDebug.ts +1 -0
  153. package/src/index.ts +2 -6
  154. package/src/mutations.ts +20 -7
  155. package/src/server.ts +1 -0
  156. package/src/types.ts +74 -7
  157. package/src/where.ts +28 -0
  158. package/src/helpers/clearZeroDatabase.ts +0 -68
  159. package/src/helpers/getAuthData.tsx +0 -12
  160. package/src/helpers/useAuthData.ts +0 -13
  161. package/src/helpers/zeroEmitter.ts +0 -5
  162. package/types/createMutations.d.ts +0 -20
  163. package/types/createMutations.d.ts.map +0 -1
  164. package/types/createPermissions.d.ts +0 -37
  165. package/types/createPermissions.d.ts.map +0 -1
  166. package/types/createZeroClient.d.ts +0 -45
  167. package/types/createZeroClient.d.ts.map +0 -1
  168. package/types/createZeroServer.d.ts +0 -61
  169. package/types/createZeroServer.d.ts.map +0 -1
  170. package/types/helpers/batchQuery.d.ts +0 -7
  171. package/types/helpers/batchQuery.d.ts.map +0 -1
  172. package/types/helpers/clearZeroDatabase.d.ts +0 -2
  173. package/types/helpers/clearZeroDatabase.d.ts.map +0 -1
  174. package/types/helpers/context.d.ts +0 -5
  175. package/types/helpers/context.d.ts.map +0 -1
  176. package/types/helpers/createMutators.d.ts +0 -16
  177. package/types/helpers/createMutators.d.ts.map +0 -1
  178. package/types/helpers/ensureLoggedIn.d.ts +0 -2
  179. package/types/helpers/ensureLoggedIn.d.ts.map +0 -1
  180. package/types/helpers/getAuthData.d.ts +0 -1
  181. package/types/helpers/getAuthData.d.ts.map +0 -1
  182. package/types/helpers/prettyFormatZeroQuery.d.ts +0 -3
  183. package/types/helpers/prettyFormatZeroQuery.d.ts.map +0 -1
  184. package/types/helpers/useAuthData.d.ts +0 -1
  185. package/types/helpers/useAuthData.d.ts.map +0 -1
  186. package/types/helpers/useZeroDebug.d.ts +0 -3
  187. package/types/helpers/useZeroDebug.d.ts.map +0 -1
  188. package/types/helpers/zeroEmitter.d.ts +0 -2
  189. package/types/helpers/zeroEmitter.d.ts.map +0 -1
  190. package/types/index.d.ts +0 -9
  191. package/types/index.d.ts.map +0 -1
  192. package/types/types.d.ts +0 -21
  193. 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,131 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf,
6
+ __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
+ value: mod,
27
+ enumerable: !0
28
+ }) : target, mod)),
29
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
30
+ value: !0
31
+ }), mod);
32
+ var createZeroServer_exports = {};
33
+ __export(createZeroServer_exports, {
34
+ createZeroServer: () => createZeroServer
35
+ });
36
+ module.exports = __toCommonJS(createZeroServer_exports);
37
+ var import_pg = require("@rocicorp/zero/pg"),
38
+ import_server = require("@rocicorp/zero/server"),
39
+ import_helpers = require("@vxrn/helpers"),
40
+ import_postgres = __toESM(require("postgres"), 1),
41
+ import_createPermissions = require("./createPermissions.cjs"),
42
+ import_context = require("./helpers/context.cjs"),
43
+ import_createMutators = require("./helpers/createMutators.cjs");
44
+ function createZeroServer({
45
+ createServerActions,
46
+ schema,
47
+ models
48
+ }) {
49
+ const dbString = (0, import_helpers.assertString)(process.env.ZERO_UPSTREAM_DB),
50
+ zeroServerDatabase = new import_server.ZQLDatabase(new import_pg.PostgresJSConnection((0, import_postgres.default)(dbString)), schema),
51
+ permissions = (0, import_createPermissions.createPermissions)({
52
+ environment: "server",
53
+ schema,
54
+ models,
55
+ getContext: import_context.context
56
+ }),
57
+ processor = new import_pg.PushProcessor(zeroServerDatabase),
58
+ handleMutationRequest = async ({
59
+ authData,
60
+ request,
61
+ skipAsyncTasks
62
+ }) => {
63
+ const asyncTasks = [],
64
+ mutators = (0, import_createMutators.createMutators)({
65
+ asyncTasks,
66
+ can: permissions.can,
67
+ createServerActions,
68
+ environment: "server",
69
+ models,
70
+ authData
71
+ }),
72
+ response = await processor.process(mutators, request);
73
+ if (!skipAsyncTasks && asyncTasks.length) {
74
+ const id = (0, import_helpers.randomId)();
75
+ console.info(`[push] complete, running async tasks ${asyncTasks.length} id ${id}`), Promise.all(asyncTasks.map(task => task())).then(() => {
76
+ console.info(`[push] async tasks complete ${id}`);
77
+ }).catch(err => {
78
+ console.error("[push] error: async tasks failed \u{1F61E}", err);
79
+ });
80
+ }
81
+ return {
82
+ response,
83
+ asyncTasks
84
+ };
85
+ },
86
+ serverMutate = async (run, authData) => {
87
+ const asyncTasks = [],
88
+ mutators = (0, import_createMutators.createMutators)({
89
+ models,
90
+ environment: "server",
91
+ asyncTasks,
92
+ authData: {
93
+ id: "",
94
+ email: "admin@start.chat",
95
+ role: "admin",
96
+ ...authData
97
+ },
98
+ createServerActions,
99
+ can: permissions.can
100
+ });
101
+ await serverTransaction(async tx => {
102
+ await run(tx, mutators);
103
+ }), await Promise.all(asyncTasks.map(t => t()));
104
+ },
105
+ serverQuery = serverTransaction,
106
+ dummyTransactionInput = {
107
+ clientGroupID: "unused",
108
+ clientID: "unused",
109
+ mutationID: 42,
110
+ upstreamSchema: "unused"
111
+ };
112
+ async function serverTransaction(query) {
113
+ try {
114
+ if ((0, import_context.isInZeroMutation)()) {
115
+ const {
116
+ tx
117
+ } = (0, import_context.context)();
118
+ return await query(tx);
119
+ }
120
+ return await zeroServerDatabase.transaction(query, dummyTransactionInput);
121
+ } catch (err) {
122
+ throw console.error(`Error running serverTransaction(): ${err}`), err;
123
+ }
124
+ }
125
+ return {
126
+ handleMutationRequest,
127
+ transaction: serverTransaction,
128
+ mutate: serverMutate,
129
+ query: serverQuery
130
+ };
131
+ }
@@ -0,0 +1,108 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf, __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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
+ // If the importer is in node compatibility mode or this is not an ESM
17
+ // file that has been converted to a CommonJS file using a Babel-
18
+ // compatible transform (i.e. "__esModule" has not been set), then set
19
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
21
+ mod
22
+ )), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
23
+ var createZeroServer_exports = {};
24
+ __export(createZeroServer_exports, {
25
+ createZeroServer: () => createZeroServer
26
+ });
27
+ module.exports = __toCommonJS(createZeroServer_exports);
28
+ var import_pg = require("@rocicorp/zero/pg"), import_server = require("@rocicorp/zero/server"), import_helpers = require("@vxrn/helpers"), import_postgres = __toESM(require("postgres"), 1), import_createPermissions = require("./createPermissions"), import_context = require("./helpers/context"), import_createMutators = require("./helpers/createMutators");
29
+ function createZeroServer({
30
+ createServerActions,
31
+ schema,
32
+ models
33
+ }) {
34
+ const dbString = (0, import_helpers.assertString)(process.env.ZERO_UPSTREAM_DB), zeroServerDatabase = new import_server.ZQLDatabase(
35
+ new import_pg.PostgresJSConnection((0, import_postgres.default)(dbString)),
36
+ schema
37
+ ), permissions = (0, import_createPermissions.createPermissions)({
38
+ environment: "server",
39
+ schema,
40
+ models,
41
+ getContext: import_context.context
42
+ }), processor = new import_pg.PushProcessor(zeroServerDatabase), handleMutationRequest = async ({
43
+ authData,
44
+ request,
45
+ skipAsyncTasks
46
+ }) => {
47
+ const asyncTasks = [], mutators = (0, import_createMutators.createMutators)({
48
+ asyncTasks,
49
+ can: permissions.can,
50
+ createServerActions,
51
+ environment: "server",
52
+ models,
53
+ authData
54
+ }), response = await processor.process(mutators, request);
55
+ if (!skipAsyncTasks && asyncTasks.length) {
56
+ const id = (0, import_helpers.randomId)();
57
+ console.info(`[push] complete, running async tasks ${asyncTasks.length} id ${id}`), Promise.all(asyncTasks.map((task) => task())).then(() => {
58
+ console.info(`[push] async tasks complete ${id}`);
59
+ }).catch((err) => {
60
+ console.error("[push] error: async tasks failed \u{1F61E}", err);
61
+ });
62
+ }
63
+ return {
64
+ response,
65
+ asyncTasks
66
+ };
67
+ }, serverMutate = async (run, authData) => {
68
+ const asyncTasks = [], mutators = (0, import_createMutators.createMutators)({
69
+ models,
70
+ environment: "server",
71
+ asyncTasks,
72
+ authData: {
73
+ id: "",
74
+ email: "admin@start.chat",
75
+ role: "admin",
76
+ ...authData
77
+ },
78
+ createServerActions,
79
+ can: permissions.can
80
+ });
81
+ await serverTransaction(async (tx) => {
82
+ await run(tx, mutators);
83
+ }), await Promise.all(asyncTasks.map((t) => t()));
84
+ }, serverQuery = serverTransaction, dummyTransactionInput = {
85
+ clientGroupID: "unused",
86
+ clientID: "unused",
87
+ mutationID: 42,
88
+ upstreamSchema: "unused"
89
+ };
90
+ async function serverTransaction(query) {
91
+ try {
92
+ if ((0, import_context.isInZeroMutation)()) {
93
+ const { tx } = (0, import_context.context)();
94
+ return await query(tx);
95
+ }
96
+ return await zeroServerDatabase.transaction(query, dummyTransactionInput);
97
+ } catch (err) {
98
+ throw console.error(`Error running serverTransaction(): ${err}`), err;
99
+ }
100
+ }
101
+ return {
102
+ handleMutationRequest,
103
+ transaction: serverTransaction,
104
+ mutate: serverMutate,
105
+ query: serverQuery
106
+ };
107
+ }
108
+ //# sourceMappingURL=createZeroServer.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createZeroServer.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,gBAAoD,8BACpD,gBAA4B,kCAC5B,iBAAuC,0BACvC,kBAAqB,iCACrB,2BAAkC,gCAClC,iBAA0C,8BAC1C,wBAA+B;AASxB,SAAS,iBAId;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,eAAW,6BAAa,QAAQ,IAAI,gBAAgB,GAEpD,qBAAqB,IAAI;AAAA,IAC7B,IAAI,mCAAqB,gBAAAA,SAAS,QAAQ,CAAC;AAAA,IAC3C;AAAA,EACF,GAEM,kBAAc,4CAA0B;AAAA,IAC5C,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACd,CAAC,GAEK,YAAY,IAAI,wBAAc,kBAAkB,GAEhD,wBAAwB,OAAO;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,EACF,MAIM;AAEJ,UAAM,aAA4B,CAAC,GAE7B,eAAW,sCAAe;AAAA,MAC9B;AAAA,MACA,KAAK,YAAY;AAAA,MACjB;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA;AAAA,IACF,CAAC,GAGK,WAAW,MAAM,UAAU,QAAQ,UAAU,OAAO;AAG1D,QAAI,CAAC,kBAAkB,WAAW,QAAQ;AACxC,YAAM,SAAK,yBAAS;AACpB,cAAQ,KAAK,wCAAwC,WAAW,MAAM,OAAO,EAAE,EAAE,GACjF,QAAQ,IAAI,WAAW,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,EACzC,KAAK,MAAM;AACV,gBAAQ,KAAK,+BAA+B,EAAE,EAAE;AAAA,MAClD,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,gBAAQ,MAAM,8CAAuC,GAAG;AAAA,MAC1D,CAAC;AAAA,IACL;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF,GAEM,eAAe,OACnB,KACA,aACG;AACH,UAAM,aAAyC,CAAC,GAE1C,eAAW,sCAAe;AAAA,MAC9B;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA,UAAU;AAAA,QACR,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,GAAG;AAAA,MACL;AAAA,MACA;AAAA,MACA,KAAK,YAAY;AAAA,IACnB,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,cAAI,iCAAiB,GAAG;AACtB,cAAM,EAAE,GAAG,QAAI,wBAAQ;AACvB,eAAO,MAAM,MAAM,EAAE;AAAA,MACvB;AAGA,aADe,MAAM,mBAAmB,YAAY,OAAO,qBAAqB;AAAA,IAElF,SAAS,KAAK;AACZ,oBAAQ,MAAM,sCAAsC,GAAG,EAAE,GACnD;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AACF;",
5
+ "names": ["postgres"]
6
+ }
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: !0 });
10
+ }, __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from == "object" || typeof from == "function")
12
+ for (let key of __getOwnPropNames(from))
13
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
22
+ mod
23
+ )), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
24
+ var createZeroServer_exports = {};
25
+ __export(createZeroServer_exports, {
26
+ createZeroServer: () => createZeroServer
27
+ });
28
+ module.exports = __toCommonJS(createZeroServer_exports);
29
+ var import_pg = require("@rocicorp/zero/pg"), import_server = require("@rocicorp/zero/server"), import_helpers = require("@vxrn/helpers"), import_postgres = __toESM(require("postgres"), 1), import_createPermissions = require("./createPermissions"), import_context = require("./helpers/context"), import_createMutators = require("./helpers/createMutators");
30
+ function createZeroServer(param) {
31
+ var { createServerActions, schema, models } = param, dbString = (0, import_helpers.assertString)(process.env.ZERO_UPSTREAM_DB), zeroServerDatabase = new import_server.ZQLDatabase(new import_pg.PostgresJSConnection((0, import_postgres.default)(dbString)), schema), permissions = (0, import_createPermissions.createPermissions)({
32
+ environment: "server",
33
+ schema,
34
+ models,
35
+ getContext: import_context.context
36
+ }), processor = new import_pg.PushProcessor(zeroServerDatabase), handleMutationRequest = async function(param2) {
37
+ var { authData, request, skipAsyncTasks } = param2, asyncTasks = [], mutators = (0, import_createMutators.createMutators)({
38
+ asyncTasks,
39
+ can: permissions.can,
40
+ createServerActions,
41
+ environment: "server",
42
+ models,
43
+ authData
44
+ }), response = await processor.process(mutators, request);
45
+ if (!skipAsyncTasks && asyncTasks.length) {
46
+ var id = (0, import_helpers.randomId)();
47
+ console.info(`[push] complete, running async tasks ${asyncTasks.length} id ${id}`), Promise.all(asyncTasks.map(function(task) {
48
+ return task();
49
+ })).then(function() {
50
+ console.info(`[push] async tasks complete ${id}`);
51
+ }).catch(function(err) {
52
+ console.error("[push] error: async tasks failed \u{1F61E}", err);
53
+ });
54
+ }
55
+ return {
56
+ response,
57
+ asyncTasks
58
+ };
59
+ }, serverMutate = async function(run, authData) {
60
+ var asyncTasks = [], mutators = (0, import_createMutators.createMutators)({
61
+ models,
62
+ environment: "server",
63
+ asyncTasks,
64
+ authData: {
65
+ id: "",
66
+ email: "admin@start.chat",
67
+ role: "admin",
68
+ ...authData
69
+ },
70
+ createServerActions,
71
+ can: permissions.can
72
+ });
73
+ await serverTransaction(async function(tx) {
74
+ await run(tx, mutators);
75
+ }), await Promise.all(asyncTasks.map(function(t) {
76
+ return t();
77
+ }));
78
+ }, serverQuery = serverTransaction, dummyTransactionInput = {
79
+ clientGroupID: "unused",
80
+ clientID: "unused",
81
+ mutationID: 42,
82
+ upstreamSchema: "unused"
83
+ };
84
+ async function serverTransaction(query) {
85
+ try {
86
+ if ((0, import_context.isInZeroMutation)()) {
87
+ var { tx } = (0, import_context.context)();
88
+ return await query(tx);
89
+ }
90
+ var output = await zeroServerDatabase.transaction(query, dummyTransactionInput);
91
+ return output;
92
+ } catch (err) {
93
+ throw console.error(`Error running serverTransaction(): ${err}`), err;
94
+ }
95
+ }
96
+ return {
97
+ handleMutationRequest,
98
+ transaction: serverTransaction,
99
+ mutate: serverMutate,
100
+ query: serverQuery
101
+ };
102
+ }
103
+ // Annotate the CommonJS export names for ESM import in node:
104
+ 0 && (module.exports = {
105
+ createZeroServer
106
+ });
107
+ //# sourceMappingURL=createZeroServer.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createZeroServer.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAoD,8BACpD,gBAA4B,kCAC5B,iBAAuC,0BACvC,kBAAqB,iCACrB,2BAAkC,gCAClC,iBAA0C,8BAC1C,wBAA+B;AACxB,SAAS,iBAAiB,OAAO;AACpC,MAAI,EAAE,qBAAqB,QAAQ,OAAO,IAAI,OAC1C,eAAW,6BAAa,QAAQ,IAAI,gBAAgB,GACpD,qBAAqB,IAAI,0BAAY,IAAI,mCAAqB,gBAAAA,SAAS,QAAQ,CAAC,GAAG,MAAM,GACzF,kBAAc,4CAAkB;AAAA,IAChC,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EAChB,CAAC,GACG,YAAY,IAAI,wBAAc,kBAAkB,GAChD,wBAAwB,eAAeC,QAAO;AAC9C,QAAI,EAAE,UAAU,SAAS,eAAe,IAAIA,QAExC,aAAa,CAAC,GACd,eAAW,sCAAe;AAAA,MAC1B;AAAA,MACA,KAAK,YAAY;AAAA,MACjB;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA;AAAA,IACJ,CAAC,GAEG,WAAW,MAAM,UAAU,QAAQ,UAAU,OAAO;AAExD,QAAI,CAAC,kBAAkB,WAAW,QAAQ;AACtC,UAAI,SAAK,yBAAS;AAClB,cAAQ,KAAK,wCAAwC,WAAW,MAAM,OAAO,EAAE,EAAE,GACjF,QAAQ,IAAI,WAAW,IAAI,SAAS,MAAM;AACtC,eAAO,KAAK;AAAA,MAChB,CAAC,CAAC,EAAE,KAAK,WAAW;AAChB,gBAAQ,KAAK,+BAA+B,EAAE,EAAE;AAAA,MACpD,CAAC,EAAE,MAAM,SAAS,KAAK;AACnB,gBAAQ,MAAM,8CAAuC,GAAG;AAAA,MAC5D,CAAC;AAAA,IACL;AACA,WAAO;AAAA,MACH;AAAA,MACA;AAAA,IACJ;AAAA,EACJ,GACI,eAAe,eAAe,KAAK,UAAU;AAC7C,QAAI,aAAa,CAAC,GACd,eAAW,sCAAe;AAAA,MAC1B;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA,UAAU;AAAA,QACN,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,GAAG;AAAA,MACP;AAAA,MACA;AAAA,MACA,KAAK,YAAY;AAAA,IACrB,CAAC;AACD,UAAM,kBAAkB,eAAe,IAAI;AACvC,YAAM,IAAI,IAAI,QAAQ;AAAA,IAC1B,CAAC,GACD,MAAM,QAAQ,IAAI,WAAW,IAAI,SAAS,GAAG;AACzC,aAAO,EAAE;AAAA,IACb,CAAC,CAAC;AAAA,EACN,GAGI,cAAc,mBAEd,wBAAwB;AAAA,IACxB,eAAe;AAAA,IACf,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,gBAAgB;AAAA,EACpB;AACA,iBAAe,kBAAkB,OAAO;AACpC,QAAI;AACA,cAAI,iCAAiB,GAAG;AACpB,YAAI,EAAE,GAAG,QAAI,wBAAQ;AACrB,eAAO,MAAM,MAAM,EAAE;AAAA,MACzB;AAEA,UAAI,SAAS,MAAM,mBAAmB,YAAY,OAAO,qBAAqB;AAC9E,aAAO;AAAA,IACX,SAAS,KAAK;AACV,oBAAQ,MAAM,sCAAsC,GAAG,EAAE,GACnD;AAAA,IACV;AAAA,EACJ;AACA,SAAO;AAAA,IACH;AAAA,IACA,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACJ;",
5
+ "names": ["postgres", "param"]
6
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/context.ts"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qBAAmC;AAcnC,MAAM,mBAAe,mCAAmC;AAIjD,SAAS,UAA0B;AACxC,QAAM,iBAAiB,aAAa,IAAI;AACxC,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,yCAAyC;AAG3D,SAAO;AACT;AAEO,SAAS,mBAAmB;AACjC,SAAO,CAAC,CAAC,aAAa,IAAI;AAC5B;AAEO,SAAS,eACdA,UACA,IACY;AACZ,SAAO,aAAa,IAAIA,UAAS,EAAE;AACrC;",
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAmC;AAKnC,MAAM,mBAAe,mCAAmC;AAIjD,SAAS,UAA0B;AACxC,QAAM,iBAAiB,aAAa,IAAI;AACxC,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,yCAAyC;AAG3D,SAAO;AACT;AAEO,SAAS,mBAAmB;AACjC,SAAO,CAAC,CAAC,aAAa,IAAI;AAC5B;AAEO,SAAS,eACdA,UACA,IACY;AACZ,SAAO,aAAa,IAAIA,UAAS,EAAE;AACrC;",
5
5
  "names": ["context"]
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/context.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAmC,0BAG/B,mBAAe,mCAAmB;AAE/B,SAAS,UAAU;AACtB,MAAI,iBAAiB,aAAa,IAAI;AACtC,MAAI,CAAC;AACD,UAAM,IAAI,MAAM,yCAAyC;AAE7D,SAAO;AACX;AACO,SAAS,mBAAmB;AAC/B,SAAO,CAAC,CAAC,aAAa,IAAI;AAC9B;AACO,SAAS,eAAeA,UAAS,IAAI;AACxC,SAAO,aAAa,IAAIA,UAAS,EAAE;AACvC;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAmC,0BAE/B,mBAAe,mCAAmB;AAE/B,SAAS,UAAU;AACtB,MAAI,iBAAiB,aAAa,IAAI;AACtC,MAAI,CAAC;AACD,UAAM,IAAI,MAAM,yCAAyC;AAE7D,SAAO;AACX;AACO,SAAS,mBAAmB;AAC/B,SAAO,CAAC,CAAC,aAAa,IAAI;AAC9B;AACO,SAAS,eAAeA,UAAS,IAAI;AACxC,SAAO,aAAa,IAAIA,UAAS,EAAE;AACvC;",
5
5
  "names": ["context"]
6
6
  }