@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 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 must be hydrated, not fetched.** The fetch fallback (`POST /authz/can`)
78
- > only resolves **class-level abilities and ad-hoc gates** — the `{ type, id }` resource shim it
79
- > sends never matches a `@Policy` by constructor. A **resource-bound** ability
80
- > (`can('update', { type: 'Post', id })`) that misses the hydrated cache and falls through to the
81
- > endpoint will **deny** (and logs a one-time `console.warn`). Hydrate per-instance decisions via
82
- > shared props / `authorizeResource` (tiers 1-2 of `@dudousxd/nestjs-authz-inertia`) instead.
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
@@ -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;AAyKD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,gBAAgB,CAkEtF;AAED,eAAe,kBAAkB,CAAC"}
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":"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,0EAA0E;QAC1E,mEAAmE;KACpE,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;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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dudousxd/nestjs-authz-codegen",
3
- "version": "0.1.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.3.0",
43
- "@dudousxd/nestjs-authz-client": "^0.1.0"
42
+ "@dudousxd/nestjs-authz-client": "^0.2.0",
43
+ "@dudousxd/nestjs-authz": "^0.6.0"
44
44
  },
45
45
  "engines": {
46
46
  "node": ">=20"