@navios/jwt 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/project.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@navios/jwt",
3
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
4
+ "sourceRoot": "packages/jwt/src",
5
+ "prefix": "jwt",
6
+ "tags": [],
7
+ "projectType": "library",
8
+ "targets": {
9
+ "check": {
10
+ "executor": "nx:run-commands",
11
+ "outputs": ["{projectRoot}/dist"],
12
+ "inputs": ["^projectSources", "projectSources"],
13
+ "options": {
14
+ "command": ["tsc -b"],
15
+ "cwd": "packages/jwt"
16
+ }
17
+ },
18
+ "test:ci": {
19
+ "executor": "nx:run-commands",
20
+ "inputs": ["^projectSources", "project"],
21
+ "options": {
22
+ "command": "vitest run",
23
+ "cwd": "packages/jwt"
24
+ }
25
+ },
26
+ "build": {
27
+ "executor": "nx:run-commands",
28
+ "inputs": ["projectSources"],
29
+ "outputs": ["{projectRoot}/lib"],
30
+ "dependsOn": ["check"],
31
+ "options": {
32
+ "command": "tsup",
33
+ "cwd": "packages/jwt"
34
+ }
35
+ },
36
+ "publish": {
37
+ "executor": "nx:run-commands",
38
+ "dependsOn": ["build"],
39
+ "options": {
40
+ "command": "yarn npm publish --access public",
41
+ "cwd": "packages/jwt"
42
+ }
43
+ },
44
+ "publish:next": {
45
+ "executor": "nx:run-commands",
46
+ "dependsOn": ["build"],
47
+ "options": {
48
+ "command": "yarn npm publish --access public --tag next",
49
+ "cwd": "packages/jwt"
50
+ }
51
+ }
52
+ }
53
+ }
@@ -1,36 +1,18 @@
1
- import type {
2
- BoundInjectionToken,
3
- FactoryContext,
4
- FactoryInjectionToken,
5
- } from '@navios/core'
1
+ import type { BoundInjectionToken, FactoryInjectionToken } from '@navios/core'
6
2
 
7
- import {
8
- Injectable,
9
- InjectableType,
10
- InjectionToken,
11
- resolveService,
12
- } from '@navios/core'
3
+ import { InjectionToken } from '@navios/core'
13
4
 
14
5
  import type { JwtServiceOptions } from './options/jwt-service.options.mjs'
15
6
 
16
- import { JwtService } from './jwt.service.mjs'
7
+ import { JwtService, JwtServiceToken } from './jwt.service.mjs'
17
8
  import { JwtServiceOptionsSchema } from './options/jwt-service.options.mjs'
18
9
 
19
- export const JwtServiceToken = InjectionToken.create(
20
- JwtService,
21
- JwtServiceOptionsSchema,
22
- )
23
-
24
- @Injectable({
25
- token: JwtServiceToken,
26
- type: InjectableType.Factory,
27
- })
28
- export class JwtServiceFactory {
29
- create(ctx: FactoryContext, args: JwtServiceOptions) {
30
- return resolveService(ctx, JwtService, [args])
31
- }
32
- }
33
-
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>
34
16
  export function provideJwtService(
35
17
  config: JwtServiceOptions | (() => Promise<JwtServiceOptions>),
36
18
  ):
@@ -1,4 +1,4 @@
1
- import { Injectable, Logger, syncInject } from '@navios/core'
1
+ import { Injectable, InjectionToken, Logger, syncInject } from '@navios/core'
2
2
 
3
3
  import jwt from 'jsonwebtoken'
4
4
 
@@ -11,9 +11,19 @@ import type {
11
11
  VerifyOptions,
12
12
  } from './options/jwt-service.options.mjs'
13
13
 
14
- import { RequestType } from './options/jwt-service.options.mjs'
14
+ import {
15
+ JwtServiceOptionsSchema,
16
+ RequestType,
17
+ } from './options/jwt-service.options.mjs'
18
+
19
+ export const JwtServiceToken = InjectionToken.create(
20
+ Symbol.for('JwtService'),
21
+ JwtServiceOptionsSchema,
22
+ )
15
23
 
