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,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(request, reply, done) {
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 (request.headers.authorization) {
19
- _context.next = 4;
20
- break;
21
- }
22
- reply.code(401).header("WWW-Authenticate", "ApiKey").send({
23
- error: "Missing authorization header"
24
- });
25
- return _context.abrupt("return");
26
- case 4:
27
- authorizationParts = request.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
- reply.code(401).header("WWW-Authenticate", "ApiKey").send({
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 = request.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
- reply.code(403).send({
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
- reply.code(403).send({
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
- reply.code(403).send({
81
- error: "Permission denied"
82
- });
83
- return _context.abrupt("return");
84
- case 27:
85
- request.keyInfo = keyInfo;
86
- done();
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","request","reply","done","apiKey","authorizationParts","customHeaderValue","client","keyInfo","wrap","_callee$","_context","prev","next","headers","authorization","code","header","send","error","abrupt","split","toLowerCase","Array","isArray","getInstance","keyRegistry","get","sent","hasScopes","stop","_x","_x2","_x3","apply"],"sources":["../../../src/fastify/auth.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,106 +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(ctx, 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 = 17;
16
- break;
17
- }
18
- if (ctx.headers.authorization) {
19
- _context.next = 6;
20
- break;
21
- }
22
- ctx.status = 401;
23
- ctx.set("WWW-Authenticate", "ApiKey");
24
- ctx.body = {
25
- error: "Missing authorization header"
26
- };
27
- return _context.abrupt("return");
28
- case 6:
29
- authorizationParts = ctx.headers.authorization.split(" ");
30
- if (!(authorizationParts.length === 2 && authorizationParts[0].toLowerCase() === "apikey")) {
31
- _context.next = 11;
32
- break;
33
- }
34
- apiKey = authorizationParts[1];
35
- _context.next = 15;
36
- break;
37
- case 11:
38
- ctx.status = 401;
39
- ctx.set("WWW-Authenticate", "ApiKey");
40
- ctx.body = {
41
- error: "Invalid authorization scheme"
42
- };
43
- return _context.abrupt("return");
44
- case 15:
45
- _context.next = 18;
46
- break;
47
- case 17:
48
- if (customHeader) {
49
- customHeaderValue = ctx.headers[customHeader.toLowerCase()];
50
- if (typeof customHeaderValue === "string") {
51
- apiKey = customHeaderValue;
52
- } else if (Array.isArray(customHeaderValue)) {
53
- apiKey = customHeaderValue[0];
54
- }
55
- }
56
- case 18:
57
- if (apiKey) {
58
- _context.next = 22;
59
- break;
60
- }
61
- ctx.status = 403;
62
- ctx.body = {
63
- error: "Missing API key"
64
- };
65
- return _context.abrupt("return");
66
- case 22:
67
- client = ApitallyClient.getInstance();
68
- _context.next = 25;
69
- return client.keyRegistry.get(apiKey);
70
- case 25:
71
- keyInfo = _context.sent;
72
- if (keyInfo) {
73
- _context.next = 30;
74
- break;
75
- }
76
- ctx.status = 403;
77
- ctx.body = {
78
- error: "Invalid API key"
79
- };
80
- return _context.abrupt("return");
81
- case 30:
82
- if (!(scopes && !keyInfo.hasScopes(scopes))) {
83
- _context.next = 34;
84
- break;
85
- }
86
- ctx.status = 403;
87
- ctx.body = {
88
- error: "Permission denied"
89
- };
90
- return _context.abrupt("return");
91
- case 34:
92
- ctx.state.keyInfo = keyInfo;
93
- _context.next = 37;
94
- return next();
95
- case 37:
96
- case "end":
97
- return _context.stop();
98
- }
99
- }, _callee);
100
- }));
101
- return function (_x, _x2) {
102
- return _ref2.apply(this, arguments);
103
- };
104
- }();
105
- };
106
- //# 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","ctx","next","apiKey","authorizationParts","customHeaderValue","client","keyInfo","wrap","_callee$","_context","prev","headers","authorization","status","set","body","error","abrupt","split","toLowerCase","Array","isArray","getInstance","keyRegistry","get","sent","hasScopes","state","stop","_x","_x2","apply"],"sources":["../../../src/koa/auth.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,126 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
- import _createClass from "@babel/runtime/helpers/createClass";
4
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
- import _typeof from "@babel/runtime/helpers/typeof";
6
- var _class;
7
- import _regeneratorRuntime from "@babel/runtime/regenerator";
8
- var __decorate = this && this.__decorate || function (decorators, target, key, desc) {
9
- var c = arguments.length,
10
- r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
11
- d;
12
- if ((typeof Reflect === "undefined" ? "undefined" : _typeof(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;
13
- return c > 3 && r && Object.defineProperty(target, key, r), r;
14
- };
15
- var __metadata = this && this.__metadata || function (k, v) {
16
- if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
17
- };
18
- var ApitallyApiKeyGuard_1;
19
- import { ForbiddenException, Injectable, SetMetadata, UnauthorizedException, createParamDecorator } from "@nestjs/common";
20
- import { Reflector } from "@nestjs/core";
21
- import { ApitallyClient } from "../common/client.js";
22
- export var Scopes = function Scopes() {
23
- for (var _len = arguments.length, scopes = new Array(_len), _key = 0; _key < _len; _key++) {
24
- scopes[_key] = arguments[_key];
25
- }
26
- return SetMetadata("scopes", scopes);
27
- };
28
- var ApitallyApiKeyGuard = (_class = /*#__PURE__*/function () {
29
- function ApitallyApiKeyGuard(reflector) {
30
- _classCallCheck(this, ApitallyApiKeyGuard);
31
- _defineProperty(this, "reflector", void 0);
32
- this.reflector = reflector;
33
- }
34
- _createClass(ApitallyApiKeyGuard, [{
35
- key: "canActivate",
36
- value: function () {
37
- var _canActivate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(context) {
38
- var customHeader, req, res, apiKey, authorizationParts, customHeaderValue, client, keyInfo, scopes;
39
- return _regeneratorRuntime.wrap(function _callee$(_context) {
40
- while (1) switch (_context.prev = _context.next) {
41
- case 0:
42
- customHeader = ApitallyApiKeyGuard_1.customHeader;
43
- req = context.switchToHttp().getRequest();
44
- res = context.switchToHttp().getResponse();
45
- if (customHeader) {
46
- _context.next = 16;
47
- break;
48
- }
49
- if (req.headers.authorization) {
50
- _context.next = 7;
51
- break;
52
- }
53
- res.set("WWW-Authenticate", "ApiKey");
54
- throw new UnauthorizedException("Missing authorization header");
55
- case 7:
56
- authorizationParts = req.headers.authorization.split(" ");
57
- if (!(authorizationParts.length === 2 && authorizationParts[0].toLowerCase() === "apikey")) {
58
- _context.next = 12;
59
- break;
60
- }
61
- apiKey = authorizationParts[1];
62
- _context.next = 14;
63
- break;
64
- case 12:
65
- res.set("WWW-Authenticate", "ApiKey");
66
- throw new UnauthorizedException("Invalid authorization scheme");
67
- case 14:
68
- _context.next = 17;
69
- break;
70
- case 16:
71
- if (customHeader) {
72
- customHeaderValue = req.headers[customHeader.toLowerCase()];
73
- if (typeof customHeaderValue === "string") {
74
- apiKey = customHeaderValue;
75
- } else if (Array.isArray(customHeaderValue)) {
76
- apiKey = customHeaderValue[0];
77
- }
78
- }
79
- case 17:
80
- if (apiKey) {
81
- _context.next = 19;
82
- break;
83
- }
84
- throw new ForbiddenException("Missing API key");
85
- case 19:
86
- client = ApitallyClient.getInstance();
87
- _context.next = 22;
88
- return client.keyRegistry.get(apiKey);
89
- case 22:
90
- keyInfo = _context.sent;
91
- if (keyInfo) {
92
- _context.next = 25;
93
- break;
94
- }
95
- throw new ForbiddenException("Invalid API key");
96
- case 25:
97
- scopes = this.reflector.get("scopes", context.getHandler());
98
- if (!(scopes && !keyInfo.hasScopes(scopes))) {
99
- _context.next = 28;
100
- break;
101
- }
102
- throw new ForbiddenException("Permission denied");
103
- case 28:
104
- req.keyInfo = keyInfo;
105
- return _context.abrupt("return", true);
106
- case 30:
107
- case "end":
108
- return _context.stop();
109
- }
110
- }, _callee, this);
111
- }));
112
- function canActivate(_x) {
113
- return _canActivate.apply(this, arguments);
114
- }
115
- return canActivate;
116
- }()
117
- }]);
118
- return ApitallyApiKeyGuard;
119
- }(), ApitallyApiKeyGuard_1 = _class, _defineProperty(_class, "customHeader", void 0), _class);
120
- ApitallyApiKeyGuard = ApitallyApiKeyGuard_1 = __decorate([Injectable(), __metadata("design:paramtypes", [Reflector])], ApitallyApiKeyGuard);
121
- export { ApitallyApiKeyGuard };
122
- export var GetKeyInfo = createParamDecorator(function (data, context) {
123
- var req = context.switchToHttp().getRequest();
124
- return req.keyInfo;
125
- });
126
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","names":["ForbiddenException","Injectable","SetMetadata","UnauthorizedException","createParamDecorator","Reflector","ApitallyClient","Scopes","_len","arguments","length","scopes","Array","_key","ApitallyApiKeyGuard","_class","reflector","_classCallCheck","_defineProperty","_createClass","key","value","_canActivate","_asyncToGenerator","_regeneratorRuntime","mark","_callee","context","customHeader","req","res","apiKey","authorizationParts","customHeaderValue","client","keyInfo","wrap","_callee$","_context","prev","next","ApitallyApiKeyGuard_1","switchToHttp","getRequest","getResponse","headers","authorization","set","split","toLowerCase","isArray","getInstance","keyRegistry","get","sent","getHandler","hasScopes","abrupt","stop","canActivate","_x","apply","__decorate","GetKeyInfo","data"],"sources":["../../../src/nestjs/auth.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { KeyCacheBase } from "./keyRegistry.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,29 +0,0 @@
1
- export declare class KeyInfo {
2
- readonly keyId: number;
3
- readonly apiKeyId: number;
4
- readonly name: string;
5
- readonly scopes: string[];
6
- readonly expiresAt: Date | null;
7
- constructor(keyId: number, apiKeyId: number, name?: string, scopes?: string[], expiresInSeconds?: number | null);
8
- get isExpired(): boolean;
9
- hasScopes(scopes: string | string[]): boolean;
10
- }
11
- export declare class KeyRegistry {
12
- salt: string | null;
13
- private keys;
14
- private usageCounts;
15
- constructor();
16
- get(apiKey: string): Promise<KeyInfo | null>;
17
- private hashApiKey;
18
- update(keys: Record<string, any>): void;
19
- getAndResetUsageCounts(): Record<number, number>;
20
- }
21
- export declare abstract class KeyCacheBase {
22
- private clientId;
23
- private env;
24
- constructor(clientId: string, env: string);
25
- get cacheKey(): string;
26
- abstract store(data: string): void;
27
- abstract retrieve(): string | null;
28
- }
29
- //# sourceMappingURL=keyRegistry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyRegistry.d.ts","sourceRoot":"","sources":["../../../src/common/keyRegistry.ts"],"names":[],"mappings":"AAEA,qBAAa,OAAO;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;gBAG9B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAW,EACjB,MAAM,GAAE,MAAM,EAAO,EACrB,gBAAgB,GAAE,MAAM,GAAG,IAAW;IAYxC,IAAI,SAAS,YAEZ;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;CAMpC;AAED,qBAAa,WAAW;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,WAAW,CAAsB;;IAQ5B,GAAG,CAAC,MAAM,EAAE,MAAM;YAajB,UAAU;IAkBjB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAgBhC,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAKxD;AAED,8BAAsB,YAAY;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,GAAG,CAAS;gBAER,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAKzC,IAAI,QAAQ,WAEX;IAED,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAElC,QAAQ,CAAC,QAAQ,IAAI,MAAM,GAAG,IAAI;CACnC"}
@@ -1,6 +0,0 @@
1
- import type { NextFunction, Request, Response } from "express";
2
- export declare const requireApiKey: ({ scopes, customHeader, }?: {
3
- scopes?: string | string[] | undefined;
4
- customHeader?: string | undefined;
5
- }) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
6
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/express/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI/D,eAAO,MAAM,aAAa;;;YAOL,OAAO,OAAO,QAAQ,QAAQ,YAAY,kBAoD9D,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { DoneFuncWithErrOrRes, FastifyReply, FastifyRequest } from "fastify";
2
- export declare const requireApiKey: ({ scopes, customHeader, }?: {
3
- scopes?: string | string[] | undefined;
4
- customHeader?: string | undefined;
5
- }) => (request: FastifyRequest, reply: FastifyReply, done: DoneFuncWithErrOrRes) => Promise<void>;
6
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/fastify/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACf,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,aAAa;;;gBAQb,cAAc,SAChB,YAAY,QACb,oBAAoB,kBAqD7B,CAAC"}
@@ -1,6 +0,0 @@
1
- import Koa from "koa";
2
- export declare const requireApiKey: ({ scopes, customHeader, }?: {
3
- scopes?: string | string[] | undefined;
4
- customHeader?: string | undefined;
5
- }) => (ctx: Koa.Context, next: Koa.Next) => Promise<void>;
6
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/koa/auth.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,aAAa;;;YAOL,IAAI,OAAO,QAAQ,IAAI,IAAI,kBAqD/C,CAAC"}
@@ -1,12 +0,0 @@
1
- import { CanActivate, ExecutionContext } from "@nestjs/common";
2
- import { Reflector } from "@nestjs/core";
3
- import { KeyInfo } from "../common/keyRegistry.js";
4
- export declare const Scopes: (...scopes: string[]) => import("@nestjs/common").CustomDecorator<string>;
5
- export declare class ApitallyApiKeyGuard implements CanActivate {
6
- private reflector;
7
- static customHeader?: string;
8
- constructor(reflector: Reflector);
9
- canActivate(context: ExecutionContext): Promise<boolean>;
10
- }
11
- export declare const GetKeyInfo: (...dataOrPipes: (KeyInfo | import("@nestjs/common").PipeTransform<any, any> | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>> | undefined)[]) => ParameterDecorator;
12
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/nestjs/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAMjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,eAAO,MAAM,MAAM,cAAe,MAAM,EAAE,qDAAkC,CAAC;AAE7E,qBACa,mBAAoB,YAAW,WAAW;IAGzC,OAAO,CAAC,SAAS;IAF7B,OAAc,YAAY,CAAC,EAAE,MAAM,CAAC;gBAEhB,SAAS,EAAE,SAAS;IAElC,WAAW,CAAC,OAAO,EAAE,gBAAgB;CA+C5C;AAED,eAAO,MAAM,UAAU,sMAKtB,CAAC"}