@stonecrop/casl-middleware 0.11.7 → 0.11.9

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.
@@ -1 +1 @@
1
- {"version":"5.9.3"}
1
+ {"version":"6.0.3"}
@@ -20,7 +20,7 @@ export type AbilityBuilderFunction = (user?: Context['user']) => Promise<AppAbil
20
20
  /**
21
21
  * Default ability builder - only provides minimal public access
22
22
  */
23
- export declare const defaultAbilityBuilder: (user?: Context["user"]) => AppAbility;
23
+ export declare const defaultAbilityBuilder: (_user?: Context["user"]) => AppAbility;
24
24
  /**
25
25
  * Create ability using a provided builder function
26
26
  * @param user - User information for building the ability
@@ -1 +1 @@
1
- {"version":3,"file":"ability.d.ts","sourceRoot":"","sources":["../../../src/middleware/ability.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,WAAW,EAIX,MAAM,eAAe,CAAA;AAEtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,GAAG,KAAG,MAc/C,CAAA;AAwBD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;AAExD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAA;AAIjG;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAG,UAU9D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACzB,OAAO,OAAO,CAAC,MAAM,CAAC,EACtB,YAAW,sBAA8C,KACvD,OAAO,CAAC,UAAU,CAEpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,GACxC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,KAC7C,sBAwBF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,+BAA+B,GAAI,QAAQ;IACvD,KAAK,EAAE,MAAM,CACZ,MAAM,EACN,KAAK,CAAC;QACL,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;QACzB,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;QAC1B,UAAU,CAAC,EAAE,GAAG,CAAA;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;KAClB,CAAC,CACF,CAAA;IACD,YAAY,CAAC,EAAE,KAAK,CAAC;QACpB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;QACzB,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;QAC1B,UAAU,CAAC,EAAE,GAAG,CAAA;KAChB,CAAC,CAAA;CACF,KAAG,sBA0CH,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,WAAW,EACzD,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KACtC,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAEhC,CAAA"}
1
+ {"version":3,"file":"ability.d.ts","sourceRoot":"","sources":["../../../src/middleware/ability.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,WAAW,EAIX,MAAM,eAAe,CAAA;AAEtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,GAAG,KAAG,MAc/C,CAAA;AAwBD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;AAExD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAA;AAIjG;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,OAAO,CAAC,MAAM,CAAC,KAAG,UAU/D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACzB,OAAO,OAAO,CAAC,MAAM,CAAC,EACtB,YAAW,sBAA8C,KACvD,OAAO,CAAC,UAAU,CAEpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,GACxC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,KAC7C,sBAwBF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,+BAA+B,GAAI,QAAQ;IACvD,KAAK,EAAE,MAAM,CACZ,MAAM,EACN,KAAK,CAAC;QACL,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;QACzB,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;QAC1B,UAAU,CAAC,EAAE,GAAG,CAAA;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;KAClB,CAAC,CACF,CAAA;IACD,YAAY,CAAC,EAAE,KAAK,CAAC;QACpB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;QACzB,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;QAC1B,UAAU,CAAC,EAAE,GAAG,CAAA;KAChB,CAAC,CAAA;CACF,KAAG,sBA0CH,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,WAAW,EACzD,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KACtC,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAEhC,CAAA"}
@@ -45,7 +45,7 @@ const Ability = PureAbility;
45
45
  /**
46
46
  * Default ability builder - only provides minimal public access
47
47
  */
