apitally 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/README.md +5 -9
  2. package/lib/cjs/common/client.cjs +25 -100
  3. package/lib/cjs/common/client.cjs.map +1 -1
  4. package/lib/cjs/express/index.cjs +0 -14
  5. package/lib/cjs/express/index.cjs.map +1 -1
  6. package/lib/cjs/express/middleware.cjs +1 -8
  7. package/lib/cjs/express/middleware.cjs.map +1 -1
  8. package/lib/cjs/fastify/index.cjs +0 -14
  9. package/lib/cjs/fastify/index.cjs.map +1 -1
  10. package/lib/cjs/fastify/plugin.cjs +28 -34
  11. package/lib/cjs/fastify/plugin.cjs.map +1 -1
  12. package/lib/cjs/koa/index.cjs +0 -14
  13. package/lib/cjs/koa/index.cjs.map +1 -1
  14. package/lib/cjs/koa/middleware.cjs +1 -8
  15. package/lib/cjs/koa/middleware.cjs.map +1 -1
  16. package/lib/cjs/nestjs/index.cjs +0 -26
  17. package/lib/cjs/nestjs/index.cjs.map +1 -1
  18. package/lib/esm/common/client.js +25 -100
  19. package/lib/esm/common/client.js.map +1 -1
  20. package/lib/esm/express/index.js +1 -4
  21. package/lib/esm/express/index.js.map +1 -1
  22. package/lib/esm/express/middleware.js +1 -8
  23. package/lib/esm/express/middleware.js.map +1 -1
  24. package/lib/esm/fastify/index.js +1 -4
  25. package/lib/esm/fastify/index.js.map +1 -1
  26. package/lib/esm/fastify/plugin.js +28 -34
  27. package/lib/esm/fastify/plugin.js.map +1 -1
  28. package/lib/esm/koa/index.js +1 -4
  29. package/lib/esm/koa/index.js.map +1 -1
  30. package/lib/esm/koa/middleware.js +1 -8
  31. package/lib/esm/koa/middleware.js.map +1 -1
  32. package/lib/esm/nestjs/index.js +1 -4
  33. package/lib/esm/nestjs/index.js.map +1 -1
  34. package/lib/types/common/client.d.ts +1 -9
  35. package/lib/types/common/client.d.ts.map +1 -1
  36. package/lib/types/common/types.d.ts +0 -4
  37. package/lib/types/common/types.d.ts.map +1 -1
  38. package/lib/types/express/index.d.ts +0 -2
  39. package/lib/types/express/index.d.ts.map +1 -1
  40. package/lib/types/express/middleware.d.ts +0 -2
  41. package/lib/types/express/middleware.d.ts.map +1 -1
  42. package/lib/types/fastify/index.d.ts +0 -2
  43. package/lib/types/fastify/index.d.ts.map +1 -1
  44. package/lib/types/fastify/plugin.d.ts +0 -2
  45. package/lib/types/fastify/plugin.d.ts.map +1 -1
  46. package/lib/types/koa/index.d.ts +0 -2
  47. package/lib/types/koa/index.d.ts.map +1 -1
  48. package/lib/types/koa/middleware.d.ts.map +1 -1
  49. package/lib/types/nestjs/index.d.ts +0 -2
  50. package/lib/types/nestjs/index.d.ts.map +1 -1
  51. package/package.json +2 -4
  52. package/lib/cjs/common/index.cjs +0 -13
  53. package/lib/cjs/common/index.cjs.map +0 -1
  54. package/lib/cjs/common/keyRegistry.cjs +0 -162
  55. package/lib/cjs/common/keyRegistry.cjs.map +0 -1
  56. package/lib/cjs/express/auth.cjs +0 -105
  57. package/lib/cjs/express/auth.cjs.map +0 -1
  58. package/lib/cjs/fastify/auth.cjs +0 -105
  59. package/lib/cjs/fastify/auth.cjs.map +0 -1
  60. package/lib/cjs/koa/auth.cjs +0 -113
  61. package/lib/cjs/koa/auth.cjs.map +0 -1
  62. package/lib/cjs/nestjs/auth.cjs +0 -132
  63. package/lib/cjs/nestjs/auth.cjs.map +0 -1
  64. package/lib/esm/common/index.js +0 -1
  65. package/lib/esm/common/index.js.map +0 -1
  66. package/lib/esm/common/keyRegistry.js +0 -155
  67. package/lib/esm/common/keyRegistry.js.map +0 -1
  68. package/lib/esm/express/auth.js +0 -98
  69. package/lib/esm/express/auth.js.map +0 -1
  70. package/lib/esm/fastify/auth.js +0 -98
  71. package/lib/esm/fastify/auth.js.map +0 -1
  72. package/lib/esm/koa/auth.js +0 -106
  73. package/lib/esm/koa/auth.js.map +0 -1
  74. package/lib/esm/nestjs/auth.js +0 -126
  75. package/lib/esm/nestjs/auth.js.map +0 -1
  76. package/lib/types/common/index.d.ts +0 -2
  77. package/lib/types/common/index.d.ts.map +0 -1
  78. package/lib/types/common/keyRegistry.d.ts +0 -29
  79. package/lib/types/common/keyRegistry.d.ts.map +0 -1
  80. package/lib/types/express/auth.d.ts +0 -6
  81. package/lib/types/express/auth.d.ts.map +0 -1
  82. package/lib/types/fastify/auth.d.ts +0 -6
  83. package/lib/types/fastify/auth.d.ts.map +0 -1
  84. package/lib/types/koa/auth.d.ts +0 -6
  85. package/lib/types/koa/auth.d.ts.map +0 -1
  86. package/lib/types/nestjs/auth.d.ts +0 -12
  87. package/lib/types/nestjs/auth.d.ts.map +0 -1
