@navios/jwt 0.1.1 → 0.3.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.
@@ -0,0 +1,21 @@
1
+ export { TokenExpiredError } from './_tsup-dts-rollup.mjs';
2
+ export { NotBeforeError } from './_tsup-dts-rollup.mjs';
3
+ export { JsonWebTokenError } from './_tsup-dts-rollup.mjs';
4
+ export { RequestType } from './_tsup-dts-rollup.mjs';
5
+ export { AlgorithmType } from './_tsup-dts-rollup.mjs';
6
+ export { JwtHeaderSchema } from './_tsup-dts-rollup.mjs';
7
+ export { JwtHeader } from './_tsup-dts-rollup.mjs';
8
+ export { SignOptionsSchema } from './_tsup-dts-rollup.mjs';
9
+ export { SignOptions } from './_tsup-dts-rollup.mjs';
10
+ export { VerifyOptionsSchema } from './_tsup-dts-rollup.mjs';
11
+ export { VerifyOptions } from './_tsup-dts-rollup.mjs';
12
+ export { SecretSchema } from './_tsup-dts-rollup.mjs';
13
+ export { Secret } from './_tsup-dts-rollup.mjs';
14
+ export { JwtServiceOptionsSchema } from './_tsup-dts-rollup.mjs';
15
+ export { JwtServiceOptions } from './_tsup-dts-rollup.mjs';
16
+ export { JwtSignOptions } from './_tsup-dts-rollup.mjs';
17
+ export { JwtVerifyOptions } from './_tsup-dts-rollup.mjs';
18
+ export { GetSecretKeyResult } from './_tsup-dts-rollup.mjs';
19
+ export { JwtServiceToken } from './_tsup-dts-rollup.mjs';
20
+ export { JwtService } from './_tsup-dts-rollup.mjs';
21
+ export { provideJwtService } from './_tsup-dts-rollup.mjs';
package/lib/index.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ export { TokenExpiredError } from './_tsup-dts-rollup.js';
2
+ export { NotBeforeError } from './_tsup-dts-rollup.js';
3
+ export { JsonWebTokenError } from './_tsup-dts-rollup.js';
4
+ export { RequestType } from './_tsup-dts-rollup.js';
5
+ export { AlgorithmType } from './_tsup-dts-rollup.js';
6
+ export { JwtHeaderSchema } from './_tsup-dts-rollup.js';
7
+ export { JwtHeader } from './_tsup-dts-rollup.js';
8
+ export { SignOptionsSchema } from './_tsup-dts-rollup.js';
9
+ export { SignOptions } from './_tsup-dts-rollup.js';
10
+ export { VerifyOptionsSchema } from './_tsup-dts-rollup.js';
11
+ export { VerifyOptions } from './_tsup-dts-rollup.js';
12
+ export { SecretSchema } from './_tsup-dts-rollup.js';
13
+ export { Secret } from './_tsup-dts-rollup.js';
14
+ export { JwtServiceOptionsSchema } from './_tsup-dts-rollup.js';
15
+ export { JwtServiceOptions } from './_tsup-dts-rollup.js';
16
+ export { JwtSignOptions } from './_tsup-dts-rollup.js';
17
+ export { JwtVerifyOptions } from './_tsup-dts-rollup.js';
18
+ export { GetSecretKeyResult } from './_tsup-dts-rollup.js';
19
+ export { JwtServiceToken } from './_tsup-dts-rollup.js';
20
+ export { JwtService } from './_tsup-dts-rollup.js';
21
+ export { provideJwtService } from './_tsup-dts-rollup.js';
package/lib/index.js ADDED
@@ -0,0 +1,290 @@
1
+ 'use strict';
2
+
3
+ var jwt = require('jsonwebtoken');
4
+ var zod = require('zod');
5
+ var core = require('@navios/core');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var jwt__default = /*#__PURE__*/_interopDefault(jwt);
10
+
11
+ var __create = Object.create;
12
+ var __defProp = Object.defineProperty;
13
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
14
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
15
+ var __typeError = (msg) => {
16
+ throw TypeError(msg);
17
+ };
18
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
19
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
20
+ var __decoratorStart = (base) => [, , , __create(null)];
21
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
22
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
23
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
24
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
25
+ var __runInitializers = (array, flags, self, value) => {
26
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self) ;
27
+ return value;
28
+ };
29
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
30
+ var it, done, ctx, k = flags & 7, p = false;
31
+ var j = 0;
32
+ var extraInitializers = array[j] || (array[j] = []);
33
+ var desc = k && ((target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(target , name));
34
+ __name(target, name);
35
+ for (var i = decorators.length - 1; i >= 0; i--) {
36
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
37
+ it = (0, decorators[i])(target, ctx), done._ = 1;
38
+ __expectFn(it) && (target = it);
39
+ }
40
+ return __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
41
+ };
42
+ var RequestType = /* @__PURE__ */ ((RequestType2) => {
43
+ RequestType2["Sign"] = "Sign";
44
+ RequestType2["Verify"] = "Verify";
45
+ return RequestType2;
46
+ })(RequestType || {});
47
+ var AlgorithmType = zod.z.enum([
48
+ "HS256",
49
+ "HS384",
50
+ "HS512",
51
+ "RS256",
52
+ "RS384",
53
+ "RS512",
54
+ "ES256",
55
+ "ES384",
56
+ "ES512",
57
+ "PS256",
58
+ "PS384",
59
+ "PS512",
60
+ "none"
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()
73
+ });
74
+ var SignOptionsSchema = zod.z.object({
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(),
85
+ header: JwtHeaderSchema.optional(),
86
+ encoding: zod.z.string().optional(),
87
+ allowInsecureKeySizes: zod.z.boolean().optional(),
88
+ allowInvalidAsymmetricKeyTypes: zod.z.boolean().optional()
89
+ });
90
+ var VerifyOptionsSchema = zod.z.object({
91
+ 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()
104
+ });
105
+ var SecretSchema = zod.z.union([
106
+ zod.z.string(),
107
+ zod.z.instanceof(Buffer),
108
+ zod.z.object({
109
+ type: zod.z.string()
110
+ }).passthrough(),
111
+ zod.z.object({
112
+ key: zod.z.union([zod.z.string(), zod.z.instanceof(Buffer)]),
113
+ passphrase: zod.z.string()
114
+ })
115
+ ]);
116
+ var JwtServiceOptionsSchema = zod.z.object({
117
+ signOptions: SignOptionsSchema.optional(),
118
+ secret: zod.z.string().optional(),
119
+ publicKey: zod.z.union([zod.z.string(), zod.z.instanceof(Buffer)]).optional(),
120
+ privateKey: SecretSchema.optional(),
121
+ 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()
127
+ });
128
+ var JwtServiceToken = core.InjectionToken.create(
129
+ Symbol.for("JwtService"),
130
+ JwtServiceOptionsSchema
131
+ );
132
+ var _JwtService_decorators, _init;
133
+ _JwtService_decorators = [core.Injectable({
134
+ token: JwtServiceToken
135
+ })];
136
+ var _JwtService = class _JwtService {
137
+ constructor(options = {}) {
138
+ this.options = options;
139
+ }
140
+ logger = core.syncInject(core.Logger, {
141
+ context: _JwtService.name
142
+ });
143
+ sign(payload, options = {}) {
144
+ const signOptions = this.mergeJwtOptions(
145
+ { ...options },
146
+ "signOptions"
147
+ );
148
+ const secret = this.getSecretKey(
149
+ payload,
150
+ options,
151
+ "privateKey",
152
+ "Sign" /* Sign */
153
+ );
154
+ if (secret instanceof Promise) {
155
+ secret.catch(() => {
156
+ });
157
+ this.logger.warn(
158
+ 'For async version of "secretOrKeyProvider", please use "signAsync".'
159
+ );
160
+ throw new Error();
161
+ }
162
+ const allowedSignOptKeys = ["secret", "privateKey"];
163
+ const signOptKeys = Object.keys(signOptions);
164
+ if (typeof payload === "string" && signOptKeys.some((k) => !allowedSignOptKeys.includes(k))) {
165
+ throw new Error(
166
+ "Payload as string is not allowed with the following sign options: " + signOptKeys.join(", ")
167
+ );
168
+ }
169
+ return jwt__default.default.sign(payload, secret, signOptions);
170
+ }
171
+ signAsync(payload, options = {}) {
172
+ const signOptions = this.mergeJwtOptions(
173
+ { ...options },
174
+ "signOptions"
175
+ );
176
+ const secret = this.getSecretKey(
177
+ payload,
178
+ options,
179
+ "privateKey",
180
+ "Sign" /* Sign */
181
+ );
182
+ const allowedSignOptKeys = ["secret", "privateKey"];
183
+ const signOptKeys = Object.keys(signOptions);
184
+ if (typeof payload === "string" && signOptKeys.some((k) => !allowedSignOptKeys.includes(k))) {
185
+ throw new Error(
186
+ "Payload as string is not allowed with the following sign options: " + signOptKeys.join(", ")
187
+ );
188
+ }
189
+ return new Promise(
190
+ (resolve, reject) => Promise.resolve().then(() => secret).then((scrt) => {
191
+ jwt__default.default.sign(
192
+ payload,
193
+ scrt,
194
+ signOptions,
195
+ (err, encoded) => err ? reject(err) : resolve(encoded)
196
+ );
197
+ })
198
+ );
199
+ }
200
+ verify(token, options = {}) {
201
+ const verifyOptions = this.mergeJwtOptions({ ...options }, "verifyOptions");
202
+ const secret = this.getSecretKey(
203
+ token,
204
+ options,
205
+ "publicKey",
206
+ "Verify" /* Verify */
207
+ );
208
+ if (secret instanceof Promise) {
209
+ secret.catch(() => {
210
+ });
211
+ this.logger.warn(
212
+ 'For async version of "secretOrKeyProvider", please use "verifyAsync".'
213
+ );
214
+ throw new Error();
215
+ }
216
+ return jwt__default.default.verify(token, secret, verifyOptions);
217
+ }
218
+ verifyAsync(token, options = {}) {
219
+ const verifyOptions = this.mergeJwtOptions({ ...options }, "verifyOptions");
220
+ const secret = this.getSecretKey(
221
+ token,
222
+ options,
223
+ "publicKey",
224
+ "Verify" /* Verify */
225
+ );
226
+ return new Promise(
227
+ (resolve, reject) => Promise.resolve().then(() => secret).then((scrt) => {
228
+ jwt__default.default.verify(
229
+ token,
230
+ scrt,
231
+ verifyOptions,
232
+ (err, decoded) => err ? reject(err) : resolve(decoded)
233
+ );
234
+ }).catch(reject)
235
+ );
236
+ }
237
+ decode(token, options) {
238
+ return jwt__default.default.decode(token, options);
239
+ }
240
+ mergeJwtOptions(options, key) {
241
+ delete options.secret;
242
+ if (key === "signOptions") {
243
+ delete options.privateKey;
244
+ } else {
245
+ delete options.publicKey;
246
+ }
247
+ return options ? {
248
+ ...this.options[key] || {},
249
+ ...options
250
+ } : (
251
+ // @ts-expect-error We check it
252
+ this.options[key]
253
+ );
254
+ }
255
+ getSecretKey(token, options, key, secretRequestType) {
256
+ const secret = this.options.secretOrKeyProvider ? this.options.secretOrKeyProvider(secretRequestType, token, options) : options?.secret || this.options.secret || (key === "privateKey" ? options?.privateKey || this.options.privateKey : options?.publicKey || this.options.publicKey) || this.options[key];
257
+ return secret;
258
+ }
259
+ };
260
+ _init = __decoratorStart();
261
+ _JwtService = __decorateElement(_init, 0, "JwtService", _JwtService_decorators, _JwtService);
262
+ __runInitializers(_init, 1, _JwtService);
263
+ var JwtService = _JwtService;
264
+ function provideJwtService(config) {
265
+ if (typeof config === "function") {
266
+ return core.InjectionToken.factory(JwtServiceToken, config);
267
+ }
268
+ return core.InjectionToken.bound(JwtServiceToken, config);
269
+ }
270
+
271
+ // src/index.mts
272
+ var TokenExpiredError = jwt__default.default.TokenExpiredError;
273
+ var NotBeforeError = jwt__default.default.NotBeforeError;
274
+ var JsonWebTokenError = jwt__default.default.JsonWebTokenError;
275
+
276
+ exports.AlgorithmType = AlgorithmType;
277
+ exports.JsonWebTokenError = JsonWebTokenError;
278
+ exports.JwtHeaderSchema = JwtHeaderSchema;
279
+ exports.JwtService = JwtService;
280
+ exports.JwtServiceOptionsSchema = JwtServiceOptionsSchema;
281
+ exports.JwtServiceToken = JwtServiceToken;
282
+ exports.NotBeforeError = NotBeforeError;
283
+ exports.RequestType = RequestType;
284
+ exports.SecretSchema = SecretSchema;
285
+ exports.SignOptionsSchema = SignOptionsSchema;
286
+ exports.TokenExpiredError = TokenExpiredError;
287
+ exports.VerifyOptionsSchema = VerifyOptionsSchema;
288
+ exports.provideJwtService = provideJwtService;
289
+ //# sourceMappingURL=index.js.map
290
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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,3 +1,7 @@
1
+ import jwt from 'jsonwebtoken';
2
+ import { z } from 'zod';
3
+ import { InjectionToken, Injectable, syncInject, Logger } from '@navios/core';
4
+
1
5
  var __create = Object.create;
