over-zero 0.0.5 → 0.0.7
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 +5 -4
- package/dist/cjs/createPermissions.js +5 -5
- package/dist/cjs/createPermissions.js.map +1 -1
- package/dist/cjs/createPermissions.native.js +8 -5
- package/dist/cjs/createPermissions.native.js.map +1 -1
- package/dist/cjs/createZeroClient.cjs +3 -8
- package/dist/cjs/createZeroClient.js +4 -6
- package/dist/cjs/createZeroClient.js.map +1 -1
- package/dist/cjs/createZeroClient.native.js +4 -6
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/createZeroServer.cjs +24 -18
- package/dist/cjs/createZeroServer.js +24 -16
- package/dist/cjs/createZeroServer.js.map +2 -2
- package/dist/cjs/createZeroServer.native.js +24 -15
- package/dist/cjs/createZeroServer.native.js.map +2 -2
- package/dist/cjs/helpers/createMutators.cjs +4 -2
- package/dist/cjs/helpers/createMutators.js +4 -2
- package/dist/cjs/helpers/createMutators.js.map +1 -1
- package/dist/cjs/helpers/createMutators.native.js +4 -2
- package/dist/cjs/helpers/createMutators.native.js.map +1 -1
- package/dist/cjs/helpers/didRunPermissionCheck.cjs +29 -0
- package/dist/cjs/helpers/didRunPermissionCheck.js +22 -0
- package/dist/cjs/helpers/didRunPermissionCheck.js.map +6 -0
- package/dist/cjs/helpers/didRunPermissionCheck.native.js +32 -0
- package/dist/cjs/helpers/didRunPermissionCheck.native.js.map +6 -0
- package/dist/cjs/helpers/getDidRunPermissionCheck.cjs +27 -0
- package/dist/cjs/helpers/getDidRunPermissionCheck.js +21 -0
- package/dist/cjs/helpers/getDidRunPermissionCheck.js.map +6 -0
- package/dist/cjs/helpers/getDidRunPermissionCheck.native.js +28 -0
- package/dist/cjs/helpers/getDidRunPermissionCheck.native.js.map +6 -0
- package/dist/cjs/mutations.cjs +2 -1
- package/dist/cjs/mutations.js +2 -1
- package/dist/cjs/mutations.js.map +1 -1
- package/dist/cjs/mutations.native.js +2 -1
- package/dist/cjs/mutations.native.js.map +1 -1
- package/dist/esm/createPermissions.js +5 -4
- package/dist/esm/createPermissions.js.map +1 -1
- package/dist/esm/createPermissions.mjs +5 -4
- package/dist/esm/createPermissions.mjs.map +1 -1
- package/dist/esm/createPermissions.native.js +8 -4
- package/dist/esm/createPermissions.native.js.map +1 -1
- package/dist/esm/createZeroClient.js +5 -7
- package/dist/esm/createZeroClient.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +4 -9
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +4 -9
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/createZeroServer.js +24 -16
- package/dist/esm/createZeroServer.js.map +2 -2
- package/dist/esm/createZeroServer.mjs +24 -18
- package/dist/esm/createZeroServer.mjs.map +1 -1
- package/dist/esm/createZeroServer.native.js +26 -18
- package/dist/esm/createZeroServer.native.js.map +1 -1
- package/dist/esm/helpers/createMutators.js +4 -2
- package/dist/esm/helpers/createMutators.js.map +1 -1
- package/dist/esm/helpers/createMutators.mjs +4 -2
- package/dist/esm/helpers/createMutators.mjs.map +1 -1
- package/dist/esm/helpers/createMutators.native.js +4 -2
- package/dist/esm/helpers/createMutators.native.js.map +1 -1
- package/dist/esm/helpers/didRunPermissionCheck.js +6 -0
- package/dist/esm/helpers/didRunPermissionCheck.js.map +6 -0
- package/dist/esm/helpers/didRunPermissionCheck.mjs +5 -0
- package/dist/esm/helpers/didRunPermissionCheck.mjs.map +1 -0
- package/dist/esm/helpers/didRunPermissionCheck.native.js +9 -0
- package/dist/esm/helpers/didRunPermissionCheck.native.js.map +1 -0
- package/dist/esm/helpers/getDidRunPermissionCheck.js +5 -0
- package/dist/esm/helpers/getDidRunPermissionCheck.js.map +6 -0
- package/dist/esm/helpers/getDidRunPermissionCheck.mjs +4 -0
- package/dist/esm/helpers/getDidRunPermissionCheck.mjs.map +1 -0
- package/dist/esm/helpers/getDidRunPermissionCheck.native.js +6 -0
- package/dist/esm/helpers/getDidRunPermissionCheck.native.js.map +1 -0
- package/dist/esm/mutations.js +2 -1
- package/dist/esm/mutations.js.map +1 -1
- package/dist/esm/mutations.mjs +2 -1
- package/dist/esm/mutations.mjs.map +1 -1
- package/dist/esm/mutations.native.js +2 -1
- package/dist/esm/mutations.native.js.map +1 -1
- package/package.json +3 -2
- package/readme.md +15 -11
- package/src/createPermissions.ts +48 -40
- package/src/createZeroClient.tsx +7 -7
- package/src/createZeroServer.ts +39 -22
- package/src/helpers/createMutators.ts +11 -5
- package/src/helpers/didRunPermissionCheck.ts +11 -0
- package/src/mutations.ts +5 -7
- package/src/types.ts +28 -15
- package/types/createPermissions.d.ts +2 -2
- package/types/createPermissions.d.ts.map +1 -1
- package/types/createZeroServer.d.ts +6 -2
- package/types/createZeroServer.d.ts.map +1 -1
- package/types/helpers/createMutators.d.ts +2 -2
- package/types/helpers/createMutators.d.ts.map +1 -1
- package/types/helpers/didRunPermissionCheck.d.ts +4 -0
- package/types/helpers/didRunPermissionCheck.d.ts.map +1 -0
- package/types/mutations.d.ts +1 -1
- package/types/mutations.d.ts.map +1 -1
- package/types/types.d.ts +15 -11
- package/types/types.d.ts.map +1 -1
|
@@ -0,0 +1,29 @@
|
|
|
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 didRunPermissionCheck_exports = {};
|
|
22
|
+
__export(didRunPermissionCheck_exports, {
|
|
23
|
+
getDidRunPermissionCheck: () => getDidRunPermissionCheck,
|
|
24
|
+
setDidRunPermissionCheck: () => setDidRunPermissionCheck
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(didRunPermissionCheck_exports);
|
|
27
|
+
const PermissionCheckRan = /* @__PURE__ */new WeakMap(),
|
|
28
|
+
getDidRunPermissionCheck = ctx => PermissionCheckRan.get(ctx),
|
|
29
|
+
setDidRunPermissionCheck = ctx => PermissionCheckRan.set(ctx, !0);
|
|
@@ -0,0 +1,22 @@
|
|
|
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 didRunPermissionCheck_exports = {};
|
|
16
|
+
__export(didRunPermissionCheck_exports, {
|
|
17
|
+
getDidRunPermissionCheck: () => getDidRunPermissionCheck,
|
|
18
|
+
setDidRunPermissionCheck: () => setDidRunPermissionCheck
|
|
19
|
+
});
|
|
20
|
+
module.exports = __toCommonJS(didRunPermissionCheck_exports);
|
|
21
|
+
const PermissionCheckRan = /* @__PURE__ */ new WeakMap(), getDidRunPermissionCheck = (ctx) => PermissionCheckRan.get(ctx), setDidRunPermissionCheck = (ctx) => PermissionCheckRan.set(ctx, !0);
|
|
22
|
+
//# sourceMappingURL=didRunPermissionCheck.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/helpers/didRunPermissionCheck.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,MAAM,qBAAqB,oBAAI,QAAiC,GAEnD,2BAA2B,CAAC,QAChC,mBAAmB,IAAI,GAAG,GAGtB,2BAA2B,CAAC,QAChC,mBAAmB,IAAI,KAAK,EAAI;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
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 didRunPermissionCheck_exports = {};
|
|
17
|
+
__export(didRunPermissionCheck_exports, {
|
|
18
|
+
getDidRunPermissionCheck: () => getDidRunPermissionCheck,
|
|
19
|
+
setDidRunPermissionCheck: () => setDidRunPermissionCheck
|
|
20
|
+
});
|
|
21
|
+
module.exports = __toCommonJS(didRunPermissionCheck_exports);
|
|
22
|
+
var PermissionCheckRan = /* @__PURE__ */ new WeakMap(), getDidRunPermissionCheck = function(ctx) {
|
|
23
|
+
return PermissionCheckRan.get(ctx);
|
|
24
|
+
}, setDidRunPermissionCheck = function(ctx) {
|
|
25
|
+
return PermissionCheckRan.set(ctx, !0);
|
|
26
|
+
};
|
|
27
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
28
|
+
0 && (module.exports = {
|
|
29
|
+
getDidRunPermissionCheck,
|
|
30
|
+
setDidRunPermissionCheck
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=didRunPermissionCheck.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/helpers/didRunPermissionCheck.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAI,qBAAqB,oBAAI,QAAQ,GAC1B,2BAA2B,SAAS,KAAK;AAChD,SAAO,mBAAmB,IAAI,GAAG;AACrC,GACW,2BAA2B,SAAS,KAAK;AAChD,SAAO,mBAAmB,IAAI,KAAK,EAAI;AAC3C;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
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 getDidRunPermissionCheck_exports = {};
|
|
22
|
+
__export(getDidRunPermissionCheck_exports, {
|
|
23
|
+
getDidRunPermissionCheck: () => getDidRunPermissionCheck
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(getDidRunPermissionCheck_exports);
|
|
26
|
+
const PermissionCheckRan = /* @__PURE__ */new WeakMap(),
|
|
27
|
+
getDidRunPermissionCheck = ctx => PermissionCheckRan.get(ctx);
|
|
@@ -0,0 +1,21 @@
|
|
|
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 getDidRunPermissionCheck_exports = {};
|
|
16
|
+
__export(getDidRunPermissionCheck_exports, {
|
|
17
|
+
getDidRunPermissionCheck: () => getDidRunPermissionCheck
|
|
18
|
+
});
|
|
19
|
+
module.exports = __toCommonJS(getDidRunPermissionCheck_exports);
|
|
20
|
+
const PermissionCheckRan = /* @__PURE__ */ new WeakMap(), getDidRunPermissionCheck = (ctx) => PermissionCheckRan.get(ctx);
|
|
21
|
+
//# sourceMappingURL=getDidRunPermissionCheck.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
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 getDidRunPermissionCheck_exports = {};
|
|
17
|
+
__export(getDidRunPermissionCheck_exports, {
|
|
18
|
+
getDidRunPermissionCheck: () => getDidRunPermissionCheck
|
|
19
|
+
});
|
|
20
|
+
module.exports = __toCommonJS(getDidRunPermissionCheck_exports);
|
|
21
|
+
var PermissionCheckRan = /* @__PURE__ */ new WeakMap(), getDidRunPermissionCheck = function(ctx) {
|
|
22
|
+
return PermissionCheckRan.get(ctx);
|
|
23
|
+
};
|
|
24
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
25
|
+
0 && (module.exports = {
|
|
26
|
+
getDidRunPermissionCheck
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=getDidRunPermissionCheck.js.map
|
package/dist/cjs/mutations.cjs
CHANGED
|
@@ -23,12 +23,13 @@ __export(mutations_exports, {
|
|
|
23
23
|
mutations: () => mutations
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(mutations_exports);
|
|
26
|
+
var import_didRunPermissionCheck = require("./helpers/didRunPermissionCheck.cjs");
|
|
26
27
|
function mutations(table, permissions, mutations2) {
|
|
27
28
|
if (permissions) {
|
|
28
29
|
const tableName = table.schema.name,
|
|
29
30
|
createCRUDMutation = action => async (ctx, obj) => {
|
|
30
31
|
const runServerPermissionCheck = async () => {
|
|
31
|
-
ctx
|
|
32
|
+
(0, import_didRunPermissionCheck.getDidRunPermissionCheck)(ctx) || process.env.VITE_ENVIRONMENT === "ssr" && (await ctx.can(permissions, action, obj));
|
|
32
33
|
};
|
|
33
34
|
action !== "insert" && (await runServerPermissionCheck());
|
|
34
35
|
const existing = mutations2?.[action];
|
package/dist/cjs/mutations.js
CHANGED
|
@@ -17,11 +17,12 @@ __export(mutations_exports, {
|
|
|
17
17
|
mutations: () => mutations
|
|
18
18
|
});
|
|
19
19
|
module.exports = __toCommonJS(mutations_exports);
|
|
20
|
+
var import_didRunPermissionCheck = require("./helpers/didRunPermissionCheck");
|
|
20
21
|
function mutations(table, permissions, mutations2) {
|
|
21
22
|
if (permissions) {
|
|
22
23
|
const tableName = table.schema.name, createCRUDMutation = (action) => async (ctx, obj) => {
|
|
23
24
|
const runServerPermissionCheck = async () => {
|
|
24
|
-
ctx
|
|
25
|
+
(0, import_didRunPermissionCheck.getDidRunPermissionCheck)(ctx) || process.env.VITE_ENVIRONMENT === "ssr" && await ctx.can(permissions, action, obj);
|
|
25
26
|
};
|
|
26
27
|
action !== "insert" && await runServerPermissionCheck();
|
|
27
28
|
const existing = mutations2?.[action];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/mutations.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mCAAyC;AAiElC,SAAS,UAGd,OAA0B,aAAqBA,YAAkC;AACjF,MAAI,aAAa;AACf,UAAM,YAAa,MAAgB,OAAO,MAEpC,qBAAqB,CAAC,WACnB,OAAO,KAAqB,QAAa;AAS9C,YAAM,2BAA2B,YAAY;AAC3C,YAAI,uDAAyB,GAAG,KAM5B,QAAQ,IAAI,qBAAqB,SACnC,MAAM,IAAI,IAAI,aAAa,QAAQ,GAAG;AAAA,MAE1C;AAEA,MAAI,WAAW,YACb,MAAM,yBAAyB;AAIjC,YAAM,WAAWA,aAAY,MAAM;AAEnC,MAAI,WACF,MAAM,SAAS,KAAK,GAAG,IAGvB,MAAM,IAAI,GAAG,OAAO,SAAsB,EAAG,MAAM,EAAE,GAAG,GAGtD,WAAW,YACb,MAAM,yBAAyB;AAAA,IAEnC,GAGI,gBAAoC;AAAA,MACxC,QAAQ,mBAAmB,QAAQ;AAAA,MACnC,QAAQ,mBAAmB,QAAQ;AAAA,MACnC,QAAQ,mBAAmB,QAAQ;AAAA,MACnC,QAAQ,mBAAmB,QAAQ;AAAA,IACrC;AAEA,WAAO;AAAA,MACL,GAAGA;AAAA;AAAA,MAEH,GAAG;AAAA,IACL;AAAA,EACF;AAGA,SAAO;AACT;",
|
|
5
5
|
"names": ["mutations"]
|
|
6
6
|
}
|
|
@@ -18,12 +18,13 @@ __export(mutations_exports, {
|
|
|
18
18
|
mutations: () => mutations
|
|
19
19
|
});
|
|
20
20
|
module.exports = __toCommonJS(mutations_exports);
|
|
21
|
+
var import_didRunPermissionCheck = require("./helpers/didRunPermissionCheck");
|
|
21
22
|
function mutations(table, permissions, mutations2) {
|
|
22
23
|
if (permissions) {
|
|
23
24
|
var tableName = table.schema.name, createCRUDMutation = function(action) {
|
|
24
25
|
return async function(ctx, obj) {
|
|
25
26
|
var runServerPermissionCheck = async function() {
|
|
26
|
-
ctx
|
|
27
|
+
(0, import_didRunPermissionCheck.getDidRunPermissionCheck)(ctx) || process.env.VITE_ENVIRONMENT === "ssr" && await ctx.can(permissions, action, obj);
|
|
27
28
|
};
|
|
28
29
|
action !== "insert" && await runServerPermissionCheck();
|
|
29
30
|
var existing = mutations2 == null ? void 0 : mutations2[action];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/mutations.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mCAAyC;AAgBlC,SAAS,UAAU,OAAO,aAAaA,YAAW;AACrD,MAAI,aAAa;AACb,QAAI,YAAY,MAAM,OAAO,MACzB,qBAAqB,SAAS,QAAQ;AACtC,aAAO,eAAe,KAAK,KAAK;AAQhC,YAAI,2BAA2B,iBAAiB;AACxC,cAAI,uDAAyB,GAAG,KAK5B,QAAQ,IAAI,qBAAqB,SACjC,MAAM,IAAI,IAAI,aAAa,QAAQ,GAAG;AAAA,QAE9C;AACA,QAAI,WAAW,YACX,MAAM,yBAAyB;AAGnC,YAAI,WAAWA,cAAc,OAA+B,SAASA,WAAU,MAAM;AACrF,QAAI,WACA,MAAM,SAAS,KAAK,GAAG,IAGvB,MAAM,IAAI,GAAG,OAAO,SAAS,EAAE,MAAM,EAAE,GAAG,GAE1C,WAAW,YACX,MAAM,yBAAyB;AAAA,MAEvC;AAAA,IACJ,GACI,gBAAgB;AAAA,MAChB,QAAQ,mBAAmB,QAAQ;AAAA,MACnC,QAAQ,mBAAmB,QAAQ;AAAA,MACnC,QAAQ,mBAAmB,QAAQ;AAAA,MACnC,QAAQ,mBAAmB,QAAQ;AAAA,IACvC;AACA,WAAO;AAAA,MACH,GAAGA;AAAA;AAAA,MAEH,GAAG;AAAA,IACP;AAAA,EACJ;AAEA,SAAO;AACX;",
|
|
5
5
|
"names": ["mutations"]
|
|
6
6
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ANYONE_CAN, definePermissions } from "@rocicorp/zero";
|
|
2
2
|
import { ensure, EnsureError, objectEntries } from "@vxrn/helpers";
|
|
3
3
|
import { runWithContext } from "./helpers/context";
|
|
4
|
+
import { setDidRunPermissionCheck } from "./helpers/didRunPermissionCheck";
|
|
4
5
|
import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery";
|
|
5
6
|
import { getWhereTableName } from "./where";
|
|
6
7
|
function createPermissions({
|
|
@@ -37,7 +38,7 @@ function createPermissions({
|
|
|
37
38
|
}
|
|
38
39
|
return eb.and(permissionCondition, ...primaryKeyWheres);
|
|
39
40
|
}
|
|
40
|
-
async
|
|
41
|
+
const can = async (where, action, obj) => {
|
|
41
42
|
const ctx = getContext(), tableName = getWhereTableName(where);
|
|
42
43
|
if (!tableName)
|
|
43
44
|
throw new Error("Must use where('table') style where to pass to can()");
|
|
@@ -48,8 +49,8 @@ function createPermissions({
|
|
|
48
49
|
where,
|
|
49
50
|
action,
|
|
50
51
|
obj
|
|
51
|
-
), ctx
|
|
52
|
-
}
|
|
52
|
+
), setDidRunPermissionCheck(ctx));
|
|
53
|
+
};
|
|
53
54
|
async function ensurePermission(tx, authData, tableName, where, actionIn, obj) {
|
|
54
55
|
if (authData?.role === "admin")
|
|
55
56
|
return;
|
|
@@ -70,7 +71,7 @@ ${err}`);
|
|
|
70
71
|
}
|
|
71
72
|
const readPermissions = definePermissions(schema, async () => {
|
|
72
73
|
const permissionsEntries = await Promise.all(
|
|
73
|
-
objectEntries(models).map(async ([key, model]) => await runWithContext(
|
|
74
|
+
objectEntries(models).filter(([_, model]) => !!model.permissions).map(async ([key, model]) => await runWithContext(
|
|
74
75
|
{
|
|
75
76
|
authData: { id: "", role: void 0, email: "" }
|
|
76
77
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createPermissions.ts"],
|
|
4
|
-
"mappings": "AAMA,SAAS,YAAY,yBAAyB;AAC9C,SAAS,QAAQ,aAAa,qBAAqB;AACnD,SAAS,sBAAsB;AAC/B,SAAS,6BAA6B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ANYONE_CAN, definePermissions } from "@rocicorp/zero";
|
|
2
2
|
import { ensure, EnsureError, objectEntries } from "@vxrn/helpers";
|
|
3
3
|
import { runWithContext } from "./helpers/context.mjs";
|
|
4
|
+
import { setDidRunPermissionCheck } from "./helpers/didRunPermissionCheck.mjs";
|
|
4
5
|
import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery.mjs";
|
|
5
6
|
import { getWhereTableName } from "./where.mjs";
|
|
6
7
|
function createPermissions({
|
|
@@ -35,12 +36,12 @@ function createPermissions({
|
|
|
35
36
|
}
|
|
36
37
|
return eb.and(permissionCondition, ...primaryKeyWheres);
|
|
37
38
|
}
|
|
38
|
-
async
|
|
39
|
+
const can = async (where, action, obj) => {
|
|
39
40
|
const ctx = getContext(),
|
|
40
41
|
tableName = getWhereTableName(where);
|
|
41
42
|
if (!tableName) throw new Error("Must use where('table') style where to pass to can()");
|
|
42
|
-
environment === "server" && (await ensurePermission(ctx.tx, ctx.authData, tableName, where, action, obj), ctx
|
|
43
|
-
}
|
|
43
|
+
environment === "server" && (await ensurePermission(ctx.tx, ctx.authData, tableName, where, action, obj), setDidRunPermissionCheck(ctx));
|
|
44
|
+
};
|
|
44
45
|
async function ensurePermission(tx, authData, tableName, where, actionIn, obj) {
|
|
45
46
|
if (authData?.role === "admin") return;
|
|
46
47
|
const action = String(actionIn),
|
|
@@ -61,7 +62,7 @@ ${err}`);
|
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
const readPermissions = definePermissions(schema, async () => {
|
|
64
|
-
const permissionsEntries = await Promise.all(objectEntries(models).map(async ([key, model]) => await runWithContext({
|
|
65
|
+
const permissionsEntries = await Promise.all(objectEntries(models).filter(([_, model]) => !!model.permissions).map(async ([key, model]) => await runWithContext({
|
|
65
66
|
authData: {
|
|
66
67
|
id: "",
|
|
67
68
|
role: void 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ANYONE_CAN","definePermissions","ensure","EnsureError","objectEntries","runWithContext","prettyFormatZeroQuery","getWhereTableName","createPermissions","environment","schema","models","getContext","fallbackActions","select","insert","update","upsert","delete","buildPermissionQuery","authData","eb","permissionWhere","action","objOrId","tableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionQueryBuilder","fallbackAction","permissionCondition","cmpLit","primaryKeyWheres","key","value","push","cmp","and","can","where","obj","ctx","ensurePermission","tx","
|
|
1
|
+
{"version":3,"names":["ANYONE_CAN","definePermissions","ensure","EnsureError","objectEntries","runWithContext","setDidRunPermissionCheck","prettyFormatZeroQuery","getWhereTableName","createPermissions","environment","schema","models","getContext","fallbackActions","select","insert","update","upsert","delete","buildPermissionQuery","authData","eb","permissionWhere","action","objOrId","tableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionQueryBuilder","fallbackAction","permissionCondition","cmpLit","primaryKeyWheres","key","value","push","cmp","and","can","where","obj","ctx","ensurePermission","tx","actionIn","role","String","name","queryBase","query","one","err","errorTitle","id","msg","process","env","NODE_ENV","readPermissions","permissionsEntries","Promise","all","filter","_","model","permissions","map","email","row","out","read","Object","fromEntries"],"sources":["../../src/createPermissions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ANYONE_CAN, definePermissions } from "@rocicorp/zero";
|
|
2
2
|
import { ensure, EnsureError, objectEntries } from "@vxrn/helpers";
|
|
3
3
|
import { runWithContext } from "./helpers/context.native.js";
|
|
4
|
+
import { setDidRunPermissionCheck } from "./helpers/didRunPermissionCheck.native.js";
|
|
4
5
|
import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery.native.js";
|
|
5
6
|
import { getWhereTableName } from "./where.native.js";
|
|
6
7
|
function createPermissions(param) {
|
|
@@ -50,12 +51,12 @@ function createPermissions(param) {
|
|
|
50
51
|
}
|
|
51
52
|
return eb.and(permissionCondition, ...primaryKeyWheres);
|
|
52
53
|
}
|
|
53
|
-
async function
|
|
54
|
+
var can = async function (where, action, obj) {
|
|
54
55
|
var ctx = getContext(),
|
|
55
56
|
tableName = getWhereTableName(where);
|
|
56
57
|
if (!tableName) throw new Error("Must use where('table') style where to pass to can()");
|
|
57
|
-
environment === "server" && (await ensurePermission(ctx.tx, ctx.authData, tableName, where, action, obj), ctx
|
|
58
|
-
}
|
|
58
|
+
environment === "server" && (await ensurePermission(ctx.tx, ctx.authData, tableName, where, action, obj), setDidRunPermissionCheck(ctx));
|
|
59
|
+
};
|
|
59
60
|
async function ensurePermission(tx, authData, tableName, where, actionIn, obj) {
|
|
60
61
|
if (authData?.role !== "admin") {
|
|
61
62
|
var action = String(actionIn),
|
|
@@ -79,7 +80,10 @@ ${err}`);
|
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
var readPermissions = definePermissions(schema, async function () {
|
|
82
|
-
var permissionsEntries = await Promise.all(objectEntries(models).
|
|
83
|
+
var permissionsEntries = await Promise.all(objectEntries(models).filter(function (param2) {
|
|
84
|
+
var [_, model] = param2;
|
|
85
|
+
return !!model.permissions;
|
|
86
|
+
}).map(async function (param2) {
|
|
83
87
|
var [key, model] = param2;
|
|
84
88
|
return await runWithContext({
|
|
85
89
|
authData: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ANYONE_CAN","definePermissions","ensure","EnsureError","objectEntries","runWithContext","prettyFormatZeroQuery","getWhereTableName","createPermissions","param","environment","schema","models","getContext","fallbackActions","select","insert","update","upsert","delete","buildPermissionQuery","authData","eb","permissionWhere","action","objOrId","tableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionQueryBuilder","fallbackAction","permissionCondition","cmpLit","primaryKeyWheres","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","key","value","push","cmp","err","return","and","can","where","obj","ctx","ensurePermission","tx","
|
|
1
|
+
{"version":3,"names":["ANYONE_CAN","definePermissions","ensure","EnsureError","objectEntries","runWithContext","setDidRunPermissionCheck","prettyFormatZeroQuery","getWhereTableName","createPermissions","param","environment","schema","models","getContext","fallbackActions","select","insert","update","upsert","delete","buildPermissionQuery","authData","eb","permissionWhere","action","objOrId","tableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionQueryBuilder","fallbackAction","permissionCondition","cmpLit","primaryKeyWheres","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","key","value","push","cmp","err","return","and","can","where","obj","ctx","ensurePermission","tx","actionIn","role","String","name","queryBase","query","one","errorTitle","id","msg","process","env","NODE_ENV","readPermissions","permissionsEntries","Promise","all","filter","param2","_","model","permissions","map","email","row","out","read","Object","fromEntries"],"sources":["../../src/createPermissions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useZero, ZeroProvider, useQuery as zeroUseQuery } from "@rocicorp/zero/react";
|
|
2
|
-
import { createEmitter,
|
|
2
|
+
import { createEmitter, mapObject } from "@vxrn/helpers";
|
|
3
3
|
import { createContext, use, useMemo } from "react";
|
|
4
4
|
import { createPermissions } from "./createPermissions";
|
|
5
5
|
import { context } from "./helpers/context";
|
|
@@ -19,21 +19,19 @@ function createZeroClient({ schema, models, disable }) {
|
|
|
19
19
|
models,
|
|
20
20
|
getContext: context,
|
|
21
21
|
environment: "client"
|
|
22
|
-
}), permissionCache = createLocalStorage("permissions-cache", {
|
|
23
|
-
storageLimit: 24
|
|
24
22
|
}), zeroEvents = createEmitter("zero", null), AuthDataContext = createContext({}), useAuthData = () => use(AuthDataContext);
|
|
25
23
|
function usePermission(table, action, objOrId, enabled = typeof objOrId < "u", debug = !1) {
|
|
26
|
-
const
|
|
24
|
+
const key = `${`${String(table)}${action}`}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`, authData = useAuthData(), permission = modelPermissions[table], query = (() => {
|
|
27
25
|
let baseQuery = zero.query[table].one();
|
|
28
|
-
return enabled ? baseQuery.where((eb) => permissionsHelpers.buildPermissionQuery(
|
|
26
|
+
return !enabled || !permission ? baseQuery : baseQuery.where((eb) => permissionsHelpers.buildPermissionQuery(
|
|
29
27
|
authData,
|
|
30
28
|
eb,
|
|
31
29
|
permission,
|
|
32
30
|
action,
|
|
33
31
|
objOrId
|
|
34
|
-
))
|
|
32
|
+
));
|
|
35
33
|
})(), [data, status] = useQuery(query, {
|
|
36
|
-
enabled: !!(enabled && authData && objOrId)
|
|
34
|
+
enabled: !!(enabled && permission && authData && objOrId)
|
|
37
35
|
});
|
|
38
36
|
debug && console.info(
|
|
39
37
|
"usePermission()",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createZeroClient.tsx"],
|
|
4
|
-
"mappings": "AACA,SAAS,SAAS,cAAc,YAAY,oBAAoB;AAChE,SAAS,eAAe,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["zero"]
|
|
6
6
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useZero, ZeroProvider, useQuery as zeroUseQuery } from "@rocicorp/zero/react";
|
|
2
|
-
import { createEmitter,
|
|
2
|
+
import { createEmitter, mapObject } from "@vxrn/helpers";
|
|
3
3
|
import { createContext, use, useMemo } from "react";
|
|
4
4
|
import { createPermissions } from "./createPermissions.mjs";
|
|
5
5
|
import { context } from "./helpers/context.mjs";
|
|
@@ -25,24 +25,19 @@ function createZeroClient({
|
|
|
25
25
|
getContext: context,
|
|
26
26
|
environment: "client"
|
|
27
27
|
}),
|
|
28
|
-
permissionCache = createLocalStorage("permissions-cache", {
|
|
29
|
-
storageLimit: 24
|
|
30
|
-
}),
|
|
31
28
|
zeroEvents = createEmitter("zero", null),
|
|
32
29
|
AuthDataContext = createContext({}),
|
|
33
30
|
useAuthData = () => use(AuthDataContext);
|
|
34
31
|
function usePermission(table, action, objOrId, enabled = typeof objOrId < "u", debug = !1) {
|
|
35
|
-
const
|
|
36
|
-
key = `${keyBase}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`,
|
|
37
|
-
cacheVal = permissionCache.get(key) ?? permissionCache.get(keyBase),
|
|
32
|
+
const key = `${`${String(table)}${action}`}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`,
|
|
38
33
|
authData = useAuthData(),
|
|
39
34
|
permission = modelPermissions[table],
|
|
40
35
|
query = (() => {
|
|
41
36
|
let baseQuery = zero.query[table].one();
|
|
42
|
-
return enabled ? baseQuery.where(eb => permissionsHelpers.buildPermissionQuery(authData, eb, permission, action, objOrId))
|
|
37
|
+
return !enabled || !permission ? baseQuery : baseQuery.where(eb => permissionsHelpers.buildPermissionQuery(authData, eb, permission, action, objOrId));
|
|
43
38
|
})(),
|
|
44
39
|
[data, status] = useQuery(query, {
|
|
45
|
-
enabled: !!(enabled && authData && objOrId)
|
|
40
|
+
enabled: !!(enabled && permission && authData && objOrId)
|
|
46
41
|
});
|
|
47
42
|
debug && console.info("usePermission()", {
|
|
48
43
|
data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useZero","ZeroProvider","useQuery","zeroUseQuery","createEmitter","
|
|
1
|
+
{"version":3,"names":["useZero","ZeroProvider","useQuery","zeroUseQuery","createEmitter","mapObject","createContext","use","useMemo","createPermissions","context","createMutators","prettyFormatZeroQuery","useZeroDebug","jsx","jsxs","createZeroClient","schema","models","disable","modelPermissions","val","permissions","latestZeroInstance","zero","Proxy","get","_","key","Reflect","permissionsHelpers","getContext","environment","zeroEvents","AuthDataContext","useAuthData","usePermission","table","action","objOrId","enabled","debug","String","JSON","stringify","authData","permission","query","baseQuery","one","where","eb","buildPermissionQuery","data","status","console","info","allowed","options","type","out","process","env","NODE_ENV","ProvideZero","children","props","mutators","can","Provider","value","kvStore","onError","error","emit","message","SetZeroInstance","zero2"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useZero, ZeroProvider, useQuery as zeroUseQuery } from "@rocicorp/zero/react";
|
|
3
|
-
import { createEmitter,
|
|
3
|
+
import { createEmitter, mapObject } from "@vxrn/helpers";
|
|
4
4
|
import { createContext, use, useMemo } from "react";
|
|
5
5
|
import { createPermissions } from "./createPermissions.native.js";
|
|
6
6
|
import { context } from "./helpers/context.native.js";
|
|
@@ -28,9 +28,6 @@ function createZeroClient(param) {
|
|
|
28
28
|
getContext: context,
|
|
29
29
|
environment: "client"
|
|
30
30
|
}),
|
|
31
|
-
permissionCache = createLocalStorage("permissions-cache", {
|
|
32
|
-
storageLimit: 24
|
|
33
|
-
}),
|
|
34
31
|
zeroEvents = createEmitter("zero", null),
|
|
35
32
|
AuthDataContext = /* @__PURE__ */createContext({}),
|
|
36
33
|
useAuthData = function () {
|
|
@@ -41,18 +38,16 @@ function createZeroClient(param) {
|
|
|
41
38
|
debug = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !1,
|
|
42
39
|
keyBase = `${String(table)}${action}`,
|
|
43
40
|
key = `${keyBase}${typeof objOrId == "string" ? objOrId : JSON.stringify(objOrId)}`,
|
|
44
|
-
_permissionCache_get,
|
|
45
|
-
cacheVal = (_permissionCache_get = permissionCache.get(key)) !== null && _permissionCache_get !== void 0 ? _permissionCache_get : permissionCache.get(keyBase),
|
|
46
41
|
authData = useAuthData(),
|
|
47
42
|
permission = modelPermissions[table],
|
|
48
43
|
query = function () {
|
|
49
44
|
var baseQuery = zero.query[table].one();
|
|
50
|
-
return enabled ? baseQuery.where(function (eb) {
|
|
45
|
+
return !enabled || !permission ? baseQuery : baseQuery.where(function (eb) {
|
|
51
46
|
return permissionsHelpers.buildPermissionQuery(authData, eb, permission, action, objOrId);
|
|
52
|
-
})
|
|
47
|
+
});
|
|
53
48
|
}(),
|
|
54
49
|
[data, status] = useQuery(query, {
|
|
55
|
-
enabled: !!(enabled && authData && objOrId)
|
|
50
|
+
enabled: !!(enabled && permission && authData && objOrId)
|
|
56
51
|
});
|
|
57
52
|
debug && console.info("usePermission()", {
|
|
58
53
|
data,
|