@helipod/authz 0.1.0 → 0.1.3
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/README.md +2 -2
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ export const authz = defineAuthz({
|
|
|
60
60
|
That's it. Now **every** query on `documents` — including ones that forgot to filter, and including `documents` hydrated through a join — returns only rows the caller owns, and any write to a `documents` row the caller doesn't own throws `Forbidden`. And it's reactive: if you later change `ownerId`, every subscriber's view updates live.
|
|
61
61
|
|
|
62
62
|
```ts
|
|
63
|
-
//
|
|
63
|
+
// helipod/documents.ts — no manual authz call needed; the policy is enforced by the engine
|
|
64
64
|
export const list = query(async (ctx) => ctx.db.query("documents").collect()); // already filtered
|
|
65
65
|
```
|
|
66
66
|
|
|
@@ -413,7 +413,7 @@ This is the deliberate, correct trade for a reactive backend — and it is state
|
|
|
413
413
|
|
|
414
414
|
## Comparison (at a glance)
|
|
415
415
|
|
|
416
|
-
| | Helipod authz | OpenFGA / SpiceDB (ReBAC) |
|
|
416
|
+
| | Helipod authz | OpenFGA / SpiceDB (ReBAC) | SQL row-level security | Plain function checks |
|
|
417
417
|
|---|---|---|---|---|
|
|
418
418
|
| Reactive (live revocation) | ✅ by construction | ❌ out-of-process check | ❌ DB can't notify | ⚠️ only if you read authz data |
|
|
419
419
|
| Check cost | O(1) indexed read | graph traversal | row predicate | varies |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helipod/authz",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"license": "FSL-1.1-Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -14,18 +14,18 @@
|
|
|
14
14
|
"scripts": {
|
|
15
15
|
"build": "tsup",
|
|
16
16
|
"typecheck": "tsc --noEmit",
|
|
17
|
-
"test": "vitest run"
|
|
17
|
+
"test": "vitest run --testTimeout=60000 --hookTimeout=60000"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@helipod/auth": "0.1.
|
|
21
|
-
"@helipod/component": "0.1.
|
|
22
|
-
"@helipod/errors": "0.1.
|
|
23
|
-
"@helipod/executor": "0.1.
|
|
24
|
-
"@helipod/values": "0.1.
|
|
20
|
+
"@helipod/auth": "0.1.3",
|
|
21
|
+
"@helipod/component": "0.1.3",
|
|
22
|
+
"@helipod/errors": "0.1.3",
|
|
23
|
+
"@helipod/executor": "0.1.3",
|
|
24
|
+
"@helipod/values": "0.1.3"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@helipod/docstore-sqlite": "0.1.
|
|
28
|
-
"@helipod/runtime-embedded": "0.1.
|
|
27
|
+
"@helipod/docstore-sqlite": "0.1.3",
|
|
28
|
+
"@helipod/runtime-embedded": "0.1.3",
|
|
29
29
|
"@types/node": "^22.10.5",
|
|
30
30
|
"tsup": "^8.3.5",
|
|
31
31
|
"typescript": "^5.7.2",
|