@@ -1,105 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.requireApiKey = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _client = require("../common/client.cjs");
11
- var requireApiKey = exports.requireApiKey = function requireApiKey() {
12
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
13
- scopes = _ref.scopes,
14
- customHeader = _ref.customHeader;
15
- return /*#__PURE__*/function () {
16
- var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(request, reply, done) {
17
- var apiKey, authorizationParts, customHeaderValue, client, keyInfo;
18
- return _regenerator["default"].wrap(function _callee$(_context) {
19
- while (1) switch (_context.prev = _context.next) {
20
- case 0:
21
- if (customHeader) {
22
- _context.next = 13;
23
- break;
24
- }
25
- if (request.headers.authorization) {
26
- _context.next = 4;
27
- break;
28
- }
29
- reply.code(401).header("WWW-Authenticate", "ApiKey").send({
30
- error: "Missing authorization header"
31
- });
32
- return _context.abrupt("return");
33
- case 4:
34
- authorizationParts = request.headers.authorization.split(" ");
35
- if (!(authorizationParts.length === 2 && authorizationParts[0].toLowerCase() === "apikey")) {
36
- _context.next = 9;
37
- break;
38
- }
39
- apiKey = authorizationParts[1];
40
- _context.next = 11;
41
- break;
42
- case 9:
43
- reply.code(401).header("WWW-Authenticate", "ApiKey").send({
44
- error: "Invalid authorization scheme"
45
- });
46
- return _context.abrupt("return");
47
- case 11:
48
- _context.next = 14;
49
- break;
50
- case 13:
51
- if (customHeader) {
52
- customHeaderValue = request.headers[customHeader.toLowerCase()];
53
- if (typeof customHeaderValue === "string") {
54
- apiKey = customHeaderValue;
55
- } else if (Array.isArray(customHeaderValue)) {
56
- apiKey = customHeaderValue[0];
57
- }
58
- }
59
- case 14:
60
- if (apiKey) {
61
- _context.next = 17;
62
- break;
63
- }
64
- reply.code(403).send({
65
- error: "Missing API key"
66
- });
67
- return _context.abrupt("return");
68
- case 17:
69
- client = _client.ApitallyClient.getInstance();
70
- _context.next = 20;
71
- return client.keyRegistry.get(apiKey);
72
- case 20:
73
- keyInfo = _context.sent;
74
- if (keyInfo) {
75
- _context.next = 24;
76
- break;
77
- }
78
- reply.code(403).send({
79
- error: "Invalid API key"
80
- });
81
- return _context.abrupt("return");
82
- case 24:
83
- if (!(scopes && !keyInfo.hasScopes(scopes))) {
84
- _context.next = 27;
85
- break;
86
- }
87
- reply.code(403).send({
88
- error: "Permission denied"
89
- });
90
- return _context.abrupt("return");
91
- case 27:
92
- request.keyInfo = keyInfo;
93
- done();
94
- case 29:
95
- case "end":
96
- return _context.stop();
97
- }
98
- }, _callee);
99
- }));
100
- return function (_x, _x2, _x3) {
101
- return _ref2.apply(this, arguments);
102
- };
103
- }();
104
- };
105
- //# sourceMappingURL=auth.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.cjs","names":["_client","require","requireApiKey","exports","_ref","arguments","length","undefined","scopes","customHeader","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","request","reply","done","apiKey","authorizationParts","customHeaderValue","client","keyInfo","wrap","_callee$","_context","prev","next","headers","authorization","code","header","send","error","abrupt","split","toLowerCase","Array","isArray","ApitallyClient","getInstance","keyRegistry","get","sent","hasScopes","stop","_x","_x2","_x3","apply"],"sources":["../../../src/fastify/auth.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,113 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.requireApiKey = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _client = require("../common/client.cjs");
11
- var requireApiKey = exports.requireApiKey = function requireApiKey() {
12
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
13
- scopes = _ref.scopes,
14
- customHeader = _ref.customHeader;
15
- return /*#__PURE__*/function () {
16
- var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(ctx, next) {
17
- var apiKey, authorizationParts, customHeaderValue, client, keyInfo;
18
- return _regenerator["default"].wrap(function _callee$(_context) {
19
- while (1) switch (_context.prev = _context.next) {
20
- case 0:
21
- if (customHeader) {
22
- _context.next = 17;
23
- break;
24
- }
25
- if (ctx.headers.authorization) {
26
- _context.next = 6;
27
- break;
28
- }
29
- ctx.status = 401;
30
- ctx.set("WWW-Authenticate", "ApiKey");
31
- ctx.body = {
32
- error: "Missing authorization header"
33
- };
34
- return _context.abrupt("return");
35
- case 6:
36
- authorizationParts = ctx.headers.authorization.split(" ");
37
- if (!(authorizationParts.length === 2 && authorizationParts[0].toLowerCase() === "apikey")) {
38
- _context.next = 11;
39
- break;
40
- }
41
- apiKey = authorizationParts[1];
42
- _context.next = 15;
43
- break;
44
- case 11:
45
- ctx.status = 401;
46
- ctx.set("WWW-Authenticate", "ApiKey");
47
- ctx.body = {
48
- error: "Invalid authorization scheme"
49
- };
50
- return _context.abrupt("return");
51
- case 15:
52
- _context.next = 18;
53
- break;
54
- case 17:
55
- if (customHeader) {
56
- customHeaderValue = ctx.headers[customHeader.toLowerCase()];
57
- if (typeof customHeaderValue === "string") {
58
- apiKey = customHeaderValue;
59
- } else if (Array.isArray(customHeaderValue)) {
60
- apiKey = customHeaderValue[0];
61
- }
62
- }
63
- case 18:
64
- if (apiKey) {
65
- _context.next = 22;
66
- break;
67
- }
68
- ctx.status = 403;
69
- ctx.body = {
70
- error: "Missing API key"
71
- };
72
- return _context.abrupt("return");
73
- case 22:
74
- client = _client.ApitallyClient.getInstance();
75
- _context.next = 25;
76
- return client.keyRegistry.get(apiKey);
77
- case 25:
78
- keyInfo = _context.sent;
79
- if (keyInfo) {
80
- _context.next = 30;
81
- break;
82
- }
83
- ctx.status = 403;
84
- ctx.body = {
85
- error: "Invalid API key"
86
- };
87
- return _context.abrupt("return");
88
- case 30:
89
- if (!(scopes && !keyInfo.hasScopes(scopes))) {
90
- _context.next = 34;
91
- break;
92
- }
93
- ctx.status = 403;
94
- ctx.body = {
95
- error: "Permission denied"
96
- };
97
- return _context.abrupt("return");
98
- case 34:
99
- ctx.state.keyInfo = keyInfo;
100
- _context.next = 37;
101
- return next();
102
- case 37:
103
- case "end":
104
- return _context.stop();
105
- }
106
- }, _callee);
107
- }));
108
- return function (_x, _x2) {
109
- return _ref2.apply(this, arguments);
110
- };
111
- }();
112
- };
113
- //# sourceMappingURL=auth.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.cjs","names":["_client","require","requireApiKey","exports","_ref","arguments","length","undefined","scopes","customHeader","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","ctx","next","apiKey","authorizationParts","customHeaderValue","client","keyInfo","wrap","_callee$","_context","prev","headers","authorization","status","set","body","error","abrupt","split","toLowerCase","Array","isArray","ApitallyClient","getInstance","keyRegistry","get","sent","hasScopes","state","stop","_x","_x2","apply"],"sources":["../../../src/koa/auth.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,132 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.Scopes = exports.GetKeyInfo = exports.ApitallyApiKeyGuard = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
14
- var _common = require("@nestjs/common");
15
- var _core = require("@nestjs/core");
16
- var _client = require("../common/client.cjs");
17
- var _class;
18
- var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
19
- var c = arguments.length,
20
- r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
21
- d;
22
- if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2["default"])(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);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;
23
- return c > 3 && r && Object.defineProperty(target, key, r), r;
24
- };
25
- var __metadata = void 0 && (void 0).__metadata || function (k, v) {
26
- if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2["default"])(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
27
- };
28
- var ApitallyApiKeyGuard_1;
29
- var Scopes = exports.Scopes = function Scopes() {
30
- for (var _len = arguments.length, scopes = new Array(_len), _key = 0; _key < _len; _key++) {
31
- scopes[_key] = arguments[_key];
32
- }
33
- return (0, _common.SetMetadata)("scopes", scopes);
34
- };
35
- var ApitallyApiKeyGuard = exports.ApitallyApiKeyGuard = (_class = /*#__PURE__*/function () {
36
- function ApitallyApiKeyGuard(reflector) {
37
- (0, _classCallCheck2["default"])(this, ApitallyApiKeyGuard);
38
- (0, _defineProperty2["default"])(this, "reflector", void 0);
39
- this.reflector = reflector;
40
- }
41
- (0, _createClass2["default"])(ApitallyApiKeyGuard, [{
42
- key: "canActivate",
43
- value: function () {
44
- var _canActivate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(context) {
45
- var customHeader, req, res, apiKey, authorizationParts, customHeaderValue, client, keyInfo, scopes;
46
- return _regenerator["default"].wrap(function _callee$(_context) {
47
- while (1) switch (_context.prev = _context.next) {
48
- case 0:
49
- customHeader = ApitallyApiKeyGuard_1.customHeader;
50
- req = context.switchToHttp().getRequest();
51
- res = context.switchToHttp().getResponse();
52
- if (customHeader) {
53
- _context.next = 16;
54
- break;
55
- }
56
- if (req.headers.authorization) {
57
- _context.next = 7;
58
- break;
59
- }
60
- res.set("WWW-Authenticate", "ApiKey");
61
- throw new _common.UnauthorizedException("Missing authorization header");
62
- case 7:
63
- authorizationParts = req.headers.authorization.split(" ");
64
- if (!(authorizationParts.length === 2 && authorizationParts[0].toLowerCase() === "apikey")) {
65
- _context.next = 12;
66
- break;
67
- }
68
- apiKey = authorizationParts[1];
69
- _context.next = 14;
70
- break;
71
- case 12:
72
- res.set("WWW-Authenticate", "ApiKey");
73
- throw new _common.UnauthorizedException("Invalid authorization scheme");
74
- case 14:
75
- _context.next = 17;
76
- break;
77
- case 16:
78
- if (customHeader) {
79
- customHeaderValue = req.headers[customHeader.toLowerCase()];
80
- if (typeof customHeaderValue === "string") {
81
- apiKey = customHeaderValue;
82
- } else if (Array.isArray(customHeaderValue)) {
83
- apiKey = customHeaderValue[0];
84
- }
85
- }
86
- case 17:
87
- if (apiKey) {
88
- _context.next = 19;
89
- break;
90
- }
91
- throw new _common.ForbiddenException("Missing API key");
92
- case 19:
93
- client = _client.ApitallyClient.getInstance();
94
- _context.next = 22;
95
- return client.keyRegistry.get(apiKey);
96
- case 22:
97
- keyInfo = _context.sent;
98
- if (keyInfo) {
99
- _context.next = 25;
100
- break;
101
- }
102
- throw new _common.ForbiddenException("Invalid API key");
103
- case 25:
104
- scopes = this.reflector.get("scopes", context.getHandler());
105
- if (!(scopes && !keyInfo.hasScopes(scopes))) {
106
- _context.next = 28;
107
- break;
108
- }
109
- throw new _common.ForbiddenException("Permission denied");
110
- case 28:
111
- req.keyInfo = keyInfo;
112
- return _context.abrupt("return", true);
113
- case 30:
114
- case "end":
115
- return _context.stop();
116
- }
117
- }, _callee, this);
118
- }));
119
- function canActivate(_x) {
120
- return _canActivate.apply(this, arguments);
121
- }
122
- return canActivate;
123
- }()
124
- }]);
125
- return ApitallyApiKeyGuard;
126
- }(), ApitallyApiKeyGuard_1 = _class, (0, _defineProperty2["default"])(_class, "customHeader", void 0), _class);
127
- exports.ApitallyApiKeyGuard = ApitallyApiKeyGuard = ApitallyApiKeyGuard_1 = __decorate([(0, _common.Injectable)(), __metadata("design:paramtypes", [_core.Reflector])], ApitallyApiKeyGuard);
128
- var GetKeyInfo = exports.GetKeyInfo = (0, _common.createParamDecorator)(function (data, context) {
129
- var req = context.switchToHttp().getRequest();
130
- return req.keyInfo;
131
- });
132
- //# sourceMappingURL=auth.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.cjs","names":["_common","require","_core","_client","_class","Scopes","exports","_len","arguments","length","scopes","Array","_key","SetMetadata","ApitallyApiKeyGuard","reflector","_classCallCheck2","_defineProperty2","_createClass2","key","value","_canActivate","_asyncToGenerator2","_regenerator","mark","_callee","context","customHeader","req","res","apiKey","authorizationParts","customHeaderValue","client","keyInfo","wrap","_callee$","_context","prev","next","ApitallyApiKeyGuard_1","switchToHttp","getRequest","getResponse","headers","authorization","set","UnauthorizedException","split","toLowerCase","isArray","ForbiddenException","ApitallyClient","getInstance","keyRegistry","get","sent","getHandler","hasScopes","abrupt","stop","canActivate","_x","apply","__decorate","Injectable","Reflector","GetKeyInfo","createParamDecorator","data"],"sources":["../../../src/nestjs/auth.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1 +0,0 @@
1
- export { KeyCacheBase } from "./keyRegistry.js";
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["KeyCacheBase"],"sources":["../../../src/common/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAY,QAAQ,kBAAkB"}
@@ -1,155 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
- import _createClass from "@babel/runtime/helpers/createClass";
5
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
6
- import _regeneratorRuntime from "@babel/runtime/regenerator";
7
- import { scrypt } from "crypto";
8
- export var KeyInfo = /*#__PURE__*/function () {
9
- function KeyInfo(keyId, apiKeyId) {
10
- var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
11
- var scopes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
12
- var expiresInSeconds = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
13
- _classCallCheck(this, KeyInfo);
14
- _defineProperty(this, "keyId", void 0);
15
- _defineProperty(this, "apiKeyId", void 0);
16
- _defineProperty(this, "name", void 0);
17
- _defineProperty(this, "scopes", void 0);
18
- _defineProperty(this, "expiresAt", void 0);
19
- this.keyId = keyId;
20
- this.apiKeyId = apiKeyId;
21
- this.name = name;
22
- this.scopes = scopes;
23
- this.expiresAt = expiresInSeconds !== null && expiresInSeconds !== undefined ? new Date(Date.now() + expiresInSeconds * 1000) : null;
24
- }
25
- _createClass(KeyInfo, [{
26
- key: "isExpired",
27
- get: function get() {
28
- return this.expiresAt !== null && this.expiresAt < new Date();
29
- }
30
- }, {
31
- key: "hasScopes",
32
- value: function hasScopes(scopes) {
33
- var _this = this;
34
- if (typeof scopes === "string") {
35
- scopes = [scopes];
36
- }
37
- return scopes.every(function (scope) {
38
- return _this.scopes.includes(scope);
39
- });
40
- }
41
- }]);
42
- return KeyInfo;
43
- }();
44
- export var KeyRegistry = /*#__PURE__*/function () {
45
- function KeyRegistry() {
46
- _classCallCheck(this, KeyRegistry);
47
- _defineProperty(this, "salt", void 0);
48
- _defineProperty(this, "keys", void 0);
49
- _defineProperty(this, "usageCounts", void 0);
50
- this.salt = null;
51
- this.keys = new Map();
52
- this.usageCounts = new Map();
53
- }
54
- _createClass(KeyRegistry, [{
55
- key: "get",
56
- value: function () {
57
- var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(apiKey) {
58
- var hash, key;
59
- return _regeneratorRuntime.wrap(function _callee$(_context) {
60
- while (1) switch (_context.prev = _context.next) {
61
- case 0:
62
- _context.next = 2;
63
- return this.hashApiKey(apiKey.trim());
64
- case 2:
65
- hash = _context.sent;
66
- key = this.keys.get(hash);
67
- if (!(!key || key.isExpired)) {
68
- _context.next = 6;
69
- break;
70
- }
71
- return _context.abrupt("return", null);
72
- case 6:
73
- this.usageCounts.set(key.apiKeyId, (this.usageCounts.get(key.apiKeyId) || 0) + 1);
74
- return _context.abrupt("return", key);
75
- case 8:
76
- case "end":
77
- return _context.stop();
78
- }
79
- }, _callee, this);
80
- }));
81
- function get(_x) {
82
- return _get.apply(this, arguments);
83
- }
84
- return get;
85
- }()
86
- }, {
87
- key: "hashApiKey",
88
- value: function () {
89
- var _hashApiKey = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(apiKey) {
90
- var _this2 = this;
91
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
92
- while (1) switch (_context2.prev = _context2.next) {
93
- case 0:
94
- return _context2.abrupt("return", new Promise(function (resolve, reject) {
95
- if (!_this2.salt) {
96
- throw new Error("Apitally API keys not initialized");
97
- }
98
- scrypt(apiKey, Buffer.from(_this2.salt, "hex"), 32, {
99
- N: 256,
100
- r: 4,
101
- p: 1
102
- }, function (err, derivedKey) {
103
- if (err) reject(err);
104
- resolve(derivedKey.toString("hex"));
105
- });
106
- }));
107
- case 1:
108
- case "end":
109
- return _context2.stop();
110
- }
111
- }, _callee2);
112
- }));
113
- function hashApiKey(_x2) {
114
- return _hashApiKey.apply(this, arguments);
115
- }
116
- return hashApiKey;
117
- }()
118
- }, {
119
- key: "update",
120
- value: function update(keys) {
121
- this.keys.clear();
122
- for (var _i = 0, _Object$entries = Object.entries(keys); _i < _Object$entries.length; _i++) {
123
- var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
124
- hash = _Object$entries$_i[0],
125
- data = _Object$entries$_i[1];
126
- this.keys.set(hash, new KeyInfo(data["key_id"], data["api_key_id"], data["name"], data["scopes"], data["expires_in_seconds"]));
127
- }
128
- }
129
- }, {
130
- key: "getAndResetUsageCounts",
131
- value: function getAndResetUsageCounts() {
132
- var data = Object.fromEntries(this.usageCounts);
133
- this.usageCounts.clear();
134
- return data;
135
- }
136
- }]);
137
- return KeyRegistry;
138
- }();
139
- export var KeyCacheBase = /*#__PURE__*/function () {
140
- function KeyCacheBase(clientId, env) {
141
- _classCallCheck(this, KeyCacheBase);
142
- _defineProperty(this, "clientId", void 0);
143
- _defineProperty(this, "env", void 0);
144
- this.clientId = clientId;
145
- this.env = env;
146
- }
147
- _createClass(KeyCacheBase, [{
148
- key: "cacheKey",
149
- get: function get() {
150
- return "apitally:keys:".concat(this.clientId, ":").concat(this.env);
151
- }
152
- }]);
153
- return KeyCacheBase;
154
- }();
155
- //# sourceMappingURL=keyRegistry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyRegistry.js","names":["scrypt","KeyInfo","keyId","apiKeyId","name","arguments","length","undefined","scopes","expiresInSeconds","_classCallCheck","_defineProperty","expiresAt","Date","now","_createClass","key","get","value","hasScopes","_this","every","scope","includes","KeyRegistry","salt","keys","Map","usageCounts","_get","_asyncToGenerator","_regeneratorRuntime","mark","_callee","apiKey","hash","wrap","_callee$","_context","prev","next","hashApiKey","trim","sent","isExpired","abrupt","set","stop","_x","apply","_hashApiKey","_callee2","_this2","_callee2$","_context2","Promise","resolve","reject","Error","Buffer","from","N","r","p","err","derivedKey","toString","_x2","update","clear","_i","_Object$entries","Object","entries","_Object$entries$_i","_slicedToArray","data","getAndResetUsageCounts","fromEntries","KeyCacheBase","clientId","env","concat"],"sources":["../../../src/common/keyRegistry.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,98 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _regeneratorRuntime from "@babel/runtime/regenerator";
3
- import { ApitallyClient } from "../common/client.js";
4
- export var requireApiKey = function requireApiKey() {
5
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
6
- scopes = _ref.scopes,
7
- customHeader = _ref.customHeader;
8
- return /*#__PURE__*/function () {
9
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(req, res, next) {
10
- var apiKey, authorizationParts, customHeaderValue, client, keyInfo;
11
- return _regeneratorRuntime.wrap(function _callee$(_context) {
12
- while (1) switch (_context.prev = _context.next) {
13
- case 0:
14
- if (customHeader) {
15
- _context.next = 13;
16
- break;
17
- }
18
- if (req.headers.authorization) {
19
- _context.next = 4;
20
- break;
21
- }
22
- res.status(401).set("WWW-Authenticate", "ApiKey").json({
23
- error: "Missing authorization header"
24
- });
25
- return _context.abrupt("return");
26
- case 4:
27
- authorizationParts = req.headers.authorization.split(" ");
28
- if (!(authorizationParts.length === 2 && authorizationParts[0].toLowerCase() === "apikey")) {
29
- _context.next = 9;
30
- break;
31
- }
32
- apiKey = authorizationParts[1];
33
- _context.next = 11;
34
- break;
35
- case 9:
36
- res.status(401).set("WWW-Authenticate", "ApiKey").json({
37
- error: "Invalid authorization scheme"
38
- });
39
- return _context.abrupt("return");
40
- case 11:
41
- _context.next = 14;
42
- break;
43
- case 13:
44
- if (customHeader) {
45
- customHeaderValue = req.headers[customHeader.toLowerCase()];
46
- if (typeof customHeaderValue === "string") {
47
- apiKey = customHeaderValue;
48
- } else if (Array.isArray(customHeaderValue)) {
49
- apiKey = customHeaderValue[0];
50
- }
51
- }
52
- case 14:
53
- if (apiKey) {
54
- _context.next = 17;
55
- break;
56
- }
57
- res.status(403).json({
58
- error: "Missing API key"
59
- });
60
- return _context.abrupt("return");
61
- case 17:
62
- client = ApitallyClient.getInstance();
63
- _context.next = 20;
64
- return client.keyRegistry.get(apiKey);
65
- case 20:
66
- keyInfo = _context.sent;
67
- if (keyInfo) {
68
- _context.next = 24;
69
- break;
70
- }
71
- res.status(403).json({
72
- error: "Invalid API key"
73
- });
74
- return _context.abrupt("return");
75
- case 24:
76
- if (!(scopes && !keyInfo.hasScopes(scopes))) {
77
- _context.next = 27;
78
- break;
79
- }
80
- res.status(403).json({
81
- error: "Permission denied"
82
- });
83
- return _context.abrupt("return");
84
- case 27:
85
- req.keyInfo = keyInfo;
86
- next();
87
- case 29:
88
- case "end":
89
- return _context.stop();
90
- }
91
- }, _callee);
92
- }));
93
- return function (_x, _x2, _x3) {
94
- return _ref2.apply(this, arguments);
95
- };
96
- }();
97
- };
98
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","names":["ApitallyClient","requireApiKey","_ref","arguments","length","undefined","scopes","customHeader","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","next","apiKey","authorizationParts","customHeaderValue","client","keyInfo","wrap","_callee$","_context","prev","headers","authorization","status","set","json","error","abrupt","split","toLowerCase","Array","isArray","getInstance","keyRegistry","get","sent","hasScopes","stop","_x","_x2","_x3","apply"],"sources":["../../../src/express/auth.ts"],"sourcesContent":[null],"mappings":"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"}