@nitrotool/jwt 0.0.4 → 0.0.5

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/dist/jwt.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import jwt from '@tsndr/cloudflare-worker-jwt';
2
2
  import { createError } from 'h3';
3
3
 
4
- const encodeJwtRaw = async (payload = {}, secret, ttl = 60) => {
4
+ const encodeJwtRaw = async (payload, secret, ttl = 60) => {
5
5
  return await jwt.sign(
6
6
  {
7
7
  exp: Date.now() / 1e3 + ttl,
@@ -10,7 +10,7 @@ const encodeJwtRaw = async (payload = {}, secret, ttl = 60) => {
10
10
  secret
11
11
  );
12
12
  };
13
- const encodeJwt = async (payload = {}) => {
13
+ const encodeJwt = async (payload) => {
14
14
  const secret = (
15
15
  //@ts-expect-error Expected.
16
16
  typeof useRuntimeConfig === "function" ? useRuntimeConfig()?.jwtSecret : ""
@@ -33,18 +33,16 @@ const verifyJwt = async (token) => {
33
33
  return verifyJwtRaw(token, secret);
34
34
  };
35
35
  const decodeJwtRaw = async (token, secret, { verify } = { verify: true }) => {
36
- if (!secret && verify) {
37
- throw new Error("Cannot check signature without secret.");
38
- }
36
+ if (!secret && verify) throw new Error("Cannot check signature without secret.");
39
37
  if (secret && verify && !await verifyJwtRaw(token, secret)) {
40
- throw createError(`Invalid JWT token.`);
38
+ throw createError("Invalid JWT token.");
41
39
  }
42
40
  const { payload } = jwt.decode(token);
43
41
  return payload;
44
42
  };
45
43
  const decodeJwt = async (token, { verify } = { verify: true }) => {
46
44
  if (verify && !await verifyJwt(token)) {
47
- throw createError(`Invalid JWT token.`);
45
+ throw createError("Invalid JWT token.");
48
46
  }
49
47
  const { payload } = jwt.decode(token);
50
48
  return payload;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nitrotool/jwt",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "main": "dist/index.mjs",
5
5
  "type": "module",
6
6
  "exports": {
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@tsndr/cloudflare-worker-jwt": "^3.2.0",
13
- "@nitrotool/errors": "0.0.4"
13
+ "@nitrotool/errors": "0.0.5"
14
14
  },
15
15
  "peerDependencies": {
16
16
  "h3": "^1.15.3"
package/src/index.ts CHANGED
@@ -2,3 +2,4 @@
2
2
  export * from './h3';
3
3
  // @ts-ignore
4
4
  export * from './jwt';
5
+
package/src/jwt.ts CHANGED
@@ -1,79 +1,80 @@
1
- import jwt from '@tsndr/cloudflare-worker-jwt';
1
+ import jwt, {JwtPayload} from '@tsndr/cloudflare-worker-jwt';
2
+
2
3
  import { createError } from 'h3';
4
+ export type ExtendableJwtPayload<T extends Record<string, any> = {}> =
5
+ Partial<JwtPayload> & T;
3
6
 
4
7
  export const encodeJwtRaw = async <
5
- T extends Record<string, any> = Record<string, any>,
8
+ T extends Record<string, any> = {},
6
9
  >(
7
- payload: T = {} as T,
8
- secret: string,
9
- ttl = 60,
10
+ payload: ExtendableJwtPayload<T>,
11
+ secret: string,
12
+ ttl = 60,
10
13
  ): Promise<string> => {
11
- return await jwt.sign(
12
- {
13
- exp: Date.now() / 1000 + ttl,
14
- ...payload,
15
- },
16
- secret,
17
- );
14
+ return await jwt.sign(
15
+ {
16
+ exp: Date.now() / 1000 + ttl,
17
+ ...payload,
18
+ },
19
+ secret,
20
+ );
18
21
  };
19
22
 
20
23
  export const encodeJwt = async <
21
- T extends Record<string, any> = Record<string, any>,
24
+ T extends Record<string, any> = {},
22
25
  >(
23
- payload: T = {} as T,
26
+ payload: ExtendableJwtPayload<T>,
24
27
  ): Promise<string> => {
25
- const secret =
26
- //@ts-expect-error Expected.
27
- typeof useRuntimeConfig === 'function' ? useRuntimeConfig()?.jwtSecret : '';
28
- return encodeJwtRaw(payload, secret);
28
+ const secret =
29
+ //@ts-expect-error Expected.
30
+ typeof useRuntimeConfig === 'function' ? useRuntimeConfig()?.jwtSecret : '';
31
+ return encodeJwtRaw(payload, secret);
29
32
  };
30
33
 
31
34
  export const verifyJwtRaw = async (
32
- token: string,
33
- secret: string,
35
+ token: string,
36
+ secret: string,
34
37
  ): Promise<boolean> => {
35
- return new Promise(async (resolve) => {
36
- if (await jwt.verify(token, secret, { throwError: false })) {
37
- return resolve(true);
38
- }
38
+ return new Promise(async (resolve) => {
39
+ if (await jwt.verify(token, secret, {throwError: false})) {
40
+ return resolve(true);
41
+ }
39
42
 
40
- return resolve(false);
41
- });
43
+ return resolve(false);
44
+ });
42
45
  };
43
46
 
44
47
  export const verifyJwt = async (token: string): Promise<boolean> => {
45
- const secret =
46
- //@ts-expect-error Expected.
47
- typeof useRuntimeConfig === 'function' ? useRuntimeConfig()?.jwtSecret : '';
48
- return verifyJwtRaw(token, secret);
48
+ const secret =
49
+ //@ts-expect-error Expected.
50
+ typeof useRuntimeConfig === 'function' ? useRuntimeConfig()?.jwtSecret : '';
51
+ return verifyJwtRaw(token, secret);
49
52
  };
50
53
 
51
54
  export const decodeJwtRaw = async <
52
- T extends Record<string, any> = Record<string, any>,
55
+ T extends Record<string, any> = {},
53
56
  >(
54
- token: string,
55
- secret: string,
56
- { verify }: { verify?: boolean } = { verify: true },
57
- ) => {
58
- if (!secret && verify) {
59
- throw new Error('Cannot check signature without secret.');
60
- }
61
- if (secret && verify && !(await verifyJwtRaw(token, secret))) {
62
- throw createError(`Invalid JWT token.`);
63
- }
64
- const { payload } = jwt.decode<T>(token);
65
- return payload;
57
+ token: string,
58
+ secret: string,
59
+ { verify }: { verify?: boolean } = { verify: true },
60
+ ): Promise<ExtendableJwtPayload<T>> => {
61
+ if (!secret && verify) throw new Error('Cannot check signature without secret.');
62
+ if (secret && verify && !(await verifyJwtRaw(token, secret))) {
63
+ throw createError('Invalid JWT token.');
64
+ }
65
+ const { payload } = jwt.decode<ExtendableJwtPayload<T>>(token);
66
+ return payload;
66
67
  };
67
68
 
68
69
  export const decodeJwt = async <
69
- T extends Record<string, any> = Record<string, any>,
70
+ T extends Record<string, any> = {},
70
71
  >(
71
- token: string,
72
- { verify }: { verify?: boolean } = { verify: true },
73
- ) => {
74
- if (verify && !(await verifyJwt(token))) {
75
- throw createError(`Invalid JWT token.`);
76
- }
77
- const { payload } = jwt.decode<T>(token);
78
- return payload;
72
+ token: string,
73
+ { verify }: { verify?: boolean } = { verify: true },
74
+ ): Promise<ExtendableJwtPayload<T>> => {
75
+ if (verify && !(await verifyJwt(token))) {
76
+ throw createError('Invalid JWT token.');
77
+ }
78
+ const { payload } = jwt.decode<ExtendableJwtPayload<T>>(token);
79
+ return payload;
79
80
  };