48
- export const defaultAbilityBuilder = (user) => {
48
+ export const defaultAbilityBuilder = (_user) => {
49
49
  const { can, build } = new AbilityBuilder(Ability);
50
50
  can('read', 'Query');
51
51
  return build({
@@ -65,7 +65,7 @@ export declare const createJWT: (user: User, config: {
65
65
  /**
66
66
  * Integration with CASL ability builder
67
67
  */
68
- export declare const createJWTAbilityBuilder: (config?: JWTConfig) => (user?: User) => Promise<import("./ability").AppAbility>;
68
+ export declare const createJWTAbilityBuilder: (_config?: JWTConfig) => (user?: User) => Promise<import("./ability").AppAbility>;
69
69
  /**
70
70
  * Postgraphile-specific JWT plugin
71
71
  */
@@ -74,7 +74,7 @@ export declare const createPostgraphileJWTPlugin: (config: JWTConfig) => {
74
74
  version: string;
75
75
  grafast: {
76
76
  hooks: {
77
- context(ctx: any, build: any): Promise<any>;
77
+ context(ctx: any, _build: any): Promise<any>;
78
78
  };
79
79
  };
80
80
  };
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/middleware/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,cAAc,CAAA;AAE9B,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAG7C,MAAM,WAAW,SAAS;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,SAAS,CAAA;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,UAAW,SAAQ,GAAG,CAAC,UAAU;IACjD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC;QACnB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,CAAC,EAAE,GAAG,CAAA;KAChB,CAAC,CAAA;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAClB;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAQ,SAAc,MAoB3C,SAAS,OAAO,EAAE,MAAM,MAAM,OAAO,CAAC,GAAG,CAAC,iBAoExD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,GACrB,MAAM,IAAI,EACV,QAAQ;IACP,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACtC,KACC,MAiBF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAQ,SAAc,MAC/C,OAAO,IAAI,4CAsBzB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,GAAI,QAAQ,SAAS;;;;;yBAQtC,GAAG,SAAS,GAAG;;;CAwBrC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,SAAS,MAI1C,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,kBA4B3C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC7B;;OAEG;4BAEI,IAAI,UACF;QACP,YAAY,EAAE,MAAM,CAAA;QACpB,aAAa,EAAE,MAAM,CAAA;QACrB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;KACzB;;;;IAkCF;;OAEG;uCAEY,MAAM,UACZ;QACP,YAAY,EAAE,MAAM,CAAA;QACpB,aAAa,EAAE,MAAM,CAAA;QACrB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;QACjD,eAAe,CAAC,EAAE,MAAM,CAAA;KACxB;;;;CAyCF,CAAA"}
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/middleware/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,cAAc,CAAA;AAE9B,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAG7C,MAAM,WAAW,SAAS;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,SAAS,CAAA;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,UAAW,SAAQ,GAAG,CAAC,UAAU;IACjD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC;QACnB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,CAAC,EAAE,GAAG,CAAA;KAChB,CAAC,CAAA;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAClB;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAQ,SAAc,MAoB3C,SAAS,OAAO,EAAE,MAAM,MAAM,OAAO,CAAC,GAAG,CAAC,iBAoExD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,GACrB,MAAM,IAAI,EACV,QAAQ;IACP,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACtC,KACC,MAiBF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAS,SAAc,MAChD,OAAO,IAAI,4CAsBzB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,GAAI,QAAQ,SAAS;;;;;yBAQtC,GAAG,UAAU,GAAG;;;CAwBtC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,SAAS,MAI1C,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,kBA4B3C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC7B;;OAEG;4BAEI,IAAI,UACF;QACP,YAAY,EAAE,MAAM,CAAA;QACpB,aAAa,EAAE,MAAM,CAAA;QACrB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;KACzB;;;;IAkCF;;OAEG;uCAEY,MAAM,UACZ;QACP,YAAY,EAAE,MAAM,CAAA;QACpB,aAAa,EAAE,MAAM,CAAA;QACrB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;QACjD,eAAe,CAAC,EAAE,MAAM,CAAA;KACxB;;;;CAyCF,CAAA"}
@@ -96,13 +96,13 @@ export const createJWTMiddleware = (config = {}) => {
96
96
  }
97
97
  // Re-throw with more specific error messages
98
98
  if (error.name === 'TokenExpiredError') {
99
- throw new Error('Token has expired');
99
+ throw new Error('Token has expired', { cause: error });
100
100
  }
101
101
  else if (error.name === 'JsonWebTokenError') {
102
- throw new Error('Invalid token');
102
+ throw new Error('Invalid token', { cause: error });
103
103
  }
104
104
  else if (error.name === 'NotBeforeError') {
105
- throw new Error('Token not active yet');
105
+ throw new Error('Token not active yet', { cause: error });
106
106
  }
107
107
  throw error;
108
108
  }
@@ -131,7 +131,7 @@ export const createJWT = (user, config) => {
131
131
  /**
132
132
  * Integration with CASL ability builder
133
133
  */
134
- export const createJWTAbilityBuilder = (config = {}) => {
134
+ export const createJWTAbilityBuilder = (_config = {}) => {
135
135
  return async (user) => {
136
136
  // If user has direct permissions in JWT, use those
137
137
  const jwtPermissions = user?.permissions;
@@ -162,7 +162,7 @@ export const createPostgraphileJWTPlugin = (config) => {
162
162
  // Hook into Postgraphile's context building
163
163
  grafast: {
164
164
  hooks: {
165
- async context(ctx, build) {
165
+ async context(ctx, _build) {
166
166
  const middleware = createJWTMiddleware(config);
167
167
  // Create a simple context object that the middleware can work with
168
168
  const context = {
@@ -283,7 +283,7 @@ export const refreshTokenUtils = {
283
283
  }
284
284
  catch (error) {
285
285
  if (error.name === 'TokenExpiredError') {
286
- throw new Error('Refresh token expired');
286
+ throw new Error('Refresh token expired', { cause: error });
287
287
  }
288
288
  throw error;
289
289
  }
@@ -10,6 +10,6 @@ export declare const yogaCaslPlugin: Plugin<Context>;
10
10
  * @public
11
11
  */
12
12
  export declare const createYogaPlugin: (options?: MiddlewareOptions) => {
13
- onExecute: ({ args }: any) => Promise<void>;
13
+ onExecute: (_: any) => Promise<void>;
14
14
  };
15
15
  //# sourceMappingURL=yoga.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"yoga.d.ts","sourceRoot":"","sources":["../../../src/middleware/yoga.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAI1C,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAO1D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,CAO1C,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAS,iBAAsB;0BAIlC,GAAG;CAMhC,CAAA"}
1
+ {"version":3,"file":"yoga.d.ts","sourceRoot":"","sources":["../../../src/middleware/yoga.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAI1C,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAO1D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,CAO1C,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAS,iBAAsB;mBAIzC,GAAG;CAMzB,CAAA"}
@@ -5,7 +5,7 @@ const getLoggedInUser = () => {
5
5
  return { id: '1', roles: ['editor'] };
6
6
  };
7
7
  export const yogaCaslPlugin = {
8
- onContextBuilding: async ({ context, extendContext }) => {
8
+ onContextBuilding: async ({ extendContext }) => {
9
9
  // Make this async
10
10
  const user = getLoggedInUser();
11
11
  const ability = await createAbility(user); // Await here
@@ -21,9 +21,9 @@ export const yogaCaslPlugin = {
21
21
  * @public
22
22
  */
23
23
  export const createYogaPlugin = (options = {}) => {
24
- const middleware = createCaslMiddleware(options);
24
+ const _middleware = createCaslMiddleware(options);
25
25
  return {
26
- onExecute: async ({ args }) => {
26
+ onExecute: async (_) => {
27
27
  // TODO: Implement Yoga plugin
28
28
  // This would integrate with GraphQL Yoga's plugin system
29
29
  console.log('Yoga plugin not yet implemented');
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.57.0"
8
+ "packageVersion": "7.58.7"
9
9
  }
10
10
  ]
11
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stonecrop/casl-middleware",
3
- "version": "0.11.7",
3
+ "version": "0.11.9",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "author": {
@@ -31,7 +31,7 @@
31
31
  "sideEffects": false,
32
32
  "dependencies": {
33
33
  "@casl/ability": "^6.8.0",
34
- "graphql": "^16.12.0",
34
+ "graphql": "^16.13.2",
35
35
  "graphql-tag": "^2.12.6",
36
36
  "jsonwebtoken": "^9.0.3"
37
37
  },
@@ -39,23 +39,27 @@
39
39
  "@graphql-tools/merge": "^9.1.7",
40
40
  "@graphql-tools/schema": "^10.0.31",
41
41
  "@graphql-tools/utils": "^11.0.0",
42
- "@rushstack/heft": "^1.2.0",
43
- "@types/node": "^22.19.5",
44
- "@vitest/coverage-istanbul": "^4.0.18",
45
- "eslint": "^9.39.2",
42
+ "@rushstack/heft": "^1.2.17",
43
+ "@types/node": "^22.19.17",
44
+ "@vitest/coverage-istanbul": "^4.1.5",
45
+ "@eslint/js": "^10.0.1",
46
+ "eslint": "^10.3.0",
47
+ "eslint-config-prettier": "^10.1.8",
48
+ "globals": "^17.6.0",
49
+ "typescript-eslint": "^8.59.1",
46
50
  "graphql-middleware": "^6.1.35",
47
51
  "graphql-yoga": "^5.18.0",
48
- "jsdom": "^28.1.0",
49
- "postgraphile": "^5.0.0-rc.7",
50
- "typescript": "^5.9.3",
51
- "vite": "^7.3.1",
52
- "vitest": "^4.0.18",
52
+ "jsdom": "^29.1.1",
53
+ "postgraphile": "^5.0.1",
54
+ "typescript": "^6.0.3",
55
+ "vite": "^7.3.2",
56
+ "vitest": "^4.1.5",
53
57
  "@types/jsonwebtoken": "~9.0.10",
54
58
  "stonecrop-rig": "0.7.0"
55
59
  },
56
60
  "peerDependencies": {
57
61
  "graphql-yoga": "^5.18.0",
58
- "postgraphile": "^5.0.0-rc.7"
62
+ "postgraphile": "^5.0.1"
59
63
  },
60
64
  "description": "CASL authorization middleware for GraphQL servers",
61
65
  "keywords": [
@@ -69,7 +69,7 @@ const Ability = PureAbility as AbilityClass<AppAbility>
69
69
  /**
70
70
  * Default ability builder - only provides minimal public access
71
71
  */
72
- export const defaultAbilityBuilder = (user?: Context['user']): AppAbility => {
72
+ export const defaultAbilityBuilder = (_user?: Context['user']): AppAbility => {
73
73
  const { can, build } = new AbilityBuilder<AppAbility>(Ability)
74
74
 
75
75
  can('read', 'Query')
@@ -147,11 +147,11 @@ export const createJWTMiddleware = (config: JWTConfig = {}) => {
147
147
 
148
148
  // Re-throw with more specific error messages
149
149
  if (error.name === 'TokenExpiredError') {
150
- throw new Error('Token has expired')
150
+ throw new Error('Token has expired', { cause: error })
151
151
  } else if (error.name === 'JsonWebTokenError') {
152
- throw new Error('Invalid token')
152
+ throw new Error('Invalid token', { cause: error })
153
153
  } else if (error.name === 'NotBeforeError') {
154
- throw new Error('Token not active yet')
154
+ throw new Error('Token not active yet', { cause: error })
155
155
  }
156
156
 
157
157
  throw error
@@ -193,7 +193,7 @@ export const createJWT = (
193
193
  /**
194
194
  * Integration with CASL ability builder
195
195
  */
196
- export const createJWTAbilityBuilder = (config: JWTConfig = {}) => {
196
+ export const createJWTAbilityBuilder = (_config: JWTConfig = {}) => {
197
197
  return async (user?: User) => {
198
198
  // If user has direct permissions in JWT, use those
199
199
  const jwtPermissions = (user as any)?.permissions
@@ -229,7 +229,7 @@ export const createPostgraphileJWTPlugin = (config: JWTConfig) => {
229
229
  // Hook into Postgraphile's context building
230
230
  grafast: {
231
231
  hooks: {
232
- async context(ctx: any, build: any) {
232
+ async context(ctx: any, _build: any) {
233
233
  const middleware = createJWTMiddleware(config)
234
234
 
235
235
  // Create a simple context object that the middleware can work with
@@ -386,7 +386,7 @@ export const refreshTokenUtils = {
386
386
  return { accessToken, user }
387
387
  } catch (error: any) {
388
388
  if (error.name === 'TokenExpiredError') {
389
- throw new Error('Refresh token expired')
389
+ throw new Error('Refresh token expired', { cause: error })
390
390
  }
391
391
  throw error
392
392
  }
@@ -67,7 +67,7 @@ export const pglCaslPlugin: GraphileConfig.Plugin = extendSchema(build => {
67
67
 
68
68
  return sideEffect(
69
69
  [$userId as ExecutableStep, $roles as ExecutableStep],
70
- async ([userId, roles]: [string, string[]]) => {
70
+ async ([userId, roles]: readonly [string, string[]]) => {
71
71
  // Make this async
72
72
  try {
73
73
  const ability = await createAbility({ id: userId, roles }) // Await here
@@ -10,7 +10,7 @@ const getLoggedInUser = () => {
10
10
  }
11
11
 
12
12
  export const yogaCaslPlugin: Plugin<Context> = {
13
- onContextBuilding: async ({ context, extendContext }) => {
13
+ onContextBuilding: async ({ extendContext }) => {
14
14
  // Make this async
15
15
  const user = getLoggedInUser()
16
16
  const ability = await createAbility(user) // Await here
@@ -27,10 +27,10 @@ export const yogaCaslPlugin: Plugin<Context> = {
27
27
  * @public
28
28
  */
29
29
  export const createYogaPlugin = (options: MiddlewareOptions = {}) => {
30
- const middleware = createCaslMiddleware(options)
30
+ const _middleware = createCaslMiddleware(options)
31
31
 
32
32
  return {
33
- onExecute: async ({ args }: any) => {
33
+ onExecute: async (_: any) => {
34
34
  // TODO: Implement Yoga plugin
35
35
  // This would integrate with GraphQL Yoga's plugin system
36
36
  console.log('Yoga plugin not yet implemented')
File without changes
File without changes
File without changes