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.
- package/dist/cjs/createPermissions.cjs +43 -57
- package/dist/cjs/createPermissions.js +46 -48
- package/dist/cjs/createPermissions.js.map +2 -2
- package/dist/cjs/createPermissions.native.js +46 -53
- package/dist/cjs/createPermissions.native.js.map +2 -2
- package/dist/cjs/createZero.cjs +128 -0
- package/dist/cjs/createZero.js +107 -0
- package/dist/cjs/createZero.js.map +6 -0
- package/dist/cjs/createZero.native.js +115 -0
- package/dist/cjs/createZero.native.js.map +6 -0
- package/dist/cjs/createZeroClient.cjs +128 -0
- package/dist/cjs/createZeroClient.js +103 -0
- package/dist/cjs/createZeroClient.js.map +6 -0
- package/dist/cjs/createZeroClient.native.js +115 -0
- package/dist/cjs/createZeroClient.native.js.map +6 -0
- package/dist/cjs/createZeroServer.cjs +131 -0
- package/dist/cjs/createZeroServer.js +108 -0
- package/dist/cjs/createZeroServer.js.map +6 -0
- package/dist/cjs/createZeroServer.native.js +107 -0
- package/dist/cjs/createZeroServer.native.js.map +6 -0
- package/dist/cjs/helpers/context.js.map +1 -1
- package/dist/cjs/helpers/context.native.js.map +1 -1
- package/dist/cjs/helpers/createMutators.cjs +11 -11
- package/dist/cjs/helpers/createMutators.js +9 -7
- package/dist/cjs/helpers/createMutators.js.map +1 -1
- package/dist/cjs/helpers/createMutators.native.js +8 -6
- package/dist/cjs/helpers/createMutators.native.js.map +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.cjs +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.js +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.js.map +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.native.js +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
- package/dist/cjs/helpers/getAuthData.cjs +0 -36
- package/dist/cjs/helpers/getAuthData.js +0 -28
- package/dist/cjs/helpers/getAuthData.js.map +2 -2
- package/dist/cjs/helpers/getAuthData.native.js +0 -31
- package/dist/cjs/helpers/getAuthData.native.js.map +2 -2
- package/dist/cjs/helpers/useAuthData.cjs +0 -32
- package/dist/cjs/helpers/useAuthData.js +0 -24
- package/dist/cjs/helpers/useAuthData.js.map +2 -2
- package/dist/cjs/helpers/useAuthData.native.js +0 -31
- package/dist/cjs/helpers/useAuthData.native.js.map +2 -2
- package/dist/cjs/helpers/useZeroDebug.cjs +68 -0
- package/dist/cjs/helpers/useZeroDebug.js +49 -0
- package/dist/cjs/helpers/useZeroDebug.js.map +6 -0
- package/dist/cjs/helpers/useZeroDebug.native.js +66 -0
- package/dist/cjs/helpers/useZeroDebug.native.js.map +6 -0
- package/dist/cjs/helpers/zeroEmitter.cjs +2 -2
- package/dist/cjs/helpers/zeroEmitter.js +2 -2
- package/dist/cjs/helpers/zeroEmitter.native.js +1 -1
- package/dist/cjs/helpers/zeroEmitter.native.js.map +1 -1
- package/dist/cjs/index.cjs +3 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +6 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/mutations.cjs +50 -0
- package/dist/cjs/mutations.js +43 -0
- package/dist/cjs/mutations.js.map +6 -0
- package/dist/cjs/mutations.native.js +50 -0
- package/dist/cjs/mutations.native.js.map +6 -0
- package/dist/cjs/server.cjs +18 -0
- package/dist/cjs/server.js +15 -0
- package/dist/cjs/server.js.map +6 -0
- package/dist/cjs/server.native.js +20 -0
- package/dist/cjs/server.native.js.map +6 -0
- package/dist/cjs/where.cjs +33 -0
- package/dist/cjs/where.js +28 -0
- package/dist/cjs/where.js.map +6 -0
- package/dist/cjs/where.native.js +34 -0
- package/dist/cjs/where.native.js.map +6 -0
- package/dist/esm/createPermissions.js +48 -47
- package/dist/esm/createPermissions.js.map +2 -2
- package/dist/esm/createPermissions.mjs +41 -55
- package/dist/esm/createPermissions.mjs.map +1 -1
- package/dist/esm/createPermissions.native.js +55 -69
- package/dist/esm/createPermissions.native.js.map +1 -1
- package/dist/esm/createZero.js +99 -0
- package/dist/esm/createZero.js.map +6 -0
- package/dist/esm/createZero.mjs +105 -0
- package/dist/esm/createZero.mjs.map +1 -0
- package/dist/esm/createZero.native.js +119 -0
- package/dist/esm/createZero.native.js.map +1 -0
- package/dist/esm/createZeroClient.js +95 -0
- package/dist/esm/createZeroClient.js.map +6 -0
- package/dist/esm/createZeroClient.mjs +105 -0
- package/dist/esm/createZeroClient.mjs.map +1 -0
- package/dist/esm/createZeroClient.native.js +119 -0
- package/dist/esm/createZeroClient.native.js.map +1 -0
- package/dist/esm/createZeroServer.js +90 -0
- package/dist/esm/createZeroServer.js.map +6 -0
- package/dist/esm/createZeroServer.mjs +97 -0
- package/dist/esm/createZeroServer.mjs.map +1 -0
- package/dist/esm/createZeroServer.native.js +104 -0
- package/dist/esm/createZeroServer.native.js.map +1 -0
- package/dist/esm/helpers/context.js.map +1 -1
- package/dist/esm/helpers/context.mjs.map +1 -1
- package/dist/esm/helpers/context.native.js.map +1 -1
- package/dist/esm/helpers/createMutators.js +6 -7
- package/dist/esm/helpers/createMutators.js.map +1 -1
- package/dist/esm/helpers/createMutators.mjs +7 -7
- package/dist/esm/helpers/createMutators.mjs.map +1 -1
- package/dist/esm/helpers/createMutators.native.js +9 -7
- package/dist/esm/helpers/createMutators.native.js.map +1 -1
- package/dist/esm/helpers/ensureLoggedIn.js +1 -1
- package/dist/esm/helpers/ensureLoggedIn.js.map +1 -1
- package/dist/esm/helpers/ensureLoggedIn.mjs +1 -1
- package/dist/esm/helpers/ensureLoggedIn.mjs.map +1 -1
- package/dist/esm/helpers/ensureLoggedIn.native.js +1 -1
- package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -1
- package/dist/esm/helpers/getAuthData.js +0 -12
- package/dist/esm/helpers/getAuthData.js.map +2 -2
- package/dist/esm/helpers/getAuthData.mjs +1 -12
- package/dist/esm/helpers/getAuthData.mjs.map +1 -1
- package/dist/esm/helpers/getAuthData.native.js +1 -12
- package/dist/esm/helpers/getAuthData.native.js.map +1 -1
- package/dist/esm/helpers/useAuthData.js +0 -10
- package/dist/esm/helpers/useAuthData.js.map +2 -2
- package/dist/esm/helpers/useAuthData.mjs +1 -8
- package/dist/esm/helpers/useAuthData.mjs.map +1 -1
- package/dist/esm/helpers/useAuthData.native.js +1 -12
- package/dist/esm/helpers/useAuthData.native.js.map +1 -1
- package/dist/esm/helpers/useZeroDebug.js +35 -0
- package/dist/esm/helpers/useZeroDebug.js.map +6 -0
- package/dist/esm/helpers/useZeroDebug.mjs +45 -0
- package/dist/esm/helpers/useZeroDebug.mjs.map +1 -0
- package/dist/esm/helpers/useZeroDebug.native.js +53 -0
- package/dist/esm/helpers/useZeroDebug.native.js.map +1 -0
- package/dist/esm/helpers/zeroEmitter.js +1 -1
- package/dist/esm/helpers/zeroEmitter.mjs +1 -1
- package/dist/esm/helpers/zeroEmitter.native.js +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +3 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +3 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/mutations.js +27 -0
- package/dist/esm/mutations.js.map +6 -0
- package/dist/esm/mutations.mjs +27 -0
- package/dist/esm/mutations.mjs.map +1 -0
- package/dist/esm/mutations.native.js +29 -0
- package/dist/esm/mutations.native.js.map +1 -0
- package/dist/esm/server.js +2 -0
- package/dist/esm/server.js.map +6 -0
- package/dist/esm/server.mjs +2 -0
- package/dist/esm/server.mjs.map +1 -0
- package/dist/esm/server.native.js +2 -0
- package/dist/esm/server.native.js.map +1 -0
- package/dist/esm/where.js +12 -0
- package/dist/esm/where.js.map +6 -0
- package/dist/esm/where.mjs +9 -0
- package/dist/esm/where.mjs.map +1 -0
- package/dist/esm/where.native.js +9 -0
- package/dist/esm/where.native.js.map +1 -0
- package/package.json +12 -6
- package/src/createPermissions.ts +17 -77
- package/src/createZeroClient.tsx +29 -26
- package/src/createZeroServer.ts +43 -43
- package/src/helpers/createMutators.ts +19 -29
- package/src/helpers/ensureLoggedIn.ts +2 -1
- package/src/helpers/prettyFormatZeroQuery.ts +1 -1
- package/src/helpers/useZeroDebug.ts +1 -0
- package/src/index.ts +1 -5
- package/src/mutations.ts +20 -7
- package/src/server.ts +1 -0
- package/src/types.ts +74 -7
- package/src/where.ts +28 -0
- package/src/helpers/clearZeroDatabase.ts +0 -68
- package/src/helpers/getAuthData.tsx +0 -12
- package/src/helpers/useAuthData.ts +0 -13
- package/src/helpers/zeroEmitter.ts +0 -5
- package/types/createMutations.d.ts +0 -20
- package/types/createMutations.d.ts.map +0 -1
- package/types/createPermissions.d.ts +0 -37
- package/types/createPermissions.d.ts.map +0 -1
- package/types/createZeroClient.d.ts +0 -45
- package/types/createZeroClient.d.ts.map +0 -1
- package/types/createZeroServer.d.ts +0 -61
- package/types/createZeroServer.d.ts.map +0 -1
- package/types/helpers/batchQuery.d.ts +0 -7
- package/types/helpers/batchQuery.d.ts.map +0 -1
- package/types/helpers/clearZeroDatabase.d.ts +0 -2
- package/types/helpers/clearZeroDatabase.d.ts.map +0 -1
- package/types/helpers/context.d.ts +0 -5
- package/types/helpers/context.d.ts.map +0 -1
- package/types/helpers/createMutators.d.ts +0 -16
- package/types/helpers/createMutators.d.ts.map +0 -1
- package/types/helpers/ensureLoggedIn.d.ts +0 -2
- package/types/helpers/ensureLoggedIn.d.ts.map +0 -1
- package/types/helpers/getAuthData.d.ts +0 -1
- package/types/helpers/getAuthData.d.ts.map +0 -1
- package/types/helpers/prettyFormatZeroQuery.d.ts +0 -3
- package/types/helpers/prettyFormatZeroQuery.d.ts.map +0 -1
- package/types/helpers/useAuthData.d.ts +0 -1
- package/types/helpers/useAuthData.d.ts.map +0 -1
- package/types/helpers/useZeroDebug.d.ts +0 -3
- package/types/helpers/useZeroDebug.d.ts.map +0 -1
- package/types/helpers/zeroEmitter.d.ts +0 -2
- package/types/helpers/zeroEmitter.d.ts.map +0 -1
- package/types/index.d.ts +0 -9
- package/types/index.d.ts.map +0 -1
- package/types/types.d.ts +0 -21
- 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
|
+
}
|