@digitaldefiance/node-express-suite 3.14.5 → 3.16.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.
Files changed (94) hide show
  1. package/package.json +1 -1
  2. package/src/__tests__/helpers/application.mock.d.ts +3 -3
  3. package/src/__tests__/helpers/application.mock.d.ts.map +1 -1
  4. package/src/__tests__/helpers/application.mock.js +8 -0
  5. package/src/__tests__/helpers/application.mock.js.map +1 -1
  6. package/src/__tests__/helpers/setup-test-env.js.map +1 -1
  7. package/src/application-base.d.ts +12 -2
  8. package/src/application-base.d.ts.map +1 -1
  9. package/src/application-base.js +25 -8
  10. package/src/application-base.js.map +1 -1
  11. package/src/application.d.ts +2 -2
  12. package/src/application.d.ts.map +1 -1
  13. package/src/application.js.map +1 -1
  14. package/src/controllers/base.d.ts +14 -4
  15. package/src/controllers/base.d.ts.map +1 -1
  16. package/src/controllers/base.js +61 -9
  17. package/src/controllers/base.js.map +1 -1
  18. package/src/controllers/openapi.d.ts +3 -3
  19. package/src/controllers/openapi.d.ts.map +1 -1
  20. package/src/controllers/openapi.js.map +1 -1
  21. package/src/controllers/user.d.ts +3 -3
  22. package/src/controllers/user.d.ts.map +1 -1
  23. package/src/controllers/user.js.map +1 -1
  24. package/src/decorators/base-controller.d.ts +3 -2
  25. package/src/decorators/base-controller.d.ts.map +1 -1
  26. package/src/decorators/base-controller.js +1 -0
  27. package/src/decorators/base-controller.js.map +1 -1
  28. package/src/environment.d.ts +10 -1
  29. package/src/environment.d.ts.map +1 -1
  30. package/src/environment.js +17 -8
  31. package/src/environment.js.map +1 -1
  32. package/src/interfaces/application.d.ts +21 -13
  33. package/src/interfaces/application.d.ts.map +1 -1
  34. package/src/interfaces/application.js +3 -2
  35. package/src/interfaces/application.js.map +1 -1
  36. package/src/interfaces/authentication-provider.d.ts +76 -0
  37. package/src/interfaces/authentication-provider.d.ts.map +1 -0
  38. package/src/interfaces/authentication-provider.js +10 -0
  39. package/src/interfaces/authentication-provider.js.map +1 -0
  40. package/src/interfaces/environment-mongo.d.ts +3 -2
  41. package/src/interfaces/environment-mongo.d.ts.map +1 -1
  42. package/src/interfaces/environment.d.ts +3 -2
  43. package/src/interfaces/environment.d.ts.map +1 -1
  44. package/src/interfaces/index.d.ts +2 -0
  45. package/src/interfaces/index.d.ts.map +1 -1
  46. package/src/interfaces/index.js +2 -0
  47. package/src/interfaces/index.js.map +1 -1
  48. package/src/interfaces/mongo-application.d.ts +35 -0
  49. package/src/interfaces/mongo-application.d.ts.map +1 -0
  50. package/src/interfaces/mongo-application.js +10 -0
  51. package/src/interfaces/mongo-application.js.map +1 -0
  52. package/src/middlewares/authenticate-crypto.d.ts +7 -1
  53. package/src/middlewares/authenticate-crypto.d.ts.map +1 -1
  54. package/src/middlewares/authenticate-crypto.js +62 -50
  55. package/src/middlewares/authenticate-crypto.js.map +1 -1
  56. package/src/middlewares/authenticate-token.d.ts +8 -7
  57. package/src/middlewares/authenticate-token.d.ts.map +1 -1
  58. package/src/middlewares/authenticate-token.js +42 -41
  59. package/src/middlewares/authenticate-token.js.map +1 -1
  60. package/src/routers/api.d.ts +2 -2
  61. package/src/routers/api.d.ts.map +1 -1
  62. package/src/services/backup-code.d.ts +2 -2
  63. package/src/services/backup-code.d.ts.map +1 -1
  64. package/src/services/base.d.ts +17 -2
  65. package/src/services/base.d.ts.map +1 -1
  66. package/src/services/base.js +36 -3
  67. package/src/services/base.js.map +1 -1
  68. package/src/services/database-initialization.d.ts +5 -5
  69. package/src/services/database-initialization.d.ts.map +1 -1
  70. package/src/services/database-initialization.js.map +1 -1
  71. package/src/services/direct-login-token.d.ts +2 -2
  72. package/src/services/direct-login-token.d.ts.map +1 -1
  73. package/src/services/direct-login-token.js.map +1 -1
  74. package/src/services/index.d.ts +2 -0
  75. package/src/services/index.d.ts.map +1 -1
  76. package/src/services/index.js +2 -0
  77. package/src/services/index.js.map +1 -1
  78. package/src/services/jwt.d.ts +2 -2
  79. package/src/services/jwt.d.ts.map +1 -1
  80. package/src/services/mongo-authentication-provider.d.ts +27 -0
  81. package/src/services/mongo-authentication-provider.d.ts.map +1 -0
  82. package/src/services/mongo-authentication-provider.js +84 -0
  83. package/src/services/mongo-authentication-provider.js.map +1 -0
  84. package/src/services/mongo-base.d.ts +24 -0
  85. package/src/services/mongo-base.d.ts.map +1 -0
  86. package/src/services/mongo-base.js +28 -0
  87. package/src/services/mongo-base.js.map +1 -0
  88. package/src/services/mongoose-document-store.js +1 -1
  89. package/src/services/mongoose-document-store.js.map +1 -1
  90. package/src/services/role.d.ts +2 -2
  91. package/src/services/role.d.ts.map +1 -1
  92. package/src/services/role.js.map +1 -1
  93. package/src/services/user.d.ts +2 -2
  94. package/src/services/user.d.ts.map +1 -1
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @fileoverview Storage-agnostic authentication provider interface.
3
+ * Abstracts user lookup, role fetching, and credential verification
4
+ * so that authentication middlewares work with any storage backend
5
+ * (Mongoose, BrightChainDb, etc.).
6
+ * @module interfaces/authentication-provider
7
+ */
8
+ import type { SecureString } from '@digitaldefiance/ecies-lib';
9
+ import type { Member as BackendMember } from '@digitaldefiance/node-ecies-lib';
10
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
11
+ import type { IRequestUserDTO, ITokenUser } from '@digitaldefiance/suite-core-lib';
12
+ /**
13
+ * Minimal user record returned by the authentication provider.
14
+ * Contains only the fields needed by the authentication middlewares.
15
+ */
16
+ export interface IAuthenticatedUser<TLanguage extends string = string> {
17
+ /** Stringified user ID */
18
+ id: string;
19
+ /** Account status (e.g. 'Active', 'Suspended') */
20
+ accountStatus: string;
21
+ /** User's email address */
22
+ email: string;
23
+ /** User's site language preference */
24
+ siteLanguage?: TLanguage;
25
+ /** User's timezone */
26
+ timezone: string;
27
+ /** Last login timestamp (ISO string or undefined) */
28
+ lastLogin?: string;
29
+ }
30
+ /**
31
+ * Result of a crypto-authentication (mnemonic or password login).
32
+ */
33
+ export interface ICryptoAuthResult<TID extends PlatformID = Buffer> {
34
+ /** The authenticated user's ID as a string */
35
+ userId: string;
36
+ /** The authenticated BackendMember with private key loaded */
37
+ userMember: BackendMember<TID>;
38
+ }
39
+ /**
40
+ * Storage-agnostic authentication provider.
41
+ *
42
+ * Implementations supply user lookup, role resolution, and credential
43
+ * verification. The express-suite authentication middlewares delegate to
44
+ * this interface instead of calling Mongoose directly.
45
+ *
46
+ * @template TID Platform-specific ID type (Buffer, ObjectId, etc.)
47
+ * @template TLanguage Site language string literal type
48
+ */
49
+ export interface IAuthenticationProvider<TID extends PlatformID = Buffer, TLanguage extends string = string> {
50
+ /**
51
+ * Look up a user by their ID and return a minimal user record.
52
+ * Returns null if the user does not exist.
53
+ */
54
+ findUserById(userId: string): Promise<IAuthenticatedUser<TLanguage> | null>;
55
+ /**
56
+ * Build an IRequestUserDTO for the given user.
57
+ * Includes role resolution and privilege calculation.
58
+ */
59
+ buildRequestUserDTO(userId: string): Promise<IRequestUserDTO | null>;
60
+ /**
61
+ * Verify a JWT token and return the decoded token user.
62
+ * Returns null if the token is invalid.
63
+ */
64
+ verifyToken<TTokenUser extends ITokenUser = ITokenUser>(token: string): Promise<TTokenUser | null>;
65
+ /**
66
+ * Authenticate with a mnemonic and return the crypto result.
67
+ * Throws on invalid credentials.
68
+ */
69
+ authenticateWithMnemonic?(email: string, mnemonic: SecureString): Promise<ICryptoAuthResult<TID>>;
70
+ /**
71
+ * Authenticate with a password and return the crypto result.
72
+ * Throws on invalid credentials.
73
+ */
74
+ authenticateWithPassword?(email: string, password: string): Promise<ICryptoAuthResult<TID>>;
75
+ }
76
+ //# sourceMappingURL=authentication-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authentication-provider.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/authentication-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACX,MAAM,iCAAiC,CAAC;AAEzC;;;GAGG;AACH,MAAM,WAAW,kBAAkB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IACnE,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM;IAChE,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,uBAAuB,CACtC,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,SAAS,SAAS,MAAM,GAAG,MAAM;IAEjC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IAE5E;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAErE;;;OAGG;IACH,WAAW,CAAC,UAAU,SAAS,UAAU,GAAG,UAAU,EACpD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAE9B;;;OAGG;IACH,wBAAwB,CAAC,CACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnC;;;OAGG;IACH,wBAAwB,CAAC,CACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Storage-agnostic authentication provider interface.
4
+ * Abstracts user lookup, role fetching, and credential verification
5
+ * so that authentication middlewares work with any storage backend
6
+ * (Mongoose, BrightChainDb, etc.).
7
+ * @module interfaces/authentication-provider
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=authentication-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authentication-provider.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/authentication-provider.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
@@ -10,9 +10,10 @@ import { ReadConcernLike, WriteConcern } from 'mongodb';
10
10
  */