16
- @Injectable()
24
+ @Injectable({
25
+ token: JwtServiceToken,
26
+ })
17
27
  export class JwtService {
18
28
  logger = syncInject(Logger, {
19
29
  context: JwtService.name,
@@ -127,6 +137,7 @@ export class JwtService {
127
137
  throw new Error()
128
138
  }
129
139
 
140
+ // @ts-expect-error We check it
130
141
  return jwt.verify(token, secret, verifyOptions) as unknown as T
131
142
  }
132
143
 
@@ -146,6 +157,7 @@ export class JwtService {
146
157
  Promise.resolve()
147
158
  .then(() => secret)
148
159
  .then((scrt: GetSecretKeyResult) => {
160
+ // @ts-expect-error We check it
149
161
  jwt.verify(token, scrt, verifyOptions, (err, decoded) =>
150
162
  err ? reject(err) : resolve(decoded as T),
151
163
  )
@@ -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(),
package/tsconfig.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "module": "Node18",
5
+ "outDir": "dist"
6
+ },
7
+ "include": ["src/**/*"],
8
+ "references": [
9
+ {
10
+ "path": "../core"
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,12 @@
1
+ import { defineConfig } from 'tsup'
2
+
3
+ export default defineConfig({
4
+ entry: ['src/index.mts'],
5
+ outDir: 'lib',
6
+ format: ['esm', 'cjs'],
7
+ clean: true,
8
+ treeshake: 'smallest',
9
+ sourcemap: true,
10
+ platform: 'node',
11
+ experimentalDts: true,
12
+ })
@@ -0,0 +1,9 @@
1
+ import { defineProject } from 'vitest/config'
2
+
3
+ export default defineProject({
4
+ test: {
5
+ typecheck: {
6
+ enabled: true,
7
+ },
8
+ },
9
+ })
package/dist/index.js DELETED
@@ -1,365 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
9
- var __typeError = (msg) => {
10
- throw TypeError(msg);
11
- };
12
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
14
- var __export = (target, all) => {
15
- for (var name in all)
16
- __defProp(target, name, { get: all[name], enumerable: true });
17
- };
18
- var __copyProps = (to, from, except, desc) => {
19
- if (from && typeof from === "object" || typeof from === "function") {
20
- for (let key of __getOwnPropNames(from))
21
- if (!__hasOwnProp.call(to, key) && key !== except)
22
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
- }
24
- return to;
25
- };
26
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
27
- // If the importer is in node compatibility mode or this is not an ESM
28
- // file that has been converted to a CommonJS file using a Babel-
29
- // compatible transform (i.e. "__esModule" has not been set), then set
30
- // "default" to the CommonJS "module.exports" for node compatibility.
31
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
32
- mod
33
- ));
34
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
35
- var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
36
- var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
37
- var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
38
- var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
39
- var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
40
- var __runInitializers = (array, flags, self, value) => {
41
- 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);
42
- return value;
43
- };
44
- var __decorateElement = (array, flags, name, decorators, target, extra) => {
45
- var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
46
- var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
47
- var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
48
- var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
49
- return __privateGet(this, extra);
50
- }, set [name](x) {
51
- return __privateSet(this, extra, x);
52
- } }, name));
53
- k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
54
- for (var i = decorators.length - 1; i >= 0; i--) {
55
- ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
56
- if (k) {
57
- ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
58
- if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
59
- if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
60
- }
61
- 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;
62
- if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
63
- else if (typeof it !== "object" || it === null) __typeError("Object expected");
64
- else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
65
- }
66
- return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
67
- };
68
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
69
- var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
70
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
71
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
72
- var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
73
-
74
- // packages/jwt/src/index.mts
75
- var src_exports = {};
76
- __export(src_exports, {
77
- AlgorithmType: () => AlgorithmType,
78
- JsonWebTokenError: () => JsonWebTokenError,
79
- JwtHeaderSchema: () => JwtHeaderSchema,
80
- JwtService: () => JwtService,
81
- JwtServiceFactory: () => JwtServiceFactory,
82
- JwtServiceOptionsSchema: () => JwtServiceOptionsSchema,
83
- JwtServiceToken: () => JwtServiceToken,
84
- NotBeforeError: () => NotBeforeError,
85
- RequestType: () => RequestType,
86
- SecretSchema: () => SecretSchema,
87
- SignOptionsSchema: () => SignOptionsSchema,
88
- TokenExpiredError: () => TokenExpiredError,
89
- VerifyOptionsSchema: () => VerifyOptionsSchema,
90
- provideJwtService: () => provideJwtService
91
- });
92
- module.exports = __toCommonJS(src_exports);
93
- var import_jsonwebtoken2 = __toESM(require("jsonwebtoken"), 1);
94
-
95
- // packages/jwt/src/options/jwt-service.options.mts
96
- var import_zod = require("zod");
97
- var RequestType = /* @__PURE__ */ ((RequestType2) => {
98
- RequestType2["Sign"] = "Sign";
99
- RequestType2["Verify"] = "Verify";
100
- return RequestType2;
101
- })(RequestType || {});
102
- var AlgorithmType = import_zod.z.enum([
103
- "HS256",
104
- "HS384",
105
- "HS512",
106
- "RS256",
107
- "RS384",
108
- "RS512",
109
- "ES256",
110
- "ES384",
111
- "ES512",
112
- "PS256",
113
- "PS384",
114
- "PS512",
115
- "none"
116
- ]);
117
- var JwtHeaderSchema = import_zod.z.object({
118
- alg: AlgorithmType.or(import_zod.z.string()),
119
- typ: import_zod.z.string().optional(),
120
- cty: import_zod.z.string().optional(),
121
- crit: import_zod.z.string().array().optional(),
122
- kid: import_zod.z.string().optional(),
123
- jku: import_zod.z.string().optional(),
124
- x5u: import_zod.z.union([import_zod.z.string(), import_zod.z.array(import_zod.z.string())]).optional(),
125
- "x5t#S256": import_zod.z.string().optional(),
126
- x5t: import_zod.z.string().optional(),
127
- x5c: import_zod.z.union([import_zod.z.string(), import_zod.z.array(import_zod.z.string())]).optional()
128
- });
129
- var SignOptionsSchema = import_zod.z.object({
130
- algorithm: AlgorithmType.optional(),
131
- keyid: import_zod.z.string().optional(),
132
- expiresIn: import_zod.z.union([import_zod.z.string(), import_zod.z.number()]).optional(),
133
- notBefore: import_zod.z.union([import_zod.z.string(), import_zod.z.number()]).optional(),
134
- audience: import_zod.z.union([import_zod.z.string(), import_zod.z.string().array()]).optional(),
135
- subject: import_zod.z.string().optional(),
136
- issuer: import_zod.z.string().optional(),
137
- jwtid: import_zod.z.string().optional(),
138
- mutatePayload: import_zod.z.boolean().optional(),
139
- noTimestamp: import_zod.z.boolean().optional(),
140
- header: JwtHeaderSchema.optional(),
141
- encoding: import_zod.z.string().optional(),
142
- allowInsecureKeySizes: import_zod.z.boolean().optional(),
143
- allowInvalidAsymmetricKeyTypes: import_zod.z.boolean().optional()
144
- });
145
- var VerifyOptionsSchema = import_zod.z.object({
146
- algorithms: AlgorithmType.array().optional(),
147
- audience: import_zod.z.union([import_zod.z.string(), import_zod.z.instanceof(RegExp), import_zod.z.string().array()]).optional(),
148
- clockTimestamp: import_zod.z.number().optional(),
149
- clockTolerance: import_zod.z.number().optional(),
150
- complete: import_zod.z.boolean().optional(),
151
- issuer: import_zod.z.union([import_zod.z.string(), import_zod.z.string().array()]).optional(),
152
- ignoreExpiration: import_zod.z.boolean().optional(),
153
- ignoreNotBefore: import_zod.z.boolean().optional(),
154
- jwtid: import_zod.z.string().optional(),
155
- nonce: import_zod.z.string().optional(),
156
- subject: import_zod.z.string().optional(),
157
- maxAge: import_zod.z.union([import_zod.z.string(), import_zod.z.number()]).optional(),
158
- allowInvalidAsymmetricKeyTypes: import_zod.z.boolean().optional()
159
- });
160
- var SecretSchema = import_zod.z.union([
161
- import_zod.z.string(),
162
- import_zod.z.instanceof(Buffer),
163
- import_zod.z.object({
164
- type: import_zod.z.string()
165
- }).passthrough(),
166
- import_zod.z.object({
167
- key: import_zod.z.union([import_zod.z.string(), import_zod.z.instanceof(Buffer)]),
168
- passphrase: import_zod.z.string()
169
- })
170
- ]);
171
- var JwtServiceOptionsSchema = import_zod.z.object({
172
- signOptions: SignOptionsSchema.optional(),
173
- secret: import_zod.z.string().optional(),
174
- publicKey: import_zod.z.union([import_zod.z.string(), import_zod.z.instanceof(Buffer)]).optional(),
175
- privateKey: SecretSchema.optional(),
176
- verifyOptions: VerifyOptionsSchema.optional(),
177
- secretOrKeyProvider: import_zod.z.function().args(
178
- import_zod.z.nativeEnum(RequestType),
179
- import_zod.z.any(),
180
- import_zod.z.union([SignOptionsSchema, VerifyOptionsSchema]).optional()
181
- ).returns(import_zod.z.union([SecretSchema, import_zod.z.promise(SecretSchema)])).optional()
182
- });
183
-
184
- // packages/jwt/src/jwt.service.mts
185
- var import_core = require("@navios/core");
186
- var import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
187
- var _JwtService_decorators, _init;
188
- _JwtService_decorators = [(0, import_core.Injectable)()];
189
- var _JwtService = class _JwtService {
190
- constructor(options = {}) {
191
- this.options = options;
192
- }
193
- logger = (0, import_core.syncInject)(import_core.Logger, {
194
- context: _JwtService.name
195
- });
196
- sign(payload, options = {}) {
197
- const signOptions = this.mergeJwtOptions(
198
- { ...options },
199
- "signOptions"
200
- );
201
- const secret = this.getSecretKey(
202
- payload,
203
- options,
204
- "privateKey",
205
- "Sign" /* Sign */
206
- );
207
- if (secret instanceof Promise) {
208
- secret.catch(() => {
209
- });
210
- this.logger.warn(
211
- 'For async version of "secretOrKeyProvider", please use "signAsync".'
212
- );
213
- throw new Error();
214
- }
215
- const allowedSignOptKeys = ["secret", "privateKey"];
216
- const signOptKeys = Object.keys(signOptions);
217
- if (typeof payload === "string" && signOptKeys.some((k) => !allowedSignOptKeys.includes(k))) {
218
- throw new Error(
219
- "Payload as string is not allowed with the following sign options: " + signOptKeys.join(", ")
220
- );
221
- }
222
- return import_jsonwebtoken.default.sign(payload, secret, signOptions);
223
- }
224
- signAsync(payload, options = {}) {
225
- const signOptions = this.mergeJwtOptions(
226
- { ...options },
227
- "signOptions"
228
- );
229
- const secret = this.getSecretKey(
230
- payload,
231
- options,
232
- "privateKey",
233
- "Sign" /* Sign */
234
- );
235
- const allowedSignOptKeys = ["secret", "privateKey"];
236
- const signOptKeys = Object.keys(signOptions);
237
- if (typeof payload === "string" && signOptKeys.some((k) => !allowedSignOptKeys.includes(k))) {
238
- throw new Error(
239
- "Payload as string is not allowed with the following sign options: " + signOptKeys.join(", ")
240
- );
241
- }
242
- return new Promise(
243
- (resolve, reject) => Promise.resolve().then(() => secret).then((scrt) => {
244
- import_jsonwebtoken.default.sign(
245
- payload,
246
- scrt,
247
- signOptions,
248
- (err, encoded) => err ? reject(err) : resolve(encoded)
249
- );
250
- })
251
- );
252
- }
253
- verify(token, options = {}) {
254
- const verifyOptions = this.mergeJwtOptions({ ...options }, "verifyOptions");
255
- const secret = this.getSecretKey(
256
- token,
257
- options,
258
- "publicKey",
259
- "Verify" /* Verify */
260
- );
261
- if (secret instanceof Promise) {
262
- secret.catch(() => {
263
- });
264
- this.logger.warn(
265
- 'For async version of "secretOrKeyProvider", please use "verifyAsync".'
266
- );
267
- throw new Error();
268
- }
269
- return import_jsonwebtoken.default.verify(token, secret, verifyOptions);
270
- }
271
- verifyAsync(token, options = {}) {
272
- const verifyOptions = this.mergeJwtOptions({ ...options }, "verifyOptions");
273
- const secret = this.getSecretKey(
274
- token,
275
- options,
276
- "publicKey",
277
- "Verify" /* Verify */
278
- );
279
- return new Promise(
280
- (resolve, reject) => Promise.resolve().then(() => secret).then((scrt) => {
281
- import_jsonwebtoken.default.verify(
282
- token,
283
- scrt,
284
- verifyOptions,
285
- (err, decoded) => err ? reject(err) : resolve(decoded)
286
- );
287
- }).catch(reject)
288
- );
289
- }
290
- decode(token, options) {
291
- return import_jsonwebtoken.default.decode(token, options);
292
- }
293
- mergeJwtOptions(options, key) {
294
- delete options.secret;
295
- if (key === "signOptions") {
296
- delete options.privateKey;
297
- } else {
298
- delete options.publicKey;
299
- }
300
- return options ? {
301
- ...this.options[key] || {},
302
- ...options
303
- } : (
304
- // @ts-expect-error We check it
305
- this.options[key]
306
- );
307
- }
308
- getSecretKey(token, options, key, secretRequestType) {
309
- 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];
310
- return secret;
311
- }
312
- };
313
- _init = __decoratorStart(null);
314
- _JwtService = __decorateElement(_init, 0, "JwtService", _JwtService_decorators, _JwtService);
315
- __runInitializers(_init, 1, _JwtService);
316
- var JwtService = _JwtService;
317
-
318
- // packages/jwt/src/jwt-service.provider.mts
319
- var import_core2 = require("@navios/core");
320
- var JwtServiceToken = import_core2.InjectionToken.create(
321
- JwtService,
322
- JwtServiceOptionsSchema
323
- );
324
- var _JwtServiceFactory_decorators, _init2;
325
- _JwtServiceFactory_decorators = [(0, import_core2.Injectable)({
326
- token: JwtServiceToken,
327
- type: import_core2.InjectableType.Factory
328
- })];
329
- var JwtServiceFactory = class {
330
- create(ctx, args) {
331
- return (0, import_core2.resolveService)(ctx, JwtService, [args]);
332
- }
333
- };
334
- _init2 = __decoratorStart(null);
335
- JwtServiceFactory = __decorateElement(_init2, 0, "JwtServiceFactory", _JwtServiceFactory_decorators, JwtServiceFactory);
336
- __runInitializers(_init2, 1, JwtServiceFactory);
337
- function provideJwtService(config) {
338
- if (typeof config === "function") {
339
- return import_core2.InjectionToken.factory(JwtServiceToken, config);
340
- }
341
- return import_core2.InjectionToken.bound(JwtServiceToken, config);
342
- }
343
-
344
- // packages/jwt/src/index.mts
345
- var TokenExpiredError = import_jsonwebtoken2.default.TokenExpiredError;
346
- var NotBeforeError = import_jsonwebtoken2.default.NotBeforeError;
347
- var JsonWebTokenError = import_jsonwebtoken2.default.JsonWebTokenError;
348
- // Annotate the CommonJS export names for ESM import in node:
349
- 0 && (module.exports = {
350
- AlgorithmType,
351
- JsonWebTokenError,
352
- JwtHeaderSchema,
353
- JwtService,
354
- JwtServiceFactory,
355
- JwtServiceOptionsSchema,
356
- JwtServiceToken,
357
- NotBeforeError,
358
- RequestType,
359
- SecretSchema,
360
- SignOptionsSchema,
361
- TokenExpiredError,
362
- VerifyOptionsSchema,
363
- provideJwtService
364
- });
365
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../packages/jwt/src/index.mts","../../../../packages/jwt/src/options/jwt-service.options.mts","../../../../packages/jwt/src/jwt.service.mts","../../../../packages/jwt/src/jwt-service.provider.mts"],"sourcesContent":["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","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, 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 { RequestType } from './options/jwt-service.options.mjs'\n\n@Injectable()\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 {\n BoundInjectionToken,\n FactoryContext,\n FactoryInjectionToken,\n} from '@navios/core'\n\nimport {\n Injectable,\n InjectableType,\n InjectionToken,\n resolveService,\n} from '@navios/core'\n\nimport type { JwtServiceOptions } from './options/jwt-service.options.mjs'\n\nimport { JwtService } from './jwt.service.mjs'\nimport { JwtServiceOptionsSchema } from './options/jwt-service.options.mjs'\n\nexport const JwtServiceToken = InjectionToken.create(\n JwtService,\n JwtServiceOptionsSchema,\n)\n\n@Injectable({\n token: JwtServiceToken,\n type: InjectableType.Factory,\n})\nexport class JwtServiceFactory {\n create(ctx: FactoryContext, args: JwtServiceOptions) {\n return resolveService(ctx, JwtService, [args])\n }\n}\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"],"mappings":"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","names":["import_jsonwebtoken","RequestType","jwt","import_core","_init","jwt"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../packages/jwt/src/index.mts","../../../../packages/jwt/src/options/jwt-service.options.mts","../../../../packages/jwt/src/jwt.service.mts","../../../../packages/jwt/src/jwt-service.provider.mts"],"sourcesContent":["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","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, 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 { RequestType } from './options/jwt-service.options.mjs'\n\n@Injectable()\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 {\n BoundInjectionToken,\n FactoryContext,\n FactoryInjectionToken,\n} from '@navios/core'\n\nimport {\n Injectable,\n InjectableType,\n InjectionToken,\n resolveService,\n} from '@navios/core'\n\nimport type { JwtServiceOptions } from './options/jwt-service.options.mjs'\n\nimport { JwtService } from './jwt.service.mjs'\nimport { JwtServiceOptionsSchema } from './options/jwt-service.options.mjs'\n\nexport const JwtServiceToken = InjectionToken.create(\n JwtService,\n JwtServiceOptionsSchema,\n)\n\n@Injectable({\n token: JwtServiceToken,\n type: InjectableType.Factory,\n})\nexport class JwtServiceFactory {\n create(ctx: FactoryContext, args: JwtServiceOptions) {\n return resolveService(ctx, JwtService, [args])\n }\n}\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAOA,UAAS;;;ACEhB,SAAS,SAAS;AAEX,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,YAAS;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAM,gBAAgB,EAAE,KAAK;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,kBAAkB,EAAE,OAAO;AAAA,EACtC,KAAK,cAAc,GAAG,EAAE,OAAO,CAAC;AAAA,EAChC,KAAK,EAAE,OAAO,EAAE,SAAS;AAAA,EACzB,KAAK,EAAE,OAAO,EAAE,SAAS;AAAA,EACzB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS;AAAA,EAClC,KAAK,EAAE,OAAO,EAAE,SAAS;AAAA,EACzB,KAAK,EAAE,OAAO,EAAE,SAAS;AAAA,EACzB,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS;AAAA,EACzD,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC,KAAK,EAAE,OAAO,EAAE,SAAS;AAAA,EACzB,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS;AAC3D,CAAC;AAIM,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,WAAW,cAAc,SAAS;AAAA,EAClC,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EACtD,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EACtD,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS;AAAA,EAC7D,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,eAAe,EAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,aAAa,EAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,QAAQ,gBAAgB,SAAS;AAAA,EACjC,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,uBAAuB,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,gCAAgC,EAAE,QAAQ,EAAE,SAAS;AACvD,CAAC;AAIM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,YAAY,cAAc,MAAM,EAAE,SAAS;AAAA,EAC3C,UAAU,EACP,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,WAAW,MAAM,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EAC5D,SAAS;AAAA,EACZ,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,UAAU,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,QAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS;AAAA,EAC3D,kBAAkB,EAAE,QAAQ,EAAE,SAAS;AAAA,EACvC,iBAAiB,EAAE,QAAQ,EAAE,SAAS;AAAA,EACtC,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,QAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EACnD,gCAAgC,EAAE,QAAQ,EAAE,SAAS;AACvD,CAAC;AAIM,IAAM,eAAe,EAAE,MAAM;AAAA,EAClC,EAAE,OAAO;AAAA,EACT,EAAE,WAAW,MAAM;AAAA,EACnB,EACG,OAAO;AAAA,IACN,MAAM,EAAE,OAAO;AAAA,EACjB,CAAC,EACA,YAAY;AAAA,EACf,EAAE,OAAO;AAAA,IACP,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,WAAW,MAAM,CAAC,CAAC;AAAA,IAC/C,YAAY,EAAE,OAAO;AAAA,EACvB,CAAC;AACH,CAAC;AAIM,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,aAAa,kBAAkB,SAAS;AAAA,EACxC,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,WAAW,MAAM,CAAC,CAAC,EAAE,SAAS;AAAA,EAChE,YAAY,aAAa,SAAS;AAAA,EAClC,eAAe,oBAAoB,SAAS;AAAA,EAC5C,qBAAqB,EAClB,SAAS,EACT;AAAA,IACC,EAAE,WAAW,WAAW;AAAA,IACxB,EAAE,IAAI;AAAA,IACN,EAAE,MAAM,CAAC,mBAAmB,mBAAmB,CAAC,EAAE,SAAS;AAAA,EAC7D,EACC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,QAAQ,YAAY,CAAC,CAAC,CAAC,EACxD,SAAS;AACd,CAAC;;;AC9GD,SAAS,YAAY,QAAQ,kBAAkB;AAE/C,OAAO,SAAS;AAFhB;AAeA,0BAAC,WAAW;AACL,IAAM,cAAN,MAAM,YAAW;AAAA,EAKtB,YAA6B,UAA6B,CAAC,GAAG;AAAjC;AAAA,EAAkC;AAAA,EAJ/D,SAAS,WAAW,QAAQ;AAAA,IAC1B,SAAS,YAAW;AAAA,EACtB,CAAC;AAAA,EASD,KACE,SACA,UAA0B,CAAC,GACnB;AACR,UAAM,cAAc,KAAK;AAAA,MACvB,EAAE,GAAG,QAAQ;AAAA,MACb;AAAA,IACF;AACA,UAAM,SAAS,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA;AAAA,IAEF;AAEA,QAAI,kBAAkB,SAAS;AAC7B,aAAO,MAAM,MAAM;AAAA,MAAC,CAAC;AACrB,WAAK,OAAO;AAAA,QACV;AAAA,MACF;AACA,YAAM,IAAI,MAAM;AAAA,IAClB;AAEA,UAAM,qBAAqB,CAAC,UAAU,YAAY;AAClD,UAAM,cAAc,OAAO,KAAK,WAAW;AAC3C,QACE,OAAO,YAAY,YACnB,YAAY,KAAK,CAAC,MAAM,CAAC,mBAAmB,SAAS,CAAC,CAAC,GACvD;AACA,YAAM,IAAI;AAAA,QACR,uEACE,YAAY,KAAK,IAAI;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,IAAI,KAAK,SAAS,QAAQ,WAAW;AAAA,EAC9C;AAAA,EAOA,UACE,SACA,UAA0B,CAAC,GACV;AACjB,UAAM,cAAc,KAAK;AAAA,MACvB,EAAE,GAAG,QAAQ;AAAA,MACb;AAAA,IACF;AACA,UAAM,SAAS,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA;AAAA,IAEF;AAEA,UAAM,qBAAqB,CAAC,UAAU,YAAY;AAClD,UAAM,cAAc,OAAO,KAAK,WAAW;AAC3C,QACE,OAAO,YAAY,YACnB,YAAY,KAAK,CAAC,MAAM,CAAC,mBAAmB,SAAS,CAAC,CAAC,GACvD;AACA,YAAM,IAAI;AAAA,QACR,uEACE,YAAY,KAAK,IAAI;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,IAAI;AAAA,MAAQ,CAAC,SAAS,WAC3B,QAAQ,QAAQ,EACb,KAAK,MAAM,MAAM,EACjB,KAAK,CAAC,SAA6B;AAClC,YAAI;AAAA,UAAK;AAAA,UAAS;AAAA,UAAM;AAAA,UAAa,CAAC,KAAK,YACzC,MAAM,OAAO,GAAG,IAAI,QAAQ,OAAiB;AAAA,QAC/C;AAAA,MACF,CAAC;AAAA,IACL;AAAA,EACF;AAAA,EAEA,OACE,OACA,UAA4B,CAAC,GAC1B;AACH,UAAM,gBAAgB,KAAK,gBAAgB,EAAE,GAAG,QAAQ,GAAG,eAAe;AAC1E,UAAM,SAAS,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA;AAAA,IAEF;AAEA,QAAI,kBAAkB,SAAS;AAC7B,aAAO,MAAM,MAAM;AAAA,MAAC,CAAC;AACrB,WAAK,OAAO;AAAA,QACV;AAAA,MACF;AACA,YAAM,IAAI,MAAM;AAAA,IAClB;AAEA,WAAO,IAAI,OAAO,OAAO,QAAQ,aAAa;AAAA,EAChD;AAAA,EAEA,YACE,OACA,UAA4B,CAAC,GACjB;AACZ,UAAM,gBAAgB,KAAK,gBAAgB,EAAE,GAAG,QAAQ,GAAG,eAAe;AAC1E,UAAM,SAAS,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA;AAAA,IAEF;AAEA,WAAO,IAAI;AAAA,MAAQ,CAAC,SAAS,WAC3B,QAAQ,QAAQ,EACb,KAAK,MAAM,MAAM,EACjB,KAAK,CAAC,SAA6B;AAClC,YAAI;AAAA,UAAO;AAAA,UAAO;AAAA,UAAM;AAAA,UAAe,CAAC,KAAK,YAC3C,MAAM,OAAO,GAAG,IAAI,QAAQ,OAAY;AAAA,QAC1C;AAAA,MACF,CAAC,EACA,MAAM,MAAM;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,OAAgB,OAAe,SAAgC;AAC7D,WAAO,IAAI,OAAO,OAAO,OAAO;AAAA,EAClC;AAAA,EAEQ,gBACN,SACA,KAC6B;AAC7B,WAAO,QAAQ;AACf,QAAI,QAAQ,eAAe;AACzB,aAAQ,QAA2B;AAAA,IACrC,OAAO;AACL,aAAQ,QAA6B;AAAA,IACvC;AACA,WAAO,UACH;AAAA,MACE,GAAI,KAAK,QAAQ,GAAG,KAAK,CAAC;AAAA,MAC1B,GAAG;AAAA,IACL;AAAA;AAAA,MAEA,KAAK,QAAQ,GAAG;AAAA;AAAA,EACtB;AAAA,EAEQ,aACN,OACA,SACA,KACA,mBACkD;AAClD,UAAM,SAAS,KAAK,QAAQ,sBACxB,KAAK,QAAQ,oBAAoB,mBAAmB,OAAO,OAAO,KAClE,mCAAS,WACT,KAAK,QAAQ,WACZ,QAAQ,gBACJ,mCAA4B,eAAc,KAAK,QAAQ,cACvD,mCAA8B,cAC/B,KAAK,QAAQ,cACjB,KAAK,QAAQ,GAAG;AAEpB,WAAO;AAAA,EACT;AACF;AArLO;AAAM,cAAN,0CADP,wBACa;AAAN,4BAAM;AAAN,IAAM,aAAN;;;ACVP;AAAA,EACE,cAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOA,IAAM,kBAAkB,eAAe;AAAA,EAC5C;AAAA,EACA;AACF;AArBA,mCAAAC;AAuBA,iCAACC,YAAW;AAAA,EACV,OAAO;AAAA,EACP,MAAM,eAAe;AACvB,CAAC;AACM,IAAM,oBAAN,MAAwB;AAAA,EAC7B,OAAO,KAAqB,MAAyB;AACnD,WAAO,eAAe,KAAK,YAAY,CAAC,IAAI,CAAC;AAAA,EAC/C;AACF;AAJOD,SAAA;AAAM,oBAAN,kBAAAA,QAAA,wBAJP,+BAIa;AAAN,kBAAAA,QAAA,GAAM;AAMN,SAAS,kBACd,QAGoE;AACpE,MAAI,OAAO,WAAW,YAAY;AAChC,WAAO,eAAe,QAAQ,iBAAiB,MAAM;AAAA,EACvD;AACA,SAAO,eAAe,MAAM,iBAAiB,MAAM;AACrD;;;AHrCO,IAAM,oBAAoBE,KAAI;AAC9B,IAAM,iBAAiBA,KAAI;AAC3B,IAAM,oBAAoBA,KAAI;","names":["jwt","RequestType","Injectable","_init","Injectable","jwt"]}