@nwire/rbac 0.9.2 → 0.10.1

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 CHANGED
@@ -17,8 +17,10 @@ pnpm add @nwire/rbac @nwire/auth
17
17
  ```ts
18
18
  import { defineAbility, rbacPlugin, can } from "@nwire/rbac";
19
19
  import { identityPlugin } from "@nwire/auth";
20
- import { defineApp, defineAction } from "@nwire/forge";
21
- import { httpInterface, post } from "@nwire/http";
20
+ import { createApp } from "@nwire/app";
21
+ import { defineAction } from "@nwire/forge";
22
+ import { post } from "@nwire/wires/http";
23
+ import { httpKoa } from "@nwire/koa";
22
24
 
23
25
  export const buildAbility = defineAbility((user, { allow, deny }) => {
24
26
  if (!user) return;
@@ -32,15 +34,19 @@ export const buildAbility = defineAbility((user, { allow, deny }) => {
32
34
  allow("delete", "Post", { authorId: user.id });
33
35
  });
34
36
 
35
- defineApp("my-app", {
37
+ const app = createApp({
38
+ appName: "my-app",
36
39
  plugins: [identityPlugin({ adapter }), rbacPlugin({ buildAbility })],
37
40
  });
38
41
 
39
- httpInterface()
40
- .wire(post("/posts/:id", { policy: ["update", "Post"] }), async ({ input }) => {
42
+ app.wire(
43
+ post("/posts/:id", { policy: ["update", "Post"] }),
44
+ async (input, ctx) => {
41
45
  /* ... */
42
- })
43
- .run();
46
+ },
47
+ );
48
+
49
+ // Boot under @nwire/koa — see its README for the endpoint+adopter shape.
44
50
  ```
45
51
 
46
52
  ## API surface
@@ -57,13 +63,5 @@ Any app that needs per-role authorization beyond `action.policy` strings. Pair w
57
63
 
58
64
  ## Within nwire-app
59
65
 
