nestjs-apikey-module 0.0.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.
Files changed (57) hide show
  1. package/README.md +1 -0
  2. package/dist/api-key.module.d.ts +6 -0
  3. package/dist/api-key.module.js +57 -0
  4. package/dist/api-key.module.js.map +1 -0
  5. package/dist/config/enum.d.ts +5 -0
  6. package/dist/config/enum.js +10 -0
  7. package/dist/config/enum.js.map +1 -0
  8. package/dist/constants/index.d.ts +3 -0
  9. package/dist/constants/index.js +7 -0
  10. package/dist/constants/index.js.map +1 -0
  11. package/dist/decorators/api-key-actions.decorator.d.ts +2 -0
  12. package/dist/decorators/api-key-actions.decorator.js +8 -0
  13. package/dist/decorators/api-key-actions.decorator.js.map +1 -0
  14. package/dist/decorators/api-key-session.decorator.d.ts +1 -0
  15. package/dist/decorators/api-key-session.decorator.js +9 -0
  16. package/dist/decorators/api-key-session.decorator.js.map +1 -0
  17. package/dist/entities/api-key-action.entity.d.ts +7 -0
  18. package/dist/entities/api-key-action.entity.js +41 -0
  19. package/dist/entities/api-key-action.entity.js.map +1 -0
  20. package/dist/entities/api-key.entity.d.ts +17 -0
  21. package/dist/entities/api-key.entity.js +82 -0
  22. package/dist/entities/api-key.entity.js.map +1 -0
  23. package/dist/guards/api-key-strategy.guard.d.ts +10 -0
  24. package/dist/guards/api-key-strategy.guard.js +35 -0
  25. package/dist/guards/api-key-strategy.guard.js.map +1 -0
  26. package/dist/guards/api-key.guard.d.ts +9 -0
  27. package/dist/guards/api-key.guard.js +48 -0
  28. package/dist/guards/api-key.guard.js.map +1 -0
  29. package/dist/helpers/api-key-actions.helper.d.ts +2 -0
  30. package/dist/helpers/api-key-actions.helper.js +15 -0
  31. package/dist/helpers/api-key-actions.helper.js.map +1 -0
  32. package/dist/index.d.ts +14 -0
  33. package/dist/index.js +31 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/interfaces/api-key-context.interface.d.ts +5 -0
  36. package/dist/interfaces/api-key-context.interface.js +3 -0
  37. package/dist/interfaces/api-key-context.interface.js.map +1 -0
  38. package/dist/interfaces/api-key.interfaces.d.ts +30 -0
  39. package/dist/interfaces/api-key.interfaces.js +3 -0
  40. package/dist/interfaces/api-key.interfaces.js.map +1 -0
  41. package/dist/services/api-key.service.d.ts +21 -0
  42. package/dist/services/api-key.service.js +171 -0
  43. package/dist/services/api-key.service.js.map +1 -0
  44. package/dist/tasks/api-key-expiry.task.d.ts +13 -0
  45. package/dist/tasks/api-key-expiry.task.js +65 -0
  46. package/dist/tasks/api-key-expiry.task.js.map +1 -0
  47. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  48. package/dist/utils/expiry.util.d.ts +1 -0
  49. package/dist/utils/expiry.util.js +8 -0
  50. package/dist/utils/expiry.util.js.map +1 -0
  51. package/dist/utils/key.util.d.ts +1 -0
  52. package/dist/utils/key.util.js +8 -0
  53. package/dist/utils/key.util.js.map +1 -0
  54. package/dist/utils/secret.util.d.ts +2 -0
  55. package/dist/utils/secret.util.js +13 -0
  56. package/dist/utils/secret.util.js.map +1 -0
  57. package/package.json +63 -0
