@codecanva/nest-auth 0.1.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 (114) hide show
  1. package/README.md +164 -0
  2. package/dist/auth.constants.d.ts +8 -0
  3. package/dist/auth.constants.d.ts.map +1 -0
  4. package/dist/auth.constants.js +11 -0
  5. package/dist/auth.constants.js.map +1 -0
  6. package/dist/auth.module.d.ts +6 -0
  7. package/dist/auth.module.d.ts.map +1 -0
  8. package/dist/auth.module.js +75 -0
  9. package/dist/auth.module.js.map +1 -0
  10. package/dist/auth.service.d.ts +25 -0
  11. package/dist/auth.service.d.ts.map +1 -0
  12. package/dist/auth.service.js +108 -0
  13. package/dist/auth.service.js.map +1 -0
  14. package/dist/decorators/current-user.decorator.d.ts +3 -0
  15. package/dist/decorators/current-user.decorator.d.ts.map +1 -0
  16. package/dist/decorators/current-user.decorator.js +12 -0
  17. package/dist/decorators/current-user.decorator.js.map +1 -0
  18. package/dist/decorators/index.d.ts +3 -0
  19. package/dist/decorators/index.d.ts.map +1 -0
  20. package/dist/decorators/index.js +19 -0
  21. package/dist/decorators/index.js.map +1 -0
  22. package/dist/decorators/public.decorator.d.ts +2 -0
  23. package/dist/decorators/public.decorator.d.ts.map +1 -0
  24. package/dist/decorators/public.decorator.js +8 -0
  25. package/dist/decorators/public.decorator.js.map +1 -0
  26. package/dist/dto/index.d.ts +3 -0
  27. package/dist/dto/index.d.ts.map +1 -0
  28. package/dist/dto/index.js +19 -0
  29. package/dist/dto/index.js.map +1 -0
  30. package/dist/dto/login.dto.d.ts +5 -0
  31. package/dist/dto/login.dto.d.ts.map +1 -0
  32. package/dist/dto/login.dto.js +28 -0
  33. package/dist/dto/login.dto.js.map +1 -0
  34. package/dist/dto/refresh-token.dto.d.ts +4 -0
  35. package/dist/dto/refresh-token.dto.d.ts.map +1 -0
  36. package/dist/dto/refresh-token.dto.js +23 -0
  37. package/dist/dto/refresh-token.dto.js.map +1 -0
  38. package/dist/errors/auth.errors.d.ts +19 -0
  39. package/dist/errors/auth.errors.d.ts.map +1 -0
  40. package/dist/errors/auth.errors.js +41 -0
  41. package/dist/errors/auth.errors.js.map +1 -0
  42. package/dist/guards/index.d.ts +3 -0
  43. package/dist/guards/index.d.ts.map +1 -0
  44. package/dist/guards/index.js +19 -0
  45. package/dist/guards/index.js.map +1 -0
  46. package/dist/guards/jwt-auth.guard.d.ts +10 -0
  47. package/dist/guards/jwt-auth.guard.d.ts.map +1 -0
  48. package/dist/guards/jwt-auth.guard.js +38 -0
  49. package/dist/guards/jwt-auth.guard.js.map +1 -0
  50. package/dist/guards/refresh-auth.guard.d.ts +5 -0
  51. package/dist/guards/refresh-auth.guard.d.ts.map +1 -0
  52. package/dist/guards/refresh-auth.guard.js +19 -0
  53. package/dist/guards/refresh-auth.guard.js.map +1 -0
  54. package/dist/index.d.ts +11 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +34 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/interfaces/auth-module-options.interface.d.ts +38 -0
  59. package/dist/interfaces/auth-module-options.interface.d.ts.map +1 -0
  60. package/dist/interfaces/auth-module-options.interface.js +3 -0
  61. package/dist/interfaces/auth-module-options.interface.js.map +1 -0
  62. package/dist/interfaces/auth-user.interface.d.ts +8 -0
  63. package/dist/interfaces/auth-user.interface.d.ts.map +1 -0
  64. package/dist/interfaces/auth-user.interface.js +3 -0
  65. package/dist/interfaces/auth-user.interface.js.map +1 -0
  66. package/dist/interfaces/index.d.ts +6 -0
  67. package/dist/interfaces/index.d.ts.map +1 -0
  68. package/dist/interfaces/index.js +22 -0
  69. package/dist/interfaces/index.js.map +1 -0
  70. package/dist/interfaces/jwt-payload.interface.d.ts +14 -0
  71. package/dist/interfaces/jwt-payload.interface.d.ts.map +1 -0
  72. package/dist/interfaces/jwt-payload.interface.js +3 -0
  73. package/dist/interfaces/jwt-payload.interface.js.map +1 -0
  74. package/dist/interfaces/refresh-token-store.interface.d.ts +34 -0
  75. package/dist/interfaces/refresh-token-store.interface.d.ts.map +1 -0
  76. package/dist/interfaces/refresh-token-store.interface.js +3 -0
  77. package/dist/interfaces/refresh-token-store.interface.js.map +1 -0
  78. package/dist/interfaces/user-validator.interface.d.ts +11 -0
  79. package/dist/interfaces/user-validator.interface.d.ts.map +1 -0
  80. package/dist/interfaces/user-validator.interface.js +3 -0
  81. package/dist/interfaces/user-validator.interface.js.map +1 -0
  82. package/dist/services/index.d.ts +2 -0
  83. package/dist/services/index.d.ts.map +1 -0
  84. package/dist/services/index.js +18 -0
  85. package/dist/services/index.js.map +1 -0
  86. package/dist/services/token.service.d.ts +23 -0
  87. package/dist/services/token.service.d.ts.map +1 -0
  88. package/dist/services/token.service.js +94 -0
  89. package/dist/services/token.service.js.map +1 -0
  90. package/dist/strategies/index.d.ts +3 -0
  91. package/dist/strategies/index.d.ts.map +1 -0
  92. package/dist/strategies/index.js +19 -0
  93. package/dist/strategies/index.js.map +1 -0
  94. package/dist/strategies/jwt.strategy.d.ts +15 -0
  95. package/dist/strategies/jwt.strategy.d.ts.map +1 -0
  96. package/dist/strategies/jwt.strategy.js +50 -0
  97. package/dist/strategies/jwt.strategy.js.map +1 -0
  98. package/dist/strategies/refresh.strategy.d.ts +18 -0
  99. package/dist/strategies/refresh.strategy.d.ts.map +1 -0
  100. package/dist/strategies/refresh.strategy.js +65 -0
  101. package/dist/strategies/refresh.strategy.js.map +1 -0
  102. package/dist/utils/extract-token.d.ts +2 -0
  103. package/dist/utils/extract-token.d.ts.map +1 -0
  104. package/dist/utils/extract-token.js +12 -0
  105. package/dist/utils/extract-token.js.map +1 -0
  106. package/dist/utils/hash-token.d.ts +3 -0
  107. package/dist/utils/hash-token.d.ts.map +1 -0
  108. package/dist/utils/hash-token.js +16 -0
  109. package/dist/utils/hash-token.js.map +1 -0
  110. package/dist/utils/index.d.ts +3 -0
  111. package/dist/utils/index.d.ts.map +1 -0
  112. package/dist/utils/index.js +19 -0
  113. package/dist/utils/index.js.map +1 -0
  114. package/package.json +107 -0