2
6
  var __defProp = Object.defineProperty;
3
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -7,50 +11,28 @@ var __typeError = (msg) => {
7
11
  };
8
12
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
13
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
- var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
14
+ var __decoratorStart = (base) => [, , , __create(null)];
11
15
  var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
12
16
  var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
13
17
  var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
14
18
  var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
15
19
  var __runInitializers = (array, flags, self, value) => {
16
- for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
20
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self) ;
17
21
  return value;
18
22
  };
19
23
  var __decorateElement = (array, flags, name, decorators, target, extra) => {
20
- var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
21
- var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
22
- var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
23
- var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
24
- return __privateGet(this, extra);
25
- }, set [name](x) {
26
- return __privateSet(this, extra, x);
27
- } }, name));
28
- k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
24
+ var it, done, ctx, k = flags & 7, p = false;
25
+ var j = 0;
26
+ var extraInitializers = array[j] || (array[j] = []);
27
+ var desc = k && ((target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(target , name));
28
+ __name(target, name);
29
29
  for (var i = decorators.length - 1; i >= 0; i--) {
30
30
  ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
31
- if (k) {
32
- ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
33
- if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
34
- if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
35
- }
36
- it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
37
- if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
38
- else if (typeof it !== "object" || it === null) __typeError("Object expected");
39
- else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
31
+ it = (0, decorators[i])(target, ctx), done._ = 1;
32
+ __expectFn(it) && (target = it);
40
33
  }
41
- return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
34
+ return __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
42
35
  };