@@ -0,0 +1 @@
1
+ export declare function calculateExpiryDate(expiresInDays: number): Date;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateExpiryDate = calculateExpiryDate;
4
+ const luxon_1 = require("luxon");
5
+ function calculateExpiryDate(expiresInDays) {
6
+ return luxon_1.DateTime.utc().plus({ days: expiresInDays }).endOf("day").toJSDate();
7
+ }
8
+ //# sourceMappingURL=expiry.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expiry.util.js","sourceRoot":"","sources":["../../libs/nestjs-apikey-module/src/utils/expiry.util.ts"],"names":[],"mappings":";;AAWA,kDAEC;AAbD,iCAAiC;AAWjC,SAAgB,mBAAmB,CAAC,aAAqB;IACvD,OAAO,gBAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9E,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function generateKey(prefix?: string): string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateKey = generateKey;
4
+ const crypto = require("crypto");
5
+ function generateKey(prefix = "ak_prod_") {
6
+ return `${prefix}${crypto.randomBytes(6).toString("hex")}`;
7
+ }
8
+ //# sourceMappingURL=key.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key.util.js","sourceRoot":"","sources":["../../libs/nestjs-apikey-module/src/utils/key.util.ts"],"names":[],"mappings":";;AAQA,kCAEC;AAVD,iCAAiC;AAQjC,SAAgB,WAAW,CAAC,SAAiB,UAAU;IACrD,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function generateSecret(): string;
2
+ export declare function hashSecret(secret: string, saltRounds?: number): Promise<string>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateSecret = generateSecret;
4
+ exports.hashSecret = hashSecret;
5
+ const crypto = require("crypto");
6
+ const bcrypt = require("bcryptjs");
7
+ function generateSecret() {
8
+ return crypto.randomBytes(32).toString("base64url");
9
+ }
10
+ async function hashSecret(secret, saltRounds = 12) {
11
+ return bcrypt.hash(secret, saltRounds);
12
+ }
13
+ //# sourceMappingURL=secret.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret.util.js","sourceRoot":"","sources":["../../libs/nestjs-apikey-module/src/utils/secret.util.ts"],"names":[],"mappings":";;AAQA,wCAEC;AASD,gCAKC;AAxBD,iCAAiC;AACjC,mCAAmC;AAOnC,SAAgB,cAAc;IAC5B,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AASM,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,aAAqB,EAAE;IAEvB,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "nestjs-apikey-module",
3
+ "version": "0.0.1",
4
+ "description": "NestJS API key authentication module — generation, validation, rotation, revocation and guard",
5
+ "author": "Kevin Javier Reyes",
6
+ "license": "MIT",
7
+ "keywords": [
8
+ "nestjs",
9
+ "api-key",
10
+ "authentication",
11
+ "guard",
12
+ "typeorm"
13
+ ],
14
+ "main": "dist/index.js",
15
+ "types": "dist/index.d.ts",
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "engines": {
20
+ "node": ">=20.0.0"
21
+ },
22
+ "scripts": {
23
+ "build": "tsc -p libs/nestjs-apikey-module/tsconfig.lib.json",
24
+ "test": "jest",
25
+ "test:watch": "jest --watch",
26
+ "test:cov": "jest --coverage"
27
+ },
28
+ "dependencies": {
29
+ "bcryptjs": "3.0.3",
30
+ "luxon": "^3.7.2"
31
+ },
32
+ "peerDependencies": {
33
+ "@nestjs/common": "^11.0.0",
34
+ "@nestjs/core": "^11.0.0",
35
+ "@nestjs/schedule": "^6.0.0",
36
+ "@nestjs/swagger": "^11.0.0",
37
+ "@nestjs/typeorm": "^11.0.0",
38
+ "class-transformer": "^0.5.1",
39
+ "class-validator": "^0.15.1",
40
+ "reflect-metadata": "^0.2.0",
41
+ "typeorm": "^0.3.28"
42
+ },
43
+ "devDependencies": {
44
+ "@nestjs/cli": "^11.0.0",
45
+ "@nestjs/common": "^11.0.0",
46
+ "@nestjs/core": "^11.0.0",
47
+ "@nestjs/swagger": "^11.0.0",
48
+ "@nestjs/testing": "^11.0.0",
49
+ "@nestjs/schedule": "^6.0.0",
50
+ "@nestjs/typeorm": "^11.0.0",
51
+ "@types/bcryptjs": "^3.0.0",
52
+ "@types/luxon": "^3.7.1",
53
+ "@types/jest": "^29.0.0",
54
+ "@types/node": "^20.0.0",
55
+ "class-transformer": "^0.5.1",
56
+ "class-validator": "^0.15.1",
57
+ "jest": "^29.0.0",
58
+ "reflect-metadata": "^0.2.0",
59
+ "ts-jest": "^29.0.0",
60
+ "typeorm": "^0.3.28",
61
+ "typescript": "^5.0.0"
62
+ }
63
+ }