@@ -0,0 +1,19 @@
1
+ export declare class AuthError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class InvalidCredentialsError extends AuthError {
5
+ constructor(message?: string);
6
+ }
7
+ export declare class InvalidRefreshTokenError extends AuthError {
8
+ constructor(message?: string);
9
+ }
10
+ export declare class RefreshTokenExpiredError extends AuthError {
11
+ constructor(message?: string);
12
+ }
13
+ export declare class RefreshTokenReuseDetectedError extends AuthError {
14
+ constructor(message?: string);
15
+ }
16
+ export declare class UserNotFoundError extends AuthError {
17
+ constructor(message?: string);
18
+ }
19
+ //# sourceMappingURL=auth.errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors/auth.errors.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,uBAAwB,SAAQ,SAAS;gBACxC,OAAO,SAAwB;CAG5C;AAED,qBAAa,wBAAyB,SAAQ,SAAS;gBACzC,OAAO,SAA0B;CAG9C;AAED,qBAAa,wBAAyB,SAAQ,SAAS;gBACzC,OAAO,SAA0B;CAG9C;AAED,qBAAa,8BAA+B,SAAQ,SAAS;gBAC/C,OAAO,SAAuD;CAG3E;AAED,qBAAa,iBAAkB,SAAQ,SAAS;gBAClC,OAAO,SAAmB;CAGvC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserNotFoundError = exports.RefreshTokenReuseDetectedError = exports.RefreshTokenExpiredError = exports.InvalidRefreshTokenError = exports.InvalidCredentialsError = exports.AuthError = void 0;
4
+ class AuthError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = this.constructor.name;
8
+ }
9
+ }
10
+ exports.AuthError = AuthError;
11
+ class InvalidCredentialsError extends AuthError {
12
+ constructor(message = 'Invalid credentials') {
13
+ super(message);
14
+ }
15
+ }
16
+ exports.InvalidCredentialsError = InvalidCredentialsError;
17
+ class InvalidRefreshTokenError extends AuthError {
18
+ constructor(message = 'Invalid refresh token') {
19
+ super(message);
20
+ }
21
+ }
22
+ exports.InvalidRefreshTokenError = InvalidRefreshTokenError;
23
+ class RefreshTokenExpiredError extends AuthError {
24
+ constructor(message = 'Refresh token expired') {
25
+ super(message);
26
+ }
27
+ }
28
+ exports.RefreshTokenExpiredError = RefreshTokenExpiredError;
29
+ class RefreshTokenReuseDetectedError extends AuthError {
30
+ constructor(message = 'Refresh token reuse detected; all sessions revoked') {
31
+ super(message);
32
+ }
33
+ }
34
+ exports.RefreshTokenReuseDetectedError = RefreshTokenReuseDetectedError;
35
+ class UserNotFoundError extends AuthError {
36
+ constructor(message = 'User not found') {
37
+ super(message);
38
+ }
39
+ }
40
+ exports.UserNotFoundError = UserNotFoundError;
41
+ //# sourceMappingURL=auth.errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.errors.js","sourceRoot":"","sources":["../../src/lib/errors/auth.errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;CACF;AALD,8BAKC;AAED,MAAa,uBAAwB,SAAQ,SAAS;IACpD,YAAY,OAAO,GAAG,qBAAqB;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAJD,0DAIC;AAED,MAAa,wBAAyB,SAAQ,SAAS;IACrD,YAAY,OAAO,GAAG,uBAAuB;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAJD,4DAIC;AAED,MAAa,wBAAyB,SAAQ,SAAS;IACrD,YAAY,OAAO,GAAG,uBAAuB;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAJD,4DAIC;AAED,MAAa,8BAA+B,SAAQ,SAAS;IAC3D,YAAY,OAAO,GAAG,oDAAoD;QACxE,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAJD,wEAIC;AAED,MAAa,iBAAkB,SAAQ,SAAS;IAC9C,YAAY,OAAO,GAAG,gBAAgB;QACpC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAJD,8CAIC"}
@@ -0,0 +1,3 @@
1
+ export * from './jwt-auth.guard';
2
+ export * from './refresh-auth.guard';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/guards/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./jwt-auth.guard"), exports);
18
+ __exportStar(require("./refresh-auth.guard"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/guards/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,uDAAqC"}
@@ -0,0 +1,10 @@
1
+ import { ExecutionContext } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ declare const JwtAuthGuard_base: import("@nestjs/passport").Type<import("@nestjs/passport").IAuthGuard>;
4
+ export declare class JwtAuthGuard extends JwtAuthGuard_base {
5
+ private readonly reflector;
6
+ constructor(reflector: Reflector);
7
+ canActivate(context: ExecutionContext): boolean | Promise<boolean> | import("rxjs").Observable<boolean>;
8
+ }
9
+ export {};
10
+ //# sourceMappingURL=jwt-auth.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-auth.guard.d.ts","sourceRoot":"","sources":["../../src/lib/guards/jwt-auth.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAc,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;;AAIzC,qBACa,YAAa,SAAQ,iBAA4B;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAIjD,WAAW,CAAC,OAAO,EAAE,gBAAgB;CAQtC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.JwtAuthGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const passport_1 = require("@nestjs/passport");
16
+ const auth_constants_1 = require("../auth.constants");
17
+ let JwtAuthGuard = class JwtAuthGuard extends (0, passport_1.AuthGuard)(auth_constants_1.JWT_STRATEGY_NAME) {
18
+ reflector;
19
+ constructor(reflector) {
20
+ super();
21
+ this.reflector = reflector;
22
+ }
23
+ canActivate(context) {
24
+ const isPublic = this.reflector.getAllAndOverride(auth_constants_1.IS_PUBLIC_KEY, [
25
+ context.getHandler(),
26
+ context.getClass(),
27
+ ]);
28
+ if (isPublic)
29
+ return true;
30
+ return super.canActivate(context);
31
+ }
32
+ };
33
+ exports.JwtAuthGuard = JwtAuthGuard;
34
+ exports.JwtAuthGuard = JwtAuthGuard = __decorate([
35
+ (0, common_1.Injectable)(),
36
+ __metadata("design:paramtypes", [core_1.Reflector])
37
+ ], JwtAuthGuard);
38
+ //# sourceMappingURL=jwt-auth.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../src/lib/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA8D;AAC9D,uCAAyC;AACzC,+CAA6C;AAC7C,sDAAqE;AAG9D,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,IAAA,oBAAS,EAAC,kCAAiB,CAAC;IAC/B;IAA7B,YAA6B,SAAoB;QAC/C,KAAK,EAAE,CAAC;QADmB,cAAS,GAAT,SAAS,CAAW;IAEjD,CAAC;IAED,WAAW,CAAC,OAAyB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,8BAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QACH,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AAbY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAE6B,gBAAS;GADtC,YAAY,CAaxB"}
@@ -0,0 +1,5 @@
1
+ declare const RefreshAuthGuard_base: import("@nestjs/passport").Type<import("@nestjs/passport").IAuthGuard>;
2
+ export declare class RefreshAuthGuard extends RefreshAuthGuard_base {
3
+ }
4
+ export {};
5
+ //# sourceMappingURL=refresh-auth.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-auth.guard.d.ts","sourceRoot":"","sources":["../../src/lib/guards/refresh-auth.guard.ts"],"names":[],"mappings":";AAIA,qBACa,gBAAiB,SAAQ,qBAAgC;CAAG"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.RefreshAuthGuard = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const passport_1 = require("@nestjs/passport");
12
+ const auth_constants_1 = require("../auth.constants");
13
+ let RefreshAuthGuard = class RefreshAuthGuard extends (0, passport_1.AuthGuard)(auth_constants_1.REFRESH_STRATEGY_NAME) {
14
+ };
15
+ exports.RefreshAuthGuard = RefreshAuthGuard;
16
+ exports.RefreshAuthGuard = RefreshAuthGuard = __decorate([
17
+ (0, common_1.Injectable)()
18
+ ], RefreshAuthGuard);
19
+ //# sourceMappingURL=refresh-auth.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-auth.guard.js","sourceRoot":"","sources":["../../src/lib/guards/refresh-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,+CAA6C;AAC7C,sDAA0D;AAGnD,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,IAAA,oBAAS,EAAC,sCAAqB,CAAC;CAAG,CAAA;AAA5D,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;GACA,gBAAgB,CAA4C"}
@@ -0,0 +1,11 @@
1
+ export { AuthModule } from './auth.module';
2
+ export { AuthService } from './auth.service';
3
+ export type { AuthTokens, LoginResult } from './auth.service';
4
+ export { JWT_STRATEGY_NAME, REFRESH_STRATEGY_NAME, REFRESH_TOKEN_STORE, USER_VALIDATOR, AUTH_MODULE_OPTIONS, IS_PUBLIC_KEY, } from './auth.constants';
5
+ export * from './decorators';
6
+ export * from './guards';
7
+ export * from './dto';
8
+ export * from './interfaces';
9
+ export * from './errors/auth.errors';
10
+ export type { RefreshRequestUser } from './strategies/refresh.strategy';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.IS_PUBLIC_KEY = exports.AUTH_MODULE_OPTIONS = exports.USER_VALIDATOR = exports.REFRESH_TOKEN_STORE = exports.REFRESH_STRATEGY_NAME = exports.JWT_STRATEGY_NAME = exports.AuthService = exports.AuthModule = void 0;
18
+ var auth_module_1 = require("./auth.module");
19
+ Object.defineProperty(exports, "AuthModule", { enumerable: true, get: function () { return auth_module_1.AuthModule; } });
20
+ var auth_service_1 = require("./auth.service");
21
+ Object.defineProperty(exports, "AuthService", { enumerable: true, get: function () { return auth_service_1.AuthService; } });
22
+ var auth_constants_1 = require("./auth.constants");
23
+ Object.defineProperty(exports, "JWT_STRATEGY_NAME", { enumerable: true, get: function () { return auth_constants_1.JWT_STRATEGY_NAME; } });
24
+ Object.defineProperty(exports, "REFRESH_STRATEGY_NAME", { enumerable: true, get: function () { return auth_constants_1.REFRESH_STRATEGY_NAME; } });
25
+ Object.defineProperty(exports, "REFRESH_TOKEN_STORE", { enumerable: true, get: function () { return auth_constants_1.REFRESH_TOKEN_STORE; } });
26
+ Object.defineProperty(exports, "USER_VALIDATOR", { enumerable: true, get: function () { return auth_constants_1.USER_VALIDATOR; } });
27
+ Object.defineProperty(exports, "AUTH_MODULE_OPTIONS", { enumerable: true, get: function () { return auth_constants_1.AUTH_MODULE_OPTIONS; } });
28
+ Object.defineProperty(exports, "IS_PUBLIC_KEY", { enumerable: true, get: function () { return auth_constants_1.IS_PUBLIC_KEY; } });
29
+ __exportStar(require("./decorators"), exports);
30
+ __exportStar(require("./guards"), exports);
31
+ __exportStar(require("./dto"), exports);
32
+ __exportStar(require("./interfaces"), exports);
33
+ __exportStar(require("./errors/auth.errors"), exports);
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAGpB,mDAO0B;AANxB,mHAAA,iBAAiB,OAAA;AACjB,uHAAA,qBAAqB,OAAA;AACrB,qHAAA,mBAAmB,OAAA;AACnB,gHAAA,cAAc,OAAA;AACd,qHAAA,mBAAmB,OAAA;AACnB,+GAAA,aAAa,OAAA;AAGf,+CAA6B;AAC7B,2CAAyB;AACzB,wCAAsB;AACtB,+CAA6B;AAC7B,uDAAqC"}
@@ -0,0 +1,38 @@
1
+ import { ModuleMetadata, Type } from '@nestjs/common';
2
+ import { RefreshTokenStore } from './refresh-token-store.interface';
3
+ import { UserValidator } from './user-validator.interface';
4
+ export interface AuthModuleOptions {
5
+ accessSecret: string;
6
+ refreshSecret: string;
7
+ /** e.g. '15m', '1h', or seconds as a number. Default: '15m' */
8
+ accessTtl?: string | number;
9
+ /** e.g. '30d', '7d'. Default: '30d' */
10
+ refreshTtl?: string | number;
11
+ /** Optional pepper mixed into the token hash so a DB leak alone is not replayable. */
12
+ tokenHashPepper?: string;
13
+ /** JWT clock skew tolerance in seconds. Default: 5 */
14
+ clockTolerance?: number;
15
+ /** JWT issuer claim. Optional. */
16
+ issuer?: string;
17
+ /** JWT audience claim. Optional. */
18
+ audience?: string;
19
+ }
20
+ export interface RefreshTokenStoreProvider {
21
+ useExisting?: Type<RefreshTokenStore>;
22
+ useClass?: Type<RefreshTokenStore>;
23
+ useFactory?: (...args: any[]) => RefreshTokenStore | Promise<RefreshTokenStore>;
24
+ inject?: any[];
25
+ }
26
+ export interface UserValidatorProvider {
27
+ useExisting?: Type<UserValidator>;
28
+ useClass?: Type<UserValidator>;
29
+ useFactory?: (...args: any[]) => UserValidator | Promise<UserValidator>;
30
+ inject?: any[];
31
+ }
32
+ export interface AuthModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
33
+ useFactory: (...args: any[]) => AuthModuleOptions | Promise<AuthModuleOptions>;
34
+ inject?: any[];
35
+ store: RefreshTokenStoreProvider;
36
+ validator: UserValidatorProvider;
37
+ }
38
+ //# sourceMappingURL=auth-module-options.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-module-options.interface.d.ts","sourceRoot":"","sources":["../../src/lib/interfaces/auth-module-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,sFAAsF;IACtF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,CACX,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACxE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,sBACf,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;IACvC,UAAU,EAAE,CACV,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,KAAK,EAAE,yBAAyB,CAAC;IACjC,SAAS,EAAE,qBAAqB,CAAC;CAClC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=auth-module-options.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-module-options.interface.js","sourceRoot":"","sources":["../../src/lib/interfaces/auth-module-options.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export interface AuthUser {
2
+ id: string | number;
3
+ email?: string;
4
+ roles?: string[];
5
+ permissions?: string[];
6
+ [key: string]: unknown;
7
+ }
8
+ //# sourceMappingURL=auth-user.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-user.interface.d.ts","sourceRoot":"","sources":["../../src/lib/interfaces/auth-user.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=auth-user.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-user.interface.js","sourceRoot":"","sources":["../../src/lib/interfaces/auth-user.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export * from './auth-user.interface';
2
+ export * from './jwt-payload.interface';
3
+ export * from './refresh-token-store.interface';
4
+ export * from './user-validator.interface';
5
+ export * from './auth-module-options.interface';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./auth-user.interface"), exports);
18
+ __exportStar(require("./jwt-payload.interface"), exports);
19
+ __exportStar(require("./refresh-token-store.interface"), exports);
20
+ __exportStar(require("./user-validator.interface"), exports);
21
+ __exportStar(require("./auth-module-options.interface"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,0DAAwC;AACxC,kEAAgD;AAChD,6DAA2C;AAC3C,kEAAgD"}
@@ -0,0 +1,14 @@
1
+ export interface JwtPayload {
2
+ sub: string | number;
3
+ email?: string;
4
+ roles?: string[];
5
+ [key: string]: unknown;
6
+ }
7
+ export interface RefreshJwtPayload {
8
+ sub: string | number;
9
+ jti: string;
10
+ typ: 'refresh';
11
+ iat?: number;
12
+ exp?: number;
13
+ }
14
+ //# sourceMappingURL=jwt-payload.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-payload.interface.d.ts","sourceRoot":"","sources":["../../src/lib/interfaces/jwt-payload.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,SAAS,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=jwt-payload.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-payload.interface.js","sourceRoot":"","sources":["../../src/lib/interfaces/jwt-payload.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ export type SessionMetadata = Record<string, unknown>;
2
+ export interface StoredRefreshToken {
3
+ id: string;
4
+ userId: string | number;
5
+ tokenHash: string;
6
+ metadata?: SessionMetadata;
7
+ expiresAt: Date;
8
+ revokedAt?: Date | null;
9
+ createdAt: Date;
10
+ }
11
+ export interface CreateRefreshTokenInput {
12
+ id: string;
13
+ userId: string | number;
14
+ tokenHash: string;
15
+ expiresAt: Date;
16
+ metadata?: SessionMetadata;
17
+ }
18
+ /**
19
+ * Pluggable persistence contract for refresh-token sessions. Consumers provide
20
+ * the implementation (TypeORM, Prisma, Mongoose, Redis, etc.).
21
+ *
22
+ * `consume` MUST be atomic: it should mark the row revoked and return it ONLY
23
+ * if it was previously unrevoked AND the supplied hash matches. Implementing
24
+ * this non-atomically opens a window where two concurrent refresh calls both
25
+ * succeed and split the session.
26
+ */
27
+ export interface RefreshTokenStore {
28
+ create(input: CreateRefreshTokenInput): Promise<StoredRefreshToken>;
29
+ findById(id: string): Promise<StoredRefreshToken | null>;
30
+ consume(id: string, expectedHash: string): Promise<StoredRefreshToken | null>;
31
+ revokeById(id: string): Promise<void>;
32
+ revokeAllForUser(userId: string | number): Promise<void>;
33
+ }
34
+ //# sourceMappingURL=refresh-token-store.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-token-store.interface.d.ts","sourceRoot":"","sources":["../../src/lib/interfaces/refresh-token-store.interface.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACzD,OAAO,CACL,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=refresh-token-store.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-token-store.interface.js","sourceRoot":"","sources":["../../src/lib/interfaces/refresh-token-store.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { AuthUser } from './auth-user.interface';
2
+ /**
3
+ * Pluggable identity contract. Consumers implement this against their own
4
+ * user store (DB, identity provider, etc.) — the library never reads users
5
+ * directly.
6
+ */
7
+ export interface UserValidator {
8
+ validateCredentials(email: string, password: string): Promise<AuthUser | null>;
9
+ findById(userId: string | number): Promise<AuthUser | null>;
10
+ }
11
+ //# sourceMappingURL=user-validator.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-validator.interface.d.ts","sourceRoot":"","sources":["../../src/lib/interfaces/user-validator.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,mBAAmB,CACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=user-validator.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-validator.interface.js","sourceRoot":"","sources":["../../src/lib/interfaces/user-validator.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './token.service';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./token.service"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
@@ -0,0 +1,23 @@
1
+ import { JwtService } from '@nestjs/jwt';
2
+ import type { AuthModuleOptions } from '../interfaces/auth-module-options.interface';
3
+ import type { JwtPayload, RefreshJwtPayload } from '../interfaces/jwt-payload.interface';
4
+ export declare class TokenService {
5
+ private readonly jwt;
6
+ private readonly options;
7
+ constructor(jwt: JwtService, options: AuthModuleOptions);
8
+ signAccessToken(payload: JwtPayload): Promise<string>;
9
+ signRefreshToken(payload: {
10
+ sub: string | number;
11
+ jti: string;
12
+ }): Promise<string>;
13
+ verifyAccessToken(token: string): Promise<JwtPayload>;
14
+ verifyRefreshToken(token: string): Promise<RefreshJwtPayload>;
15
+ /**
16
+ * Resolve the configured refresh-token TTL into an absolute Date for store rows.
17
+ * Mirrors `expiresIn` semantics from `jsonwebtoken`: number = seconds, string = vercel/ms.
18
+ */
19
+ refreshExpiresAt(now?: Date): Date;
20
+ private signOpts;
21
+ private verifyOpts;
22
+ }
23
+ //# sourceMappingURL=token.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.service.d.ts","sourceRoot":"","sources":["../../src/lib/services/token.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EAGX,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EAClB,MAAM,qCAAqC,CAAC;AAI7C,qBACa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAEpB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,GAAG,EAAE,UAAU,EAEf,OAAO,EAAE,iBAAiB;IAG7C,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD,gBAAgB,CAAC,OAAO,EAAE;QACxB,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;KACb,GAAG,OAAO,CAAC,MAAM,CAAC;IAOnB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIrD,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7D;;;OAGG;IACH,gBAAgB,CAAC,GAAG,GAAE,IAAiB,GAAG,IAAI;IAM9C,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,UAAU;CASnB"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TokenService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const jwt_1 = require("@nestjs/jwt");
18
+ const auth_constants_1 = require("../auth.constants");
19
+ let TokenService = class TokenService {
20
+ jwt;
21
+ options;
22
+ constructor(jwt, options) {
23
+ this.jwt = jwt;
24
+ this.options = options;
25
+ }
26
+ signAccessToken(payload) {
27
+ return this.jwt.signAsync(payload, this.signOpts(this.options.accessSecret, this.options.accessTtl ?? '15m'));
28
+ }
29
+ signRefreshToken(payload) {
30
+ return this.jwt.signAsync({ ...payload, typ: auth_constants_1.REFRESH_TOKEN_TYPE }, this.signOpts(this.options.refreshSecret, this.options.refreshTtl ?? '30d'));
31
+ }
32
+ verifyAccessToken(token) {
33
+ return this.jwt.verifyAsync(token, this.verifyOpts(this.options.accessSecret));
34
+ }
35
+ verifyRefreshToken(token) {
36
+ return this.jwt.verifyAsync(token, this.verifyOpts(this.options.refreshSecret));
37
+ }
38
+ /**
39
+ * Resolve the configured refresh-token TTL into an absolute Date for store rows.
40
+ * Mirrors `expiresIn` semantics from `jsonwebtoken`: number = seconds, string = vercel/ms.
41
+ */
42
+ refreshExpiresAt(now = new Date()) {
43
+ const ttl = this.options.refreshTtl ?? '30d';
44
+ const seconds = ttlToSeconds(ttl);
45
+ return new Date(now.getTime() + seconds * 1000);
46
+ }
47
+ signOpts(secret, ttl) {
48
+ const opts = {
49
+ secret,
50
+ expiresIn: ttl,
51
+ };
52
+ if (this.options.issuer)
53
+ opts.issuer = this.options.issuer;
54
+ if (this.options.audience)
55
+ opts.audience = this.options.audience;
56
+ return opts;
57
+ }
58
+ verifyOpts(secret) {
59
+ const opts = {
60
+ secret,
61
+ clockTolerance: this.options.clockTolerance ?? 5,
62
+ };
63
+ if (this.options.issuer)
64
+ opts.issuer = this.options.issuer;
65
+ if (this.options.audience)
66
+ opts.audience = this.options.audience;
67
+ return opts;
68
+ }
69
+ };
70
+ exports.TokenService = TokenService;
71
+ exports.TokenService = TokenService = __decorate([
72
+ (0, common_1.Injectable)(),
73
+ __param(1, (0, common_1.Inject)(auth_constants_1.AUTH_MODULE_OPTIONS)),
74
+ __metadata("design:paramtypes", [jwt_1.JwtService, Object])
75
+ ], TokenService);
76
+ function ttlToSeconds(ttl) {
77
+ if (typeof ttl === 'number')
78
+ return ttl;
79
+ const match = /^(\d+)\s*(s|m|h|d|w)?$/i.exec(ttl.trim());
80
+ if (!match) {
81
+ throw new Error(`Invalid TTL: ${ttl}`);
82
+ }
83
+ const value = parseInt(match[1], 10);
84
+ const unit = (match[2] || 's').toLowerCase();
85
+ const multipliers = {
86
+ s: 1,
87
+ m: 60,
88
+ h: 3600,
89
+ d: 86400,
90
+ w: 604800,
91
+ };
92
+ return value * multipliers[unit];
93
+ }
94
+ //# sourceMappingURL=token.service.js.map