11
11
  export interface IMongoEnvironment {
12
12
  /**
13
- * The URI of the MongoDB database
13
+ * The URI of the MongoDB database.
14
+ * Optional — omit when using a non-MongoDB database (e.g. BrightChainDb).
14
15
  */
15
- uri: string;
16
+ uri?: string;
16
17
  /**
17
18
  * The name of the MongoDB database
18
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"environment-mongo.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/environment-mongo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAC;IACjC;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,WAAW,EAAE,eAAe,CAAC;IAC7B;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;IAC3B;;OAEG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,wCAAwC,EAAE,OAAO,CAAC;IAClD;;OAEG;IACH,+CAA+C,EAAE,OAAO,CAAC;IACzD;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,6BAA6B,EAAE,MAAM,CAAC;IACtC;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,yBAAyB,EAAE,MAAM,CAAC;CACnC"}
1
+ {"version":3,"file":"environment-mongo.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/environment-mongo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAC;IACjC;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,WAAW,EAAE,eAAe,CAAC;IAC7B;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;IAC3B;;OAEG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,wCAAwC,EAAE,OAAO,CAAC;IAClD;;OAEG;IACH,+CAA+C,EAAE,OAAO,CAAC;IACzD;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,6BAA6B,EAAE,MAAM,CAAC;IACtC;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,yBAAyB,EAAE,MAAM,CAAC;CACnC"}
@@ -72,9 +72,10 @@ export interface IEnvironment<TID extends PlatformID = Buffer> {
72
72
  */
73
73
  disableEmailSend: boolean;
74
74
  /**
75
- * MongoDB configuration
75
+ * MongoDB configuration.
76
+ * Optional — omit when using a non-MongoDB database (e.g. BrightChainDb).
76
77
  */
77
- mongo: IMongoEnvironment;
78
+ mongo?: IMongoEnvironment;
78
79
  /**
79
80
  * Mnemonic for the admin user
80
81
  */
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/environment.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ export * from './api-message-response';
6
6
  export * from './api-mongo-validation-error-response';
7
7
  export * from './api-responses';
8
8
  export * from './application';
9
+ export * from './authentication-provider';
10
+ export * from './mongo-application';
9
11
  export * from './backend-objects';
10
12
  export * from './checksum-config';
11
13
  export * from './checksum-consts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAE1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yCAAyC,CAAC;AACxD,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAE1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yCAAyC,CAAC;AACxD,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC"}
@@ -9,6 +9,8 @@ tslib_1.__exportStar(require("./api-message-response"), exports);
9
9
  tslib_1.__exportStar(require("./api-mongo-validation-error-response"), exports);
10
10
  tslib_1.__exportStar(require("./api-responses"), exports);
11
11
  tslib_1.__exportStar(require("./application"), exports);
12
+ tslib_1.__exportStar(require("./authentication-provider"), exports);
13
+ tslib_1.__exportStar(require("./mongo-application"), exports);
12
14
  tslib_1.__exportStar(require("./backend-objects"), exports);
13
15
  tslib_1.__exportStar(require("./checksum-config"), exports);
14
16
  tslib_1.__exportStar(require("./checksum-consts"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,oDAA0B;AAE1B,+DAAqC;AACrC,kFAAwD;AACxD,iEAAuC;AACvC,gFAAsD;AACtD,0DAAgC;AAChC,wDAA8B;AAC9B,4DAAkC;AAClC,4DAAkC;AAClC,4DAAkC;AAClC,sDAA4B;AAC5B,8DAAoC;AACpC,+DAAqC;AACrC,uDAA6B;AAC7B,2DAAiC;AACjC,2DAAiC;AACjC,sEAA4C;AAC5C,0DAAgC;AAChC,wDAA8B;AAC9B,8DAAoC;AACpC,4DAAkC;AAClC,uDAA6B;AAC7B,yDAA+B;AAC/B,qEAA2C;AAC3C,uDAA6B;AAC7B,8DAAoC;AACpC,gEAAsC;AACtC,mDAAyB;AACzB,yDAA+B;AAC/B,oDAA0B;AAC1B,oDAA0B;AAC1B,yDAA+B;AAC/B,iEAAuC;AACvC,mDAAyB;AACzB,+DAAqC;AACrC,iEAAuC;AACvC,yEAA+C;AAC/C,2DAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,oDAA0B;AAE1B,+DAAqC;AACrC,kFAAwD;AACxD,iEAAuC;AACvC,gFAAsD;AACtD,0DAAgC;AAChC,wDAA8B;AAC9B,oEAA0C;AAC1C,8DAAoC;AACpC,4DAAkC;AAClC,4DAAkC;AAClC,4DAAkC;AAClC,sDAA4B;AAC5B,8DAAoC;AACpC,+DAAqC;AACrC,uDAA6B;AAC7B,2DAAiC;AACjC,2DAAiC;AACjC,sEAA4C;AAC5C,0DAAgC;AAChC,wDAA8B;AAC9B,8DAAoC;AACpC,4DAAkC;AAClC,uDAA6B;AAC7B,yDAA+B;AAC/B,qEAA2C;AAC3C,uDAA6B;AAC7B,8DAAoC;AACpC,gEAAsC;AACtC,mDAAyB;AACzB,yDAA+B;AAC/B,oDAA0B;AAC1B,oDAA0B;AAC1B,yDAA+B;AAC/B,iEAAuC;AACvC,mDAAyB;AACzB,+DAAqC;AACrC,iEAAuC;AACvC,yEAA+C;AAC/C,2DAAiC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @fileoverview Mongoose/MongoDB-specific application interface.
3
+ * Extends the base IApplication with MongoDB-specific capabilities.
4
+ * Use this interface in controllers, services, and middlewares that require
5
+ * direct access to the Mongoose connection or MongoDB configuration.
6
+ * @module interfaces/mongo-application
7
+ */
8
+ import mongoose from '@digitaldefiance/mongoose-types';
9
+ import type { Model } from '@digitaldefiance/mongoose-types';
10
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
11
+ import type { IBaseDocument } from '../documents';
12
+ import type { IApplication } from './application';
13
+ /**
14
+ * MongoDB/Mongoose-specific application interface.
15
+ * Extends IApplication with the Mongoose connection and MongoDB configuration.
16
+ *
17
+ * Use this interface when your code needs:
18
+ * - `application.db` (the Mongoose connection)
19
+ * - `application.environment.mongo` (MongoDB config with a guaranteed URI)
20
+ * - `application.getModel<T>(name)` (Mongoose model lookup)
21
+ *
22
+ * Non-Mongo applications (e.g. BrightChainDb) should use the base IApplication.
23
+ */
24
+ export interface IMongoApplication<TID extends PlatformID = Buffer> extends IApplication<TID> {
25
+ /** Mongoose database connection. */
26
+ get db(): typeof mongoose;
27
+ /**
28
+ * Gets a Mongoose model by name.
29
+ * @template U Document type extending IBaseDocument
30
+ * @param modelName Name of the model to retrieve
31
+ * @returns Mongoose model instance
32
+ */
33
+ getModel<U extends IBaseDocument<any, TID>>(modelName: string): Model<U>;
34
+ }
35
+ //# sourceMappingURL=mongo-application.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-application.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/mongo-application.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,QAAQ,MAAM,iCAAiC,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAChC,GAAG,SAAS,UAAU,GAAG,MAAM,CAC/B,SAAQ,YAAY,CAAC,GAAG,CAAC;IACzB,oCAAoC;IACpC,IAAI,EAAE,IAAI,OAAO,QAAQ,CAAC;IAE1B;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAC1E"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Mongoose/MongoDB-specific application interface.
4
+ * Extends the base IApplication with MongoDB-specific capabilities.
5
+ * Use this interface in controllers, services, and middlewares that require
6
+ * direct access to the Mongoose connection or MongoDB configuration.
7
+ * @module interfaces/mongo-application
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=mongo-application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-application.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/mongo-application.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @fileoverview Cryptographic authentication middleware for operations requiring private keys.
3
3
  * Validates mnemonic or password to unlock user's private key for sensitive operations.
4
+ * Storage-agnostic — delegates credential verification to IAuthenticationProvider.
4
5
  * @module middlewares/authenticate-crypto
5
6
  */
6
7
  import { PlatformID } from '@digitaldefiance/node-ecies-lib';
@@ -12,9 +13,14 @@ import { IApplication } from '../interfaces/application';
12
13
  * Requires mnemonic or password in request body to unlock user's private key.
13
14
  * Attaches authenticated BackendMember with private key to req.eciesUser.
14
15
  * Used for operations requiring cryptographic signing or decryption.
16
+ *
17
+ * Delegates to `application.authProvider` for storage-agnostic credential
18
+ * verification. The application must have an authProvider configured with
19
+ * authenticateWithMnemonic and/or authenticateWithPassword.
20
+ *
15
21
  * @template TID - Platform ID type (defaults to Buffer)
16
22
  * @template TAccountStatus - Account status type (defaults to AccountStatus)
17
- * @param {IApplication<TID>} application - Application instance
23
+ * @param {IApplication<TID>} application - Application instance with authProvider
18
24
  * @param {Request} req - Express request object
19
25
  * @param {Response} res - Express response object
20
26
  * @param {NextFunction} next - Express next function
@@ -1 +1 @@
1
- {"version":3,"file":"authenticate-crypto.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-crypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAEL,UAAU,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,aAAa,EAId,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,cAAc,SAAS,MAAM,GAAG,aAAa,EAE7C,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,EAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,EAClB,iBAAiB,GAAE,cAAuD,GACzE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAyL1B"}
1
+ {"version":3,"file":"authenticate-crypto.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-crypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,aAAa,EAId,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,cAAc,SAAS,MAAM,GAAG,aAAa,EAE7C,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,EAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,EAClB,iBAAiB,GAAE,cAAuD,GACzE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA6K1B"}
@@ -2,24 +2,27 @@
2
2
  /**
3
3
  * @fileoverview Cryptographic authentication middleware for operations requiring private keys.
4
4
  * Validates mnemonic or password to unlock user's private key for sensitive operations.
5
+ * Storage-agnostic — delegates credential verification to IAuthenticationProvider.
5
6
  * @module middlewares/authenticate-crypto
6
7
  */
7
8
  Object.defineProperty(exports, "__esModule", { value: true });
8
9
  exports.authenticateCrypto = authenticateCrypto;
9
10
  const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
10
11
  const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
11
- const container_1 = require("../container");
12
- const enumerations_1 = require("../enumerations");
13
12
  const errors_1 = require("../errors");
14
- const utils_1 = require("../utils");
15
13
  /**
16
14
  * Express middleware for cryptographic authentication.
17
15
  * Requires mnemonic or password in request body to unlock user's private key.
18
16
  * Attaches authenticated BackendMember with private key to req.eciesUser.
19
17
  * Used for operations requiring cryptographic signing or decryption.
18
+ *
19
+ * Delegates to `application.authProvider` for storage-agnostic credential
20
+ * verification. The application must have an authProvider configured with
21
+ * authenticateWithMnemonic and/or authenticateWithPassword.
22
+ *
20
23
  * @template TID - Platform ID type (defaults to Buffer)
21
24
  * @template TAccountStatus - Account status type (defaults to AccountStatus)
22
- * @param {IApplication<TID>} application - Application instance
25
+ * @param {IApplication<TID>} application - Application instance with authProvider
23
26
  * @param {Request} req - Express request object
24
27
  * @param {Response} res - Express response object
25
28
  * @param {NextFunction} next - Express next function
@@ -29,6 +32,10 @@ const utils_1 = require("../utils");
29
32
  * @throws {InvalidPasswordError} When password is incorrect
30
33
  */
31
34
  async function authenticateCrypto(application, req, res, next, activeStatusValue = suite_core_lib_1.AccountStatus.Active) {
35
+ const authProvider = application.authProvider;
36
+ if (!authProvider) {
37
+ return res.status(500).send('Authentication provider not configured');
38
+ }
32
39
  if (!req.user) {
33
40
  return res.status(401).send(
34
41
  // amazonq-ignore-next-line false positive, hardcoded string
@@ -60,61 +67,66 @@ async function authenticateCrypto(application, req, res, next, activeStatusValue
60
67
  message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired),
61
68
  });
62
69
  }
63
- const UserModel = application.getModel(enumerations_1.BaseModelName.User);
64
- const userService = application.services.get(container_1.ServiceKeys.USER);
65
70
  try {
66
- return await (0, utils_1.withTransaction)(application.db.connection, application.environment.mongo.useTransactions, undefined, async (sess) => {
67
- const userDoc = await UserModel.findById(req.user.id)
68
- .session(sess ?? null)
69
- .exec();
70
- if (!userDoc || userDoc.accountStatus !== activeStatusValue) {
71
- return res.status(403).send(
72
- // amazonq-ignore-next-line false positive, hardcoded string
73
- (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UserNotFound));
74
- }
75
- // Ensure we're only authenticating the currently logged-in user
76
- if (userDoc._id.toString() !== req.user.id) {
77
- return res.status(403).send(
78
- // amazonq-ignore-next-line false positive, hardcoded string
79
- (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
71
+ // Verify the user exists and is active
72
+ const authenticatedUser = await authProvider.findUserById(req.user.id);
73
+ if (!authenticatedUser ||
74
+ authenticatedUser.accountStatus !== activeStatusValue) {
75
+ return res.status(403).send(
76
+ // amazonq-ignore-next-line false positive, hardcoded string
77
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UserNotFound));
78
+ }
79
+ // Ensure we're only authenticating the currently logged-in user
80
+ if (authenticatedUser.id !== req.user.id) {
81
+ return res.status(403).send(
82
+ // amazonq-ignore-next-line false positive, hardcoded string
83
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
84
+ }
85
+ if (mnemonic) {
86
+ if (!authProvider.authenticateWithMnemonic) {
87
+ return res.status(501).send({
88
+ message: 'Mnemonic authentication not supported by this provider',
89
+ });
80
90
  }
81
- let loginResult;
82
- if (mnemonic) {
83
- // Authenticate with mnemonic
84
- const userMnemonic = new ecies_lib_1.SecureString(mnemonic);
85
- try {
86
- loginResult = await userService.loginWithMnemonic(userDoc.email, userMnemonic, sess);
87
- }
88
- finally {
89
- userMnemonic.dispose();
91
+ const userMnemonic = new ecies_lib_1.SecureString(mnemonic);
92
+ try {
93
+ const result = await authProvider.authenticateWithMnemonic(authenticatedUser.email, userMnemonic);
94
+ // Double-check authenticated user matches logged-in user
95
+ if (result.userId !== req.user.id) {
96
+ return res
97
+ .status(403)
98
+ .send((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
90
99
  }
100
+ req.eciesUser = result.userMember;
91
101
  }
92
- else if (password) {
93
- // Authenticate with password
94
- loginResult = await userService.loginWithPassword(userDoc.email, password, sess);
102
+ finally {
103
+ userMnemonic.dispose();
95
104
  }
96
- else {
97
- // Should not happen due to earlier guard; keeps TypeScript happy
98
- return res.status(400).send({
99
- // amazonq-ignore-next-line false positive, hardcoded string
100
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired),
105
+ }
106
+ else if (password) {
107
+ if (!authProvider.authenticateWithPassword) {
108
+ return res.status(501).send({
109
+ message: 'Password authentication not supported by this provider',
101
110
  });
102
111
  }
112
+ const result = await authProvider.authenticateWithPassword(authenticatedUser.email, password);
103
113
  // Double-check authenticated user matches logged-in user
104
- if (loginResult.userDoc._id.toString() !== req.user.id) {
105
- return res.status(403).send(
106
- // amazonq-ignore-next-line false positive, hardcoded string
107
- (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
114
+ if (result.userId !== req.user.id) {
115
+ return res
116
+ .status(403)
117
+ .send((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
108
118
  }
109
- // Attach the fully authenticated member (with private key) to the request
110
- req.eciesUser = loginResult.userMember;
111
- // Do not attach the admin user to the request; it's a process-wide singleton
112
- // and must not be disposed as part of request cleanup.
113
- next();
114
- return;
115
- }, {
116
- timeoutMs: application.environment.mongo.transactionTimeout,
117
- });
119
+ req.eciesUser = result.userMember;
120
+ }
121
+ else {
122
+ // Should not happen due to earlier guard; keeps TypeScript happy
123
+ return res.status(400).send({
124
+ // amazonq-ignore-next-line false positive, hardcoded string
125
+ message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired),
126
+ });
127
+ }
128
+ next();
129
+ return;
118
130
  }
119
131
  catch (err) {
120
132
  if (err instanceof suite_core_lib_1.InvalidCredentialsError ||
@@ -1 +1 @@
1
- {"version":3,"file":"authenticate-crypto.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-crypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authenticate-crypto.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-crypto.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * @fileoverview JWT token authentication middleware.
3
3
  * Validates bearer tokens, loads user data, and sets up request context.
4
+ * Storage-agnostic — delegates user lookup and role resolution to
5
+ * IAuthenticationProvider on the application.
4
6
  * @module middlewares/authenticate-token
5
7
  */
6
- import { ITokenRole, ITokenUser } from '@digitaldefiance/suite-core-lib';
7
8
  import { NextFunction, Request, Response } from 'express';
8
9
  import { IncomingHttpHeaders } from 'http';
9
10
  import { IApplication } from '../interfaces/application';
@@ -18,17 +19,17 @@ export declare function findAuthToken(headers: IncomingHttpHeaders): string | nu
18
19
  * Express middleware for JWT token authentication.
19
20
  * Validates token, loads user from database, checks account status,
20
21
  * and populates req.user with authenticated user data.
22
+ *
23
+ * Delegates to `application.authProvider` for storage-agnostic user lookup
24
+ * and role resolution. The application must have an authProvider configured.
25
+ *
21
26
  * @template TID - Platform ID type (defaults to Buffer)
22
- * @template D - Date type (defaults to Date)
23
- * @template TTokenRole - Token role interface type
24
- * @template TTokenUser - Token user interface type
25
- * @template TApplication - Application interface type
26
- * @param {TApplication} application - Application instance
27
+ * @param {IApplication<TID>} application - Application instance with authProvider
27
28
  * @param {Request} req - Express request object
28
29
  * @param {Response} res - Express response object
29
30
  * @param {NextFunction} next - Express next function
30
31
  * @returns {Promise<Response>} Response object
31
32
  * @throws {TokenExpiredError} When token has expired
32
33
  */
33
- export declare function authenticateToken<TID extends PlatformID = Buffer, D extends Date = Date, TTokenRole extends ITokenRole<TID, D> = ITokenRole<TID, D>, TTokenUser extends ITokenUser = ITokenUser, TApplication extends IApplication<TID> = IApplication<TID>>(application: TApplication, req: Request, res: Response, next: NextFunction): Promise<Response>;
34
+ export declare function authenticateToken<TID extends PlatformID = Buffer>(application: IApplication<TID>, req: Request, res: Response, next: NextFunction): Promise<Response>;
34
35
  //# sourceMappingURL=authenticate-token.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authenticate-token.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-token.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAGL,UAAU,EACV,UAAU,EAEX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAI3C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAKzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAalE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CASzE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,CAAC,SAAS,IAAI,GAAG,IAAI,EACrB,UAAU,SAAS,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,EAC1D,UAAU,SAAS,UAAU,GAAG,UAAU,EAC1C,YAAY,SAAS,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,EAE1D,WAAW,EAAE,YAAY,EACzB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,QAAQ,CAAC,CAkFnB"}
1
+ {"version":3,"file":"authenticate-token.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-token.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAalE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CASzE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM,EACrE,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,EAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,QAAQ,CAAC,CAiFnB"}