@navios/jwt 0.3.0 → 0.4.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/lib/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var jwt = require('jsonwebtoken');
4
- var zod = require('zod');
4
+ var v4 = require('zod/v4');
5
5
  var core = require('@navios/core');
6
6
 
7
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -44,7 +44,7 @@ var RequestType = /* @__PURE__ */ ((RequestType2) => {
44
44
  RequestType2["Verify"] = "Verify";
45
45
  return RequestType2;
46
46
  })(RequestType || {});
47
- var AlgorithmType = zod.z.enum([
47
+ var AlgorithmType = v4.z.enum([
48
48
  "HS256",
49
49
  "HS384",
50
50
  "HS512",
@@ -59,71 +59,82 @@ var AlgorithmType = zod.z.enum([
59
59
  "PS512",
60
60
  "none"
61
61
  ]);
62
- var JwtHeaderSchema = zod.z.object({
63
- alg: AlgorithmType.or(zod.z.string()),
64
- typ: zod.z.string().optional(),
65
- cty: zod.z.string().optional(),
66
- crit: zod.z.string().array().optional(),
67
- kid: zod.z.string().optional(),
68
- jku: zod.z.string().optional(),
69
- x5u: zod.z.union([zod.z.string(), zod.z.array(zod.z.string())]).optional(),
70
- "x5t#S256": zod.z.string().optional(),
71
- x5t: zod.z.string().optional(),
72
- x5c: zod.z.union([zod.z.string(), zod.z.array(zod.z.string())]).optional()
62
+ var JwtHeaderSchema = v4.z.object({
63
+ alg: AlgorithmType.or(v4.z.string()),
64
+ typ: v4.z.string().optional(),
65
+ cty: v4.z.string().optional(),
66
+ crit: v4.z.string().array().optional(),
67
+ kid: v4.z.string().optional(),
68
+ jku: v4.z.string().optional(),
69
+ x5u: v4.z.union([v4.z.string(), v4.z.array(v4.z.string())]).optional(),
70
+ "x5t#S256": v4.z.string().optional(),
71
+ x5t: v4.z.string().optional(),
72
+ x5c: v4.z.union([v4.z.string(), v4.z.array(v4.z.string())]).optional()
73
73
  });
74
- var SignOptionsSchema = zod.z.object({
74
+ var SignOptionsSchema = v4.z.object({
75
75
  algorithm: AlgorithmType.optional(),
76
- keyid: zod.z.string().optional(),
77
- expiresIn: zod.z.union([zod.z.string(), zod.z.number()]).optional(),
78
- notBefore: zod.z.union([zod.z.string(), zod.z.number()]).optional(),
79
- audience: zod.z.union([zod.z.string(), zod.z.string().array()]).optional(),
80
- subject: zod.z.string().optional(),
81
- issuer: zod.z.string().optional(),
82
- jwtid: zod.z.string().optional(),
83
- mutatePayload: zod.z.boolean().optional(),
84
- noTimestamp: zod.z.boolean().optional(),
76
+ keyid: v4.z.string().optional(),
77
+ expiresIn: v4.z.union([v4.z.string(), v4.z.number()]).optional(),
78
+ notBefore: v4.z.union([v4.z.string(), v4.z.number()]).optional(),
79
+ audience: v4.z.union([
80
+ v4.z.string(),
81
+ v4.z.instanceof(RegExp),
82
+ v4.z.array(v4.z.union([v4.z.string(), v4.z.instanceof(RegExp)]))
83
+ ]).optional(),
84
+ subject: v4.z.string().optional(),
85
+ issuer: v4.z.string().optional(),
86
+ jwtid: v4.z.string().optional(),
87
+ mutatePayload: v4.z.boolean().optional(),
88
+ noTimestamp: v4.z.boolean().optional(),
85
89
  header: JwtHeaderSchema.optional(),
86
- encoding: zod.z.string().optional(),
87
- allowInsecureKeySizes: zod.z.boolean().optional(),
88
- allowInvalidAsymmetricKeyTypes: zod.z.boolean().optional()
90
+ encoding: v4.z.string().optional(),
91
+ allowInsecureKeySizes: v4.z.boolean().optional(),
92
+ allowInvalidAsymmetricKeyTypes: v4.z.boolean().optional()
89
93
  });
90
- var VerifyOptionsSchema = zod.z.object({
94
+ var VerifyOptionsSchema = v4.z.object({
91
95
  algorithms: AlgorithmType.array().optional(),
92
- audience: zod.z.union([zod.z.string(), zod.z.instanceof(RegExp), zod.z.string().array()]).optional(),
93
- clockTimestamp: zod.z.number().optional(),
94
- clockTolerance: zod.z.number().optional(),
95
- complete: zod.z.boolean().optional(),
96
- issuer: zod.z.union([zod.z.string(), zod.z.string().array()]).optional(),
97
- ignoreExpiration: zod.z.boolean().optional(),
98
- ignoreNotBefore: zod.z.boolean().optional(),
99
- jwtid: zod.z.string().optional(),
100
- nonce: zod.z.string().optional(),
101
- subject: zod.z.string().optional(),
102
- maxAge: zod.z.union([zod.z.string(), zod.z.number()]).optional(),
103
- allowInvalidAsymmetricKeyTypes: zod.z.boolean().optional()
96
+ audience: v4.z.union([
97
+ v4.z.string(),
98
+ v4.z.instanceof(RegExp),
99
+ v4.z.array(v4.z.union([v4.z.string(), v4.z.instanceof(RegExp)]))
100
+ ]).optional(),
101
+ clockTimestamp: v4.z.number().optional(),
102
+ clockTolerance: v4.z.number().optional(),
103
+ complete: v4.z.boolean().optional(),
104
+ issuer: v4.z.union([v4.z.string(), v4.z.string().array()]).optional(),
105
+ ignoreExpiration: v4.z.boolean().optional(),
106
+ ignoreNotBefore: v4.z.boolean().optional(),
107
+ jwtid: v4.z.string().optional(),
108
+ nonce: v4.z.string().optional(),
109
+ subject: v4.z.string().optional(),
110
+ maxAge: v4.z.union([v4.z.string(), v4.z.number()]).optional(),
111
+ allowInvalidAsymmetricKeyTypes: v4.z.boolean().optional()
104
112
  });
105
- var SecretSchema = zod.z.union([
106
- zod.z.string(),
107
- zod.z.instanceof(Buffer),
108
- zod.z.object({
109
- type: zod.z.string()
113
+ var SecretSchema = v4.z.union([
114
+ v4.z.string(),
115
+ v4.z.instanceof(Buffer),
116
+ v4.z.object({
117
+ type: v4.z.string()
110
118
  }).passthrough(),
111
- zod.z.object({
112
- key: zod.z.union([zod.z.string(), zod.z.instanceof(Buffer)]),
113
- passphrase: zod.z.string()
119
+ v4.z.object({
120
+ key: v4.z.union([v4.z.string(), v4.z.instanceof(Buffer)]),
121
+ passphrase: v4.z.string()
114
122
  })
115
123
  ]);
116
- var JwtServiceOptionsSchema = zod.z.object({
124
+ var JwtServiceOptionsSchema = v4.z.object({
117
125
  signOptions: SignOptionsSchema.optional(),
118
- secret: zod.z.string().optional(),
119
- publicKey: zod.z.union([zod.z.string(), zod.z.instanceof(Buffer)]).optional(),
126
+ secret: v4.z.string().optional(),
127
+ publicKey: v4.z.union([v4.z.string(), v4.z.instanceof(Buffer)]).optional(),
120
128
  privateKey: SecretSchema.optional(),
121
129
  verifyOptions: VerifyOptionsSchema.optional(),
122
- secretOrKeyProvider: zod.z.function().args(
123
- zod.z.nativeEnum(RequestType),
124
- zod.z.any(),
125
- zod.z.union([SignOptionsSchema, VerifyOptionsSchema]).optional()
126
- ).returns(zod.z.union([SecretSchema, zod.z.promise(SecretSchema)])).optional()
130
+ secretOrKeyProvider: v4.z.function({
131
+ input: [
132
+ v4.z.enum(RequestType),
133
+ v4.z.any(),
134
+ v4.z.union([SignOptionsSchema, VerifyOptionsSchema]).optional()
135
+ ],
136
+ output: v4.z.union([SecretSchema, v4.z.promise(SecretSchema)])
137
+ }).optional()
127
138
  });
128
139
  var JwtServiceToken = core.InjectionToken.create(
129
140
  Symbol.for("JwtService"),
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/options/jwt-service.options.mts","../src/jwt.service.mts","../src/jwt-service.provider.mts","../src/index.mts"],"names":["RequestType","z","InjectionToken","Injectable","syncInject","Logger","jwt"],"mappings":"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","file":"index.js","sourcesContent":["import type { Secret as JwtSecret } from 'jsonwebtoken'\n\nimport { z } from 'zod'\n\nexport enum RequestType {\n Sign = 'Sign',\n Verify = 'Verify',\n}\n\nexport const AlgorithmType = z.enum([\n 'HS256',\n 'HS384',\n 'HS512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'ES256',\n 'ES384',\n 'ES512',\n 'PS256',\n 'PS384',\n 'PS512',\n 'none',\n])\n\nexport const JwtHeaderSchema = z.object({\n alg: AlgorithmType.or(z.string()),\n typ: z.string().optional(),\n cty: z.string().optional(),\n crit: z.string().array().optional(),\n kid: z.string().optional(),\n jku: z.string().optional(),\n x5u: z.union([z.string(), z.array(z.string())]).optional(),\n 'x5t#S256': z.string().optional(),\n x5t: z.string().optional(),\n x5c: z.union([z.string(), z.array(z.string())]).optional(),\n})\n\nexport type JwtHeader = z.infer<typeof JwtHeaderSchema>\n\nexport const SignOptionsSchema = z.object({\n algorithm: AlgorithmType.optional(),\n keyid: z.string().optional(),\n expiresIn: z.union([z.string(), z.number()]).optional(),\n notBefore: z.union([z.string(), z.number()]).optional(),\n audience: z.union([z.string(), z.string().array()]).optional(),\n subject: z.string().optional(),\n issuer: z.string().optional(),\n jwtid: z.string().optional(),\n mutatePayload: z.boolean().optional(),\n noTimestamp: z.boolean().optional(),\n header: JwtHeaderSchema.optional(),\n encoding: z.string().optional(),\n allowInsecureKeySizes: z.boolean().optional(),\n allowInvalidAsymmetricKeyTypes: z.boolean().optional(),\n})\n\nexport type SignOptions = z.infer<typeof SignOptionsSchema>\n\nexport const VerifyOptionsSchema = z.object({\n algorithms: AlgorithmType.array().optional(),\n audience: z\n .union([z.string(), z.instanceof(RegExp), z.string().array()])\n .optional(),\n clockTimestamp: z.number().optional(),\n clockTolerance: z.number().optional(),\n complete: z.boolean().optional(),\n issuer: z.union([z.string(), z.string().array()]).optional(),\n ignoreExpiration: z.boolean().optional(),\n ignoreNotBefore: z.boolean().optional(),\n jwtid: z.string().optional(),\n nonce: z.string().optional(),\n subject: z.string().optional(),\n maxAge: z.union([z.string(), z.number()]).optional(),\n allowInvalidAsymmetricKeyTypes: z.boolean().optional(),\n})\n\nexport type VerifyOptions = z.infer<typeof VerifyOptionsSchema>\n\nexport const SecretSchema = z.union([\n z.string(),\n z.instanceof(Buffer),\n z\n .object({\n type: z.string(),\n })\n .passthrough(),\n z.object({\n key: z.union([z.string(), z.instanceof(Buffer)]),\n passphrase: z.string(),\n }),\n])\n\nexport type Secret = z.infer<typeof SecretSchema>\n\nexport const JwtServiceOptionsSchema = z.object({\n signOptions: SignOptionsSchema.optional(),\n secret: z.string().optional(),\n publicKey: z.union([z.string(), z.instanceof(Buffer)]).optional(),\n privateKey: SecretSchema.optional(),\n verifyOptions: VerifyOptionsSchema.optional(),\n secretOrKeyProvider: z\n .function()\n .args(\n z.nativeEnum(RequestType),\n z.any(),\n z.union([SignOptionsSchema, VerifyOptionsSchema]).optional(),\n )\n .returns(z.union([SecretSchema, z.promise(SecretSchema)]))\n .optional(),\n})\n\nexport type JwtServiceOptions = z.infer<typeof JwtServiceOptionsSchema>\n\nexport interface JwtSignOptions extends SignOptions {\n secret?: string | Buffer\n privateKey?: Secret\n}\n\nexport interface JwtVerifyOptions extends VerifyOptions {\n secret?: string | Buffer\n publicKey?: string | Buffer\n}\n\nexport type GetSecretKeyResult = string | Buffer | JwtSecret\n","import { Injectable, InjectionToken, Logger, syncInject } from '@navios/core'\n\nimport jwt from 'jsonwebtoken'\n\nimport type {\n GetSecretKeyResult,\n JwtServiceOptions,\n JwtSignOptions,\n JwtVerifyOptions,\n SignOptions,\n VerifyOptions,\n} from './options/jwt-service.options.mjs'\n\nimport {\n JwtServiceOptionsSchema,\n RequestType,\n} from './options/jwt-service.options.mjs'\n\nexport const JwtServiceToken = InjectionToken.create(\n Symbol.for('JwtService'),\n JwtServiceOptionsSchema,\n)\n\n@Injectable({\n token: JwtServiceToken,\n})\nexport class JwtService {\n logger = syncInject(Logger, {\n context: JwtService.name,\n })\n\n constructor(private readonly options: JwtServiceOptions = {}) {}\n\n sign(\n payload: string,\n options?: Omit<JwtSignOptions, keyof SignOptions>,\n ): string\n sign(payload: Buffer | object, options?: JwtSignOptions): string\n sign(\n payload: string | Buffer | object,\n options: JwtSignOptions = {},\n ): string {\n const signOptions = this.mergeJwtOptions(\n { ...options },\n 'signOptions',\n ) as jwt.SignOptions\n const secret = this.getSecretKey(\n payload,\n options,\n 'privateKey',\n RequestType.Sign,\n )\n\n if (secret instanceof Promise) {\n secret.catch(() => {}) // suppress rejection from async provider\n this.logger.warn(\n 'For async version of \"secretOrKeyProvider\", please use \"signAsync\".',\n )\n throw new Error()\n }\n\n const allowedSignOptKeys = ['secret', 'privateKey']\n const signOptKeys = Object.keys(signOptions)\n if (\n typeof payload === 'string' &&\n signOptKeys.some((k) => !allowedSignOptKeys.includes(k))\n ) {\n throw new Error(\n 'Payload as string is not allowed with the following sign options: ' +\n signOptKeys.join(', '),\n )\n }\n\n return jwt.sign(payload, secret, signOptions)\n }\n\n signAsync(\n payload: string,\n options?: Omit<JwtSignOptions, keyof jwt.SignOptions>,\n ): Promise<string>\n signAsync(payload: Buffer | object, options?: JwtSignOptions): Promise<string>\n signAsync(\n payload: string | Buffer | object,\n options: JwtSignOptions = {},\n ): Promise<string> {\n const signOptions = this.mergeJwtOptions(\n { ...options },\n 'signOptions',\n ) as jwt.SignOptions\n const secret = this.getSecretKey(\n payload,\n options,\n 'privateKey',\n RequestType.Sign,\n )\n\n const allowedSignOptKeys = ['secret', 'privateKey']\n const signOptKeys = Object.keys(signOptions)\n if (\n typeof payload === 'string' &&\n signOptKeys.some((k) => !allowedSignOptKeys.includes(k))\n ) {\n throw new Error(\n 'Payload as string is not allowed with the following sign options: ' +\n signOptKeys.join(', '),\n )\n }\n\n return new Promise((resolve, reject) =>\n Promise.resolve()\n .then(() => secret)\n .then((scrt: GetSecretKeyResult) => {\n jwt.sign(payload, scrt, signOptions, (err, encoded) =>\n err ? reject(err) : resolve(encoded as string),\n )\n }),\n )\n }\n\n verify<T extends object = any>(\n token: string,\n options: JwtVerifyOptions = {},\n ): T {\n const verifyOptions = this.mergeJwtOptions({ ...options }, 'verifyOptions')\n const secret = this.getSecretKey(\n token,\n options,\n 'publicKey',\n RequestType.Verify,\n )\n\n if (secret instanceof Promise) {\n secret.catch(() => {}) // suppress rejection from async provider\n this.logger.warn(\n 'For async version of \"secretOrKeyProvider\", please use \"verifyAsync\".',\n )\n throw new Error()\n }\n\n return jwt.verify(token, secret, verifyOptions) as unknown as T\n }\n\n verifyAsync<T extends object = any>(\n token: string,\n options: JwtVerifyOptions = {},\n ): Promise<T> {\n const verifyOptions = this.mergeJwtOptions({ ...options }, 'verifyOptions')\n const secret = this.getSecretKey(\n token,\n options,\n 'publicKey',\n RequestType.Verify,\n )\n\n return new Promise((resolve, reject) =>\n Promise.resolve()\n .then(() => secret)\n .then((scrt: GetSecretKeyResult) => {\n jwt.verify(token, scrt, verifyOptions, (err, decoded) =>\n err ? reject(err) : resolve(decoded as T),\n )\n })\n .catch(reject),\n )\n }\n\n decode<T = any>(token: string, options?: jwt.DecodeOptions): T {\n return jwt.decode(token, options) as T\n }\n\n private mergeJwtOptions(\n options: JwtVerifyOptions | JwtSignOptions,\n key: 'verifyOptions' | 'signOptions',\n ): VerifyOptions | SignOptions {\n delete options.secret\n if (key === 'signOptions') {\n delete (options as JwtSignOptions).privateKey\n } else {\n delete (options as JwtVerifyOptions).publicKey\n }\n return options\n ? {\n ...(this.options[key] || {}),\n ...options,\n }\n : // @ts-expect-error We check it\n this.options[key]\n }\n\n private getSecretKey(\n token: string | object | Buffer,\n options: JwtVerifyOptions | JwtSignOptions,\n key: 'publicKey' | 'privateKey',\n secretRequestType: RequestType,\n ): GetSecretKeyResult | Promise<GetSecretKeyResult> {\n const secret = this.options.secretOrKeyProvider\n ? this.options.secretOrKeyProvider(secretRequestType, token, options)\n : options?.secret ||\n this.options.secret ||\n (key === 'privateKey'\n ? (options as JwtSignOptions)?.privateKey || this.options.privateKey\n : (options as JwtVerifyOptions)?.publicKey ||\n this.options.publicKey) ||\n this.options[key]\n\n return secret as GetSecretKeyResult\n }\n}\n","import type { BoundInjectionToken, FactoryInjectionToken } from '@navios/core'\n\nimport { InjectionToken } from '@navios/core'\n\nimport type { JwtServiceOptions } from './options/jwt-service.options.mjs'\n\nimport { JwtService, JwtServiceToken } from './jwt.service.mjs'\nimport { JwtServiceOptionsSchema } from './options/jwt-service.options.mjs'\n\nexport function provideJwtService(\n config: JwtServiceOptions | (() => Promise<JwtServiceOptions>),\n):\n | BoundInjectionToken<JwtService, typeof JwtServiceOptionsSchema>\n | FactoryInjectionToken<JwtService, typeof JwtServiceOptionsSchema> {\n if (typeof config === 'function') {\n return InjectionToken.factory(JwtServiceToken, config)\n }\n return InjectionToken.bound(JwtServiceToken, config)\n}\n","import jwt from 'jsonwebtoken'\n\nexport * from './options/jwt-service.options.mjs'\nexport * from './jwt.service.mjs'\nexport * from './jwt-service.provider.mjs'\nexport const TokenExpiredError = jwt.TokenExpiredError\nexport const NotBeforeError = jwt.NotBeforeError\nexport const JsonWebTokenError = jwt.JsonWebTokenError\n"]}
1
+ {"version":3,"sources":["../src/options/jwt-service.options.mts","../src/jwt.service.mts","../src/jwt-service.provider.mts","../src/index.mts"],"names":["RequestType","z","InjectionToken","Injectable","syncInject","Logger","jwt"],"mappings":"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","file":"index.js","sourcesContent":["import type { Secret as JwtSecret } from 'jsonwebtoken'\n\nimport { z } from 'zod/v4'\n\nexport enum RequestType {\n Sign = 'Sign',\n Verify = 'Verify',\n}\n\nexport const AlgorithmType = z.enum([\n 'HS256',\n 'HS384',\n 'HS512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'ES256',\n 'ES384',\n 'ES512',\n 'PS256',\n 'PS384',\n 'PS512',\n 'none',\n])\n\nexport const JwtHeaderSchema = z.object({\n alg: AlgorithmType.or(z.string()),\n typ: z.string().optional(),\n cty: z.string().optional(),\n crit: z.string().array().optional(),\n kid: z.string().optional(),\n jku: z.string().optional(),\n x5u: z.union([z.string(), z.array(z.string())]).optional(),\n 'x5t#S256': z.string().optional(),\n x5t: z.string().optional(),\n x5c: z.union([z.string(), z.array(z.string())]).optional(),\n})\n\nexport type JwtHeader = z.infer<typeof JwtHeaderSchema>\n\nexport const SignOptionsSchema = z.object({\n algorithm: AlgorithmType.optional(),\n keyid: z.string().optional(),\n expiresIn: z.union([z.string(), z.number()]).optional(),\n notBefore: z.union([z.string(), z.number()]).optional(),\n audience: z\n .union([\n z.string(),\n z.instanceof(RegExp),\n z.array(z.union([z.string(), z.instanceof(RegExp)])),\n ])\n .optional(),\n subject: z.string().optional(),\n issuer: z.string().optional(),\n jwtid: z.string().optional(),\n mutatePayload: z.boolean().optional(),\n noTimestamp: z.boolean().optional(),\n header: JwtHeaderSchema.optional(),\n encoding: z.string().optional(),\n allowInsecureKeySizes: z.boolean().optional(),\n allowInvalidAsymmetricKeyTypes: z.boolean().optional(),\n})\n\nexport type SignOptions = z.infer<typeof SignOptionsSchema>\n\nexport const VerifyOptionsSchema = z.object({\n algorithms: AlgorithmType.array().optional(),\n audience: z\n .union([\n z.string(),\n z.instanceof(RegExp),\n z.array(z.union([z.string(), z.instanceof(RegExp)])),\n ])\n .optional(),\n clockTimestamp: z.number().optional(),\n clockTolerance: z.number().optional(),\n complete: z.boolean().optional(),\n issuer: z.union([z.string(), z.string().array()]).optional(),\n ignoreExpiration: z.boolean().optional(),\n ignoreNotBefore: z.boolean().optional(),\n jwtid: z.string().optional(),\n nonce: z.string().optional(),\n subject: z.string().optional(),\n maxAge: z.union([z.string(), z.number()]).optional(),\n allowInvalidAsymmetricKeyTypes: z.boolean().optional(),\n})\n\nexport type VerifyOptions = z.infer<typeof VerifyOptionsSchema>\n\nexport const SecretSchema = z.union([\n z.string(),\n z.instanceof(Buffer),\n z\n .object({\n type: z.string(),\n })\n .passthrough(),\n z.object({\n key: z.union([z.string(), z.instanceof(Buffer)]),\n passphrase: z.string(),\n }),\n])\n\nexport type Secret = z.infer<typeof SecretSchema>\n\nexport const JwtServiceOptionsSchema = z.object({\n signOptions: SignOptionsSchema.optional(),\n secret: z.string().optional(),\n publicKey: z.union([z.string(), z.instanceof(Buffer)]).optional(),\n privateKey: SecretSchema.optional(),\n verifyOptions: VerifyOptionsSchema.optional(),\n secretOrKeyProvider: z\n .function({\n input: [\n z.enum(RequestType),\n z.any(),\n z.union([SignOptionsSchema, VerifyOptionsSchema]).optional(),\n ],\n output: z.union([SecretSchema, z.promise(SecretSchema)]),\n })\n .optional(),\n})\n\nexport type JwtServiceOptions = z.infer<typeof JwtServiceOptionsSchema>\n\nexport interface JwtSignOptions extends SignOptions {\n secret?: string | Buffer\n privateKey?: Secret\n}\n\nexport interface JwtVerifyOptions extends VerifyOptions {\n secret?: string | Buffer\n publicKey?: string | Buffer\n}\n\nexport type GetSecretKeyResult = string | Buffer | JwtSecret\n","import { Injectable, InjectionToken, Logger, syncInject } from '@navios/core'\n\nimport jwt from 'jsonwebtoken'\n\nimport type {\n GetSecretKeyResult,\n JwtServiceOptions,\n JwtSignOptions,\n JwtVerifyOptions,\n SignOptions,\n VerifyOptions,\n} from './options/jwt-service.options.mjs'\n\nimport {\n JwtServiceOptionsSchema,\n RequestType,\n} from './options/jwt-service.options.mjs'\n\nexport const JwtServiceToken = InjectionToken.create(\n Symbol.for('JwtService'),\n JwtServiceOptionsSchema,\n)\n\n@Injectable({\n token: JwtServiceToken,\n})\nexport class JwtService {\n logger = syncInject(Logger, {\n context: JwtService.name,\n })\n\n constructor(private readonly options: JwtServiceOptions = {}) {}\n\n sign(\n payload: string,\n options?: Omit<JwtSignOptions, keyof SignOptions>,\n ): string\n sign(payload: Buffer | object, options?: JwtSignOptions): string\n sign(\n payload: string | Buffer | object,\n options: JwtSignOptions = {},\n ): string {\n const signOptions = this.mergeJwtOptions(\n { ...options },\n 'signOptions',\n ) as jwt.SignOptions\n const secret = this.getSecretKey(\n payload,\n options,\n 'privateKey',\n RequestType.Sign,\n )\n\n if (secret instanceof Promise) {\n secret.catch(() => {}) // suppress rejection from async provider\n this.logger.warn(\n 'For async version of \"secretOrKeyProvider\", please use \"signAsync\".',\n )\n throw new Error()\n }\n\n const allowedSignOptKeys = ['secret', 'privateKey']\n const signOptKeys = Object.keys(signOptions)\n if (\n typeof payload === 'string' &&\n signOptKeys.some((k) => !allowedSignOptKeys.includes(k))\n ) {\n throw new Error(\n 'Payload as string is not allowed with the following sign options: ' +\n signOptKeys.join(', '),\n )\n }\n\n return jwt.sign(payload, secret, signOptions)\n }\n\n signAsync(\n payload: string,\n options?: Omit<JwtSignOptions, keyof jwt.SignOptions>,\n ): Promise<string>\n signAsync(payload: Buffer | object, options?: JwtSignOptions): Promise<string>\n signAsync(\n payload: string | Buffer | object,\n options: JwtSignOptions = {},\n ): Promise<string> {\n const signOptions = this.mergeJwtOptions(\n { ...options },\n 'signOptions',\n ) as jwt.SignOptions\n const secret = this.getSecretKey(\n payload,\n options,\n 'privateKey',\n RequestType.Sign,\n )\n\n const allowedSignOptKeys = ['secret', 'privateKey']\n const signOptKeys = Object.keys(signOptions)\n if (\n typeof payload === 'string' &&\n signOptKeys.some((k) => !allowedSignOptKeys.includes(k))\n ) {\n throw new Error(\n 'Payload as string is not allowed with the following sign options: ' +\n signOptKeys.join(', '),\n )\n }\n\n return new Promise((resolve, reject) =>\n Promise.resolve()\n .then(() => secret)\n .then((scrt: GetSecretKeyResult) => {\n jwt.sign(payload, scrt, signOptions, (err, encoded) =>\n err ? reject(err) : resolve(encoded as string),\n )\n }),\n )\n }\n\n verify<T extends object = any>(\n token: string,\n options: JwtVerifyOptions = {},\n ): T {\n const verifyOptions = this.mergeJwtOptions({ ...options }, 'verifyOptions')\n const secret = this.getSecretKey(\n token,\n options,\n 'publicKey',\n RequestType.Verify,\n )\n\n if (secret instanceof Promise) {\n secret.catch(() => {}) // suppress rejection from async provider\n this.logger.warn(\n 'For async version of \"secretOrKeyProvider\", please use \"verifyAsync\".',\n )\n throw new Error()\n }\n\n // @ts-expect-error We check it\n return jwt.verify(token, secret, verifyOptions) as unknown as T\n }\n\n verifyAsync<T extends object = any>(\n token: string,\n options: JwtVerifyOptions = {},\n ): Promise<T> {\n const verifyOptions = this.mergeJwtOptions({ ...options }, 'verifyOptions')\n const secret = this.getSecretKey(\n token,\n options,\n 'publicKey',\n RequestType.Verify,\n )\n\n return new Promise((resolve, reject) =>\n Promise.resolve()\n .then(() => secret)\n .then((scrt: GetSecretKeyResult) => {\n // @ts-expect-error We check it\n jwt.verify(token, scrt, verifyOptions, (err, decoded) =>\n err ? reject(err) : resolve(decoded as T),\n )\n })\n .catch(reject),\n )\n }\n\n decode<T = any>(token: string, options?: jwt.DecodeOptions): T {\n return jwt.decode(token, options) as T\n }\n\n private mergeJwtOptions(\n options: JwtVerifyOptions | JwtSignOptions,\n key: 'verifyOptions' | 'signOptions',\n ): VerifyOptions | SignOptions {\n delete options.secret\n if (key === 'signOptions') {\n delete (options as JwtSignOptions).privateKey\n } else {\n delete (options as JwtVerifyOptions).publicKey\n }\n return options\n ? {\n ...(this.options[key] || {}),\n ...options,\n }\n : // @ts-expect-error We check it\n this.options[key]\n }\n\n private getSecretKey(\n token: string | object | Buffer,\n options: JwtVerifyOptions | JwtSignOptions,\n key: 'publicKey' | 'privateKey',\n secretRequestType: RequestType,\n ): GetSecretKeyResult | Promise<GetSecretKeyResult> {\n const secret = this.options.secretOrKeyProvider\n ? this.options.secretOrKeyProvider(secretRequestType, token, options)\n : options?.secret ||\n this.options.secret ||\n (key === 'privateKey'\n ? (options as JwtSignOptions)?.privateKey || this.options.privateKey\n : (options as JwtVerifyOptions)?.publicKey ||\n this.options.publicKey) ||\n this.options[key]\n\n return secret as GetSecretKeyResult\n }\n}\n","import type { BoundInjectionToken, FactoryInjectionToken } from '@navios/core'\n\nimport { InjectionToken } from '@navios/core'\n\nimport type { JwtServiceOptions } from './options/jwt-service.options.mjs'\n\nimport { JwtService, JwtServiceToken } from './jwt.service.mjs'\nimport { JwtServiceOptionsSchema } from './options/jwt-service.options.mjs'\n\nexport function provideJwtService(\n config: JwtServiceOptions,\n): BoundInjectionToken<JwtService, typeof JwtServiceOptionsSchema>\nexport function provideJwtService(\n config: () => Promise<JwtServiceOptions>,\n): FactoryInjectionToken<JwtService, typeof JwtServiceOptionsSchema>\nexport function provideJwtService(\n config: JwtServiceOptions | (() => Promise<JwtServiceOptions>),\n):\n | BoundInjectionToken<JwtService, typeof JwtServiceOptionsSchema>\n | FactoryInjectionToken<JwtService, typeof JwtServiceOptionsSchema> {\n if (typeof config === 'function') {\n return InjectionToken.factory(JwtServiceToken, config)\n }\n return InjectionToken.bound(JwtServiceToken, config)\n}\n","import jwt from 'jsonwebtoken'\n\nexport * from './options/jwt-service.options.mjs'\nexport * from './jwt.service.mjs'\nexport * from './jwt-service.provider.mjs'\nexport const TokenExpiredError = jwt.TokenExpiredError\nexport const NotBeforeError = jwt.NotBeforeError\nexport const JsonWebTokenError = jwt.JsonWebTokenError\n"]}
package/lib/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import jwt from 'jsonwebtoken';
2
- import { z } from 'zod';
2
+ import { z } from 'zod/v4';
3
3
  import { InjectionToken, Injectable, syncInject, Logger } from '@navios/core';
4
4
 
5
5
  var __create = Object.create;
@@ -70,7 +70,11 @@ var SignOptionsSchema = z.object({
70
70
  keyid: z.string().optional(),
71
71
  expiresIn: z.union([z.string(), z.number()]).optional(),
72
72
  notBefore: z.union([z.string(), z.number()]).optional(),
73
- audience: z.union([z.string(), z.string().array()]).optional(),
73
+ audience: z.union([
74
+ z.string(),
75
+ z.instanceof(RegExp),
76
+ z.array(z.union([z.string(), z.instanceof(RegExp)]))
77
+ ]).optional(),
74
78
  subject: z.string().optional(),
75
79
  issuer: z.string().optional(),
76
80
  jwtid: z.string().optional(),
@@ -83,7 +87,11 @@ var SignOptionsSchema = z.object({
83
87
  });
84
88
  var VerifyOptionsSchema = z.object({
85
89
  algorithms: AlgorithmType.array().optional(),
86
- audience: z.union([z.string(), z.instanceof(RegExp), z.string().array()]).optional(),
90
+ audience: z.union([
91
+ z.string(),
92
+ z.instanceof(RegExp),
93
+ z.array(z.union([z.string(), z.instanceof(RegExp)]))
94
+ ]).optional(),
87
95
  clockTimestamp: z.number().optional(),
88
96
  clockTolerance: z.number().optional(),
89
97
  complete: z.boolean().optional(),
@@ -113,11 +121,14 @@ var JwtServiceOptionsSchema = z.object({
113
121
  publicKey: z.union([z.string(), z.instanceof(Buffer)]).optional(),
114
122
  privateKey: SecretSchema.optional(),
115
123
  verifyOptions: VerifyOptionsSchema.optional(),
116
- secretOrKeyProvider: z.function().args(
117
- z.nativeEnum(RequestType),
118
- z.any(),
119
- z.union([SignOptionsSchema, VerifyOptionsSchema]).optional()
120
- ).returns(z.union([SecretSchema, z.promise(SecretSchema)])).optional()
124
+ secretOrKeyProvider: z.function({
125
+ input: [
126
+ z.enum(RequestType),
127
+ z.any(),
128
+ z.union([SignOptionsSchema, VerifyOptionsSchema]).optional()
129
+ ],
130
+ output: z.union([SecretSchema, z.promise(SecretSchema)])
131
+ }).optional()
121
132
  });
122
133
  var JwtServiceToken = InjectionToken.create(
123
134
  Symbol.for("JwtService"),
package/lib/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/options/jwt-service.options.mts","../src/jwt.service.mts","../src/jwt-service.provider.mts","../src/index.mts"],"names":["RequestType","InjectionToken","jwt"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { Secret as JwtSecret } from 'jsonwebtoken'\n\nimport { z } from 'zod'\n\nexport enum RequestType {\n Sign = 'Sign',\n Verify = 'Verify',\n}\n\nexport const AlgorithmType = z.enum([\n 'HS256',\n 'HS384',\n 'HS512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'ES256',\n 'ES384',\n 'ES512',\n 'PS256',\n 'PS384',\n 'PS512',\n 'none',\n])\n\nexport const JwtHeaderSchema = z.object({\n alg: AlgorithmType.or(z.string()),\n typ: z.string().optional(),\n cty: z.string().optional(),\n crit: z.string().array().optional(),\n kid: z.string().optional(),\n jku: z.string().optional(),\n x5u: z.union([z.string(), z.array(z.string())]).optional(),\n 'x5t#S256': z.string().optional(),\n x5t: z.string().optional(),\n x5c: z.union([z.string(), z.array(z.string())]).optional(),\n})\n\nexport type JwtHeader = z.infer<typeof JwtHeaderSchema>\n\nexport const SignOptionsSchema = z.object({\n algorithm: AlgorithmType.optional(),\n keyid: z.string().optional(),\n expiresIn: z.union([z.string(), z.number()]).optional(),\n notBefore: z.union([z.string(), z.number()]).optional(),\n audience: z.union([z.string(), z.string().array()]).optional(),\n subject: z.string().optional(),\n issuer: z.string().optional(),\n jwtid: z.string().optional(),\n mutatePayload: z.boolean().optional(),\n noTimestamp: z.boolean().optional(),\n header: JwtHeaderSchema.optional(),\n encoding: z.string().optional(),\n allowInsecureKeySizes: z.boolean().optional(),\n allowInvalidAsymmetricKeyTypes: z.boolean().optional(),\n})\n\nexport type SignOptions = z.infer<typeof SignOptionsSchema>\n\nexport const VerifyOptionsSchema = z.object({\n algorithms: AlgorithmType.array().optional(),\n audience: z\n .union([z.string(), z.instanceof(RegExp), z.string().array()])\n .optional(),\n clockTimestamp: z.number().optional(),\n clockTolerance: z.number().optional(),\n complete: z.boolean().optional(),\n issuer: z.union([z.string(), z.string().array()]).optional(),\n ignoreExpiration: z.boolean().optional(),\n ignoreNotBefore: z.boolean().optional(),\n jwtid: z.string().optional(),\n nonce: z.string().optional(),\n subject: z.string().optional(),\n maxAge: z.union([z.string(), z.number()]).optional(),\n allowInvalidAsymmetricKeyTypes: z.boolean().optional(),\n})\n\nexport type VerifyOptions = z.infer<typeof VerifyOptionsSchema>\n\nexport const SecretSchema = z.union([\n z.string(),\n z.instanceof(Buffer),\n z\n .object({\n type: z.string(),\n })\n .passthrough(),\n z.object({\n key: z.union([z.string(), z.instanceof(Buffer)]),\n passphrase: z.string(),\n }),\n])\n\nexport type Secret = z.infer<typeof SecretSchema>\n\nexport const JwtServiceOptionsSchema = z.object({\n signOptions: SignOptionsSchema.optional(),\n secret: z.string().optional(),\n publicKey: z.union([z.string(), z.instanceof(Buffer)]).optional(),\n privateKey: SecretSchema.optional(),\n verifyOptions: VerifyOptionsSchema.optional(),\n secretOrKeyProvider: z\n .function()\n .args(\n z.nativeEnum(RequestType),\n z.any(),\n z.union([SignOptionsSchema, VerifyOptionsSchema]).optional(),\n )\n .returns(z.union([SecretSchema, z.promise(SecretSchema)]))\n .optional(),\n})\n\nexport type JwtServiceOptions = z.infer<typeof JwtServiceOptionsSchema>\n\nexport interface JwtSignOptions extends SignOptions {\n secret?: string | Buffer\n privateKey?: Secret\n}\n\nexport interface JwtVerifyOptions extends VerifyOptions {\n secret?: string | Buffer\n publicKey?: string | Buffer\n}\n\nexport type GetSecretKeyResult = string | Buffer | JwtSecret\n","import { Injectable, InjectionToken, Logger, syncInject } from '@navios/core'\n\nimport jwt from 'jsonwebtoken'\n\nimport type {\n GetSecretKeyResult,\n JwtServiceOptions,\n JwtSignOptions,\n JwtVerifyOptions,\n SignOptions,\n VerifyOptions,\n} from './options/jwt-service.options.mjs'\n\nimport {\n JwtServiceOptionsSchema,\n RequestType,\n} from './options/jwt-service.options.mjs'\n\nexport const JwtServiceToken = InjectionToken.create(\n Symbol.for('JwtService'),\n JwtServiceOptionsSchema,\n)\n\n@Injectable({\n token: JwtServiceToken,\n})\nexport class JwtService {\n logger = syncInject(Logger, {\n context: JwtService.name,\n })\n\n constructor(private readonly options: JwtServiceOptions = {}) {}\n\n sign(\n payload: string,\n options?: Omit<JwtSignOptions, keyof SignOptions>,\n ): string\n sign(payload: Buffer | object, options?: JwtSignOptions): string\n sign(\n payload: string | Buffer | object,\n options: JwtSignOptions = {},\n ): string {\n const signOptions = this.mergeJwtOptions(\n { ...options },\n 'signOptions',\n ) as jwt.SignOptions\n const secret = this.getSecretKey(\n payload,\n options,\n 'privateKey',\n RequestType.Sign,\n )\n\n if (secret instanceof Promise) {\n secret.catch(() => {}) // suppress rejection from async provider\n this.logger.warn(\n 'For async version of \"secretOrKeyProvider\", please use \"signAsync\".',\n )\n throw new Error()\n }\n\n const allowedSignOptKeys = ['secret', 'privateKey']\n const signOptKeys = Object.keys(signOptions)\n if (\n typeof payload === 'string' &&\n signOptKeys.some((k) => !allowedSignOptKeys.includes(k))\n ) {\n throw new Error(\n 'Payload as string is not allowed with the following sign options: ' +\n signOptKeys.join(', '),\n )\n }\n\n return jwt.sign(payload, secret, signOptions)\n }\n\n signAsync(\n payload: string,\n options?: Omit<JwtSignOptions, keyof jwt.SignOptions>,\n ): Promise<string>\n signAsync(payload: Buffer | object, options?: JwtSignOptions): Promise<string>\n signAsync(\n payload: string | Buffer | object,\n options: JwtSignOptions = {},\n ): Promise<string> {\n const signOptions = this.mergeJwtOptions(\n { ...options },\n 'signOptions',\n ) as jwt.SignOptions\n const secret = this.getSecretKey(\n payload,\n options,\n 'privateKey',\n RequestType.Sign,\n )\n\n const allowedSignOptKeys = ['secret', 'privateKey']\n const signOptKeys = Object.keys(signOptions)\n if (\n typeof payload === 'string' &&\n signOptKeys.some((k) => !allowedSignOptKeys.includes(k))\n ) {\n throw new Error(\n 'Payload as string is not allowed with the following sign options: ' +\n signOptKeys.join(', '),\n )\n }\n\n return new Promise((resolve, reject) =>\n Promise.resolve()\n .then(() => secret)\n .then((scrt: GetSecretKeyResult) => {\n jwt.sign(payload, scrt, signOptions, (err, encoded) =>\n err ? reject(err) : resolve(encoded as string),\n )\n }),\n )\n }\n\n verify<T extends object = any>(\n token: string,\n options: JwtVerifyOptions = {},\n ): T {\n const verifyOptions = this.mergeJwtOptions({ ...options }, 'verifyOptions')\n const secret = this.getSecretKey(\n token,\n options,\n 'publicKey',\n RequestType.Verify,\n )\n\n if (secret instanceof Promise) {\n secret.catch(() => {}) // suppress rejection from async provider\n this.logger.warn(\n 'For async version of \"secretOrKeyProvider\", please use \"verifyAsync\".',\n )\n throw new Error()\n }\n\n return jwt.verify(token, secret, verifyOptions) as unknown as T\n }\n\n verifyAsync<T extends object = any>(\n token: string,\n options: JwtVerifyOptions = {},\n ): Promise<T> {\n const verifyOptions = this.mergeJwtOptions({ ...options }, 'verifyOptions')\n const secret = this.getSecretKey(\n token,\n options,\n 'publicKey',\n RequestType.Verify,\n )\n\n return new Promise((resolve, reject) =>\n Promise.resolve()\n .then(() => secret)\n .then((scrt: GetSecretKeyResult) => {\n jwt.verify(token, scrt, verifyOptions, (err, decoded) =>\n err ? reject(err) : resolve(decoded as T),\n )\n })\n .catch(reject),\n )\n }\n\n decode<T = any>(token: string, options?: jwt.DecodeOptions): T {\n return jwt.decode(token, options) as T\n }\n\n private mergeJwtOptions(\n options: JwtVerifyOptions | JwtSignOptions,\n key: 'verifyOptions' | 'signOptions',\n ): VerifyOptions | SignOptions {\n delete options.secret\n if (key === 'signOptions') {\n delete (options as JwtSignOptions).privateKey\n } else {\n delete (options as JwtVerifyOptions).publicKey\n }\n return options\n ? {\n ...(this.options[key] || {}),\n ...options,\n }\n : // @ts-expect-error We check it\n this.options[key]\n }\n\n private getSecretKey(\n token: string | object | Buffer,\n options: JwtVerifyOptions | JwtSignOptions,\n key: 'publicKey' | 'privateKey',\n secretRequestType: RequestType,\n ): GetSecretKeyResult | Promise<GetSecretKeyResult> {\n const secret = this.options.secretOrKeyProvider\n ? this.options.secretOrKeyProvider(secretRequestType, token, options)\n : options?.secret ||\n this.options.secret ||\n (key === 'privateKey'\n ? (options as JwtSignOptions)?.privateKey || this.options.privateKey\n : (options as JwtVerifyOptions)?.publicKey ||\n this.options.publicKey) ||\n this.options[key]\n\n return secret as GetSecretKeyResult\n }\n}\n","import type { BoundInjectionToken, FactoryInjectionToken } from '@navios/core'\n\nimport { InjectionToken } from '@navios/core'\n\nimport type { JwtServiceOptions } from './options/jwt-service.options.mjs'\n\nimport { JwtService, JwtServiceToken } from './jwt.service.mjs'\nimport { JwtServiceOptionsSchema } from './options/jwt-service.options.mjs'\n\nexport function provideJwtService(\n config: JwtServiceOptions | (() => Promise<JwtServiceOptions>),\n):\n | BoundInjectionToken<JwtService, typeof JwtServiceOptionsSchema>\n | FactoryInjectionToken<JwtService, typeof JwtServiceOptionsSchema> {\n if (typeof config === 'function') {\n return InjectionToken.factory(JwtServiceToken, config)\n }\n return InjectionToken.bound(JwtServiceToken, config)\n}\n","import jwt from 'jsonwebtoken'\n\nexport * from './options/jwt-service.options.mjs'\nexport * from './jwt.service.mjs'\nexport * from './jwt-service.provider.mjs'\nexport const TokenExpiredError = jwt.TokenExpiredError\nexport const NotBeforeError = jwt.NotBeforeError\nexport const JsonWebTokenError = jwt.JsonWebTokenError\n"]}
1
+ {"version":3,"sources":["../src/options/jwt-service.options.mts","../src/jwt.service.mts","../src/jwt-service.provider.mts","../src/index.mts"],"names":["RequestType","InjectionToken","jwt"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { Secret as JwtSecret } from 'jsonwebtoken'\n\nimport { z } from 'zod/v4'\n\nexport enum RequestType {\n Sign = 'Sign',\n Verify = 'Verify',\n}\n\nexport const AlgorithmType = z.enum([\n 'HS256',\n 'HS384',\n 'HS512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'ES256',\n 'ES384',\n 'ES512',\n 'PS256',\n 'PS384',\n 'PS512',\n 'none',\n])\n\nexport const JwtHeaderSchema = z.object({\n alg: AlgorithmType.or(z.string()),\n typ: z.string().optional(),\n cty: z.string().optional(),\n crit: z.string().array().optional(),\n kid: z.string().optional(),\n jku: z.string().optional(),\n x5u: z.union([z.string(), z.array(z.string())]).optional(),\n 'x5t#S256': z.string().optional(),\n x5t: z.string().optional(),\n x5c: z.union([z.string(), z.array(z.string())]).optional(),\n})\n\nexport type JwtHeader = z.infer<typeof JwtHeaderSchema>\n\nexport const SignOptionsSchema = z.object({\n algorithm: AlgorithmType.optional(),\n keyid: z.string().optional(),\n expiresIn: z.union([z.string(), z.number()]).optional(),\n notBefore: z.union([z.string(), z.number()]).optional(),\n audience: z\n .union([\n z.string(),\n z.instanceof(RegExp),\n z.array(z.union([z.string(), z.instanceof(RegExp)])),\n ])\n .optional(),\n subject: z.string().optional(),\n issuer: z.string().optional(),\n jwtid: z.string().optional(),\n mutatePayload: z.boolean().optional(),\n noTimestamp: z.boolean().optional(),\n header: JwtHeaderSchema.optional(),\n encoding: z.string().optional(),\n allowInsecureKeySizes: z.boolean().optional(),\n allowInvalidAsymmetricKeyTypes: z.boolean().optional(),\n})\n\nexport type SignOptions = z.infer<typeof SignOptionsSchema>\n\nexport const VerifyOptionsSchema = z.object({\n algorithms: AlgorithmType.array().optional(),\n audience: z\n .union([\n z.string(),\n z.instanceof(RegExp),\n z.array(z.union([z.string(), z.instanceof(RegExp)])),\n ])\n .optional(),\n clockTimestamp: z.number().optional(),\n clockTolerance: z.number().optional(),\n complete: z.boolean().optional(),\n issuer: z.union([z.string(), z.string().array()]).optional(),\n ignoreExpiration: z.boolean().optional(),\n ignoreNotBefore: z.boolean().optional(),\n jwtid: z.string().optional(),\n nonce: z.string().optional(),\n subject: z.string().optional(),\n maxAge: z.union([z.string(), z.number()]).optional(),\n allowInvalidAsymmetricKeyTypes: z.boolean().optional(),\n})\n\nexport type VerifyOptions = z.infer<typeof VerifyOptionsSchema>\n\nexport const SecretSchema = z.union([\n z.string(),\n z.instanceof(Buffer),\n z\n .object({\n type: z.string(),\n })\n .passthrough(),\n z.object({\n key: z.union([z.string(), z.instanceof(Buffer)]),\n passphrase: z.string(),\n }),\n])\n\nexport type Secret = z.infer<typeof SecretSchema>\n\nexport const JwtServiceOptionsSchema = z.object({\n signOptions: SignOptionsSchema.optional(),\n secret: z.string().optional(),\n publicKey: z.union([z.string(), z.instanceof(Buffer)]).optional(),\n privateKey: SecretSchema.optional(),\n verifyOptions: VerifyOptionsSchema.optional(),\n secretOrKeyProvider: z\n .function({\n input: [\n z.enum(RequestType),\n z.any(),\n z.union([SignOptionsSchema, VerifyOptionsSchema]).optional(),\n ],\n output: z.union([SecretSchema, z.promise(SecretSchema)]),\n })\n .optional(),\n})\n\nexport type JwtServiceOptions = z.infer<typeof JwtServiceOptionsSchema>\n\nexport interface JwtSignOptions extends SignOptions {\n secret?: string | Buffer\n privateKey?: Secret\n}\n\nexport interface JwtVerifyOptions extends VerifyOptions {\n secret?: string | Buffer\n publicKey?: string | Buffer\n}\n\nexport type GetSecretKeyResult = string | Buffer | JwtSecret\n","import { Injectable, InjectionToken, Logger, syncInject } from '@navios/core'\n\nimport jwt from 'jsonwebtoken'\n\nimport type {\n GetSecretKeyResult,\n JwtServiceOptions,\n JwtSignOptions,\n JwtVerifyOptions,\n SignOptions,\n VerifyOptions,\n} from './options/jwt-service.options.mjs'\n\nimport {\n JwtServiceOptionsSchema,\n RequestType,\n} from './options/jwt-service.options.mjs'\n\nexport const JwtServiceToken = InjectionToken.create(\n Symbol.for('JwtService'),\n JwtServiceOptionsSchema,\n)\n\n@Injectable({\n token: JwtServiceToken,\n})\nexport class JwtService {\n logger = syncInject(Logger, {\n context: JwtService.name,\n })\n\n constructor(private readonly options: JwtServiceOptions = {}) {}\n\n sign(\n payload: string,\n options?: Omit<JwtSignOptions, keyof SignOptions>,\n ): string\n sign(payload: Buffer | object, options?: JwtSignOptions): string\n sign(\n payload: string | Buffer | object,\n options: JwtSignOptions = {},\n ): string {\n const signOptions = this.mergeJwtOptions(\n { ...options },\n 'signOptions',\n ) as jwt.SignOptions\n const secret = this.getSecretKey(\n payload,\n options,\n 'privateKey',\n RequestType.Sign,\n )\n\n if (secret instanceof Promise) {\n secret.catch(() => {}) // suppress rejection from async provider\n this.logger.warn(\n 'For async version of \"secretOrKeyProvider\", please use \"signAsync\".',\n )\n throw new Error()\n }\n\n const allowedSignOptKeys = ['secret', 'privateKey']\n const signOptKeys = Object.keys(signOptions)\n if (\n typeof payload === 'string' &&\n signOptKeys.some((k) => !allowedSignOptKeys.includes(k))\n ) {\n throw new Error(\n 'Payload as string is not allowed with the following sign options: ' +\n signOptKeys.join(', '),\n )\n }\n\n return jwt.sign(payload, secret, signOptions)\n }\n\n signAsync(\n payload: string,\n options?: Omit<JwtSignOptions, keyof jwt.SignOptions>,\n ): Promise<string>\n signAsync(payload: Buffer | object, options?: JwtSignOptions): Promise<string>\n signAsync(\n payload: string | Buffer | object,\n options: JwtSignOptions = {},\n ): Promise<string> {\n const signOptions = this.mergeJwtOptions(\n { ...options },\n 'signOptions',\n ) as jwt.SignOptions\n const secret = this.getSecretKey(\n payload,\n options,\n 'privateKey',\n RequestType.Sign,\n )\n\n const allowedSignOptKeys = ['secret', 'privateKey']\n const signOptKeys = Object.keys(signOptions)\n if (\n typeof payload === 'string' &&\n signOptKeys.some((k) => !allowedSignOptKeys.includes(k))\n ) {\n throw new Error(\n 'Payload as string is not allowed with the following sign options: ' +\n signOptKeys.join(', '),\n )\n }\n\n return new Promise((resolve, reject) =>\n Promise.resolve()\n .then(() => secret)\n .then((scrt: GetSecretKeyResult) => {\n jwt.sign(payload, scrt, signOptions, (err, encoded) =>\n err ? reject(err) : resolve(encoded as string),\n )\n }),\n )\n }\n\n verify<T extends object = any>(\n token: string,\n options: JwtVerifyOptions = {},\n ): T {\n const verifyOptions = this.mergeJwtOptions({ ...options }, 'verifyOptions')\n const secret = this.getSecretKey(\n token,\n options,\n 'publicKey',\n RequestType.Verify,\n )\n\n if (secret instanceof Promise) {\n secret.catch(() => {}) // suppress rejection from async provider\n this.logger.warn(\n 'For async version of \"secretOrKeyProvider\", please use \"verifyAsync\".',\n )\n throw new Error()\n }\n\n // @ts-expect-error We check it\n return jwt.verify(token, secret, verifyOptions) as unknown as T\n }\n\n verifyAsync<T extends object = any>(\n token: string,\n options: JwtVerifyOptions = {},\n ): Promise<T> {\n const verifyOptions = this.mergeJwtOptions({ ...options }, 'verifyOptions')\n const secret = this.getSecretKey(\n token,\n options,\n 'publicKey',\n RequestType.Verify,\n )\n\n return new Promise((resolve, reject) =>\n Promise.resolve()\n .then(() => secret)\n .then((scrt: GetSecretKeyResult) => {\n // @ts-expect-error We check it\n jwt.verify(token, scrt, verifyOptions, (err, decoded) =>\n err ? reject(err) : resolve(decoded as T),\n )\n })\n .catch(reject),\n )\n }\n\n decode<T = any>(token: string, options?: jwt.DecodeOptions): T {\n return jwt.decode(token, options) as T\n }\n\n private mergeJwtOptions(\n options: JwtVerifyOptions | JwtSignOptions,\n key: 'verifyOptions' | 'signOptions',\n ): VerifyOptions | SignOptions {\n delete options.secret\n if (key === 'signOptions') {\n delete (options as JwtSignOptions).privateKey\n } else {\n delete (options as JwtVerifyOptions).publicKey\n }\n return options\n ? {\n ...(this.options[key] || {}),\n ...options,\n }\n : // @ts-expect-error We check it\n this.options[key]\n }\n\n private getSecretKey(\n token: string | object | Buffer,\n options: JwtVerifyOptions | JwtSignOptions,\n key: 'publicKey' | 'privateKey',\n secretRequestType: RequestType,\n ): GetSecretKeyResult | Promise<GetSecretKeyResult> {\n const secret = this.options.secretOrKeyProvider\n ? this.options.secretOrKeyProvider(secretRequestType, token, options)\n : options?.secret ||\n this.options.secret ||\n (key === 'privateKey'\n ? (options as JwtSignOptions)?.privateKey || this.options.privateKey\n : (options as JwtVerifyOptions)?.publicKey ||\n this.options.publicKey) ||\n this.options[key]\n\n return secret as GetSecretKeyResult\n }\n}\n","import type { BoundInjectionToken, FactoryInjectionToken } from '@navios/core'\n\nimport { InjectionToken } from '@navios/core'\n\nimport type { JwtServiceOptions } from './options/jwt-service.options.mjs'\n\nimport { JwtService, JwtServiceToken } from './jwt.service.mjs'\nimport { JwtServiceOptionsSchema } from './options/jwt-service.options.mjs'\n\nexport function provideJwtService(\n config: JwtServiceOptions,\n): BoundInjectionToken<JwtService, typeof JwtServiceOptionsSchema>\nexport function provideJwtService(\n config: () => Promise<JwtServiceOptions>,\n): FactoryInjectionToken<JwtService, typeof JwtServiceOptionsSchema>\nexport function provideJwtService(\n config: JwtServiceOptions | (() => Promise<JwtServiceOptions>),\n):\n | BoundInjectionToken<JwtService, typeof JwtServiceOptionsSchema>\n | FactoryInjectionToken<JwtService, typeof JwtServiceOptionsSchema> {\n if (typeof config === 'function') {\n return InjectionToken.factory(JwtServiceToken, config)\n }\n return InjectionToken.bound(JwtServiceToken, config)\n}\n","import jwt from 'jsonwebtoken'\n\nexport * from './options/jwt-service.options.mjs'\nexport * from './jwt.service.mjs'\nexport * from './jwt-service.provider.mjs'\nexport const TokenExpiredError = jwt.TokenExpiredError\nexport const NotBeforeError = jwt.NotBeforeError\nexport const JsonWebTokenError = jwt.JsonWebTokenError\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@navios/jwt",
3
3
  "description": "JWT authentication and authorization for Navios",
4
- "version": "0.3.0",
4
+ "version": "0.4.0",
5
5
  "author": {
6
6
  "name": "Oleksandr Hanzha",
7
7
  "email": "alex@granted.name"
@@ -13,8 +13,8 @@
13
13
  },
14
14
  "license": "MIT",
15
15
  "peerDependencies": {
16
- "@navios/core": "^0.3.0",
17
- "zod": "^3.23.8"
16
+ "@navios/core": "^0.4.0",
17
+ "zod": "^3.25.0 || ^4.0.0"
18
18
  },
19
19
  "typings": "./lib/index.d.mts",
20
20
  "main": "./lib/index.js",
@@ -32,9 +32,9 @@
32
32
  }
33
33
  },
34
34
  "devDependencies": {
35
- "@navios/core": "^0.3.0",
36
- "@types/jsonwebtoken": "^9.0.9",
37
- "zod": "^3.24.4"
35
+ "@navios/core": "^0.4.0",
36
+ "@types/jsonwebtoken": "^9.0.10",
37
+ "zod": "^4.1.4"
38
38
  },
39
39
  "dependencies": {
40
40
  "jsonwebtoken": "^9.0.2"
@@ -7,6 +7,12 @@ import type { JwtServiceOptions } from './options/jwt-service.options.mjs'
7
7
  import { JwtService, JwtServiceToken } from './jwt.service.mjs'
8
8
  import { JwtServiceOptionsSchema } from './options/jwt-service.options.mjs'
9
9
 
10
+ export function provideJwtService(
11
+ config: JwtServiceOptions,
12
+ ): BoundInjectionToken<JwtService, typeof JwtServiceOptionsSchema>
13
+ export function provideJwtService(
14
+ config: () => Promise<JwtServiceOptions>,
15
+ ): FactoryInjectionToken<JwtService, typeof JwtServiceOptionsSchema>
10
16
  export function provideJwtService(
11
17
  config: JwtServiceOptions | (() => Promise<JwtServiceOptions>),
12
18
  ):
@@ -137,6 +137,7 @@ export class JwtService {
137
137
  throw new Error()
138
138
  }
139
139
 
140
+ // @ts-expect-error We check it
140
141
  return jwt.verify(token, secret, verifyOptions) as unknown as T
141
142
  }
142
143
 
@@ -156,6 +157,7 @@ export class JwtService {
156
157
  Promise.resolve()
157
158
  .then(() => secret)
158
159
  .then((scrt: GetSecretKeyResult) => {
160
+ // @ts-expect-error We check it
159
161
  jwt.verify(token, scrt, verifyOptions, (err, decoded) =>
160
162
  err ? reject(err) : resolve(decoded as T),
161
163
  )
@@ -1,6 +1,6 @@
1
1
  import type { Secret as JwtSecret } from 'jsonwebtoken'
2
2
 
3
- import { z } from 'zod'
3
+ import { z } from 'zod/v4'
4
4
 
5
5
  export enum RequestType {
6
6
  Sign = 'Sign',
@@ -43,7 +43,13 @@ export const SignOptionsSchema = z.object({
43
43
  keyid: z.string().optional(),
44
44
  expiresIn: z.union([z.string(), z.number()]).optional(),
45
45
  notBefore: z.union([z.string(), z.number()]).optional(),
46
- audience: z.union([z.string(), z.string().array()]).optional(),
46
+ audience: z
47
+ .union([
48
+ z.string(),
49
+ z.instanceof(RegExp),
50
+ z.array(z.union([z.string(), z.instanceof(RegExp)])),
51
+ ])
52
+ .optional(),
47
53
  subject: z.string().optional(),
48
54
  issuer: z.string().optional(),
49
55
  jwtid: z.string().optional(),
@@ -60,7 +66,11 @@ export type SignOptions = z.infer<typeof SignOptionsSchema>
60
66
  export const VerifyOptionsSchema = z.object({
61
67
  algorithms: AlgorithmType.array().optional(),
62
68
  audience: z
63
- .union([z.string(), z.instanceof(RegExp), z.string().array()])
69
+ .union([
70
+ z.string(),
71
+ z.instanceof(RegExp),
72
+ z.array(z.union([z.string(), z.instanceof(RegExp)])),
73
+ ])
64
74
  .optional(),
65
75
  clockTimestamp: z.number().optional(),
66
76
  clockTolerance: z.number().optional(),
@@ -100,13 +110,14 @@ export const JwtServiceOptionsSchema = z.object({
100
110
  privateKey: SecretSchema.optional(),
101
111
  verifyOptions: VerifyOptionsSchema.optional(),
102
112
  secretOrKeyProvider: z
103
- .function()
104
- .args(
105
- z.nativeEnum(RequestType),
106
- z.any(),
107
- z.union([SignOptionsSchema, VerifyOptionsSchema]).optional(),
108
- )
109
- .returns(z.union([SecretSchema, z.promise(SecretSchema)]))
113
+ .function({
114
+ input: [
115
+ z.enum(RequestType),
116
+ z.any(),
117
+ z.union([SignOptionsSchema, VerifyOptionsSchema]).optional(),
118
+ ],
119
+ output: z.union([SecretSchema, z.promise(SecretSchema)]),
120
+ })
110
121
  .optional(),
111
122
  })
112
123