on-zero 0.1.46 → 0.1.48
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/createZeroClient.cjs +3 -1
- package/dist/cjs/createZeroClient.js +2 -2
- package/dist/cjs/createZeroClient.js.map +1 -1
- package/dist/cjs/createZeroClient.native.js +4 -1
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/usePermission.test.cjs +67 -0
- package/dist/cjs/usePermission.test.js +29 -0
- package/dist/cjs/usePermission.test.js.map +6 -0
- package/dist/cjs/usePermission.test.native.js +74 -0
- package/dist/cjs/usePermission.test.native.js.map +1 -0
- package/dist/esm/createZeroClient.js +2 -2
- package/dist/esm/createZeroClient.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +3 -1
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +4 -1
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/usePermission.test.js +33 -0
- package/dist/esm/usePermission.test.js.map +6 -0
- package/dist/esm/usePermission.test.mjs +68 -0
- package/dist/esm/usePermission.test.mjs.map +1 -0
- package/dist/esm/usePermission.test.native.js +72 -0
- package/dist/esm/usePermission.test.native.js.map +1 -0
- package/package.json +2 -2
- package/src/createZeroClient.tsx +6 -1
- package/src/usePermission.test.ts +84 -0
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/usePermission.test.d.ts +2 -0
- package/types/usePermission.test.d.ts.map +1 -0
|
@@ -106,8 +106,10 @@ function createZeroClient({
|
|
|
106
106
|
const disableMode = (0, import_react2.use)(DisabledContext),
|
|
107
107
|
lastRef = (0, import_react2.useRef)(null),
|
|
108
108
|
checkFn = permissionCheckFns[table],
|
|
109
|
+
_uid = (0, import_getAuth.getAuth)()?.id || "anon",
|
|
109
110
|
[data, status] = useQuery(checkFn, {
|
|
110
|
-
objOrId
|
|
111
|
+
objOrId,
|
|
112
|
+
_uid
|
|
111
113
|
}, {
|
|
112
114
|
enabled: !!(!disableMode && enabled && objOrId && checkFn)
|
|
113
115
|
});
|
|
@@ -90,9 +90,9 @@ function createZeroClient({
|
|
|
90
90
|
customQueries
|
|
91
91
|
});
|
|
92
92
|
function usePermission(table, objOrId, enabled = typeof objOrId < "u", debug = !1) {
|
|
93
|
-
const disableMode = (0, import_react2.use)(DisabledContext), lastRef = (0, import_react2.useRef)(null), checkFn = permissionCheckFns[table], [data, status] = useQuery(
|
|
93
|
+
const disableMode = (0, import_react2.use)(DisabledContext), lastRef = (0, import_react2.useRef)(null), checkFn = permissionCheckFns[table], _uid = (0, import_getAuth.getAuth)()?.id || "anon", [data, status] = useQuery(
|
|
94
94
|
checkFn,
|
|
95
|
-
{ objOrId },
|
|
95
|
+
{ objOrId, _uid },
|
|
96
96
|
{ enabled: !!(!disableMode && enabled && objOrId && checkFn) }
|
|
97
97
|
);
|
|
98
98
|
if (debug && console.info("usePermission()", { table, objOrId, data, status }), !objOrId) return !1;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createZeroClient.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA2C,2BAC3C,eAA0D,iCAC1D,iBAA8B,8BAC9BA,gBAQO,kBAEP,2BAAkC,gCAClC,wBAAsD,6BACtD,wBAA+B,qCAC/B,iBAAwB,8BACxB,uBAAoE,4BACpE,uBAA8B,4BAC9B,sBAAgD,2BAChD,aAAiC,kBACjC,eAAuD,oBACvD,eAAqD,oBACrD,oBAA0B,yBAC1B,aAAoB,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["import_react", "zeroEvents"]
|
|
6
6
|
}
|
|
@@ -172,8 +172,11 @@ function createZeroClient(param) {
|
|
|
172
172
|
lastRef = (0, import_react2.useRef)(null),
|
|
173
173
|
tableStr = table,
|
|
174
174
|
checkFn = permissionCheckFns[tableStr],
|
|
175
|
+
auth = (0, import_getAuth.getAuth)(),
|
|
176
|
+
_uid = auth?.id || "anon",
|
|
175
177
|
[data, status] = useQuery(checkFn, {
|
|
176
|
-
objOrId
|
|
178
|
+
objOrId,
|
|
179
|
+
_uid
|
|
177
180
|
}, {
|
|
178
181
|
enabled: !!(!disableMode && enabled && objOrId && checkFn)
|
|
179
182
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createZeroClient_exports","__export","createZeroClient","module","exports","import_jsx_runtime","require","import_zero","import_react","import_helpers","import_react2","import_createPermissions","import_createUseQuery","import_createMutators","import_getAuth","import_modelRegistry","import_queryRegistry","import_resolveQuery","import_run","import_state","import_where","import_zeroRunner","import_zql","param","schema","models","groupedQueries","permissionStrategy","setSchema","setEnvironment","permissionsHelpers","createPermissions","environment","wrappedNamespaces","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","Symbol","iterator","_step","next","done","namespace","queries","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_loop","name","fn","_step1","registerQuery","defineQuery","param2","args","_iterator1","err","return","permissionCheckFns","createPermissionCheckFn","table","perm","getMutationsPermissions","base","zql","objOrId","where","eb","cmpLit","one","rawPerm","getRawWhere","setEvaluatingPermission","buildPermissionQuery","getAuth","e","and","permission","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop1","_step2","_iterator2","getAllMutationsPermissions","customQueries","defineQueries","setCustomQueries","DisabledContext","createContext","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","zeroEvents","createEmitter","AuthDataContext","useQuery","createUseQuery","usePermission","enabled","arguments","length","debug","disableMode","use","lastRef","useRef","tableStr","checkFn","data","status","console","info","result","type","current","ProvideZero","children","authData","authDataIn","disable","props","setAuthData","mutators","useMemo","createMutators","can","jsx","Provider","jsxs","ZeroProvider","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","useZero","setRunner","query","options"
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createZeroClient_exports","__export","createZeroClient","module","exports","import_jsx_runtime","require","import_zero","import_react","import_helpers","import_react2","import_createPermissions","import_createUseQuery","import_createMutators","import_getAuth","import_modelRegistry","import_queryRegistry","import_resolveQuery","import_run","import_state","import_where","import_zeroRunner","import_zql","param","schema","models","groupedQueries","permissionStrategy","setSchema","setEnvironment","permissionsHelpers","createPermissions","environment","wrappedNamespaces","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","Symbol","iterator","_step","next","done","namespace","queries","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_loop","name","fn","_step1","registerQuery","defineQuery","param2","args","_iterator1","err","return","permissionCheckFns","createPermissionCheckFn","table","perm","getMutationsPermissions","base","zql","objOrId","where","eb","cmpLit","one","rawPerm","getRawWhere","setEvaluatingPermission","buildPermissionQuery","getAuth","e","and","permission","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop1","_step2","_iterator2","getAllMutationsPermissions","customQueries","defineQueries","setCustomQueries","DisabledContext","createContext","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","zeroEvents","createEmitter","AuthDataContext","useQuery","createUseQuery","usePermission","enabled","arguments","length","debug","disableMode","use","lastRef","useRef","tableStr","checkFn","auth","_uid","id","data","status","console","info","result","type","current","ProvideZero","children","authData","authDataIn","disable","props","setAuthData","mutators","useMemo","createMutators","can","jsx","Provider","jsxs","ZeroProvider","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","useZero","setRunner","query","options"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
var import_vitest = require("vitest"),
|
|
2
|
+
import_zero = require("@rocicorp/zero"),
|
|
3
|
+
import_state = require("./state.cjs"),
|
|
4
|
+
import_queryRegistry = require("./queryRegistry.cjs"),
|
|
5
|
+
import_modelRegistry = require("./modelRegistry.cjs");
|
|
6
|
+
(0, import_vitest.describe)("usePermission _uid query identity", () => {
|
|
7
|
+
(0, import_vitest.test)("permission check fn ignores extra _uid in args", () => {
|
|
8
|
+
const testTable = (0, import_zero.table)("testEntity").columns({
|
|
9
|
+
id: (0, import_zero.string)(),
|
|
10
|
+
ownerId: (0, import_zero.string)(),
|
|
11
|
+
active: (0, import_zero.boolean)()
|
|
12
|
+
}).primaryKey("id");
|
|
13
|
+
(0, import_state.setSchema)({
|
|
14
|
+
tables: {
|
|
15
|
+
testEntity: testTable
|
|
16
|
+
},
|
|
17
|
+
version: 1
|
|
18
|
+
}), (0, import_state.setEnvironment)("client");
|
|
19
|
+
const fn = args => ({
|
|
20
|
+
objOrId: args.objOrId
|
|
21
|
+
}),
|
|
22
|
+
result1 = fn({
|
|
23
|
+
objOrId: "test-id",
|
|
24
|
+
_uid: "user-A"
|
|
25
|
+
}),
|
|
26
|
+
result2 = fn({
|
|
27
|
+
objOrId: "test-id",
|
|
28
|
+
_uid: "user-B"
|
|
29
|
+
}),
|
|
30
|
+
result3 = fn({
|
|
31
|
+
objOrId: "test-id"
|
|
32
|
+
});
|
|
33
|
+
(0, import_vitest.expect)(result1.objOrId).toBe("test-id"), (0, import_vitest.expect)(result2.objOrId).toBe("test-id"), (0, import_vitest.expect)(result3.objOrId).toBe("test-id");
|
|
34
|
+
}), (0, import_vitest.test)("different _uid values produce different serialized args", () => {
|
|
35
|
+
const args1 = JSON.stringify({
|
|
36
|
+
objOrId: "server-1",
|
|
37
|
+
_uid: "user-A"
|
|
38
|
+
}),
|
|
39
|
+
args2 = JSON.stringify({
|
|
40
|
+
objOrId: "server-1",
|
|
41
|
+
_uid: "user-B"
|
|
42
|
+
}),
|
|
43
|
+
args3 = JSON.stringify({
|
|
44
|
+
objOrId: "server-1",
|
|
45
|
+
_uid: "anon"
|
|
46
|
+
});
|
|
47
|
+
(0, import_vitest.expect)(args1).not.toBe(args2), (0, import_vitest.expect)(args1).not.toBe(args3), (0, import_vitest.expect)(args2).not.toBe(args3);
|
|
48
|
+
}), (0, import_vitest.test)("same _uid produces stable query identity", () => {
|
|
49
|
+
const args1 = JSON.stringify({
|
|
50
|
+
objOrId: "server-1",
|
|
51
|
+
_uid: "user-A"
|
|
52
|
+
}),
|
|
53
|
+
args2 = JSON.stringify({
|
|
54
|
+
objOrId: "server-1",
|
|
55
|
+
_uid: "user-A"
|
|
56
|
+
});
|
|
57
|
+
(0, import_vitest.expect)(args1).toBe(args2);
|
|
58
|
+
}), (0, import_vitest.test)("permission registration works for query lookup", () => {
|
|
59
|
+
const mockWhere = (eb, auth) => eb.cmp("ownerId", auth?.id || "");
|
|
60
|
+
(0, import_modelRegistry.setMutationsPermissions)("testEntity", mockWhere);
|
|
61
|
+
const perm = (0, import_modelRegistry.getMutationsPermissions)("testEntity");
|
|
62
|
+
(0, import_vitest.expect)(perm).toBeDefined(), (0, import_vitest.expect)(perm).toBe(mockWhere);
|
|
63
|
+
}), (0, import_vitest.test)("query name registration preserves permission namespace", () => {
|
|
64
|
+
const fn = () => {};
|
|
65
|
+
(0, import_queryRegistry.registerQuery)(fn, "permission.testEntity"), (0, import_vitest.expect)((0, import_queryRegistry.getQueryName)(fn)).toBe("permission.testEntity");
|
|
66
|
+
});
|
|
67
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var import_vitest = require("vitest"), import_zero = require("@rocicorp/zero"), import_state = require("./state"), import_queryRegistry = require("./queryRegistry"), import_modelRegistry = require("./modelRegistry");
|
|
2
|
+
(0, import_vitest.describe)("usePermission _uid query identity", () => {
|
|
3
|
+
(0, import_vitest.test)("permission check fn ignores extra _uid in args", () => {
|
|
4
|
+
const testTable = (0, import_zero.table)("testEntity").columns({
|
|
5
|
+
id: (0, import_zero.string)(),
|
|
6
|
+
ownerId: (0, import_zero.string)(),
|
|
7
|
+
active: (0, import_zero.boolean)()
|
|
8
|
+
}).primaryKey("id");
|
|
9
|
+
(0, import_state.setSchema)({ tables: { testEntity: testTable }, version: 1 }), (0, import_state.setEnvironment)("client");
|
|
10
|
+
const fn = (args) => ({ objOrId: args.objOrId }), result1 = fn({ objOrId: "test-id", _uid: "user-A" }), result2 = fn({ objOrId: "test-id", _uid: "user-B" }), result3 = fn({ objOrId: "test-id" });
|
|
11
|
+
(0, import_vitest.expect)(result1.objOrId).toBe("test-id"), (0, import_vitest.expect)(result2.objOrId).toBe("test-id"), (0, import_vitest.expect)(result3.objOrId).toBe("test-id");
|
|
12
|
+
}), (0, import_vitest.test)("different _uid values produce different serialized args", () => {
|
|
13
|
+
const args1 = JSON.stringify({ objOrId: "server-1", _uid: "user-A" }), args2 = JSON.stringify({ objOrId: "server-1", _uid: "user-B" }), args3 = JSON.stringify({ objOrId: "server-1", _uid: "anon" });
|
|
14
|
+
(0, import_vitest.expect)(args1).not.toBe(args2), (0, import_vitest.expect)(args1).not.toBe(args3), (0, import_vitest.expect)(args2).not.toBe(args3);
|
|
15
|
+
}), (0, import_vitest.test)("same _uid produces stable query identity", () => {
|
|
16
|
+
const args1 = JSON.stringify({ objOrId: "server-1", _uid: "user-A" }), args2 = JSON.stringify({ objOrId: "server-1", _uid: "user-A" });
|
|
17
|
+
(0, import_vitest.expect)(args1).toBe(args2);
|
|
18
|
+
}), (0, import_vitest.test)("permission registration works for query lookup", () => {
|
|
19
|
+
const mockWhere = (eb, auth) => eb.cmp("ownerId", auth?.id || "");
|
|
20
|
+
(0, import_modelRegistry.setMutationsPermissions)("testEntity", mockWhere);
|
|
21
|
+
const perm = (0, import_modelRegistry.getMutationsPermissions)("testEntity");
|
|
22
|
+
(0, import_vitest.expect)(perm).toBeDefined(), (0, import_vitest.expect)(perm).toBe(mockWhere);
|
|
23
|
+
}), (0, import_vitest.test)("query name registration preserves permission namespace", () => {
|
|
24
|
+
const fn = () => {
|
|
25
|
+
};
|
|
26
|
+
(0, import_queryRegistry.registerQuery)(fn, "permission.testEntity"), (0, import_vitest.expect)((0, import_queryRegistry.getQueryName)(fn)).toBe("permission.testEntity");
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=usePermission.test.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/usePermission.test.ts"],
|
|
4
|
+
"mappings": "AAAA,oBAAuC,mBACvC,cAAuC,2BAEvC,eAA0C,oBAC1C,uBAA4C,4BAC5C,uBAAiE;AAAA,IAEjE,wBAAS,qCAAqC,MAAM;AAUlD,0BAAK,kDAAkD,MAAM;AAE3D,UAAM,gBAAY,mBAAM,YAAY,EACjC,QAAQ;AAAA,MACP,QAAI,oBAAO;AAAA,MACX,aAAS,oBAAO;AAAA,MAChB,YAAQ,qBAAQ;AAAA,IAClB,CAAC,EACA,WAAW,IAAI;AAElB,gCAAU,EAAE,QAAQ,EAAE,YAAY,UAAU,GAAG,SAAS,EAAE,CAAQ,OAClE,6BAAe,QAAQ;AAIvB,UAAM,KAAK,CAAC,UAEH,EAAE,SAAS,KAAK,QAAQ,IAG3B,UAAU,GAAG,EAAE,SAAS,WAAW,MAAM,SAAS,CAAC,GACnD,UAAU,GAAG,EAAE,SAAS,WAAW,MAAM,SAAS,CAAC,GACnD,UAAU,GAAG,EAAE,SAAS,UAAU,CAAC;AAGzC,8BAAO,QAAQ,OAAO,EAAE,KAAK,SAAS,OACtC,sBAAO,QAAQ,OAAO,EAAE,KAAK,SAAS,OACtC,sBAAO,QAAQ,OAAO,EAAE,KAAK,SAAS;AAAA,EACxC,CAAC,OAED,oBAAK,2DAA2D,MAAM;AAGpE,UAAM,QAAQ,KAAK,UAAU,EAAE,SAAS,YAAY,MAAM,SAAS,CAAC,GAC9D,QAAQ,KAAK,UAAU,EAAE,SAAS,YAAY,MAAM,SAAS,CAAC,GAC9D,QAAQ,KAAK,UAAU,EAAE,SAAS,YAAY,MAAM,OAAO,CAAC;AAElE,8BAAO,KAAK,EAAE,IAAI,KAAK,KAAK,OAC5B,sBAAO,KAAK,EAAE,IAAI,KAAK,KAAK,OAC5B,sBAAO,KAAK,EAAE,IAAI,KAAK,KAAK;AAAA,EAC9B,CAAC,OAED,oBAAK,4CAA4C,MAAM;AAErD,UAAM,QAAQ,KAAK,UAAU,EAAE,SAAS,YAAY,MAAM,SAAS,CAAC,GAC9D,QAAQ,KAAK,UAAU,EAAE,SAAS,YAAY,MAAM,SAAS,CAAC;AAEpE,8BAAO,KAAK,EAAE,KAAK,KAAK;AAAA,EAC1B,CAAC,OAED,oBAAK,kDAAkD,MAAM;AAE3D,UAAM,YAAY,CAAC,IAAS,SAAc,GAAG,IAAI,WAAW,MAAM,MAAM,EAAE;AAC1E,sDAAwB,cAAc,SAAgB;AAEtD,UAAM,WAAO,8CAAwB,YAAY;AACjD,8BAAO,IAAI,EAAE,YAAY,OACzB,sBAAO,IAAI,EAAE,KAAK,SAAS;AAAA,EAC7B,CAAC,OAED,oBAAK,0DAA0D,MAAM;AACnE,UAAM,KAAK,MAAM;AAAA,IAAC;AAClB,4CAAc,IAAI,uBAAuB,OAEzC,0BAAO,mCAAa,EAAE,CAAC,EAAE,KAAK,uBAAuB;AAAA,EACvD,CAAC;AACH,CAAC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var import_vitest = require("vitest"),
|
|
4
|
+
import_zero = require("@rocicorp/zero"),
|
|
5
|
+
import_state = require("./state.native.js"),
|
|
6
|
+
import_queryRegistry = require("./queryRegistry.native.js"),
|
|
7
|
+
import_modelRegistry = require("./modelRegistry.native.js");
|
|
8
|
+
(0, import_vitest.describe)("usePermission _uid query identity", function () {
|
|
9
|
+
(0, import_vitest.test)("permission check fn ignores extra _uid in args", function () {
|
|
10
|
+
var testTable = (0, import_zero.table)("testEntity").columns({
|
|
11
|
+
id: (0, import_zero.string)(),
|
|
12
|
+
ownerId: (0, import_zero.string)(),
|
|
13
|
+
active: (0, import_zero.boolean)()
|
|
14
|
+
}).primaryKey("id");
|
|
15
|
+
(0, import_state.setSchema)({
|
|
16
|
+
tables: {
|
|
17
|
+
testEntity: testTable
|
|
18
|
+
},
|
|
19
|
+
version: 1
|
|
20
|
+
}), (0, import_state.setEnvironment)("client");
|
|
21
|
+
var fn = function (args) {
|
|
22
|
+
return {
|
|
23
|
+
objOrId: args.objOrId
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
result1 = fn({
|
|
27
|
+
objOrId: "test-id",
|
|
28
|
+
_uid: "user-A"
|
|
29
|
+
}),
|
|
30
|
+
result2 = fn({
|
|
31
|
+
objOrId: "test-id",
|
|
32
|
+
_uid: "user-B"
|
|
33
|
+
}),
|
|
34
|
+
result3 = fn({
|
|
35
|
+
objOrId: "test-id"
|
|
36
|
+
});
|
|
37
|
+
(0, import_vitest.expect)(result1.objOrId).toBe("test-id"), (0, import_vitest.expect)(result2.objOrId).toBe("test-id"), (0, import_vitest.expect)(result3.objOrId).toBe("test-id");
|
|
38
|
+
}), (0, import_vitest.test)("different _uid values produce different serialized args", function () {
|
|
39
|
+
var args1 = JSON.stringify({
|
|
40
|
+
objOrId: "server-1",
|
|
41
|
+
_uid: "user-A"
|
|
42
|
+
}),
|
|
43
|
+
args2 = JSON.stringify({
|
|
44
|
+
objOrId: "server-1",
|
|
45
|
+
_uid: "user-B"
|
|
46
|
+
}),
|
|
47
|
+
args3 = JSON.stringify({
|
|
48
|
+
objOrId: "server-1",
|
|
49
|
+
_uid: "anon"
|
|
50
|
+
});
|
|
51
|
+
(0, import_vitest.expect)(args1).not.toBe(args2), (0, import_vitest.expect)(args1).not.toBe(args3), (0, import_vitest.expect)(args2).not.toBe(args3);
|
|
52
|
+
}), (0, import_vitest.test)("same _uid produces stable query identity", function () {
|
|
53
|
+
var args1 = JSON.stringify({
|
|
54
|
+
objOrId: "server-1",
|
|
55
|
+
_uid: "user-A"
|
|
56
|
+
}),
|
|
57
|
+
args2 = JSON.stringify({
|
|
58
|
+
objOrId: "server-1",
|
|
59
|
+
_uid: "user-A"
|
|
60
|
+
});
|
|
61
|
+
(0, import_vitest.expect)(args1).toBe(args2);
|
|
62
|
+
}), (0, import_vitest.test)("permission registration works for query lookup", function () {
|
|
63
|
+
var mockWhere = function (eb, auth) {
|
|
64
|
+
return eb.cmp("ownerId", auth?.id || "");
|
|
65
|
+
};
|
|
66
|
+
(0, import_modelRegistry.setMutationsPermissions)("testEntity", mockWhere);
|
|
67
|
+
var perm = (0, import_modelRegistry.getMutationsPermissions)("testEntity");
|
|
68
|
+
(0, import_vitest.expect)(perm).toBeDefined(), (0, import_vitest.expect)(perm).toBe(mockWhere);
|
|
69
|
+
}), (0, import_vitest.test)("query name registration preserves permission namespace", function () {
|
|
70
|
+
var fn = function () {};
|
|
71
|
+
(0, import_queryRegistry.registerQuery)(fn, "permission.testEntity"), (0, import_vitest.expect)((0, import_queryRegistry.getQueryName)(fn)).toBe("permission.testEntity");
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=usePermission.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["import_vitest","require","import_zero","import_state","import_queryRegistry","import_modelRegistry","describe","test","testTable","table","columns","id","string","ownerId","active","boolean","primaryKey","setSchema","tables","testEntity","version","setEnvironment","fn","args","objOrId","result1","_uid","result2","result3"],"sources":["../../src/usePermission.test.ts"],"sourcesContent":[null],"mappings":"AAAA;;AAKiE,IAEjEA,aAAA,GAAAC,OAAA,CAAS;EAAAC,WAAA,GAAAD,OAAA,iBAA2C;EAAAE,YAAA,GAAAF,OAAA;EAAAG,oBAAA,GAAAH,OAAA;EAAAI,oBAAA,GAAAJ,OAAA;AAUlD,IAAAD,aAAA,CAAAM,QAAK,mDAAkD;EAErD,IAAAN,aAAM,CAAAO,IAAA,EAAY,gDACP;IAAA,IACPC,SAAI,OAAAN,WAAO,CAAAO,KAAA,gBAAAC,OAAA;MACXC,EAAA,MAAAT,WAAS,CAAAU,MAAA;MACTC,OAAA,MAAQX,WAAA,CAAAU,MAAA,EAAQ;MACjBE,MACA,MAAWZ,WAAI,CAAAa,OAAA;IAElB,GAAAC,UAAA;IAKA,IAAAb,YAAY,CAAAc,SAED;MAQXC,MAAA;QAGDC,UAED,EAAAX;MAGE;MAIAY,OAAA;IAGD,MAED,EAAAjB,YAAA,CAAAkB,cAAK;IAEH,IAAAC,EAAM,YAAAA,CAAQC,IAAK;QAGnB;UACDC,OAED,EAAAD,IAAA,CAAAC;QAEE;MACA;MAAAC,OAAA,GAAAH,EAAA;QAEAE,OAAM,WAAO;QACbE,IAAA;MAED;MAAAC,OAED,GAAAL,EAAA;QACEE,OAAM,EAAK,SAAM;QAACE,IAAA;MAClB;MAAAE,OAAA,GAAAN,EAAA;QAGDE,OAAA;MACF","ignoreList":[]}
|
|
@@ -94,9 +94,9 @@ function createZeroClient({
|
|
|
94
94
|
customQueries
|
|
95
95
|
});
|
|
96
96
|
function usePermission(table, objOrId, enabled = typeof objOrId < "u", debug = !1) {
|
|
97
|
-
const disableMode = use(DisabledContext), lastRef = useRef(null), checkFn = permissionCheckFns[table], [data, status] = useQuery(
|
|
97
|
+
const disableMode = use(DisabledContext), lastRef = useRef(null), checkFn = permissionCheckFns[table], _uid = getAuth()?.id || "anon", [data, status] = useQuery(
|
|
98
98
|
checkFn,
|
|
99
|
-
{ objOrId },
|
|
99
|
+
{ objOrId, _uid },
|
|
100
100
|
{ enabled: !!(!disableMode && enabled && objOrId && checkFn) }
|
|
101
101
|
);
|
|
102
102
|
if (debug && console.info("usePermission()", { table, objOrId, data, status }), !objOrId) return !1;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createZeroClient.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,eAAe,mBAAmB;AAC3C,SAAS,oBAAoB,SAAS,oBAAoB;AAC1D,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,yBAAyB;AAClC,SAAS,sBAA6C;AACtD,SAAS,sBAAsB;AAC/B,SAAS,eAAe;AACxB,SAAS,4BAA4B,+BAA+B;AACpE,SAAS,qBAAqB;AAC9B,SAAS,oBAAuC;AAChD,SAAS,wBAAwB;AACjC,SAAS,aAAa,gBAAgB,iBAAiB;AACvD,SAAS,aAAa,+BAA+B;AACrD,SAAS,iBAAiB;AAC1B,SAAS,WAAW;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["zeroEvents"]
|
|
6
6
|
}
|
|
@@ -81,8 +81,10 @@ function createZeroClient({
|
|
|
81
81
|
const disableMode = use(DisabledContext),
|
|
82
82
|
lastRef = useRef(null),
|
|
83
83
|
checkFn = permissionCheckFns[table],
|
|
84
|
+
_uid = getAuth()?.id || "anon",
|
|
84
85
|
[data, status] = useQuery(checkFn, {
|
|
85
|
-
objOrId
|
|
86
|
+
objOrId,
|
|
87
|
+
_uid
|
|
86
88
|
}, {
|
|
87
89
|
enabled: !!(!disableMode && enabled && objOrId && checkFn)
|
|
88
90
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","createEmitter","createContext","memo","use","useEffect","useMemo","useRef","createPermissions","createUseQuery","createMutators","getAuth","getAllMutationsPermissions","getMutationsPermissions","registerQuery","resolveQuery","setCustomQueries","setAuthData","setEnvironment","setSchema","getRawWhere","setEvaluatingPermission","setRunner","zql","jsx","jsxs","createZeroClient","schema","models","groupedQueries","permissionStrategy","permissionsHelpers","environment","wrappedNamespaces","namespace","queries","Object","entries","name","fn","args","permissionCheckFns","createPermissionCheckFn","table","perm","base","objOrId","where","eb","cmpLit","one","rawPerm","buildPermissionQuery","e","and","permission","customQueries","DisabledContext","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","zeroEvents","AuthDataContext","useQuery","usePermission","enabled","debug","disableMode","lastRef","checkFn","data","status","console","info","result","type","current","ProvideZero","children","authData","authDataIn","disable","props","mutators","can","Provider","value","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","query","options","run","zeroEvents2","state","prevState","reason","message","emit","preload","fnArg","paramsOrOptions","optionsArg","hasParams","params","queryRequest","getQuery","ControlQueries","action","whenDisabled","mode"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,aAAA,EAAeC,WAAA,QAAmB;AAC3C,SAASC,kBAAA,EAAoBC,OAAA,EAASC,YAAA,QAAoB;AAC1D,SAASC,aAAA,QAAqB;AAC9B,SACEC,aAAA,EACAC,IAAA,EACAC,GAAA,EACAC,SAAA,EACAC,OAAA,EACAC,MAAA,QAEK;AAEP,SAASC,iBAAA,QAAyB;AAClC,SAASC,cAAA,QAA6C;AACtD,SAASC,cAAA,QAAsB;AAC/B,SAASC,OAAA,QAAe;AACxB,SAASC,0BAAA,EAA4BC,uBAAA,QAA+B;AACpE,SAASC,aAAA,QAAqB;AAC9B,SAASC,YAAA,QAAuC;AAChD,SAASC,gBAAA,QAAwB;AACjC,SAASC,WAAA,EAAaC,cAAA,EAAgBC,SAAA,QAAiB;AACvD,SAASC,WAAA,EAAaC,uBAAA,QAA+B;AACrD,SAASC,SAAA,QAAiB;AAC1B,SAASC,GAAA,QAAW;
|
|
1
|
+
{"version":3,"names":["defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","createEmitter","createContext","memo","use","useEffect","useMemo","useRef","createPermissions","createUseQuery","createMutators","getAuth","getAllMutationsPermissions","getMutationsPermissions","registerQuery","resolveQuery","setCustomQueries","setAuthData","setEnvironment","setSchema","getRawWhere","setEvaluatingPermission","setRunner","zql","jsx","jsxs","createZeroClient","schema","models","groupedQueries","permissionStrategy","permissionsHelpers","environment","wrappedNamespaces","namespace","queries","Object","entries","name","fn","args","permissionCheckFns","createPermissionCheckFn","table","perm","base","objOrId","where","eb","cmpLit","one","rawPerm","buildPermissionQuery","e","and","permission","customQueries","DisabledContext","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","zeroEvents","AuthDataContext","useQuery","usePermission","enabled","debug","disableMode","lastRef","checkFn","_uid","id","data","status","console","info","result","type","current","ProvideZero","children","authData","authDataIn","disable","props","mutators","can","Provider","value","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","query","options","run","zeroEvents2","state","prevState","reason","message","emit","preload","fnArg","paramsOrOptions","optionsArg","hasParams","params","queryRequest","getQuery","ControlQueries","action","whenDisabled","mode"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -145,8 +145,11 @@ function createZeroClient(param) {
|
|
|
145
145
|
lastRef = useRef(null),
|
|
146
146
|
tableStr = table,
|
|
147
147
|
checkFn = permissionCheckFns[tableStr],
|
|
148
|
+
auth = getAuth(),
|
|
149
|
+
_uid = auth?.id || "anon",
|
|
148
150
|
[data, status] = useQuery(checkFn, {
|
|
149
|
-
objOrId
|
|
151
|
+
objOrId,
|
|
152
|
+
_uid
|
|
150
153
|
}, {
|
|
151
154
|
enabled: !!(!disableMode && enabled && objOrId && checkFn)
|
|
152
155
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","createEmitter","createContext","memo","use","useEffect","useMemo","useRef","createPermissions","createUseQuery","createMutators","getAuth","getAllMutationsPermissions","getMutationsPermissions","registerQuery","resolveQuery","setCustomQueries","setAuthData","setEnvironment","setSchema","getRawWhere","setEvaluatingPermission","setRunner","zql","createZeroClient","param","schema","models","groupedQueries","permissionStrategy","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","permissionCheckFns","createPermissionCheckFn","table","perm","base","objOrId","where","eb","cmpLit","one","rawPerm","buildPermissionQuery","e","and","permission","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop1","_step2","_iterator2","customQueries","DisabledContext","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","zeroEvents","AuthDataContext","useQuery","usePermission","enabled","arguments","length","debug","disableMode","lastRef","tableStr","checkFn","data","status","console","info","result","type","current","ProvideZero","children","authData","authDataIn","disable","props","mutators","can","Provider","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","query","options","run","zeroEvents2","state","prevState","reason"
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","createEmitter","createContext","memo","use","useEffect","useMemo","useRef","createPermissions","createUseQuery","createMutators","getAuth","getAllMutationsPermissions","getMutationsPermissions","registerQuery","resolveQuery","setCustomQueries","setAuthData","setEnvironment","setSchema","getRawWhere","setEvaluatingPermission","setRunner","zql","createZeroClient","param","schema","models","groupedQueries","permissionStrategy","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","permissionCheckFns","createPermissionCheckFn","table","perm","base","objOrId","where","eb","cmpLit","one","rawPerm","buildPermissionQuery","e","and","permission","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop1","_step2","_iterator2","customQueries","DisabledContext","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","zeroEvents","AuthDataContext","useQuery","usePermission","enabled","arguments","length","debug","disableMode","lastRef","tableStr","checkFn","auth","_uid","id","data","status","console","info","result","type","current","ProvideZero","children","authData","authDataIn","disable","props","mutators","can","Provider","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","query","options","run","zeroEvents2","state","prevState","reason"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { boolean, string, table } from "@rocicorp/zero";
|
|
3
|
+
import { setEnvironment, setSchema } from "./state";
|
|
4
|
+
import { registerQuery, getQueryName } from "./queryRegistry";
|
|
5
|
+
import { getMutationsPermissions, setMutationsPermissions } from "./modelRegistry";
|
|
6
|
+
describe("usePermission _uid query identity", () => {
|
|
7
|
+
test("permission check fn ignores extra _uid in args", () => {
|
|
8
|
+
const testTable = table("testEntity").columns({
|
|
9
|
+
id: string(),
|
|
10
|
+
ownerId: string(),
|
|
11
|
+
active: boolean()
|
|
12
|
+
}).primaryKey("id");
|
|
13
|
+
setSchema({ tables: { testEntity: testTable }, version: 1 }), setEnvironment("client");
|
|
14
|
+
const fn = (args) => ({ objOrId: args.objOrId }), result1 = fn({ objOrId: "test-id", _uid: "user-A" }), result2 = fn({ objOrId: "test-id", _uid: "user-B" }), result3 = fn({ objOrId: "test-id" });
|
|
15
|
+
expect(result1.objOrId).toBe("test-id"), expect(result2.objOrId).toBe("test-id"), expect(result3.objOrId).toBe("test-id");
|
|
16
|
+
}), test("different _uid values produce different serialized args", () => {
|
|
17
|
+
const args1 = JSON.stringify({ objOrId: "server-1", _uid: "user-A" }), args2 = JSON.stringify({ objOrId: "server-1", _uid: "user-B" }), args3 = JSON.stringify({ objOrId: "server-1", _uid: "anon" });
|
|
18
|
+
expect(args1).not.toBe(args2), expect(args1).not.toBe(args3), expect(args2).not.toBe(args3);
|
|
19
|
+
}), test("same _uid produces stable query identity", () => {
|
|
20
|
+
const args1 = JSON.stringify({ objOrId: "server-1", _uid: "user-A" }), args2 = JSON.stringify({ objOrId: "server-1", _uid: "user-A" });
|
|
21
|
+
expect(args1).toBe(args2);
|
|
22
|
+
}), test("permission registration works for query lookup", () => {
|
|
23
|
+
const mockWhere = (eb, auth) => eb.cmp("ownerId", auth?.id || "");
|
|
24
|
+
setMutationsPermissions("testEntity", mockWhere);
|
|
25
|
+
const perm = getMutationsPermissions("testEntity");
|
|
26
|
+
expect(perm).toBeDefined(), expect(perm).toBe(mockWhere);
|
|
27
|
+
}), test("query name registration preserves permission namespace", () => {
|
|
28
|
+
const fn = () => {
|
|
29
|
+
};
|
|
30
|
+
registerQuery(fn, "permission.testEntity"), expect(getQueryName(fn)).toBe("permission.testEntity");
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=usePermission.test.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/usePermission.test.ts"],
|
|
4
|
+
"mappings": "AAAA,SAAS,UAAU,QAAQ,YAAY;AACvC,SAAS,SAAS,QAAQ,aAAa;AAEvC,SAAS,gBAAgB,iBAAiB;AAC1C,SAAS,eAAe,oBAAoB;AAC5C,SAAS,yBAAyB,+BAA+B;AAEjE,SAAS,qCAAqC,MAAM;AAUlD,OAAK,kDAAkD,MAAM;AAE3D,UAAM,YAAY,MAAM,YAAY,EACjC,QAAQ;AAAA,MACP,IAAI,OAAO;AAAA,MACX,SAAS,OAAO;AAAA,MAChB,QAAQ,QAAQ;AAAA,IAClB,CAAC,EACA,WAAW,IAAI;AAElB,cAAU,EAAE,QAAQ,EAAE,YAAY,UAAU,GAAG,SAAS,EAAE,CAAQ,GAClE,eAAe,QAAQ;AAIvB,UAAM,KAAK,CAAC,UAEH,EAAE,SAAS,KAAK,QAAQ,IAG3B,UAAU,GAAG,EAAE,SAAS,WAAW,MAAM,SAAS,CAAC,GACnD,UAAU,GAAG,EAAE,SAAS,WAAW,MAAM,SAAS,CAAC,GACnD,UAAU,GAAG,EAAE,SAAS,UAAU,CAAC;AAGzC,WAAO,QAAQ,OAAO,EAAE,KAAK,SAAS,GACtC,OAAO,QAAQ,OAAO,EAAE,KAAK,SAAS,GACtC,OAAO,QAAQ,OAAO,EAAE,KAAK,SAAS;AAAA,EACxC,CAAC,GAED,KAAK,2DAA2D,MAAM;AAGpE,UAAM,QAAQ,KAAK,UAAU,EAAE,SAAS,YAAY,MAAM,SAAS,CAAC,GAC9D,QAAQ,KAAK,UAAU,EAAE,SAAS,YAAY,MAAM,SAAS,CAAC,GAC9D,QAAQ,KAAK,UAAU,EAAE,SAAS,YAAY,MAAM,OAAO,CAAC;AAElE,WAAO,KAAK,EAAE,IAAI,KAAK,KAAK,GAC5B,OAAO,KAAK,EAAE,IAAI,KAAK,KAAK,GAC5B,OAAO,KAAK,EAAE,IAAI,KAAK,KAAK;AAAA,EAC9B,CAAC,GAED,KAAK,4CAA4C,MAAM;AAErD,UAAM,QAAQ,KAAK,UAAU,EAAE,SAAS,YAAY,MAAM,SAAS,CAAC,GAC9D,QAAQ,KAAK,UAAU,EAAE,SAAS,YAAY,MAAM,SAAS,CAAC;AAEpE,WAAO,KAAK,EAAE,KAAK,KAAK;AAAA,EAC1B,CAAC,GAED,KAAK,kDAAkD,MAAM;AAE3D,UAAM,YAAY,CAAC,IAAS,SAAc,GAAG,IAAI,WAAW,MAAM,MAAM,EAAE;AAC1E,4BAAwB,cAAc,SAAgB;AAEtD,UAAM,OAAO,wBAAwB,YAAY;AACjD,WAAO,IAAI,EAAE,YAAY,GACzB,OAAO,IAAI,EAAE,KAAK,SAAS;AAAA,EAC7B,CAAC,GAED,KAAK,0DAA0D,MAAM;AACnE,UAAM,KAAK,MAAM;AAAA,IAAC;AAClB,kBAAc,IAAI,uBAAuB,GAEzC,OAAO,aAAa,EAAE,CAAC,EAAE,KAAK,uBAAuB;AAAA,EACvD,CAAC;AACH,CAAC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { boolean, string, table } from "@rocicorp/zero";
|
|
3
|
+
import { setEnvironment, setSchema } from "./state.mjs";
|
|
4
|
+
import { registerQuery, getQueryName } from "./queryRegistry.mjs";
|
|
5
|
+
import { getMutationsPermissions, setMutationsPermissions } from "./modelRegistry.mjs";
|
|
6
|
+
describe("usePermission _uid query identity", () => {
|
|
7
|
+
test("permission check fn ignores extra _uid in args", () => {
|
|
8
|
+
const testTable = table("testEntity").columns({
|
|
9
|
+
id: string(),
|
|
10
|
+
ownerId: string(),
|
|
11
|
+
active: boolean()
|
|
12
|
+
}).primaryKey("id");
|
|
13
|
+
setSchema({
|
|
14
|
+
tables: {
|
|
15
|
+
testEntity: testTable
|
|
16
|
+
},
|
|
17
|
+
version: 1
|
|
18
|
+
}), setEnvironment("client");
|
|
19
|
+
const fn = args => ({
|
|
20
|
+
objOrId: args.objOrId
|
|
21
|
+
}),
|
|
22
|
+
result1 = fn({
|
|
23
|
+
objOrId: "test-id",
|
|
24
|
+
_uid: "user-A"
|
|
25
|
+
}),
|
|
26
|
+
result2 = fn({
|
|
27
|
+
objOrId: "test-id",
|
|
28
|
+
_uid: "user-B"
|
|
29
|
+
}),
|
|
30
|
+
result3 = fn({
|
|
31
|
+
objOrId: "test-id"
|
|
32
|
+
});
|
|
33
|
+
expect(result1.objOrId).toBe("test-id"), expect(result2.objOrId).toBe("test-id"), expect(result3.objOrId).toBe("test-id");
|
|
34
|
+
}), test("different _uid values produce different serialized args", () => {
|
|
35
|
+
const args1 = JSON.stringify({
|
|
36
|
+
objOrId: "server-1",
|
|
37
|
+
_uid: "user-A"
|
|
38
|
+
}),
|
|
39
|
+
args2 = JSON.stringify({
|
|
40
|
+
objOrId: "server-1",
|
|
41
|
+
_uid: "user-B"
|
|
42
|
+
}),
|
|
43
|
+
args3 = JSON.stringify({
|
|
44
|
+
objOrId: "server-1",
|
|
45
|
+
_uid: "anon"
|
|
46
|
+
});
|
|
47
|
+
expect(args1).not.toBe(args2), expect(args1).not.toBe(args3), expect(args2).not.toBe(args3);
|
|
48
|
+
}), test("same _uid produces stable query identity", () => {
|
|
49
|
+
const args1 = JSON.stringify({
|
|
50
|
+
objOrId: "server-1",
|
|
51
|
+
_uid: "user-A"
|
|
52
|
+
}),
|
|
53
|
+
args2 = JSON.stringify({
|
|
54
|
+
objOrId: "server-1",
|
|
55
|
+
_uid: "user-A"
|
|
56
|
+
});
|
|
57
|
+
expect(args1).toBe(args2);
|
|
58
|
+
}), test("permission registration works for query lookup", () => {
|
|
59
|
+
const mockWhere = (eb, auth) => eb.cmp("ownerId", auth?.id || "");
|
|
60
|
+
setMutationsPermissions("testEntity", mockWhere);
|
|
61
|
+
const perm = getMutationsPermissions("testEntity");
|
|
62
|
+
expect(perm).toBeDefined(), expect(perm).toBe(mockWhere);
|
|
63
|
+
}), test("query name registration preserves permission namespace", () => {
|
|
64
|
+
const fn = () => {};
|
|
65
|
+
registerQuery(fn, "permission.testEntity"), expect(getQueryName(fn)).toBe("permission.testEntity");
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=usePermission.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","test","boolean","string","table","setEnvironment","setSchema","registerQuery","getQueryName","getMutationsPermissions","setMutationsPermissions","testTable","columns","id","ownerId","active","primaryKey","tables","testEntity","version","fn","args","objOrId","result1","_uid","result2","result3","toBe","args1","JSON","stringify","args2","args3","not","mockWhere","eb","auth","cmp","perm","toBeDefined"],"sources":["../../src/usePermission.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { boolean, string, table } from "@rocicorp/zero";
|
|
3
|
+
import { setEnvironment, setSchema } from "./state.native.js";
|
|
4
|
+
import { registerQuery, getQueryName } from "./queryRegistry.native.js";
|
|
5
|
+
import { getMutationsPermissions, setMutationsPermissions } from "./modelRegistry.native.js";
|
|
6
|
+
describe("usePermission _uid query identity", function () {
|
|
7
|
+
test("permission check fn ignores extra _uid in args", function () {
|
|
8
|
+
var testTable = table("testEntity").columns({
|
|
9
|
+
id: string(),
|
|
10
|
+
ownerId: string(),
|
|
11
|
+
active: boolean()
|
|
12
|
+
}).primaryKey("id");
|
|
13
|
+
setSchema({
|
|
14
|
+
tables: {
|
|
15
|
+
testEntity: testTable
|
|
16
|
+
},
|
|
17
|
+
version: 1
|
|
18
|
+
}), setEnvironment("client");
|
|
19
|
+
var fn = function (args) {
|
|
20
|
+
return {
|
|
21
|
+
objOrId: args.objOrId
|
|
22
|
+
};
|
|
23
|
+
},
|
|
24
|
+
result1 = fn({
|
|
25
|
+
objOrId: "test-id",
|
|
26
|
+
_uid: "user-A"
|
|
27
|
+
}),
|
|
28
|
+
result2 = fn({
|
|
29
|
+
objOrId: "test-id",
|
|
30
|
+
_uid: "user-B"
|
|
31
|
+
}),
|
|
32
|
+
result3 = fn({
|
|
33
|
+
objOrId: "test-id"
|
|
34
|
+
});
|
|
35
|
+
expect(result1.objOrId).toBe("test-id"), expect(result2.objOrId).toBe("test-id"), expect(result3.objOrId).toBe("test-id");
|
|
36
|
+
}), test("different _uid values produce different serialized args", function () {
|
|
37
|
+
var args1 = JSON.stringify({
|
|
38
|
+
objOrId: "server-1",
|
|
39
|
+
_uid: "user-A"
|
|
40
|
+
}),
|
|
41
|
+
args2 = JSON.stringify({
|
|
42
|
+
objOrId: "server-1",
|
|
43
|
+
_uid: "user-B"
|
|
44
|
+
}),
|
|
45
|
+
args3 = JSON.stringify({
|
|
46
|
+
objOrId: "server-1",
|
|
47
|
+
_uid: "anon"
|
|
48
|
+
});
|
|
49
|
+
expect(args1).not.toBe(args2), expect(args1).not.toBe(args3), expect(args2).not.toBe(args3);
|
|
50
|
+
}), test("same _uid produces stable query identity", function () {
|
|
51
|
+
var args1 = JSON.stringify({
|
|
52
|
+
objOrId: "server-1",
|
|
53
|
+
_uid: "user-A"
|
|
54
|
+
}),
|
|
55
|
+
args2 = JSON.stringify({
|
|
56
|
+
objOrId: "server-1",
|
|
57
|
+
_uid: "user-A"
|
|
58
|
+
});
|
|
59
|
+
expect(args1).toBe(args2);
|
|
60
|
+
}), test("permission registration works for query lookup", function () {
|
|
61
|
+
var mockWhere = function (eb, auth) {
|
|
62
|
+
return eb.cmp("ownerId", auth?.id || "");
|
|
63
|
+
};
|
|
64
|
+
setMutationsPermissions("testEntity", mockWhere);
|
|
65
|
+
var perm = getMutationsPermissions("testEntity");
|
|
66
|
+
expect(perm).toBeDefined(), expect(perm).toBe(mockWhere);
|
|
67
|
+
}), test("query name registration preserves permission namespace", function () {
|
|
68
|
+
var fn = function () {};
|
|
69
|
+
registerQuery(fn, "permission.testEntity"), expect(getQueryName(fn)).toBe("permission.testEntity");
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=usePermission.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","test","boolean","string","table","setEnvironment","setSchema","registerQuery","getQueryName","getMutationsPermissions","setMutationsPermissions","testTable","columns","id","ownerId","active","primaryKey","tables","testEntity","version","fn","args","objOrId","result1","_uid","result2","result3","toBe"],"sources":["../../src/usePermission.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,IAAA,QAAY;AACvC,SAASC,OAAA,EAASC,MAAA,EAAQC,KAAA,QAAa;AAEvC,SAASC,cAAA,EAAgBC,SAAA,QAAiB;AAC1C,SAASC,aAAA,EAAeC,YAAA,QAAoB;AAC5C,SAASC,uBAAA,EAAyBC,uBAAA,QAA+B;AAEjEX,QAAA,CAAS,qCAAqC,YAAM;EAUlDE,IAAA,CAAK,kDAAkD,YAAM;IAE3D,IAAAU,SAAM,GAAAP,KAAY,aAAM,EAAYQ,OACjC;MACCC,EAAA,EAAIV,MAAA,CAAO;MACXW,OAAA,EAASX,MAAA,CAAO;MAChBY,MAAA,EAAQb,OAAA,CAAQ;IAClB,CAAC,EACAc,UAAA,CAAW,IAAI;IAElBV,SAAA,CAAU;MAKVW,MAAM;QAUNC,UAAO,EAAQP;MAKjB;MAGEQ,OAAM;IAIN,IAAAd,cAAkB,SAAK,CAAK;IAG7B,IAEDe,EAAA,GAAK,SAAAA,CAAAC,IAAA;QAEH,OAAM;UAGNC,OAAO,EAAKD,IAAE,CAAAC;QAGhB;MAEE;MAAAC,OAAM,GAAAH,EAAA;QACNE,OAAA;QAEAE,IAAM;MACN;MAAAC,OAAW,GAAEL,EAAA;QAIfE,OAAK;QACHE,IAAM;MAAY;MAAAE,OAAA,GAAAN,EAAA;QAClBE,OAAA;MAGD;IACFtB,MAAA,CAAAuB,OAAA,CAAAD,OAAA,EAAAK,IAAA,aAAA3B,MAAA,CAAAyB,OAAA,CAAAH,OAAA,EAAAK,IAAA,aAAA3B,MAAA,CAAA0B,OAAA,CAAAJ,OAAA,EAAAK,IAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "on-zero",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.48",
|
|
4
4
|
"description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
73
|
"dependencies": {
|
|
74
|
-
"@take-out/helpers": "0.1.
|
|
74
|
+
"@take-out/helpers": "0.1.48",
|
|
75
75
|
"@sinclair/typebox-codegen": "^0.11.1",
|
|
76
76
|
"chokidar": "^4.0.3",
|
|
77
77
|
"citty": "^0.1.6",
|
package/src/createZeroClient.tsx
CHANGED
|
@@ -196,9 +196,14 @@ export function createZeroClient<
|
|
|
196
196
|
const tableStr = table as string
|
|
197
197
|
const checkFn = permissionCheckFns[tableStr]
|
|
198
198
|
|
|
199
|
+
// include auth user ID in query args so zero-cache creates per-user
|
|
200
|
+
// permission views (prevents dedup across different auth contexts)
|
|
201
|
+
const auth = getAuth()
|
|
202
|
+
const _uid = auth?.id || 'anon'
|
|
203
|
+
|
|
199
204
|
const [data, status] = useQuery(
|
|
200
205
|
checkFn as any,
|
|
201
|
-
{ objOrId: objOrId as any },
|
|
206
|
+
{ objOrId: objOrId as any, _uid },
|
|
202
207
|
{ enabled: Boolean(!disableMode && enabled && objOrId && checkFn) }
|
|
203
208
|
)
|
|
204
209
|
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest'
|
|
2
|
+
import { boolean, string, table } from '@rocicorp/zero'
|
|
3
|
+
|
|
4
|
+
import { setEnvironment, setSchema } from './state'
|
|
5
|
+
import { registerQuery, getQueryName } from './queryRegistry'
|
|
6
|
+
import { getMutationsPermissions, setMutationsPermissions } from './modelRegistry'
|
|
7
|
+
|
|
8
|
+
describe('usePermission _uid query identity', () => {
|
|
9
|
+
// the core bug: zero-cache deduplicates custom queries by name+args.
|
|
10
|
+
// without _uid in the args, permission queries for different users share
|
|
11
|
+
// the same identity and zero-cache returns stale results from a previous
|
|
12
|
+
// auth context (often anonymous/null).
|
|
13
|
+
//
|
|
14
|
+
// the fix adds _uid (auth user ID) to the query args in usePermission so
|
|
15
|
+
// each user gets a unique query identity. the _uid is ignored by both the
|
|
16
|
+
// client-side and server-side permission evaluation (they only read objOrId).
|
|
17
|
+
|
|
18
|
+
test('permission check fn ignores extra _uid in args', () => {
|
|
19
|
+
// setup minimal state for permission check
|
|
20
|
+
const testTable = table('testEntity')
|
|
21
|
+
.columns({
|
|
22
|
+
id: string(),
|
|
23
|
+
ownerId: string(),
|
|
24
|
+
active: boolean(),
|
|
25
|
+
})
|
|
26
|
+
.primaryKey('id')
|
|
27
|
+
|
|
28
|
+
setSchema({ tables: { testEntity: testTable }, version: 1 } as any)
|
|
29
|
+
setEnvironment('client')
|
|
30
|
+
|
|
31
|
+
// simulate what createPermissionCheckFn does:
|
|
32
|
+
// it reads args.objOrId and ignores anything else
|
|
33
|
+
const fn = (args: { objOrId: string | Record<string, any>; _uid?: string }) => {
|
|
34
|
+
// this mirrors the real fn - only objOrId is used
|
|
35
|
+
return { objOrId: args.objOrId }
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const result1 = fn({ objOrId: 'test-id', _uid: 'user-A' })
|
|
39
|
+
const result2 = fn({ objOrId: 'test-id', _uid: 'user-B' })
|
|
40
|
+
const result3 = fn({ objOrId: 'test-id' })
|
|
41
|
+
|
|
42
|
+
// all return the same objOrId regardless of _uid
|
|
43
|
+
expect(result1.objOrId).toBe('test-id')
|
|
44
|
+
expect(result2.objOrId).toBe('test-id')
|
|
45
|
+
expect(result3.objOrId).toBe('test-id')
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
test('different _uid values produce different serialized args', () => {
|
|
49
|
+
// zero-cache uses JSON-serialized args as part of the query identity
|
|
50
|
+
// different _uid values must produce different serialized forms
|
|
51
|
+
const args1 = JSON.stringify({ objOrId: 'server-1', _uid: 'user-A' })
|
|
52
|
+
const args2 = JSON.stringify({ objOrId: 'server-1', _uid: 'user-B' })
|
|
53
|
+
const args3 = JSON.stringify({ objOrId: 'server-1', _uid: 'anon' })
|
|
54
|
+
|
|
55
|
+
expect(args1).not.toBe(args2)
|
|
56
|
+
expect(args1).not.toBe(args3)
|
|
57
|
+
expect(args2).not.toBe(args3)
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
test('same _uid produces stable query identity', () => {
|
|
61
|
+
// ensure the same user gets the same query identity (no re-fetching)
|
|
62
|
+
const args1 = JSON.stringify({ objOrId: 'server-1', _uid: 'user-A' })
|
|
63
|
+
const args2 = JSON.stringify({ objOrId: 'server-1', _uid: 'user-A' })
|
|
64
|
+
|
|
65
|
+
expect(args1).toBe(args2)
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
test('permission registration works for query lookup', () => {
|
|
69
|
+
// verify that permission where functions register correctly
|
|
70
|
+
const mockWhere = (eb: any, auth: any) => eb.cmp('ownerId', auth?.id || '')
|
|
71
|
+
setMutationsPermissions('testEntity', mockWhere as any)
|
|
72
|
+
|
|
73
|
+
const perm = getMutationsPermissions('testEntity')
|
|
74
|
+
expect(perm).toBeDefined()
|
|
75
|
+
expect(perm).toBe(mockWhere)
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
test('query name registration preserves permission namespace', () => {
|
|
79
|
+
const fn = () => {}
|
|
80
|
+
registerQuery(fn, 'permission.testEntity')
|
|
81
|
+
|
|
82
|
+
expect(getQueryName(fn)).toBe('permission.testEntity')
|
|
83
|
+
})
|
|
84
|
+
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createZeroClient.d.ts","sourceRoot":"","sources":["../src/createZeroClient.tsx"],"names":[],"mappings":"AAGA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAQd,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAOhE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAClF,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEzF,KAAK,cAAc,GAAG;IAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAEvE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;AAMpF,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,iBAAiB,GAAG,kBAAkB,CAAA;AAEtF,wBAAgB,gBAAgB,CAC9B,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,EACA,MAAM,EACN,MAAM,EACN,cAAc,EACd,kBAAiC,GAClC,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,cAAc,CAAA;IAC9B,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;;
|
|
1
|
+
{"version":3,"file":"createZeroClient.d.ts","sourceRoot":"","sources":["../src/createZeroClient.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePermission.test.d.ts","sourceRoot":"","sources":["../src/usePermission.test.ts"],"names":[],"mappings":""}
|