@dudousxd/nestjs-authz-codegen 0.1.0 → 0.2.0
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/CHANGELOG.md +58 -0
- package/README.md +14 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,63 @@
|
|
|
1
1
|
# @dudousxd/nestjs-authz-codegen
|
|
2
2
|
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#9](https://github.com/DavideCarvalho/nestjs-authz/pull/9) [`07d01de`](https://github.com/DavideCarvalho/nestjs-authz/commit/07d01de286e7dfcae5fbeb10b7e8d48533214087) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Ecosystem improvements across the authz packages.
|
|
8
|
+
|
|
9
|
+
### Permissions
|
|
10
|
+
|
|
11
|
+
- **Wildcard / hierarchical permissions.** Permission strings now support wildcard
|
|
12
|
+
and hierarchical matching (e.g. `posts:*` or `posts:read:*`), so a single granted
|
|
13
|
+
permission can authorize a family of related actions instead of enumerating each one.
|
|
14
|
+
|
|
15
|
+
### Authorization decisions
|
|
16
|
+
|
|
17
|
+
- **Deny reason / message surfaced on `ForbiddenException`.** When a check fails, the
|
|
18
|
+
reason for the denial is propagated onto the thrown `ForbiddenException`, making it
|
|
19
|
+
possible to return a meaningful message to the caller and to debug authorization
|
|
20
|
+
failures.
|
|
21
|
+
- **Gate `after` hook.** The Gate now exposes an `after` hook that runs once a decision
|
|
22
|
+
has been made, enabling cross-cutting concerns such as auditing, logging, and metrics.
|
|
23
|
+
|
|
24
|
+
### Batch authorization
|
|
25
|
+
|
|
26
|
+
- **`allowsMany`** for evaluating multiple permission checks in a single call.
|
|
27
|
+
- **Batch `/authz/can` endpoint** so clients can resolve many checks in one round trip.
|
|
28
|
+
- **`createCanBatch`** client helper that batches `can` calls transparently.
|
|
29
|
+
|
|
30
|
+
### Performance
|
|
31
|
+
|
|
32
|
+
- **Request-scoped permission cache.** Permissions resolved during a request are cached
|
|
33
|
+
for the lifetime of that request, avoiding repeated lookups on the hot path.
|
|
34
|
+
|
|
35
|
+
### RBAC adapters (TypeORM)
|
|
36
|
+
|
|
37
|
+
- **Direct user permissions** granted to a user independent of their roles.
|
|
38
|
+
- **Tenant-scoped roles** so the same role can be assigned per tenant in multi-tenant
|
|
39
|
+
deployments.
|
|
40
|
+
|
|
41
|
+
### Query scoping / policy filter (ABAC)
|
|
42
|
+
|
|
43
|
+
- **ORM-neutral constraint AST.** Policies can produce a portable constraint
|
|
44
|
+
representation describing which rows a subject may access.
|
|
45
|
+
- **Per-ORM application.** The constraint AST is translated and applied for
|
|
46
|
+
**TypeORM**, **MikroORM**, and **Prisma**, giving ABAC-style query scoping that
|
|
47
|
+
filters data at the database layer regardless of the ORM in use.
|
|
48
|
+
|
|
49
|
+
### Testing
|
|
50
|
+
|
|
51
|
+
- **New `@dudousxd/nestjs-authz-testing` package** with fakes and helpers for testing
|
|
52
|
+
authorization in consumer applications.
|
|
53
|
+
- **Postgres / MySQL testcontainers + contract tests** so the ORM stores are verified
|
|
54
|
+
against real database engines, and a shared contract suite keeps the adapters
|
|
55
|
+
behaviorally consistent.
|
|
56
|
+
|
|
57
|
+
### Housekeeping
|
|
58
|
+
|
|
59
|
+
- **Packaging hygiene** across the published packages.
|
|
60
|
+
|
|
3
61
|
## 0.1.0
|
|
4
62
|
|
|
5
63
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -74,12 +74,20 @@ Routes carrying a `@Can` also expose a route-pinned `can()` handle member when a
|
|
|
74
74
|
|
|
75
75
|
## Server side
|
|
76
76
|
|
|
77
|
-
> **Per-instance decisions
|
|
78
|
-
>
|
|
79
|
-
>
|
|
80
|
-
> (`can('update', { type: 'Post', id })`) that misses the hydrated cache and
|
|
81
|
-
>
|
|
82
|
-
>
|
|
77
|
+
> **Per-instance decisions: hydrate, or register a resource loader.** The fetch fallback
|
|
78
|
+
> (`POST /authz/can`) receives a `{ type, id }` shim whose constructor is `Object`, so by default
|
|
79
|
+
> it only resolves **class-level abilities and ad-hoc gates** — a **resource-bound** ability
|
|
80
|
+
> (`can('update', { type: 'Post', id })`) that misses the hydrated cache and reaches the endpoint
|
|
81
|
+
> will **deny**. Two ways to make per-instance decisions resolve there:
|
|
82
|
+
>
|
|
83
|
+
> 1. **Hydrate (preferred, no request):** shared props / `authorizeResource` (tiers 1-2 of
|
|
84
|
+
> `@dudousxd/nestjs-authz-inertia`).
|
|
85
|
+
> 2. **Register `resourceLoaders` in core** so the endpoint rehydrates `{ type, id }` into the real
|
|
86
|
+
> entity before authorizing:
|
|
87
|
+
> `AuthzModule.forRoot({ canEndpoint: true, resourceLoaders: { Post: (id) => postRepo.findOneBy({ id: Number(id) }) } })`.
|
|
88
|
+
> With a loader registered the instance `@Policy` matches by constructor and decides correctly
|
|
89
|
+
> (a loader returning nullish → deny / not found). Without a loader for the `type`, the prior
|
|
90
|
+
> class-level-only behavior stands.
|
|
83
91
|
|
|
84
92
|
The runtime `can()` POSTs `{ ability, resource? }` to the configured `endpoint` and expects
|
|
85
93
|
`{ allowed: boolean }` back. Expose a tiny controller in your NestJS app that delegates to the
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,oCAAoC,CAAC;AAG5C;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,oCAAoC,CAAC;AAG5C;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAgMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,gBAAgB,CAkEtF;AAED,eAAe,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -106,8 +106,8 @@ function resourceAbilityMapLiteral(byResource) {
|
|
|
106
106
|
/** The `import { ... } from '@dudousxd/nestjs-authz-client'` line the header contributes. */
|
|
107
107
|
function canHelperImports() {
|
|
108
108
|
return [
|
|
109
|
-
"import { AbilityStore, createCan } from '@dudousxd/nestjs-authz-client';",
|
|
110
|
-
"import type { ResourceRef } from '@dudousxd/nestjs-authz-client';",
|
|
109
|
+
"import { AbilityStore, createCan, createCanBatch } from '@dudousxd/nestjs-authz-client';",
|
|
110
|
+
"import type { ResourceRef, BatchAbilityResult } from '@dudousxd/nestjs-authz-client';",
|
|
111
111
|
];
|
|
112
112
|
}
|
|
113
113
|
/**
|
|
@@ -160,6 +160,29 @@ function canHelperStatements(union, mapLiteral, endpoint) {
|
|
|
160
160
|
'): boolean | Promise<boolean> {',
|
|
161
161
|
' return authzCan(ability, resource ?? undefined);',
|
|
162
162
|
'}',
|
|
163
|
+
'',
|
|
164
|
+
'/**',
|
|
165
|
+
" * Batch resolver from '@dudousxd/nestjs-authz-client', bound to `authzStore`. For list",
|
|
166
|
+
' * pages: answers hydrated items from the store and POSTs ALL cache-misses to',
|
|
167
|
+
` * \`${endpoint}\` in ONE request (instead of one per item).`,
|
|
168
|
+
' */',
|
|
169
|
+
'const authzCanBatch = createCanBatch(authzStore, {',
|
|
170
|
+
` fallback: 'fetch',`,
|
|
171
|
+
` endpoint: ${JSON.stringify(endpoint)},`,
|
|
172
|
+
'});',
|
|
173
|
+
'',
|
|
174
|
+
'/**',
|
|
175
|
+
' * Authorize MANY abilities at once. Each item is typed against the discovered',
|
|
176
|
+
' * abilities, so a wrong ability is a compile error. Hydrated decisions resolve with',
|
|
177
|
+
` * no request; the remaining misses are fetched from \`${endpoint}\` in a single batch.`,
|
|
178
|
+
' */',
|
|
179
|
+
'export function canBatch(',
|
|
180
|
+
' items: ReadonlyArray<{ ability: AuthzAbility; resource?: ResourceRef | null }>,',
|
|
181
|
+
'): Promise<BatchAbilityResult[]> {',
|
|
182
|
+
' return authzCanBatch(',
|
|
183
|
+
' items.map((i) => (i.resource == null ? { ability: i.ability } : { ability: i.ability, resource: i.resource })),',
|
|
184
|
+
' );',
|
|
185
|
+
'}',
|
|
163
186
|
];
|
|
164
187
|
}
|
|
165
188
|
function markerOf(route) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAyB,IAAI,EAAiC,MAAM,UAAU,CAAC;AAsCtF,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAEtC,mFAAmF;AACnF,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,MAAM,IAAI,GAAqB,EAAE,OAAO,EAAE,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;IACzE,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,wEAAwE;IACxE,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,KAAsB,EAAE,OAAgB;IACpE,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC;IAChC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,UAAkC,CAAC;IACvC,IAAI,CAAC;QACH,UAAU,GAAG,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,UAAU;QAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,CAAC;QACtE,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;YAClD,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,CAAC;IAC9E,IAAI,QAAQ;QAAE,OAAO,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IAE/D,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,OAAgB;IAC/C,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;QAClD,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC;YAClF,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;YAC7E,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;gBAC5C,IAAI,MAAM,CAAC,QAAQ,EAAE;oBAAE,SAAS;gBAChC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,+EAA+E;gBAC/E,IAAI,IAAI,KAAK,QAAQ;oBAAE,SAAS;gBAChC,MAAM,OAAO,GAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACpD,IAAI,QAAQ;oBAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oGAAoG;AACpG,SAAS,sBAAsB,CAAC,IAAY,EAAE,SAA2B;IACvE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;IACxD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACtC,IAAI,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qGAAqG;AACrG,SAAS,YAAY,CAAC,SAAsB;IAC1C,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,6FAA6F;AAC7F,SAAS,yBAAyB,CAAC,UAAoC;IACrE,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAC3C,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,CACxB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9F,CAAC;IACF,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,CAAC;AAED,6FAA6F;AAC7F,SAAS,gBAAgB;IACvB,OAAO;QACL,0FAA0F;QAC1F,uFAAuF;KACxF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,KAAa,EAAE,UAAkB,EAAE,QAAgB;IAC9E,OAAO;QACL,yFAAyF;QACzF,8BAA8B,KAAK,GAAG;QACtC,EAAE;QACF,wEAAwE;QACxE,iCAAiC,UAAU,YAAY;QACvD,EAAE;QACF,KAAK;QACL,sFAAsF;QACtF,uGAAuG;QACvG,+CAA+C;QAC/C,KAAK;QACL,+CAA+C;QAC/C,EAAE;QACF,KAAK;QACL,iGAAiG;QACjG,8DAA8D,QAAQ,+BAA+B;QACrG,KAAK;QACL,0CAA0C;QAC1C,sBAAsB;QACtB,eAAe,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;QAC1C,KAAK;QACL,EAAE;QACF,KAAK;QACL,6FAA6F;QAC7F,kGAAkG;QAClG,gGAAgG;QAChG,+FAA+F;QAC/F,8FAA8F;QAC9F,IAAI;QACJ,6FAA6F;QAC7F,4FAA4F;QAC5F,sEAAsE;QACtE,KAAK;QACL,sBAAsB;QACtB,0BAA0B;QAC1B,kCAAkC;QAClC,iCAAiC;QACjC,oDAAoD;QACpD,GAAG;QACH,EAAE;QACF,KAAK;QACL,yFAAyF;QACzF,+EAA+E;QAC/E,QAAQ,QAAQ,8CAA8C;QAC9D,KAAK;QACL,oDAAoD;QACpD,sBAAsB;QACtB,eAAe,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;QAC1C,KAAK;QACL,EAAE;QACF,KAAK;QACL,gFAAgF;QAChF,sFAAsF;QACtF,0DAA0D,QAAQ,uBAAuB;QACzF,KAAK;QACL,2BAA2B;QAC3B,mFAAmF;QACnF,oCAAoC;QACpC,yBAAyB;QACzB,qHAAqH;QACrH,MAAM;QACN,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAsB;IACtC,OAAQ,KAAK,CAAC,QAAQ,EAAE,cAA2D,EAAE,KAAK,CAAC;AAC7F,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAA+B,EAAE;IAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IACtD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;IAE1D,6EAA6E;IAC7E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;IAElD,SAAS,MAAM,CAAC,IAAsB;QACpC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;YAC/D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAqB;QAC5B,IAAI,EAAE,cAAc;QAEpB,eAAe,CAAC,MAAM,EAAE,GAAG;YACzB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC/B,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,CAAC;gBACb,MAAM,MAAM,GAAqB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC3D,IAAI,IAAI,CAAC,QAAQ;oBAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACnD,6EAA6E;gBAC7E,MAAM,cAAc,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,cAAc,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBACpF,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAqB,CAAC;YAC1F,CAAC,CAAC,CAAC;YAEH,IAAI,gBAAgB,EAAE,CAAC;gBACrB,KAAK,MAAM,IAAI,IAAI,uBAAuB,CAAC,OAAO,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,GAAG,CAAC;QACb,CAAC;QAED,SAAS;YACP,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,gBAAgB,EAAE;gBAC3B,UAAU,EAAE,mBAAmB,CAC7B,YAAY,CAAC,SAAS,CAAC,EACvB,yBAAyB,CAAC,UAAU,CAAC,EACrC,QAAQ,CACT;aACF,CAAC;QACJ,CAAC;QAED,UAAU,CAAC,IAAe;YACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO;gBACL,uFAAuF;gBACvF,GAAG,EAAE,IAAI,WAAW,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,YAAY,GAAG;gBAChF,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;aACxC,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,eAAe,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dudousxd/nestjs-authz-codegen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "nestjs-codegen extension for @dudousxd/nestjs-authz — discovers @Can abilities and emits a typed can() into your generated client.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"ts-morph": "^28.0.0",
|
|
40
40
|
"typescript": "^5.4.0",
|
|
41
41
|
"vitest": "^3.0.0",
|
|
42
|
-
"@dudousxd/nestjs-authz": "^0.
|
|
43
|
-
"@dudousxd/nestjs-authz
|
|
42
|
+
"@dudousxd/nestjs-authz-client": "^0.2.0",
|
|
43
|
+
"@dudousxd/nestjs-authz": "^0.6.0"
|
|
44
44
|
},
|
|
45
45
|
"engines": {
|
|
46
46
|
"node": ">=20"
|