on-zero 0.0.75 → 0.0.77
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 +2 -2
- package/dist/cjs/createPermissions.js +2 -2
- package/dist/cjs/createPermissions.js.map +1 -1
- package/dist/cjs/createPermissions.native.js +2 -2
- package/dist/cjs/createPermissions.native.js.map +1 -1
- package/dist/cjs/createZeroClient.cjs +27 -22
- package/dist/cjs/createZeroClient.js +24 -23
- package/dist/cjs/createZeroClient.js.map +2 -2
- package/dist/cjs/createZeroClient.native.js +37 -28
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/createZeroServer.cjs +16 -4
- package/dist/cjs/createZeroServer.js +10 -2
- package/dist/cjs/createZeroServer.js.map +1 -1
- package/dist/cjs/createZeroServer.native.js +12 -0
- package/dist/cjs/createZeroServer.native.js.map +1 -1
- package/dist/esm/createPermissions.js +2 -2
- package/dist/esm/createPermissions.js.map +1 -1
- package/dist/esm/createPermissions.mjs +2 -2
- package/dist/esm/createPermissions.mjs.map +1 -1
- package/dist/esm/createPermissions.native.js +2 -2
- package/dist/esm/createPermissions.native.js.map +1 -1
- package/dist/esm/createZeroClient.js +26 -29
- package/dist/esm/createZeroClient.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +28 -23
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +37 -28
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/createZeroServer.js +11 -2
- package/dist/esm/createZeroServer.js.map +1 -1
- package/dist/esm/createZeroServer.mjs +17 -5
- package/dist/esm/createZeroServer.mjs.map +1 -1
- package/dist/esm/createZeroServer.native.js +13 -1
- package/dist/esm/createZeroServer.native.js.map +1 -1
- package/package.json +6 -7
- package/src/createPermissions.ts +3 -2
- package/src/createZeroClient.tsx +55 -59
- package/src/createZeroServer.ts +19 -1
- package/types/createPermissions.d.ts +2 -2
- package/types/createPermissions.d.ts.map +1 -1
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/createZeroServer.d.ts.map +1 -1
|
@@ -8,8 +8,8 @@ function createPermissions({
|
|
|
8
8
|
environment,
|
|
9
9
|
schema
|
|
10
10
|
}) {
|
|
11
|
-
function buildPermissionQuery(authData, eb, permissionWhere, objOrId) {
|
|
12
|
-
const tableName = getWhereTableName(permissionWhere);
|
|
11
|
+
function buildPermissionQuery(authData, eb, permissionWhere, objOrId, tableNameOverride) {
|
|
12
|
+
const tableName = tableNameOverride || getWhereTableName(permissionWhere);
|
|
13
13
|
if (!tableName) throw new Error("Must use PermissionWhere for buildPermissionQuery");
|
|
14
14
|
const tableSchema = schema.tables[tableName];
|
|
15
15
|
if (!tableSchema) throw new Error("No schema?");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ensure","EnsureError","setDidRunPermissionCheck","mutatorContext","prettyFormatZeroQuery","getZQL","getWhereTableName","createPermissions","environment","schema","buildPermissionQuery","authData","eb","permissionWhere","objOrId","tableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionReturn","cmpLit","primaryKeyWheres","key","value","push","cmp","and","can","where","obj","ctx","ensurePermission","tx","role","queryBase","query","one","run","err","errorTitle","id","msg","process","env","NODE_ENV"],"sources":["../../src/createPermissions.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,EAAQC,WAAA,QAAmB;AAEpC,SAASC,wBAAA,QAAgC;AACzC,SAASC,cAAA,QAAsB;AAC/B,SAASC,qBAAA,QAA6B;AACtC,SAASC,MAAA,QAAc;AACvB,SAASC,iBAAA,QAAyB;AAU3B,SAASC,kBAA6C;EAC3DC,WAAA;EACAC;AACF,GAGG;EAQD,SAASC,qBACPC,QAAA,EACAC,EAAA,EACAC,eAAA,EAEAC,OAAA,EACA;IACA,MAAMC,SAAA,
|
|
1
|
+
{"version":3,"names":["ensure","EnsureError","setDidRunPermissionCheck","mutatorContext","prettyFormatZeroQuery","getZQL","getWhereTableName","createPermissions","environment","schema","buildPermissionQuery","authData","eb","permissionWhere","objOrId","tableNameOverride","tableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionReturn","cmpLit","primaryKeyWheres","key","value","push","cmp","and","can","where","obj","ctx","ensurePermission","tx","role","queryBase","query","one","run","err","errorTitle","id","msg","process","env","NODE_ENV"],"sources":["../../src/createPermissions.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,EAAQC,WAAA,QAAmB;AAEpC,SAASC,wBAAA,QAAgC;AACzC,SAASC,cAAA,QAAsB;AAC/B,SAASC,qBAAA,QAA6B;AACtC,SAASC,MAAA,QAAc;AACvB,SAASC,iBAAA,QAAyB;AAU3B,SAASC,kBAA6C;EAC3DC,WAAA;EACAC;AACF,GAGG;EAQD,SAASC,qBACPC,QAAA,EACAC,EAAA,EACAC,eAAA,EAEAC,OAAA,EACAC,iBAAA,EACA;IACA,MAAMC,SAAA,GAAYD,iBAAA,IAAqBT,iBAAA,CAAkBO,eAAe;IAExE,IAAI,CAACG,SAAA,EACH,MAAM,IAAIC,KAAA,CAAM,mDAAmD;IAGrE,MAAMC,WAAA,GAAcT,MAAA,CAAOU,MAAA,CAAOH,SAAS;IAE3C,IAAI,CAACE,WAAA,EACH,MAAM,IAAID,KAAA,CAAM,YAAY;IAG9B,MAAMG,WAAA,GAAcF,WAAA,CAAYG,UAAA;MAC1BC,gBAAA,GAAmBT,eAAA,CAAgBD,EAAA,EAAID,QAAQ;IAErD,IAAIW,gBAAA,IAAoB,MACtB,MAAM,IAAIL,KAAA,CAAM,6BAA6BD,SAAS,EAAE;IAG1D,IAAIM,gBAAA,KAAqB,IACvB,OAAOV,EAAA,CAAGW,MAAA,CAAO,IAAM,KAAK,EAAI;IAGlC,IAAID,gBAAA,KAAqB,IACvB,OAAOV,EAAA,CAAGW,MAAA,CAAO,IAAM,KAAK,EAAK;IAGnC,MAAMC,gBAAA,GAAgC,EAAC;IAEvC,WAAWC,GAAA,IAAOL,WAAA,EAAa;MAC7B,MAAMM,KAAA,GAAQ,OAAOZ,OAAA,IAAY,WAAWA,OAAA,GAAUA,OAAA,CAAQW,GAAG;MACjED,gBAAA,CAAiBG,IAAA,CAAKf,EAAA,CAAGgB,GAAA,CAAIH,GAAA,EAAYC,KAAK,CAAC;IACjD;IAEA,OAAOd,EAAA,CAAGiB,GAAA,CAAIP,gBAAA,EAAkB,GAAGE,gBAAgB;EACrD;EAEA,MAAMM,GAAA,GAAW,MAAAA,CAAOC,KAAA,EAAOC,GAAA,KAAQ;IAErC,IAAIxB,WAAA,KAAgB,UAAU;MAC5B,MAAMyB,GAAA,GAAM9B,cAAA,CAAe;QACrBa,SAAA,GAAYV,iBAAA,CAAkByB,KAAK;MACzC,IAAI,CAACf,SAAA,EACH,MAAM,IAAIC,KAAA,CAAM,sDAAsD;MAExE,MAAMiB,gBAAA,CAAiBD,GAAA,CAAIE,EAAA,EAAIF,GAAA,CAAItB,QAAA,EAAUK,SAAA,EAAWe,KAAA,EAAOC,GAAG,GAClE9B,wBAAA,CAAyB+B,GAAG;IAC9B;EACF;EAEA,eAAeC,iBACbC,EAAA,EACAxB,QAAA,EACAK,SAAA,EACAe,KAAA,EACAC,GAAA,EACe;IACf,IAAIrB,QAAA,EAAUyB,IAAA,KAAS,SAErB;IAIF,MAAMC,SAAA,GADahC,MAAA,CAAO,EACGW,SAAS;IACtC,IAAIsB,KAAA,GAAqC;IAEzC,IAAI;MACFA,KAAA,GAAQD,SAAA,CACLN,KAAA,CAAOnB,EAAA,IACCF,oBAAA,CAAqBC,QAAA,EAAUC,EAAA,EAAImB,KAAA,EAAOC,GAAG,CACrD,EACAO,GAAA,CAAI,GAEPvC,MAAA,CAAO,MAAMmC,EAAA,CAAGK,GAAA,CAAIF,KAAK,CAAC;IAC5B,SAASG,GAAA,EAAK;MACZ,MAAMC,UAAA,GAAa,GAAG1B,SAAS,kBAAkBL,QAAA,EAAUgC,EAAE;MAE7D,IAAIF,GAAA,YAAexC,WAAA,EAAa;QAC9B,IAAI2C,GAAA,GAAM,uCAAgCF,UAAU;QACpD,MAAIG,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,iBAAiBT,KAAA,KAC5CM,GAAA,IAAO;AAAA,GAAMxC,qBAAA,CAAsBkC,KAAK,CAAC,KAErC,IAAIrB,KAAA,CAAM2B,GAAG;MACrB;MAEA,MAAM,IAAI3B,KAAA,CAAM,4BAA4ByB,UAAU;AAAA,EAAKD,GAAG,EAAE;IAClE;EACF;EAEA,OAAO;IACLX,GAAA;IACApB;EACF;AACF","ignoreList":[]}
|
|
@@ -12,8 +12,8 @@ function createPermissions(param) {
|
|
|
12
12
|
environment,
|
|
13
13
|
schema
|
|
14
14
|
} = param;
|
|
15
|
-
function buildPermissionQuery(authData, eb, permissionWhere, objOrId) {
|
|
16
|
-
var tableName = getWhereTableName(permissionWhere);
|
|
15
|
+
function buildPermissionQuery(authData, eb, permissionWhere, objOrId, tableNameOverride) {
|
|
16
|
+
var tableName = tableNameOverride || getWhereTableName(permissionWhere);
|
|
17
17
|
if (!tableName) throw new Error("Must use PermissionWhere for buildPermissionQuery");
|
|
18
18
|
var tableSchema = schema.tables[tableName];
|
|
19
19
|
if (!tableSchema) throw new Error("No schema?");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ensure","EnsureError","setDidRunPermissionCheck","mutatorContext","prettyFormatZeroQuery","getZQL","getWhereTableName","_instanceof","left","right","Symbol","hasInstance","createPermissions","param","environment","schema","buildPermissionQuery","authData","eb","permissionWhere","objOrId","tableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionReturn","cmpLit","primaryKeyWheres","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","key","value","push","cmp","err","return","and","can","where","obj","ctx","ensurePermission","tx","role","zqlBuilder","queryBase","query","one","run","errorTitle","id","msg"],"sources":["../../src/createPermissions.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,EAAQC,WAAA,QAAmB;AAEpC,SAASC,wBAAA,QAAgC;AACzC,SAASC,cAAA,QAAsB;AAC/B,SAASC,qBAAA,QAA6B;AACtC,SAASC,MAAA,QAAc;AACvB,SAASC,iBAAA,QAAyB;AAU3B,SAASC,YAAAC,IAAA,EAA6CC,KAAA;EAC3D,OAAAA,KAAA,mBAAAC,MAAA,UAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA,MAAAF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA,IAAAA,IAAA,YAAAC,KAAA;AAAA;AAEF,SAGGG,kBAAAC,KAAA;EAQD;IAAAC,WAAS;IAAAC;EAAA,IACPF,KAAA;
|
|
1
|
+
{"version":3,"names":["ensure","EnsureError","setDidRunPermissionCheck","mutatorContext","prettyFormatZeroQuery","getZQL","getWhereTableName","_instanceof","left","right","Symbol","hasInstance","createPermissions","param","environment","schema","buildPermissionQuery","authData","eb","permissionWhere","objOrId","tableNameOverride","tableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionReturn","cmpLit","primaryKeyWheres","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","key","value","push","cmp","err","return","and","can","where","obj","ctx","ensurePermission","tx","role","zqlBuilder","queryBase","query","one","run","errorTitle","id","msg"],"sources":["../../src/createPermissions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { defineQueries, defineQuery } from "@rocicorp/zero";
|
|
2
|
-
import {
|
|
3
|
-
useConnectionState,
|
|
4
|
-
useZero,
|
|
5
|
-
ZeroProvider,
|
|
6
|
-
useQuery as zeroUseQuery
|
|
7
|
-
} from "@rocicorp/zero/react";
|
|
2
|
+
import { useConnectionState, useZero, ZeroProvider } from "@rocicorp/zero/react";
|
|
8
3
|
import { createEmitter } from "@take-out/helpers";
|
|
9
4
|
import {
|
|
10
5
|
createContext,
|
|
@@ -17,13 +12,14 @@ import {
|
|
|
17
12
|
import { createPermissions } from "./createPermissions";
|
|
18
13
|
import { createUseQuery } from "./createUseQuery";
|
|
19
14
|
import { createMutators } from "./helpers/createMutators";
|
|
20
|
-
import {
|
|
15
|
+
import { getQueryOrMutatorAuthData } from "./helpers/getQueryOrMutatorAuthData";
|
|
21
16
|
import { getMutationsPermissions } from "./modelRegistry";
|
|
22
17
|
import { registerQuery } from "./queryRegistry";
|
|
23
18
|
import { resolveQuery } from "./resolveQuery";
|
|
24
19
|
import { setCustomQueries } from "./run";
|
|
25
20
|
import { setAuthData, setSchema } from "./state";
|
|
26
21
|
import { setRunner } from "./zeroRunner";
|
|
22
|
+
import { zql } from "./zql";
|
|
27
23
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
28
24
|
function createZeroClient({
|
|
29
25
|
schema,
|
|
@@ -31,7 +27,10 @@ function createZeroClient({
|
|
|
31
27
|
groupedQueries
|
|
32
28
|
}) {
|
|
33
29
|
setSchema(schema);
|
|
34
|
-
const
|
|
30
|
+
const permissionsHelpers = createPermissions({
|
|
31
|
+
schema,
|
|
32
|
+
environment: "client"
|
|
33
|
+
}), wrappedNamespaces = {};
|
|
35
34
|
for (const [namespace, queries] of Object.entries(groupedQueries)) {
|
|
36
35
|
wrappedNamespaces[namespace] = {};
|
|
37
36
|
for (const [name, fn] of Object.entries(queries))
|
|
@@ -39,6 +38,19 @@ function createZeroClient({
|
|
|
39
38
|
({ args }) => fn(args)
|
|
40
39
|
);
|
|
41
40
|
}
|
|
41
|
+
const permissionCheckFn = (args) => {
|
|
42
|
+
const perm = getMutationsPermissions(args.table), base = zql[args.table];
|
|
43
|
+
return args.objOrId ? base.where((eb) => permissionsHelpers.buildPermissionQuery(
|
|
44
|
+
getQueryOrMutatorAuthData(),
|
|
45
|
+
eb,
|
|
46
|
+
perm || ((e) => e.and()),
|
|
47
|
+
args.objOrId,
|
|
48
|
+
args.table
|
|
49
|
+
)).one() : base.where((eb) => eb.cmpLit(!0, "=", !1)).one();
|
|
50
|
+
};
|
|
51
|
+
registerQuery(permissionCheckFn, "permission.check"), wrappedNamespaces.permission = {
|
|
52
|
+
check: defineQuery(({ args }) => permissionCheckFn(args))
|
|
53
|
+
};
|
|
42
54
|
const customQueries = defineQueries(wrappedNamespaces);
|
|
43
55
|
setCustomQueries(customQueries);
|
|
44
56
|
const DisabledContext = createContext(!1);
|
|
@@ -51,32 +63,17 @@ function createZeroClient({
|
|
|
51
63
|
);
|
|
52
64
|
return Reflect.get(latestZeroInstance, key, latestZeroInstance);
|
|
53
65
|
}
|
|
54
|
-
}),
|
|
55
|
-
schema,
|
|
56
|
-
environment: "client"
|
|
57
|
-
}), zeroEvents = createEmitter("zero", null), AuthDataContext = createContext({}), useAuthData = () => use(AuthDataContext), useQuery = createUseQuery({
|
|
66
|
+
}), zeroEvents = createEmitter("zero", null), AuthDataContext = createContext({}), useQuery = createUseQuery({
|
|
58
67
|
DisabledContext,
|
|
59
68
|
customQueries
|
|
60
69
|
});
|
|
61
70
|
function usePermission(table, objOrId, enabled = typeof objOrId < "u", debug = !1) {
|
|
62
|
-
const disabled = use(DisabledContext),
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
eb,
|
|
67
|
-
permission,
|
|
68
|
-
objOrId
|
|
69
|
-
));
|
|
70
|
-
})(), [data, status] = zeroUseQuery(query, {
|
|
71
|
-
enabled: !!(enabled && permission && authData && objOrId)
|
|
72
|
-
});
|
|
73
|
-
debug && console.info(
|
|
74
|
-
"usePermission()",
|
|
75
|
-
{ data, status, authData, permission },
|
|
76
|
-
prettyFormatZeroQuery(query)
|
|
71
|
+
const disabled = use(DisabledContext), [data, status] = useQuery(
|
|
72
|
+
permissionCheckFn,
|
|
73
|
+
{ table, objOrId },
|
|
74
|
+
{ enabled: !!(!disabled && enabled && objOrId) }
|
|
77
75
|
);
|
|
78
|
-
|
|
79
|
-
return objOrId ? allowed : !1;
|
|
76
|
+
return debug && console.info("usePermission()", { table, objOrId, data, status }), objOrId ? status.type === "unknown" ? null : !!data : !1;
|
|
80
77
|
}
|
|
81
78
|
const ProvideZero = ({
|
|
82
79
|
children,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createZeroClient.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,eAAe,mBAAmB;AAC3C
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["zeroEvents"]
|
|
6
6
|
}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { defineQueries, defineQuery } from "@rocicorp/zero";
|
|
2
|
-
import { useConnectionState, useZero, ZeroProvider
|
|
2
|
+
import { useConnectionState, useZero, ZeroProvider } from "@rocicorp/zero/react";
|
|
3
3
|
import { createEmitter } from "@take-out/helpers";
|
|
4
4
|
import { createContext, memo, use, useEffect, useMemo, useRef } from "react";
|
|
5
5
|
import { createPermissions } from "./createPermissions.mjs";
|
|
6
6
|
import { createUseQuery } from "./createUseQuery.mjs";
|
|
7
7
|
import { createMutators } from "./helpers/createMutators.mjs";
|
|
8
|
-
import {
|
|
8
|
+
import { getQueryOrMutatorAuthData } from "./helpers/getQueryOrMutatorAuthData.mjs";
|
|
9
9
|
import { getMutationsPermissions } from "./modelRegistry.mjs";
|
|
10
10
|
import { registerQuery } from "./queryRegistry.mjs";
|
|
11
11
|
import { resolveQuery } from "./resolveQuery.mjs";
|
|
12
12
|
import { setCustomQueries } from "./run.mjs";
|
|
13
13
|
import { setAuthData, setSchema } from "./state.mjs";
|
|
14
14
|
import { setRunner } from "./zeroRunner.mjs";
|
|
15
|
+
import { zql } from "./zql.mjs";
|
|
15
16
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
17
|
function createZeroClient({
|
|
17
18
|
schema,
|
|
@@ -19,13 +20,27 @@ function createZeroClient({
|
|
|
19
20
|
groupedQueries
|
|
20
21
|
}) {
|
|
21
22
|
setSchema(schema);
|
|
22
|
-
const
|
|
23
|
+
const permissionsHelpers = createPermissions({
|
|
24
|
+
schema,
|
|
25
|
+
environment: "client"
|
|
26
|
+
}),
|
|
27
|
+
wrappedNamespaces = {};
|
|
23
28
|
for (const [namespace, queries] of Object.entries(groupedQueries)) {
|
|
24
29
|
wrappedNamespaces[namespace] = {};
|
|
25
30
|
for (const [name, fn] of Object.entries(queries)) registerQuery(fn, `${namespace}.${name}`), wrappedNamespaces[namespace][name] = defineQuery(({
|
|
26
31
|
args
|
|
27
32
|
}) => fn(args));
|
|
28
33
|
}
|
|
34
|
+
const permissionCheckFn = args => {
|
|
35
|
+
const perm = getMutationsPermissions(args.table),
|
|
36
|
+
base = zql[args.table];
|
|
37
|
+
return args.objOrId ? base.where(eb => permissionsHelpers.buildPermissionQuery(getQueryOrMutatorAuthData(), eb, perm || (e => e.and()), args.objOrId, args.table)).one() : base.where(eb => eb.cmpLit(!0, "=", !1)).one();
|
|
38
|
+
};
|
|
39
|
+
registerQuery(permissionCheckFn, "permission.check"), wrappedNamespaces.permission = {
|
|
40
|
+
check: defineQuery(({
|
|
41
|
+
args
|
|
42
|
+
}) => permissionCheckFn(args))
|
|
43
|
+
};
|
|
29
44
|
const customQueries = defineQueries(wrappedNamespaces);
|
|
30
45
|
setCustomQueries(customQueries);
|
|
31
46
|
const DisabledContext = createContext(!1);
|
|
@@ -36,36 +51,26 @@ function createZeroClient({
|
|
|
36
51
|
return Reflect.get(latestZeroInstance, key, latestZeroInstance);
|
|
37
52
|
}
|
|
38
53
|
}),
|
|
39
|
-
permissionsHelpers = createPermissions({
|
|
40
|
-
schema,
|
|
41
|
-
environment: "client"
|
|
42
|
-
}),
|
|
43
54
|
zeroEvents = createEmitter("zero", null),
|
|
44
55
|
AuthDataContext = createContext({}),
|
|
45
|
-
useAuthData = () => use(AuthDataContext),
|
|
46
56
|
useQuery = createUseQuery({
|
|
47
57
|
DisabledContext,
|
|
48
58
|
customQueries
|
|
49
59
|
});
|
|
50
60
|
function usePermission(table, objOrId, enabled = typeof objOrId < "u", debug = !1) {
|
|
51
61
|
const disabled = use(DisabledContext),
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
})(),
|
|
58
|
-
[data, status] = zeroUseQuery(query, {
|
|
59
|
-
enabled: !!(enabled && permission && authData && objOrId)
|
|
62
|
+
[data, status] = useQuery(permissionCheckFn, {
|
|
63
|
+
table,
|
|
64
|
+
objOrId
|
|
65
|
+
}, {
|
|
66
|
+
enabled: !!(!disabled && enabled && objOrId)
|
|
60
67
|
});
|
|
61
|
-
debug && console.info("usePermission()", {
|
|
68
|
+
return debug && console.info("usePermission()", {
|
|
69
|
+
table,
|
|
70
|
+
objOrId,
|
|
62
71
|
data,
|
|
63
|
-
status
|
|
64
|
-
|
|
65
|
-
permission
|
|
66
|
-
}, prettyFormatZeroQuery(query));
|
|
67
|
-
const allowed = !!data;
|
|
68
|
-
return objOrId ? allowed : !1;
|
|
72
|
+
status
|
|
73
|
+
}), objOrId ? status.type === "unknown" ? null : !!data : !1;
|
|
69
74
|
}
|
|
70
75
|
const ProvideZero = ({
|
|
71
76
|
children,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","
|
|
1
|
+
{"version":3,"names":["defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","createEmitter","createContext","memo","use","useEffect","useMemo","useRef","createPermissions","createUseQuery","createMutators","getQueryOrMutatorAuthData","getMutationsPermissions","registerQuery","resolveQuery","setCustomQueries","setAuthData","setSchema","setRunner","zql","jsx","jsxs","createZeroClient","schema","models","groupedQueries","permissionsHelpers","environment","wrappedNamespaces","namespace","queries","Object","entries","name","fn","args","permissionCheckFn","perm","table","base","objOrId","where","eb","buildPermissionQuery","e","and","one","cmpLit","permission","check","customQueries","DisabledContext","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","zeroEvents","AuthDataContext","useQuery","usePermission","enabled","debug","disabled","data","status","console","info","type","ProvideZero","children","authData","authDataIn","disable","props","mutators","can","Provider","value","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","query","options","run","zeroEvents2","state","prevState","current","reason","message","emit","preload","fnArg","paramsOrOptions","optionsArg","hasParams","params","queryRequest"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { defineQueries, defineQuery } from "@rocicorp/zero";
|
|
3
|
-
import { useConnectionState, useZero, ZeroProvider
|
|
3
|
+
import { useConnectionState, useZero, ZeroProvider } from "@rocicorp/zero/react";
|
|
4
4
|
import { createEmitter } from "@take-out/helpers";
|
|
5
5
|
import { createContext, memo, use, useEffect, useMemo, useRef } from "react";
|
|
6
6
|
import { createPermissions } from "./createPermissions.native.js";
|
|
7
7
|
import { createUseQuery } from "./createUseQuery.native.js";
|
|
8
8
|
import { createMutators } from "./helpers/createMutators.native.js";
|
|
9
|
-
import {
|
|
9
|
+
import { getQueryOrMutatorAuthData } from "./helpers/getQueryOrMutatorAuthData.native.js";
|
|
10
10
|
import { getMutationsPermissions } from "./modelRegistry.native.js";
|
|
11
11
|
import { registerQuery } from "./queryRegistry.native.js";
|
|
12
12
|
import { resolveQuery } from "./resolveQuery.native.js";
|
|
13
13
|
import { setCustomQueries } from "./run.native.js";
|
|
14
14
|
import { setAuthData, setSchema } from "./state.native.js";
|
|
15
15
|
import { setRunner } from "./zeroRunner.native.js";
|
|
16
|
+
import { zql } from "./zql.native.js";
|
|
16
17
|
function createZeroClient(param) {
|
|
17
18
|
var {
|
|
18
19
|
schema,
|
|
@@ -20,7 +21,11 @@ function createZeroClient(param) {
|
|
|
20
21
|
groupedQueries
|
|
21
22
|
} = param;
|
|
22
23
|
setSchema(schema);
|
|
23
|
-
var
|
|
24
|
+
var permissionsHelpers = createPermissions({
|
|
25
|
+
schema,
|
|
26
|
+
environment: "client"
|
|
27
|
+
}),
|
|
28
|
+
wrappedNamespaces = {},
|
|
24
29
|
_iteratorNormalCompletion = !0,
|
|
25
30
|
_didIteratorError = !1,
|
|
26
31
|
_iteratorError = void 0;
|
|
@@ -60,6 +65,25 @@ function createZeroClient(param) {
|
|
|
60
65
|
if (_didIteratorError) throw _iteratorError;
|
|
61
66
|
}
|
|
62
67
|
}
|
|
68
|
+
var permissionCheckFn = function (args) {
|
|
69
|
+
var perm = getMutationsPermissions(args.table),
|
|
70
|
+
base = zql[args.table];
|
|
71
|
+
return args.objOrId ? base.where(function (eb) {
|
|
72
|
+
return permissionsHelpers.buildPermissionQuery(getQueryOrMutatorAuthData(), eb, perm || function (e) {
|
|
73
|
+
return e.and();
|
|
74
|
+
}, args.objOrId, args.table);
|
|
75
|
+
}).one() : base.where(function (eb) {
|
|
76
|
+
return eb.cmpLit(!0, "=", !1);
|
|
77
|
+
}).one();
|
|
78
|
+
};
|
|
79
|
+
registerQuery(permissionCheckFn, "permission.check"), wrappedNamespaces.permission = {
|
|
80
|
+
check: defineQuery(function (param2) {
|
|
81
|
+
var {
|
|
82
|
+
args
|
|
83
|
+
} = param2;
|
|
84
|
+
return permissionCheckFn(args);
|
|
85
|
+
})
|
|
86
|
+
};
|
|
63
87
|
var customQueries = defineQueries(wrappedNamespaces);
|
|
64
88
|
setCustomQueries(customQueries);
|
|
65
89
|
var DisabledContext = /* @__PURE__ */createContext(!1),
|
|
@@ -70,15 +94,8 @@ function createZeroClient(param) {
|
|
|
70
94
|
return Reflect.get(latestZeroInstance, key, latestZeroInstance);
|
|
71
95
|
}
|
|
72
96
|
}),
|
|
73
|
-
permissionsHelpers = createPermissions({
|
|
74
|
-
schema,
|
|
75
|
-
environment: "client"
|
|
76
|
-
}),
|
|
77
97
|
zeroEvents = createEmitter("zero", null),
|
|
78
98
|
AuthDataContext = /* @__PURE__ */createContext({}),
|
|
79
|
-
useAuthData = function () {
|
|
80
|
-
return use(AuthDataContext);
|
|
81
|
-
},
|
|
82
99
|
useQuery = createUseQuery({
|
|
83
100
|
DisabledContext,
|
|
84
101
|
customQueries
|
|
@@ -87,26 +104,18 @@ function createZeroClient(param) {
|
|
|
87
104
|
var enabled = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : typeof objOrId < "u",
|
|
88
105
|
debug = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !1,
|
|
89
106
|
disabled = use(DisabledContext),
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return permissionsHelpers.buildPermissionQuery(authData, eb, permission, objOrId);
|
|
96
|
-
});
|
|
97
|
-
}(),
|
|
98
|
-
[data, status] = zeroUseQuery(query, {
|
|
99
|
-
enabled: !!(enabled && permission && authData && objOrId)
|
|
107
|
+
[data, status] = useQuery(permissionCheckFn, {
|
|
108
|
+
table,
|
|
109
|
+
objOrId
|
|
110
|
+
}, {
|
|
111
|
+
enabled: !!(!disabled && enabled && objOrId)
|
|
100
112
|
});
|
|
101
|
-
debug && console.info("usePermission()", {
|
|
113
|
+
return debug && console.info("usePermission()", {
|
|
114
|
+
table,
|
|
115
|
+
objOrId,
|
|
102
116
|
data,
|
|
103
|
-
status
|
|
104
|
-
|
|
105
|
-
permission
|
|
106
|
-
}, prettyFormatZeroQuery(query));
|
|
107
|
-
var result = data,
|
|
108
|
-
allowed = !!result;
|
|
109
|
-
return objOrId ? allowed : !1;
|
|
117
|
+
status
|
|
118
|
+
}), objOrId ? status.type === "unknown" ? null : !!data : !1;
|
|
110
119
|
}
|
|
111
120
|
var ProvideZero = function (param2) {
|
|
112
121
|
var {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","createEmitter","createContext","memo","use","useEffect","useMemo","useRef","createPermissions","createUseQuery","createMutators","getQueryOrMutatorAuthData","getMutationsPermissions","registerQuery","resolveQuery","setCustomQueries","setAuthData","setSchema","setRunner","zql","createZeroClient","param","schema","models","groupedQueries","permissionsHelpers","environment","wrappedNamespaces","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","Symbol","iterator","_step","next","done","namespace","queries","value","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_loop","name","fn","_step1","param2","args","_iterator1","err","return","permissionCheckFn","perm","table","base","objOrId","where","eb","buildPermissionQuery","e","and","one","cmpLit","permission","check","customQueries","DisabledContext","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","zeroEvents","AuthDataContext","useQuery","usePermission","enabled","arguments","length","debug","disabled","data","status","console","info","type","ProvideZero","children","authData","authDataIn","disable","props","mutators","can","Provider","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","query","options","run","zeroEvents2","state","prevState"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -7,8 +7,9 @@ import { Pool } from "pg";
|
|
|
7
7
|
import { createPermissions } from "./createPermissions";
|
|
8
8
|
import { createMutators } from "./helpers/createMutators";
|
|
9
9
|
import { isInZeroMutation, mutatorContext } from "./helpers/mutatorContext";
|
|
10
|
+
import { getMutationsPermissions } from "./modelRegistry";
|
|
10
11
|
import { setCustomQueries } from "./run";
|
|
11
|
-
import { setAuthData, setSchema } from "./state";
|
|
12
|
+
import { getZQL, setAuthData, setSchema } from "./state";
|
|
12
13
|
import { setRunner } from "./zeroRunner";
|
|
13
14
|
function createZeroServer({
|
|
14
15
|
createServerActions,
|
|
@@ -63,7 +64,15 @@ function createZeroServer({
|
|
|
63
64
|
);
|
|
64
65
|
return setAuthData(authData || {}), {
|
|
65
66
|
response: await zeroHandleQueryRequest(
|
|
66
|
-
(name, args) =>
|
|
67
|
+
(name, args) => {
|
|
68
|
+
if (name === "permission.check") {
|
|
69
|
+
const { table, objOrId } = args, perm = getMutationsPermissions(table);
|
|
70
|
+
if (!perm)
|
|
71
|
+
throw new Error(`[permission] no permission defined for table: ${table}`);
|
|
72
|
+
return getZQL()[table].where((eb) => permissions.buildPermissionQuery(authData, eb, perm, objOrId, table)).one();
|
|
73
|
+
}
|
|
74
|
+
return mustGetQuery(queries, name).fn({ args, ctx: authData });
|
|
75
|
+
},
|
|
67
76
|
schema,
|
|
68
77
|
request
|
|
69
78
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createZeroServer.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB,8BAA8B;AAC7D,SAAS,kBAAkB;AAC3B,SAAS,cAAc,gBAAgB;AACvC,SAAS,YAAY;AAErB,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,kBAAkB,sBAAsB;AACjD,SAAS,wBAAwB;AACjC,SAAS,aAAa,iBAAiB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["query"]
|
|
6
6
|
}
|
|
@@ -7,8 +7,9 @@ import { Pool } from "pg";
|
|
|
7
7
|
import { createPermissions } from "./createPermissions.mjs";
|
|
8
8
|
import { createMutators } from "./helpers/createMutators.mjs";
|
|
9
9
|
import { isInZeroMutation, mutatorContext } from "./helpers/mutatorContext.mjs";
|
|
10
|
+
import { getMutationsPermissions } from "./modelRegistry.mjs";
|
|
10
11
|
import { setCustomQueries } from "./run.mjs";
|
|
11
|
-
import { setAuthData, setSchema } from "./state.mjs";
|
|
12
|
+
import { getZQL, setAuthData, setSchema } from "./state.mjs";
|
|
12
13
|
import { setRunner } from "./zeroRunner.mjs";
|
|
13
14
|
function createZeroServer({
|
|
14
15
|
createServerActions,
|
|
@@ -65,10 +66,21 @@ function createZeroServer({
|
|
|
65
66
|
}) => {
|
|
66
67
|
if (!queries) throw new Error("No queries registered with createZeroServer. Pass the syncedQueries registry to createZeroServer via the queries option.");
|
|
67
68
|
return setAuthData(authData || {}), {
|
|
68
|
-
response: await zeroHandleQueryRequest((name, args) =>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
response: await zeroHandleQueryRequest((name, args) => {
|
|
70
|
+
if (name === "permission.check") {
|
|
71
|
+
const {
|
|
72
|
+
table,
|
|
73
|
+
objOrId
|
|
74
|
+
} = args,
|
|
75
|
+
perm = getMutationsPermissions(table);
|
|
76
|
+
if (!perm) throw new Error(`[permission] no permission defined for table: ${table}`);
|
|
77
|
+
return getZQL()[table].where(eb => permissions.buildPermissionQuery(authData, eb, perm, objOrId, table)).one();
|
|
78
|
+
}
|
|
79
|
+
return mustGetQuery(queries, name).fn({
|
|
80
|
+
args,
|
|
81
|
+
ctx: authData
|
|
82
|
+
});
|
|
83
|
+
}, schema, request)
|
|
72
84
|
};
|
|
73
85
|
},
|
|
74
86
|
mutate = async (run, authData) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mustGetQuery","PushProcessor","handleQueryRequest","zeroHandleQueryRequest","zeroNodePg","assertString","randomId","Pool","createPermissions","createMutators","isInZeroMutation","mutatorContext","setCustomQueries","setAuthData","setSchema","setRunner","createZeroServer","createServerActions","database","schema","models","queries","dbString","zeroDb","connectionString","ssl","includes","rejectUnauthorized","permissions","environment","processor","handleMutationRequest","authData","request","skipAsyncTasks","asyncTasks","mutators","can","response","process","length","id","console","info","Promise","all","map","task","then","catch","err","error","Error","name","args","fn","ctx","mutate","run","email","role","transaction","tx","t","query2","dummyTransactionInput","query","cb","queryObj","clientGroupID","clientID","mutationID","upstreamSchema"],"sources":["../../src/createZeroServer.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAA,QAAoB;AAC7B,SAASC,aAAA,QAAqB;AAC9B,SAASC,kBAAA,IAAsBC,sBAAA,QAA8B;AAC7D,SAASC,UAAA,QAAkB;AAC3B,SAASC,YAAA,EAAcC,QAAA,QAAgB;AACvC,SAASC,IAAA,QAAY;AAErB,SAASC,iBAAA,QAAyB;AAClC,SAASC,cAAA,QAAsB;AAC/B,SAASC,gBAAA,EAAkBC,cAAA,QAAsB;AACjD,SAASC,gBAAA,QAAwB;AACjC,SAASC,WAAA,EAAaC,SAAA,QAAiB;
|
|
1
|
+
{"version":3,"names":["mustGetQuery","PushProcessor","handleQueryRequest","zeroHandleQueryRequest","zeroNodePg","assertString","randomId","Pool","createPermissions","createMutators","isInZeroMutation","mutatorContext","getMutationsPermissions","setCustomQueries","getZQL","setAuthData","setSchema","setRunner","createZeroServer","createServerActions","database","schema","models","queries","dbString","zeroDb","connectionString","ssl","includes","rejectUnauthorized","permissions","environment","processor","handleMutationRequest","authData","request","skipAsyncTasks","asyncTasks","mutators","can","response","process","length","id","console","info","Promise","all","map","task","then","catch","err","error","Error","name","args","table","objOrId","perm","where","eb","buildPermissionQuery","one","fn","ctx","mutate","run","email","role","transaction","tx","t","query2","dummyTransactionInput","query","cb","queryObj","clientGroupID","clientID","mutationID","upstreamSchema"],"sources":["../../src/createZeroServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|