60
- For developers using this package as part of the Nwire stack — register it via `app.use(...)` or it auto-wires when you compose `createApp({ modules })`.
61
-
62
- ```ts
63
- import { createApp } from "@nwire/forge";
64
-
65
- const app = createApp({
66
- /* ...config... */
67
- });
68
- // Adapter/plugin wiring happens here when applicable.
69
- ```
66
+ Register via `createApp({ plugins: [rbacPlugin({...})] })` and pair with
67
+ `@nwire/auth`'s `identityPlugin` so `envelope.user` is the policy input.
package/dist/errors.d.ts CHANGED
@@ -79,4 +79,3 @@ export declare class RoleMissingError extends ActionDeniedError {
79
79
  export declare const isOwnershipMismatchError: (x: unknown) => x is OwnershipMismatchError;
80
80
  export declare const isScopeMissingError: (x: unknown) => x is ScopeMissingError;
81
81
  export declare const isRoleMissingError: (x: unknown) => x is RoleMissingError;
82
- //# sourceMappingURL=errors.d.ts.map
package/dist/errors.js CHANGED
@@ -84,4 +84,3 @@ export class RoleMissingError extends ActionDeniedError {
84
84
  export const isOwnershipMismatchError = (x) => x instanceof OwnershipMismatchError;
85
85
  export const isScopeMissingError = (x) => x instanceof ScopeMissingError;
86
86
  export const isRoleMissingError = (x) => x instanceof RoleMissingError;
87
- //# sourceMappingURL=errors.js.map
package/dist/filters.d.ts CHANGED
@@ -41,4 +41,3 @@ export interface DrizzleFilterBuilder {
41
41
  /** Return `null` when no filter needed; falsy expr when denied; otherwise the where clause. */
42
42
  build<TColumns>(columns: TColumns): unknown;
43
43
  }
44
- //# sourceMappingURL=filters.d.ts.map
package/dist/filters.js CHANGED
@@ -31,4 +31,3 @@ import { rulesToQuery } from "@casl/ability/extra";
31
31
  export function conditionsFor(ability, action, subjectType) {
32
32
  return rulesToQuery(ability, action, subjectType, (rule) => rule.conditions ?? {});
33
33
  }
34
- //# sourceMappingURL=filters.js.map
package/dist/rbac.d.ts CHANGED
@@ -41,7 +41,8 @@
41
41
  */
42
42
  import { type MongoAbility, type MongoQuery, subject as caslSubject } from "@casl/ability";
43
43
  import { type User } from "@nwire/auth";
44
- import { type HandlerContext, type PluginDefinition } from "@nwire/forge";
44
+ import { type PluginDefinition } from "@nwire/app";
45
+ import type { HandlerContext } from "@nwire/forge";
45
46
  /**
46
47
  * The Ability type — what `buildAbility(user)` returns and what
47
48
  * `ctx.ability()` exposes. We use CASL's `MongoAbility` so MongoDB-style
@@ -113,4 +114,3 @@ export { permission, parsePermission, type Permission } from "./typed.js";
113
114
  export { resolver, ownedBy, sameTenant, authorize, type Resolver, type ResolverFn, } from "./resolvers.js";
114
115
  export { conditionsFor, type DrizzleFilterBuilder } from "./filters.js";
115
116
  export { ActionDeniedError, OwnershipMismatchError, ScopeMissingError, RoleMissingError, isOwnershipMismatchError, isScopeMissingError, isRoleMissingError, } from "./errors.js";
116
- //# sourceMappingURL=rbac.d.ts.map
package/dist/rbac.js CHANGED
@@ -41,7 +41,7 @@
41
41
  */
42
42
  import { AbilityBuilder, createMongoAbility, subject as caslSubject, } from "@casl/ability";
43
43
  import { ForbiddenError } from "@nwire/auth";
44
- import { definePlugin, } from "@nwire/forge";
44
+ import { definePlugin, } from "@nwire/app";
45
45
  /** Re-export CASL's subject() helper — tag a plain object with its type. */
46
46
  export const subject = caslSubject;
47
47
  /**
@@ -90,12 +90,12 @@ function setAbility(ctx, ability) {
90
90
  */
91
91
  export function rbacPlugin(options) {
92
92
  const containerKey = options.name ?? "buildAbility";
93
- const middleware = async (next, action, _input, ctx) => {
93
+ const middleware = async (next, actionRaw, _input, ctxRaw) => {
94
+ const action = actionRaw;
95
+ const ctx = ctxRaw;
94
96
  const user = (ctx.envelope?.user ?? null);
95
97
  const ability = options.buildAbility(user);
96
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
97
98
  setAbility(ctx, ability);
98
- // Tuple-form policy on actions: `policy: ["update", "Post"]`.
99
99
  if (Array.isArray(action.policy) && action.policy.length === 2) {
100
100
  const [verb, subj] = action.policy;
101
101
  if (ability.cannot(verb, subj)) {
@@ -104,14 +104,10 @@ export function rbacPlugin(options) {
104
104
  }
105
105
  return next();
106
106
  };
107
- return definePlugin("rbac", {
108
- register: (container) => {
109
- // Container factory: wrapping in `() => fn` so Awilix returns the
110
- // function itself instead of treating it as a factory of its return.
111
- container.register(containerKey, () => options.buildAbility);
112
- container.register(ABILITY_BUILDER_KEY.toString(), () => options.buildAbility);
113
- },
114
- middleware: [middleware],
107
+ return definePlugin("rbac", ({ bind, runtime }) => {
108
+ bind(containerKey, () => options.buildAbility);
109
+ bind(ABILITY_BUILDER_KEY.toString(), () => options.buildAbility);
110
+ runtime.use(middleware);
115
111
  });
116
112
  }
117
113
  /**
@@ -137,12 +133,9 @@ export function abilityFor(buildAbility, user) {
137
133
  */
138
134
  export function canKoa(verb, subj) {
139
135
  return async (koaCtx, next) => {
140
- // The container reaches Koa through `ctx.state._container` (set by
141
- // `@nwire/http` when an app is being served) or by reading the
142
- // app's container via the http builder's `.provide(...)` plumbing.
143
- // We don't want a hard dep on those internals — the builder
144
- // exposes the container indirectly on the request scope. Read it
145
- // via the documented Koa `state` channel.
136
+ // The container reaches Koa through `ctx.state._container`, set by
137
+ // `@nwire/koa` per-request when an app is mounted. Read it via the
138
+ // documented Koa `state` channel.
146
139
  const state = koaCtx.state;
147
140
  const container = state._container;
148
141
  if (!container) {
@@ -174,4 +167,3 @@ export { permission, parsePermission } from "./typed.js";
174
167
  export { resolver, ownedBy, sameTenant, authorize, } from "./resolvers.js";
175
168
  export { conditionsFor } from "./filters.js";
176
169
  export { ActionDeniedError, OwnershipMismatchError, ScopeMissingError, RoleMissingError, isOwnershipMismatchError, isScopeMissingError, isRoleMissingError, } from "./errors.js";
177
- //# sourceMappingURL=rbac.js.map
@@ -58,4 +58,3 @@ export declare function sameTenant<TSubject extends {
58
58
  export declare function authorize<TSubject>(user: User | null | undefined, action: string, subject: TSubject, rule: Resolver<TSubject> | ResolverFn<TSubject>, opts?: {
59
59
  readonly subjectName?: string;
60
60
  }): Promise<void>;
61
- //# sourceMappingURL=resolvers.d.ts.map
package/dist/resolvers.js CHANGED
@@ -97,4 +97,3 @@ export async function authorize(user, action, subject, rule, opts = {}) {
97
97
  });
98
98
  }
99
99
  }
100
- //# sourceMappingURL=resolvers.js.map
package/dist/typed.d.ts CHANGED
@@ -34,4 +34,3 @@ export type Permission<TVerb extends string = string, TSubject extends string =
34
34
  export declare function permission<TVerb extends string, TSubject extends string>(verb: TVerb, subject: TSubject): Permission<TVerb, TSubject>;
35
35
  /** Split a `resource:action` permission string into a tuple. */
36
36
  export declare function parsePermission<P extends Permission>(p: P): readonly [string, string];
37
- //# sourceMappingURL=typed.d.ts.map
package/dist/typed.js CHANGED
@@ -35,4 +35,3 @@ export function parsePermission(p) {
35
35
  return [p, ""];
36
36
  return [p.slice(0, idx), p.slice(idx + 1)];
37
37
  }
38
- //# sourceMappingURL=typed.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nwire/rbac",
3
- "version": "0.9.2",
3
+ "version": "0.10.1",
4
4
  "description": "Nwire — RBAC + permissions wrapped around CASL. defineAbility(user => ...) declares what each user can do; rbacPlugin enforces it on every dispatch.",
5
5
  "keywords": [
6
6
  "authorization",
@@ -30,9 +30,9 @@
30
30
  "dependencies": {
31
31
  "@casl/ability": "^6.8.1",
32
32
  "koa": "^2.16.4",
33
- "@nwire/http": "0.9.2",
34
- "@nwire/forge": "0.9.2",
35
- "@nwire/auth": "0.9.2"
33
+ "@nwire/app": "0.10.1",
34
+ "@nwire/forge": "0.10.1",
35
+ "@nwire/auth": "0.10.1"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/node": "^22.19.9",
@@ -1,9 +0,0 @@
1
- /**
2
- * Tests for the Phase 62.5 polish layer:
3
- * - typed permission strings (autocomplete-friendly)
4
- * - composable resolvers (.or, .and, .not, ownedBy, sameTenant)
5
- * - structured errors (OwnershipMismatchError, ScopeMissingError, ...)
6
- * - conditionsFor (CASL rulesToQuery surface)
7
- */
8
- export {};
9
- //# sourceMappingURL=polish.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polish.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/polish.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -1,130 +0,0 @@
1
- /**
2
- * Tests for the Phase 62.5 polish layer:
3
- * - typed permission strings (autocomplete-friendly)
4
- * - composable resolvers (.or, .and, .not, ownedBy, sameTenant)
5
- * - structured errors (OwnershipMismatchError, ScopeMissingError, ...)
6
- * - conditionsFor (CASL rulesToQuery surface)
7
- */
8
- import { describe, it, expect } from "vitest";
9
- import { permission, parsePermission, resolver, ownedBy, sameTenant, authorize, conditionsFor, defineAbility, ActionDeniedError, OwnershipMismatchError, RoleMissingError, isOwnershipMismatchError, } from "../rbac.js";
10
- describe("permission() — typed strings", () => {
11
- it("produces resource:action format", () => {
12
- expect(permission("update", "Post")).toBe("update:Post");
13
- });
14
- it("parses back to a tuple", () => {
15
- expect(parsePermission("update:Post")).toEqual(["update", "Post"]);
16
- });
17
- });
18
- describe("resolver — composable predicates", () => {
19
- const alice = { id: "u-a", email: "a@x" };
20
- const bob = { id: "u-b", email: "b@x" };
21
- it("base predicate works", async () => {
22
- const isOwner = resolver((u, p) => u.id === p.authorId);
23
- expect(await isOwner(alice, { id: "1", authorId: alice.id })).toBe(true);
24
- expect(await isOwner(alice, { id: "1", authorId: bob.id })).toBe(false);
25
- });
26
- it(".or combines with disjunction", async () => {
27
- const isOwner = resolver((u, p) => u.id === p.authorId);
28
- const isAdmin = resolver((u) => u.roles?.includes("admin") ?? false);
29
- const canEdit = isOwner.or(isAdmin);
30
- const admin = { id: "u-x", email: "x@x", roles: ["admin"] };
31
- expect(await canEdit(alice, { id: "1", authorId: bob.id })).toBe(false);
32
- expect(await canEdit(admin, { id: "1", authorId: bob.id })).toBe(true);
33
- });
34
- it(".and combines with conjunction", async () => {
35
- const isOwner = resolver((u, p) => u.id === p.authorId);
36
- const inTeam = resolver((u, p) => Boolean(p.teamId) && u.tenant === p.teamId);
37
- const both = isOwner.and(inTeam);
38
- const alice2 = { ...alice, tenant: "t-1" };
39
- expect(await both(alice2, { id: "1", authorId: alice.id, teamId: "t-1" })).toBe(true);
40
- expect(await both(alice2, { id: "1", authorId: alice.id, teamId: "t-2" })).toBe(false);
41
- expect(await both(alice2, { id: "1", authorId: bob.id, teamId: "t-1" })).toBe(false);
42
- });
43
- it(".not negates the predicate", async () => {
44
- const isOwner = resolver((u, p) => u.id === p.authorId);
45
- const isNotOwner = isOwner.not();
46
- expect(await isNotOwner(alice, { id: "1", authorId: bob.id })).toBe(true);
47
- expect(await isNotOwner(alice, { id: "1", authorId: alice.id })).toBe(false);
48
- });
49
- it("ownedBy shorthand reads from configurable field", async () => {
50
- const own = ownedBy("authorId");
51
- expect(await own(alice, { id: "1", authorId: alice.id })).toBe(true);
52
- expect(await own(alice, { id: "1", authorId: bob.id })).toBe(false);
53
- });
54
- it("sameTenant shorthand reads tenant/tenantId", async () => {
55
- const same = sameTenant();
56
- const u = { id: "u", email: "u@x", tenant: "t-1" };
57
- expect(await same(u, { tenantId: "t-1" })).toBe(true);
58
- expect(await same(u, { tenantId: "t-2" })).toBe(false);
59
- });
60
- it("authorize() throws OwnershipMismatchError when rule denies", async () => {
61
- const own = ownedBy();
62
- await expect(authorize(alice, "update", { authorId: bob.id }, own, { subjectName: "Post" })).rejects.toBeInstanceOf(OwnershipMismatchError);
63
- });
64
- it("authorize() throws for null user", async () => {
65
- const own = ownedBy();
66
- await expect(authorize(null, "update", { authorId: "x" }, own)).rejects.toBeInstanceOf(OwnershipMismatchError);
67
- });
68
- it("authorize() resolves when rule allows", async () => {
69
- const own = ownedBy();
70
- await expect(authorize(alice, "update", { authorId: alice.id }, own)).resolves.toBeUndefined();
71
- });
72
- });
73
- describe("structured errors", () => {
74
- it("ActionDeniedError carries action + subject + reason", () => {
75
- const e = new ActionDeniedError({ action: "delete", subject: "Post", userId: "u" });
76
- expect(e.action).toBe("delete");
77
- expect(e.subject).toBe("Post");
78
- expect(e.denialReason).toBe("denied");
79
- expect(e.message).toMatch(/delete Post/);
80
- });
81
- it("OwnershipMismatchError narrows denialReason", () => {
82
- const e = new OwnershipMismatchError({ action: "edit", subject: "Post" });
83
- expect(e.denialReason).toBe("ownership-mismatch");
84
- expect(isOwnershipMismatchError(e)).toBe(true);
85
- });
86
- it("RoleMissingError carries the required role", () => {
87
- const e = new RoleMissingError({ action: "view", subject: "Admin", requiredRole: "admin" });
88
- expect(e.requiredRole).toBe("admin");
89
- expect(e.denialReason).toBe("role-missing");
90
- });
91
- it("all subclasses are catchable as ActionDeniedError", () => {
92
- const e = new OwnershipMismatchError({ action: "x", subject: "Y" });
93
- expect(e instanceof ActionDeniedError).toBe(true);
94
- });
95
- });
96
- describe("conditionsFor — CASL rulesToQuery surface", () => {
97
- const buildAbility = defineAbility((user, { allow }) => {
98
- if (!user)
99
- return;
100
- if (user.roles?.includes("admin")) {
101
- allow("manage", "all");
102
- return;
103
- }
104
- allow("read", "Post");
105
- allow("update", "Post", { authorId: user.id });
106
- });
107
- it("returns an empty object when an unrestricted rule allows", () => {
108
- // CASL's rulesToQuery returns `{}` (no conditions) when ANY rule
109
- // is unrestricted — i.e. the user may read every row.
110
- const ability = buildAbility({ id: "alice", email: "a@x" });
111
- const q = conditionsFor(ability, "read", "Post");
112
- expect(q).toEqual({});
113
- });
114
- it("returns conditional query when only some rows allowed", () => {
115
- const ability = buildAbility({ id: "alice", email: "a@x" });
116
- const q = conditionsFor(ability, "update", "Post");
117
- expect(q).toEqual({ $or: [{ authorId: "alice" }] });
118
- });
119
- it("returns null when no rules allow", () => {
120
- const ability = buildAbility(null);
121
- const q = conditionsFor(ability, "read", "Post");
122
- expect(q).toBeNull();
123
- });
124
- it("admin gets unrestricted query via manage:all", () => {
125
- const ability = buildAbility({ id: "x", email: "x@x", roles: ["admin"] });
126
- const q = conditionsFor(ability, "delete", "Post");
127
- expect(q).toEqual({});
128
- });
129
- });
130
- //# sourceMappingURL=polish.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polish.test.js","sourceRoot":"","sources":["../../src/__tests__/polish.test.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * RBAC integration — proves CASL is wired correctly through the framework:
3
- *
4
- * - `defineAbility` builds an Ability factory.
5
- * - `rbacPlugin` registers it + installs dispatch middleware.
6
- * - Actions with tuple `policy: [verb, subject]` get auto-enforced.
7
- * - Programmatic `abilityFromCtx(ctx)` works inside handlers.
8
- * - `subject(name, instance)` lets us check instance-level conditions.
9
- *
10
- * The Koa per-route gate (`canKoa`) has its own end-to-end coverage in
11
- * @nwire/auth's `routes.test.ts` — the http builder lifts the container
12
- * onto `ctx.state._container` so `canKoa` can resolve `buildAbility`.
13
- */
14
- export {};
15
- //# sourceMappingURL=rbac.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rbac.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/rbac.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -1,139 +0,0 @@
1
- /**
2
- * RBAC integration — proves CASL is wired correctly through the framework:
3
- *
4
- * - `defineAbility` builds an Ability factory.
5
- * - `rbacPlugin` registers it + installs dispatch middleware.
6
- * - Actions with tuple `policy: [verb, subject]` get auto-enforced.
7
- * - Programmatic `abilityFromCtx(ctx)` works inside handlers.
8
- * - `subject(name, instance)` lets us check instance-level conditions.
9
- *
10
- * The Koa per-route gate (`canKoa`) has its own end-to-end coverage in
11
- * @nwire/auth's `routes.test.ts` — the http builder lifts the container
12
- * onto `ctx.state._container` so `canKoa` can resolve `buildAbility`.
13
- */
14
- import { describe, it, expect } from "vitest";
15
- import { z } from "zod";
16
- import { createApp, defineAction, defineHandler, defineModule, seedEnvelope } from "@nwire/forge";
17
- import { ForbiddenError } from "@nwire/auth";
18
- import { defineAbility, rbacPlugin, abilityFor, abilityFromCtx, subject } from "../rbac.js";
19
- // ─── Shared fixtures ─────────────────────────────────────────────
20
- const buildAbility = defineAbility((user, { allow }) => {
21
- if (!user)
22
- return; // anonymous: nothing allowed
23
- if (user.roles?.includes("admin")) {
24
- allow("manage", "all");
25
- return;
26
- }
27
- allow("read", "Post");
28
- allow("create", "Post");
29
- allow("update", "Post", { authorId: user.id });
30
- allow("delete", "Post", { authorId: user.id });
31
- });
32
- const admin = { id: "u-admin", email: "a@x", roles: ["admin"] };
33
- const alice = { id: "u-alice", email: "alice@x" };
34
- const bob = { id: "u-bob", email: "bob@x" };
35
- describe("@nwire/rbac — pure ability layer", () => {
36
- it("anonymous user gets no permissions", () => {
37
- const a = abilityFor(buildAbility, null);
38
- expect(a.can("read", "Post")).toBe(false);
39
- });
40
- it("admin can manage all subjects", () => {
41
- const a = abilityFor(buildAbility, admin);
42
- expect(a.can("delete", "Post")).toBe(true);
43
- expect(a.can("manage", "Anything")).toBe(true);
44
- });
45
- it("author can update their own posts but not someone else's", () => {
46
- const a = abilityFor(buildAbility, alice);
47
- expect(a.can("create", "Post")).toBe(true);
48
- const alicesPost = subject("Post", { id: "p1", authorId: alice.id });
49
- const bobsPost = subject("Post", { id: "p2", authorId: bob.id });
50
- expect(a.can("update", alicesPost)).toBe(true);
51
- expect(a.can("update", bobsPost)).toBe(false);
52
- expect(a.cannot("delete", bobsPost)).toBe(true);
53
- });
54
- });
55
- // ─── Plugin integration ──────────────────────────────────────────
56
- const empty = defineModule("empty", {});
57
- describe("@nwire/rbac — rbacPlugin enforces action.policy", () => {
58
- it("allows action when user has the ability", async () => {
59
- const created = defineAction({
60
- name: "posts.create",
61
- schema: z.object({ title: z.string() }),
62
- policy: ["create", "Post"],
63
- });
64
- const createdHandler = defineHandler(created, async () => undefined);
65
- const m = defineModule("posts", { actions: [created], handlers: [createdHandler] });
66
- const app = createApp({
67
- modules: [m],
68
- plugins: [rbacPlugin({ buildAbility })],
69
- });
70
- await app.start();
71
- // alice has create-Post permission → resolves
72
- await expect(app.runtime.dispatch(created, { title: "hello" }, seedEnvelope({ user: alice, userId: alice.id }))).resolves.not.toThrow();
73
- await app.stop();
74
- });
75
- it("denies action when user lacks the ability", async () => {
76
- const deleted = defineAction({
77
- name: "posts.delete",
78
- schema: z.object({ id: z.string() }),
79
- policy: ["delete", "Post"],
80
- });
81
- const deletedHandler = defineHandler(deleted, async () => undefined);
82
- const m = defineModule("posts", { actions: [deleted], handlers: [deletedHandler] });
83
- const app = createApp({
84
- modules: [m],
85
- plugins: [rbacPlugin({ buildAbility })],
86
- });
87
- await app.start();
88
- // anonymous has no permissions → throws ForbiddenError
89
- await expect(app.runtime.dispatch(deleted, { id: "p1" })).rejects.toThrow(ForbiddenError);
90
- await app.stop();
91
- });
92
- it("allows action when policy is omitted entirely", async () => {
93
- const open = defineAction({
94
- name: "posts.list",
95
- schema: z.object({}),
96
- });
97
- const openHandler = defineHandler(open, async () => undefined);
98
- const m = defineModule("posts", { actions: [open], handlers: [openHandler] });
99
- const app = createApp({
100
- modules: [m],
101
- plugins: [rbacPlugin({ buildAbility })],
102
- });
103
- await app.start();
104
- // anonymous + no policy → allowed
105
- await expect(app.runtime.dispatch(open, {})).resolves.not.toThrow();
106
- await app.stop();
107
- });
108
- });
109
- // ─── Programmatic ctx.ability access ─────────────────────────────
110
- describe("@nwire/rbac — abilityFromCtx for programmatic checks", () => {
111
- it("handler can call abilityFromCtx and check an instance with subject()", async () => {
112
- let observed = {};
113
- const inspect = defineAction({
114
- name: "posts.inspect",
115
- schema: z.object({ postId: z.string() }),
116
- });
117
- const inspectHandler = defineHandler(inspect, async (_input, ctx) => {
118
- const ability = abilityFromCtx(ctx);
119
- const alicesPost = subject("Post", { id: "p1", authorId: alice.id });
120
- const bobsPost = subject("Post", { id: "p2", authorId: bob.id });
121
- observed = {
122
- canUpdateAlices: ability.can("update", alicesPost),
123
- canUpdateBobs: ability.can("update", bobsPost),
124
- };
125
- return undefined;
126
- });
127
- const m = defineModule("posts", { actions: [inspect], handlers: [inspectHandler] });
128
- const app = createApp({
129
- modules: [m],
130
- plugins: [rbacPlugin({ buildAbility })],
131
- });
132
- await app.start();
133
- await app.runtime.dispatch(inspect, { postId: "p1" }, seedEnvelope({ user: alice, userId: alice.id }));
134
- expect(observed.canUpdateAlices).toBe(true);
135
- expect(observed.canUpdateBobs).toBe(false);
136
- await app.stop();
137
- });
138
- });
139
- //# sourceMappingURL=rbac.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rbac.test.js","sourceRoot":"","sources":["../../src/__tests__/rbac.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,8EAA8E;AAC9E,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,oBAAoB,GAAG,eAAe,GAAG,cAAc,CAAC;AAE9F;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACnD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAY;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEb,MAAM,EAAE,kBAAkB;CAQvC;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,SAAkB,YAAY,EAAG,oBAAoB,CAAU;IAC/D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;gBACtB,MAAM,EAAE,kBAAkB,GAAG;QAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;CAK/E;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,iBAAiB;IACtD,SAAkB,YAAY,EAAG,eAAe,CAAU;IAC1D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBACnB,MAAM,EAAE,kBAAkB,GAAG;QAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;KAAE;CAK5E;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,iBAAiB;IACrD,SAAkB,YAAY,EAAG,cAAc,CAAU;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAClB,MAAM,EAAE,kBAAkB,GAAG;QAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE;CAK3E;AAED,eAAO,MAAM,wBAAwB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,sBACtB,CAAC;AACtC,eAAO,MAAM,mBAAmB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,iBACtB,CAAC;AACjC,eAAO,MAAM,kBAAkB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,gBACtB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAY7C;;;;;;GAMG;AACH,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IAC1C,YAAY,GAAiB,QAAQ,CAAC;IACtC,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,MAAM,CAAU;IAChB,MAAM,CAAU;IAEzB,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,kBAAkB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,iBAAiB;IACzC,YAAY,GAAG,oBAA6B,CAAC;IACtD,eAAe,CAAU;IAClC,YAAY,MAAkE;QAC5E,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,gCAAgC,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAChD,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IACpC,YAAY,GAAG,eAAwB,CAAC;IACjD,aAAa,CAAS;IAC/B,YAAY,MAA+D;QACzE,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,kBAAkB,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC5C,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,iBAAiB;IACnC,YAAY,GAAG,cAAuB,CAAC;IAChD,YAAY,CAAS;IAC9B,YAAY,MAA8D;QACxE,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,iBAAiB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAU,EAA+B,EAAE,CAClF,CAAC,YAAY,sBAAsB,CAAC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAU,EAA0B,EAAE,CACxE,CAAC,YAAY,iBAAiB,CAAC;AACjC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAU,EAAyB,EAAE,CACtE,CAAC,YAAY,gBAAgB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB;IAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAE5C;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,+FAA+F;IAC/F,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC7C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"filters.js","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAgB,EAChB,MAAc,EACd,WAAmB;IAEnB,OAAO,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AACrF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rbac.d.ts","sourceRoot":"","sources":["../src/rbac.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,OAAO,IAAI,WAAW,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAkB,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AAEtB;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAEhC,KAAK,EAAE,CACL,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,OAAO,EAAE,GAAG,EACZ,UAAU,CAAC,EAAE,UAAU,EACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,KACvB,IAAI,CAAC;IAEV,IAAI,EAAE,CACJ,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,OAAO,EAAE,GAAG,EACZ,UAAU,CAAC,EAAE,UAAU,EACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,KACvB,IAAI,CAAC;CACX;AAED,4EAA4E;AAC5E,eAAO,MAAM,OAAO,oBAAc,CAAC;AAEnC;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,iBAAiB,KAAK,IAAI,GAC3D,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,OAAO,CAShC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC;IACtD;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAsBD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CA4BvE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,OAAO,EAC5C,IAAI,EAAE,IAAI,GAAG,IAAI,GAChB,OAAO,CAET;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,KAAK,EAAE,UAAU,CAyB3E;AAID,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,GAAG,IAAI,CAGlE;AAWD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvE,OAAO,EACL,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,UAAU,CAAC"}
package/dist/rbac.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"rbac.js","sourceRoot":"","sources":["../src/rbac.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EACL,cAAc,EACd,kBAAkB,EAGlB,OAAO,IAAI,WAAW,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,YAAY,GAIb,MAAM,cAAc,CAAC;AAiCtB,4EAA4E;AAC5E,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC;AAEnC;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA4D;IAE5D,OAAO,CAAC,IAAiB,EAAW,EAAE;QACpC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAU,kBAAkB,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,EAAE;YACZ,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAChC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SACnC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC;AAaD,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC7D,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAE7D;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,GAAY;IAC9B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,OAAS,GAA+B,CAAC,mBAAmB,CAAyB,IAAI,IAAI,CAAC;AAChG,CAAC;AAED,SAAS,UAAU,CAAC,GAAY,EAAE,OAAgB;IAChD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO;IAC3C,GAA+B,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B;IACnD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,IAAI,cAAc,CAAC;IAEpD,MAAM,UAAU,GAAuB,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAgB,CAAC;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,8DAA8D;QAC9D,UAAU,CAAC,GAAU,EAAE,OAAO,CAAC,CAAC;QAEhC,8DAA8D;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,MAA0B,CAAC;YACvD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,cAAc,CAAC,kBAAkB,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,YAAY,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE;YACtB,kEAAkE;YAClE,qEAAqE;YACrE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC7D,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACjF,CAAC;QACD,UAAU,EAAE,CAAC,UAAU,CAAC;KACzB,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,YAA4C,EAC5C,IAAiB;IAEjB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,IAAY;IAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC5B,mEAAmE;QACnE,+DAA+D;QAC/D,mEAAmE;QACnE,4DAA4D;QAC5D,iEAAiE;QACjE,0CAA0C;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAGpB,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,cAAc,CACtB,4FAA4F,CAC7F,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAA8B,cAAc,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACjD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,cAAc,CAAC,kBAAkB,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,+DAA+D;AAC/D,MAAM,UAAU,cAAc,CAAC,GAAmB;IAChD,8DAA8D;IAC9D,OAAO,UAAU,CAAC,GAAU,CAAC,CAAC;AAChC,CAAC;AAED,sEAAsE;AACtE,EAAE;AACF,sEAAsE;AACtE,qEAAqE;AACrE,8CAA8C;AAC9C,0EAA0E;AAC1E,yEAAyE;AACzE,sEAAsE;AAEtE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAmB,MAAM,SAAS,CAAC;AAEvE,OAAO,EACL,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,GAGV,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,aAAa,EAA6B,MAAM,WAAW,CAAC;AAErE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,UAAU,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../src/resolvers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,UAAU,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEjG,MAAM,WAAW,QAAQ,CAAC,QAAQ;IAChC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzE,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1E,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;CAC3B;AAQD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAgB/E;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,KAAK,GAAE,MAAmB,GACzB,QAAQ,CAAC,QAAQ,CAAC,CAEpB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,QAAQ,SAAS;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,KACpD,QAAQ,CAAC,QAAQ,CAAC,CAKtB;AAYD,wBAAsB,SAAS,CAAC,QAAQ,EACtC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,EAC/C,IAAI,GAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,OAAO,CAAC,IAAI,CAAC,CAiBf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../src/resolvers.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"typed.d.ts","sourceRoot":"","sources":["../src/typed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;GAIG;AACH,MAAM,MAAM,UAAU,CACpB,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,QAAQ,SAAS,MAAM,GAAG,MAAM,IAC9B,GAAG,KAAK,IAAI,QAAQ,EAAE,CAAC;AAE3B;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,MAAM,EACtE,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,QAAQ,GAChB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAE7B;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAIrF"}
package/dist/typed.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"typed.js","sourceRoot":"","sources":["../src/typed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAYH;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,IAAW,EACX,OAAiB;IAEjB,OAAO,GAAG,IAAI,IAAI,OAAO,EAAiC,CAAC;AAC7D,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,eAAe,CAAuB,CAAI;IACxD,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC"}