43
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
44
- var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
45
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
46
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
47
- var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
48
-
49
- // packages/jwt/src/index.mts
50
- import jwt2 from "jsonwebtoken";
51
-
52
- // packages/jwt/src/options/jwt-service.options.mts
53
- import { z } from "zod";
54
36
  var RequestType = /* @__PURE__ */ ((RequestType2) => {
55
37
  RequestType2["Sign"] = "Sign";
56
38
  RequestType2["Verify"] = "Verify";
@@ -137,12 +119,14 @@ var JwtServiceOptionsSchema = z.object({
137
119
  z.union([SignOptionsSchema, VerifyOptionsSchema]).optional()
138
120
  ).returns(z.union([SecretSchema, z.promise(SecretSchema)])).optional()
139
121
  });
140
-
141
- // packages/jwt/src/jwt.service.mts
142
- import { Injectable, Logger, syncInject } from "@navios/core";
143
- import jwt from "jsonwebtoken";
122
+ var JwtServiceToken = InjectionToken.create(
123
+ Symbol.for("JwtService"),
124
+ JwtServiceOptionsSchema
125
+ );
144
126
  var _JwtService_decorators, _init;
145
- _JwtService_decorators = [Injectable()];
127
+ _JwtService_decorators = [Injectable({
128
+ token: JwtServiceToken
129
+ })];
146
130
  var _JwtService = class _JwtService {
147
131
  constructor(options = {}) {
148
132
  this.options = options;
@@ -263,39 +247,14 @@ var _JwtService = class _JwtService {
263
247
  );
264
248
  }
265
249
  getSecretKey(token, options, key, secretRequestType) {
266
- const secret = this.options.secretOrKeyProvider ? this.options.secretOrKeyProvider(secretRequestType, token, options) : (options == null ? void 0 : options.secret) || this.options.secret || (key === "privateKey" ? (options == null ? void 0 : options.privateKey) || this.options.privateKey : (options == null ? void 0 : options.publicKey) || this.options.publicKey) || this.options[key];
250
+ const secret = this.options.secretOrKeyProvider ? this.options.secretOrKeyProvider(secretRequestType, token, options) : options?.secret || this.options.secret || (key === "privateKey" ? options?.privateKey || this.options.privateKey : options?.publicKey || this.options.publicKey) || this.options[key];
267
251
  return secret;
268
252
  }
269
253
  };
270
- _init = __decoratorStart(null);
254
+ _init = __decoratorStart();
271
255
  _JwtService = __decorateElement(_init, 0, "JwtService", _JwtService_decorators, _JwtService);
272
256
  __runInitializers(_init, 1, _JwtService);
273
257
  var JwtService = _JwtService;
274
-
275
- // packages/jwt/src/jwt-service.provider.mts
276
- import {
277
- Injectable as Injectable2,
278
- InjectableType,
279
- InjectionToken,
280
- resolveService
281
- } from "@navios/core";
282
- var JwtServiceToken = InjectionToken.create(
283
- JwtService,
284
- JwtServiceOptionsSchema
285
- );
286
- var _JwtServiceFactory_decorators, _init2;
287
- _JwtServiceFactory_decorators = [Injectable2({
288
- token: JwtServiceToken,
289
- type: InjectableType.Factory
290
- })];
291
- var JwtServiceFactory = class {
292
- create(ctx, args) {
293
- return resolveService(ctx, JwtService, [args]);
294
- }
295
- };
296
- _init2 = __decoratorStart(null);
297
- JwtServiceFactory = __decorateElement(_init2, 0, "JwtServiceFactory", _JwtServiceFactory_decorators, JwtServiceFactory);
298
- __runInitializers(_init2, 1, JwtServiceFactory);
299
258
  function provideJwtService(config) {
300
259
  if (typeof config === "function") {
301
260
  return InjectionToken.factory(JwtServiceToken, config);
@@ -303,24 +262,11 @@ function provideJwtService(config) {
303
262
  return InjectionToken.bound(JwtServiceToken, config);
304
263
  }
305
264
 
306
- // packages/jwt/src/index.mts
307
- var TokenExpiredError = jwt2.TokenExpiredError;
308
- var NotBeforeError = jwt2.NotBeforeError;
309
- var JsonWebTokenError = jwt2.JsonWebTokenError;
310
- export {
311
- AlgorithmType,
312
- JsonWebTokenError,
313
- JwtHeaderSchema,
314
- JwtService,
315
- JwtServiceFactory,
316
- JwtServiceOptionsSchema,
317
- JwtServiceToken,
318
- NotBeforeError,
319
- RequestType,
320
- SecretSchema,
321
- SignOptionsSchema,
322
- TokenExpiredError,
323
- VerifyOptionsSchema,
324
- provideJwtService
325
- };
265
+ // src/index.mts
266
+ var TokenExpiredError = jwt.TokenExpiredError;
267
+ var NotBeforeError = jwt.NotBeforeError;
268
+ var JsonWebTokenError = jwt.JsonWebTokenError;
269
+
270
+ export { AlgorithmType, JsonWebTokenError, JwtHeaderSchema, JwtService, JwtServiceOptionsSchema, JwtServiceToken, NotBeforeError, RequestType, SecretSchema, SignOptionsSchema, TokenExpiredError, VerifyOptionsSchema, provideJwtService };
271
+ //# sourceMappingURL=index.mjs.map
326
272
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +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"]}
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.1.1",
4
+ "version": "0.3.0",
5
5
  "author": {
6
6
  "name": "Oleksandr Hanzha",
7
7
  "email": "alex@granted.name"
@@ -12,30 +12,29 @@
12
12
  "url": "https://github.com/Arilas/navios.git"
13
13
  },
14
14
  "license": "MIT",
15
- "typings": "./dist/index.d.ts",
16
- "main": "./dist/index.js",
17
- "module": "./dist/index.mjs",
18
15
  "peerDependencies": {
19
- "@navios/core": "^0.1.5",
16
+ "@navios/core": "^0.3.0",
20
17
  "zod": "^3.23.8"
21
18
  },
19
+ "typings": "./lib/index.d.mts",
20
+ "main": "./lib/index.js",
21
+ "module": "./lib/index.mjs",
22
22
  "exports": {
23
23
  ".": {
24
24
  "import": {
25
- "types": "./dist/index.d.mts",
26
- "default": "./dist/index.mjs"
25
+ "types": "./lib/index.d.mts",
26
+ "default": "./lib/index.mjs"
27
27
  },
28
28
  "require": {
29
- "types": "./dist/index.d.ts",
30
- "default": "./dist/index.js"
29
+ "types": "./lib/index.d.ts",
30
+ "default": "./lib/index.js"
31
31
  }
32
- },
33
- "./package.json": "./package.json"
32
+ }
34
33
  },
35
34
  "devDependencies": {
36
- "@navios/core": "^0.1.5",
37
- "@types/jsonwebtoken": "^9",
38
- "zod": "^3.24.3"
35
+ "@navios/core": "^0.3.0",
36
+ "@types/jsonwebtoken": "^9.0.9",
37
+ "zod": "^3.24.4"
39
38
  },
40
39
  "dependencies": {
41
40
  "jsonwebtoken": "^9.0.2"