apitally 0.1.1 → 0.1.3
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.
- package/lib/cjs/common/client.js +395 -0
- package/lib/cjs/common/client.js.map +1 -0
- package/lib/cjs/common/index.js +13 -0
- package/lib/cjs/common/index.js.map +1 -0
- package/lib/cjs/common/keyRegistry.js +162 -0
- package/lib/cjs/common/keyRegistry.js.map +1 -0
- package/lib/cjs/common/logging.js +17 -0
- package/lib/cjs/common/logging.js.map +1 -0
- package/lib/cjs/common/requestLogger.js +69 -0
- package/lib/cjs/common/requestLogger.js.map +1 -0
- package/lib/cjs/common/types.js +6 -0
- package/lib/cjs/common/types.js.map +1 -0
- package/lib/cjs/common/utils.js +24 -0
- package/lib/cjs/common/utils.js.map +1 -0
- package/lib/cjs/common/validationErrorLogger.js +58 -0
- package/lib/cjs/common/validationErrorLogger.js.map +1 -0
- package/lib/cjs/express/auth.js +105 -0
- package/lib/cjs/express/auth.js.map +1 -0
- package/lib/cjs/express/index.js +27 -0
- package/lib/cjs/express/index.js.map +1 -0
- package/lib/cjs/express/listEndpoints.js +175 -0
- package/lib/cjs/express/listEndpoints.js.map +1 -0
- package/lib/cjs/express/middleware.js +167 -0
- package/lib/cjs/express/middleware.js.map +1 -0
- package/lib/cjs/fastify/auth.js +105 -0
- package/lib/cjs/fastify/auth.js.map +1 -0
- package/lib/cjs/fastify/index.js +28 -0
- package/lib/cjs/fastify/index.js.map +1 -0
- package/lib/cjs/fastify/plugin.js +147 -0
- package/lib/cjs/fastify/plugin.js.map +1 -0
- package/lib/cjs/index.js +6 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/koa/auth.js +113 -0
- package/lib/cjs/koa/auth.js.map +1 -0
- package/lib/cjs/koa/index.js +27 -0
- package/lib/cjs/koa/index.js.map +1 -0
- package/lib/cjs/koa/middleware.js +122 -0
- package/lib/cjs/koa/middleware.js.map +1 -0
- package/lib/cjs/nestjs/auth.js +132 -0
- package/lib/cjs/nestjs/auth.js.map +1 -0
- package/lib/cjs/nestjs/index.js +39 -0
- package/lib/cjs/nestjs/index.js.map +1 -0
- package/lib/esm/common/client.js +385 -0
- package/lib/esm/common/client.js.map +1 -0
- package/lib/esm/common/index.js +1 -0
- package/lib/esm/common/index.js.map +1 -0
- package/lib/esm/common/keyRegistry.js +155 -0
- package/lib/esm/common/keyRegistry.js.map +1 -0
- package/lib/esm/common/logging.js +11 -0
- package/lib/esm/common/logging.js.map +1 -0
- package/lib/esm/common/requestLogger.js +63 -0
- package/lib/esm/common/requestLogger.js.map +1 -0
- package/lib/esm/common/types.js +1 -0
- package/lib/esm/common/types.js.map +1 -0
- package/lib/esm/common/utils.js +16 -0
- package/lib/esm/common/utils.js.map +1 -0
- package/lib/esm/common/validationErrorLogger.js +52 -0
- package/lib/esm/common/validationErrorLogger.js.map +1 -0
- package/lib/esm/express/auth.js +98 -0
- package/lib/esm/express/auth.js.map +1 -0
- package/lib/esm/express/index.js +4 -0
- package/lib/esm/express/index.js.map +1 -0
- package/lib/esm/express/listEndpoints.js +168 -0
- package/lib/esm/express/listEndpoints.js.map +1 -0
- package/lib/esm/express/middleware.js +160 -0
- package/lib/esm/express/middleware.js.map +1 -0
- package/lib/esm/fastify/auth.js +98 -0
- package/lib/esm/fastify/auth.js.map +1 -0
- package/lib/esm/fastify/index.js +4 -0
- package/lib/esm/fastify/index.js.map +1 -0
- package/lib/esm/fastify/plugin.js +140 -0
- package/lib/esm/fastify/plugin.js.map +1 -0
- package/lib/esm/index.js +1 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/koa/auth.js +106 -0
- package/lib/esm/koa/auth.js.map +1 -0
- package/lib/esm/koa/index.js +4 -0
- package/lib/esm/koa/index.js.map +1 -0
- package/lib/esm/koa/middleware.js +115 -0
- package/lib/esm/koa/middleware.js.map +1 -0
- package/lib/esm/nestjs/auth.js +126 -0
- package/lib/esm/nestjs/auth.js.map +1 -0
- package/lib/esm/nestjs/index.js +4 -0
- package/lib/esm/nestjs/index.js.map +1 -0
- package/{dist/src → lib/types}/common/client.d.ts +7 -6
- package/lib/types/common/client.d.ts.map +1 -0
- package/lib/types/common/index.d.ts +2 -0
- package/{dist/src → lib/types}/common/index.d.ts.map +1 -1
- package/{dist/src → lib/types}/common/requestLogger.d.ts +1 -1
- package/{dist/src → lib/types}/common/requestLogger.d.ts.map +1 -1
- package/{dist/src → lib/types}/common/types.d.ts +2 -2
- package/lib/types/common/types.d.ts.map +1 -0
- package/{dist/src → lib/types}/common/validationErrorLogger.d.ts +1 -1
- package/{dist/src → lib/types}/common/validationErrorLogger.d.ts.map +1 -1
- package/{dist/src → lib/types}/express/auth.d.ts +1 -1
- package/lib/types/express/auth.d.ts.map +1 -0
- package/lib/types/express/index.d.ts +4 -0
- package/{dist/src → lib/types}/express/index.d.ts.map +1 -1
- package/lib/types/express/listEndpoints.d.ts +3 -0
- package/{dist/src → lib/types}/express/middleware.d.ts +3 -3
- package/lib/types/express/middleware.d.ts.map +1 -0
- package/{dist/src → lib/types}/fastify/auth.d.ts +1 -1
- package/lib/types/fastify/auth.d.ts.map +1 -0
- package/lib/types/fastify/index.d.ts +4 -0
- package/{dist/src → lib/types}/fastify/index.d.ts.map +1 -1
- package/lib/types/fastify/plugin.d.ts +15 -0
- package/lib/types/fastify/plugin.d.ts.map +1 -0
- package/lib/types/koa/index.d.ts +4 -0
- package/{dist/src → lib/types}/koa/index.d.ts.map +1 -1
- package/{dist/src → lib/types}/koa/middleware.d.ts +1 -1
- package/{dist/src → lib/types}/koa/middleware.d.ts.map +1 -1
- package/{dist/src → lib/types}/nestjs/auth.d.ts +1 -1
- package/{dist/src → lib/types}/nestjs/auth.d.ts.map +1 -1
- package/lib/types/nestjs/index.d.ts +4 -0
- package/lib/types/nestjs/index.d.ts.map +1 -0
- package/package.json +117 -8
- package/dist/src/common/client.d.ts.map +0 -1
- package/dist/src/common/client.js +0 -244
- package/dist/src/common/client.js.map +0 -1
- package/dist/src/common/index.d.ts +0 -2
- package/dist/src/common/index.js +0 -6
- package/dist/src/common/index.js.map +0 -1
- package/dist/src/common/keyRegistry.js +0 -90
- package/dist/src/common/keyRegistry.js.map +0 -1
- package/dist/src/common/logging.js +0 -13
- package/dist/src/common/logging.js.map +0 -1
- package/dist/src/common/requestLogger.js +0 -49
- package/dist/src/common/requestLogger.js.map +0 -1
- package/dist/src/common/types.d.ts.map +0 -1
- package/dist/src/common/types.js +0 -3
- package/dist/src/common/types.js.map +0 -1
- package/dist/src/common/utils.js +0 -23
- package/dist/src/common/utils.js.map +0 -1
- package/dist/src/common/validationErrorLogger.js +0 -40
- package/dist/src/common/validationErrorLogger.js.map +0 -1
- package/dist/src/express/auth.d.ts.map +0 -1
- package/dist/src/express/auth.js +0 -66
- package/dist/src/express/auth.js.map +0 -1
- package/dist/src/express/index.d.ts +0 -4
- package/dist/src/express/index.js +0 -10
- package/dist/src/express/index.js.map +0 -1
- package/dist/src/express/listEndpoints.d.ts +0 -3
- package/dist/src/express/listEndpoints.js +0 -166
- package/dist/src/express/listEndpoints.js.map +0 -1
- package/dist/src/express/middleware.d.ts.map +0 -1
- package/dist/src/express/middleware.js +0 -164
- package/dist/src/express/middleware.js.map +0 -1
- package/dist/src/fastify/auth.d.ts.map +0 -1
- package/dist/src/fastify/auth.js +0 -66
- package/dist/src/fastify/auth.js.map +0 -1
- package/dist/src/fastify/index.d.ts +0 -4
- package/dist/src/fastify/index.js +0 -13
- package/dist/src/fastify/index.js.map +0 -1
- package/dist/src/fastify/plugin.d.ts +0 -16
- package/dist/src/fastify/plugin.d.ts.map +0 -1
- package/dist/src/fastify/plugin.js +0 -124
- package/dist/src/fastify/plugin.js.map +0 -1
- package/dist/src/index.js +0 -3
- package/dist/src/index.js.map +0 -1
- package/dist/src/koa/auth.js +0 -67
- package/dist/src/koa/auth.js.map +0 -1
- package/dist/src/koa/index.d.ts +0 -4
- package/dist/src/koa/index.js +0 -10
- package/dist/src/koa/index.js.map +0 -1
- package/dist/src/koa/middleware.js +0 -108
- package/dist/src/koa/middleware.js.map +0 -1
- package/dist/src/nestjs/auth.js +0 -88
- package/dist/src/nestjs/auth.js.map +0 -1
- package/dist/src/nestjs/index.d.ts +0 -4
- package/dist/src/nestjs/index.d.ts.map +0 -1
- package/dist/src/nestjs/index.js +0 -12
- package/dist/src/nestjs/index.js.map +0 -1
- /package/{dist/src → lib/types}/common/keyRegistry.d.ts +0 -0
- /package/{dist/src → lib/types}/common/keyRegistry.d.ts.map +0 -0
- /package/{dist/src → lib/types}/common/logging.d.ts +0 -0
- /package/{dist/src → lib/types}/common/logging.d.ts.map +0 -0
- /package/{dist/src → lib/types}/common/utils.d.ts +0 -0
- /package/{dist/src → lib/types}/common/utils.d.ts.map +0 -0
- /package/{dist/src → lib/types}/express/listEndpoints.d.ts.map +0 -0
- /package/{dist/src → lib/types}/index.d.ts +0 -0
- /package/{dist/src → lib/types}/index.d.ts.map +0 -0
- /package/{dist/src → lib/types}/koa/auth.d.ts +0 -0
- /package/{dist/src → lib/types}/koa/auth.d.ts.map +0 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useApitally = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
+
var _perf_hooks = require("perf_hooks");
|
|
11
|
+
var _client = require("../common/client.js");
|
|
12
|
+
var _keyRegistry = require("../common/keyRegistry.js");
|
|
13
|
+
var _utils = require("../common/utils.js");
|
|
14
|
+
var _listEndpoints = _interopRequireDefault(require("./listEndpoints.js"));
|
|
15
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
|
+
var useApitally = exports.useApitally = function useApitally(app, config) {
|
|
18
|
+
var client = new _client.ApitallyClient(config);
|
|
19
|
+
var middleware = getMiddleware(client);
|
|
20
|
+
app.use(middleware);
|
|
21
|
+
setTimeout(function () {
|
|
22
|
+
client.setAppInfo(getAppInfo(app, config.appVersion));
|
|
23
|
+
}, 100);
|
|
24
|
+
};
|
|
25
|
+
var getMiddleware = function getMiddleware(client) {
|
|
26
|
+
var validatorInstalled = (0, _utils.getPackageVersion)("express-validator") !== null;
|
|
27
|
+
var celebrateInstalled = (0, _utils.getPackageVersion)("celebrate") !== null;
|
|
28
|
+
var nestInstalled = (0, _utils.getPackageVersion)("@nestjs/core") !== null;
|
|
29
|
+
var classValidatorInstalled = (0, _utils.getPackageVersion)("class-validator") !== null;
|
|
30
|
+
return function (req, res, next) {
|
|
31
|
+
try {
|
|
32
|
+
var startTime = _perf_hooks.performance.now();
|
|
33
|
+
var originalJson = res.json;
|
|
34
|
+
res.json = function (body) {
|
|
35
|
+
res.locals.body = body;
|
|
36
|
+
return originalJson.call(res, body);
|
|
37
|
+
};
|
|
38
|
+
res.on("finish", function () {
|
|
39
|
+
try {
|
|
40
|
+
if (req.route) {
|
|
41
|
+
var responseTime = _perf_hooks.performance.now() - startTime;
|
|
42
|
+
client.requestLogger.logRequest({
|
|
43
|
+
consumer: getConsumer(req),
|
|
44
|
+
method: req.method,
|
|
45
|
+
path: req.route.path,
|
|
46
|
+
statusCode: res.statusCode,
|
|
47
|
+
responseTime: responseTime
|
|
48
|
+
});
|
|
49
|
+
if ((res.statusCode === 400 || res.statusCode === 422) && res.locals.body) {
|
|
50
|
+
var validationErrors = [];
|
|
51
|
+
if (validatorInstalled) {
|
|
52
|
+
validationErrors.push.apply(validationErrors, (0, _toConsumableArray2["default"])(extractExpressValidatorErrors(res.locals.body)));
|
|
53
|
+
}
|
|
54
|
+
if (celebrateInstalled) {
|
|
55
|
+
validationErrors.push.apply(validationErrors, (0, _toConsumableArray2["default"])(extractCelebrateErrors(res.locals.body)));
|
|
56
|
+
}
|
|
57
|
+
if (nestInstalled && classValidatorInstalled) {
|
|
58
|
+
validationErrors.push.apply(validationErrors, (0, _toConsumableArray2["default"])(extractNestValidationErrors(res.locals.body)));
|
|
59
|
+
}
|
|
60
|
+
validationErrors.forEach(function (error) {
|
|
61
|
+
client.validationErrorLogger.logValidationError(_objectSpread({
|
|
62
|
+
consumer: getConsumer(req),
|
|
63
|
+
method: req.method,
|
|
64
|
+
path: req.route.path
|
|
65
|
+
}, error));
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
} catch (error) {
|
|
70
|
+
client.logger.error("Error while logging request in Apitally middleware.", {
|
|
71
|
+
request: req,
|
|
72
|
+
response: res,
|
|
73
|
+
error: error
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
} catch (error) {
|
|
78
|
+
client.logger.error("Error in Apitally middleware.", {
|
|
79
|
+
request: req,
|
|
80
|
+
response: res,
|
|
81
|
+
error: error
|
|
82
|
+
});
|
|
83
|
+
} finally {
|
|
84
|
+
next();
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
var getConsumer = function getConsumer(req) {
|
|
89
|
+
if (req.consumerIdentifier) {
|
|
90
|
+
return String(req.consumerIdentifier);
|
|
91
|
+
}
|
|
92
|
+
if (req.keyInfo && req.keyInfo instanceof _keyRegistry.KeyInfo) {
|
|
93
|
+
return "key:".concat(req.keyInfo.keyId);
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
};
|
|
97
|
+
var extractExpressValidatorErrors = function extractExpressValidatorErrors(responseBody) {
|
|
98
|
+
var errors = [];
|
|
99
|
+
if (responseBody && responseBody.errors && Array.isArray(responseBody.errors)) {
|
|
100
|
+
responseBody.errors.forEach(function (error) {
|
|
101
|
+
if (error.location && error.path && error.msg && error.type) {
|
|
102
|
+
errors.push({
|
|
103
|
+
loc: "".concat(error.location, ".").concat(error.path),
|
|
104
|
+
msg: error.msg,
|
|
105
|
+
type: error.type
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return errors;
|
|
111
|
+
};
|
|
112
|
+
var extractCelebrateErrors = function extractCelebrateErrors(responseBody) {
|
|
113
|
+
var errors = [];
|
|
114
|
+
if (responseBody && responseBody.validation) {
|
|
115
|
+
Object.values(responseBody.validation).forEach(function (error) {
|
|
116
|
+
if (error.source && error.keys && Array.isArray(error.keys) && error.message) {
|
|
117
|
+
error.keys.forEach(function (key) {
|
|
118
|
+
errors.push({
|
|
119
|
+
loc: "".concat(error.source, ".").concat(key),
|
|
120
|
+
msg: subsetJoiMessage(error.message, key),
|
|
121
|
+
type: ""
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return errors;
|
|
128
|
+
};
|
|
129
|
+
var extractNestValidationErrors = function extractNestValidationErrors(responseBody) {
|
|
130
|
+
var errors = [];
|
|
131
|
+
if (responseBody && Array.isArray(responseBody.message)) {
|
|
132
|
+
responseBody.message.forEach(function (message) {
|
|
133
|
+
errors.push({
|
|
134
|
+
loc: "",
|
|
135
|
+
msg: message,
|
|
136
|
+
type: ""
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
return errors;
|
|
141
|
+
};
|
|
142
|
+
var subsetJoiMessage = function subsetJoiMessage(message, key) {
|
|
143
|
+
var messageWithKey = message.split(". ").find(function (message) {
|
|
144
|
+
return message.includes("\"".concat(key, "\""));
|
|
145
|
+
});
|
|
146
|
+
return messageWithKey ? messageWithKey : message;
|
|
147
|
+
};
|
|
148
|
+
var getAppInfo = function getAppInfo(app, appVersion) {
|
|
149
|
+
var versions = [["nodejs", process.version]];
|
|
150
|
+
var expressVersion = (0, _utils.getPackageVersion)("express");
|
|
151
|
+
var apitallyVersion = (0, _utils.getPackageVersion)("../..");
|
|
152
|
+
if (expressVersion) {
|
|
153
|
+
versions.push(["express", expressVersion]);
|
|
154
|
+
}
|
|
155
|
+
if (apitallyVersion) {
|
|
156
|
+
versions.push(["apitally", apitallyVersion]);
|
|
157
|
+
}
|
|
158
|
+
if (appVersion) {
|
|
159
|
+
versions.push(["app", appVersion]);
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
paths: (0, _listEndpoints["default"])(app),
|
|
163
|
+
versions: new Map(versions),
|
|
164
|
+
client: "js:express"
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","names":["_perf_hooks","require","_client","_keyRegistry","_utils","_listEndpoints","_interopRequireDefault","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useApitally","exports","app","config","client","ApitallyClient","middleware","getMiddleware","use","setTimeout","setAppInfo","getAppInfo","appVersion","validatorInstalled","getPackageVersion","celebrateInstalled","nestInstalled","classValidatorInstalled","req","res","next","startTime","performance","now","originalJson","json","body","locals","call","on","route","responseTime","requestLogger","logRequest","consumer","getConsumer","method","path","statusCode","validationErrors","_toConsumableArray2","extractExpressValidatorErrors","extractCelebrateErrors","extractNestValidationErrors","error","validationErrorLogger","logValidationError","logger","request","response","consumerIdentifier","String","keyInfo","KeyInfo","concat","keyId","responseBody","errors","Array","isArray","location","msg","type","loc","validation","values","source","message","key","subsetJoiMessage","messageWithKey","split","find","includes","versions","process","version","expressVersion","apitallyVersion","paths","listEndpoints","Map"],"sources":["../../../src/express/middleware.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
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.js");
|
|
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.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","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":";;;;;;;;;AAMA,IAAAA,OAAA,GAAAC,OAAA;AAEO,IAAMC,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,SAAhBA,aAAaA,CAAA,EAMhB;EAAA,IAAAE,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAN,EAAE;IALJG,MAAM,GAAAJ,IAAA,CAANI,MAAM;IACNC,YAAY,GAAAL,IAAA,CAAZK,YAAY;EAKZ;IAAA,IAAAC,KAAA,OAAAC,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAO,SAAAC,QACLC,OAAuB,EACvBC,KAAmB,EACnBC,IAA0B;MAAA,IAAAC,MAAA,EAAAC,kBAAA,EAAAC,iBAAA,EAAAC,MAAA,EAAAC,OAAA;MAAA,OAAAV,YAAA,YAAAW,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,IAIrBlB,YAAY;cAAAgB,QAAA,CAAAE,IAAA;cAAA;YAAA;YAAA,IACVZ,OAAO,CAACa,OAAO,CAACC,aAAa;cAAAJ,QAAA,CAAAE,IAAA;cAAA;YAAA;YAChCX,KAAK,CACFc,IAAI,CAAC,GAAG,CAAC,CACTC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CACpCC,IAAI,CAAC;cAAEC,KAAK,EAAE;YAA8B,CAAE,CAAC;YAAC,OAAAR,QAAA,CAAAS,MAAA;UAAA;YAG/Cf,kBAAkB,GAAGJ,OAAO,CAACa,OAAO,CAACC,aAAa,CAACM,KAAK,CAAC,GAAG,CAAC;YAAA,MAEjEhB,kBAAkB,CAACb,MAAM,KAAK,CAAC,IAC/Ba,kBAAkB,CAAC,CAAC,CAAC,CAACiB,WAAW,EAAE,KAAK,QAAQ;cAAAX,QAAA,CAAAE,IAAA;cAAA;YAAA;YAEhDT,MAAM,GAAGC,kBAAkB,CAAC,CAAC,CAAC;YAACM,QAAA,CAAAE,IAAA;YAAA;UAAA;YAE/BX,KAAK,CACFc,IAAI,CAAC,GAAG,CAAC,CACTC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CACpCC,IAAI,CAAC;cAAEC,KAAK,EAAE;YAA8B,CAAE,CAAC;YAAC,OAAAR,QAAA,CAAAS,MAAA;UAAA;YAAAT,QAAA,CAAAE,IAAA;YAAA;UAAA;YAGhD,IAAIlB,YAAY,EAAE;cACjBW,iBAAiB,GAAGL,OAAO,CAACa,OAAO,CAACnB,YAAY,CAAC2B,WAAW,EAAE,CAAC;cACrE,IAAI,OAAOhB,iBAAiB,KAAK,QAAQ,EAAE;gBACzCF,MAAM,GAAGE,iBAAiB;cAC5B,CAAC,MAAM,IAAIiB,KAAK,CAACC,OAAO,CAAClB,iBAAiB,CAAC,EAAE;gBAC3CF,MAAM,GAAGE,iBAAiB,CAAC,CAAC,CAAC;cAC/B;YACF;UAAC;YAAA,IAEIF,MAAM;cAAAO,QAAA,CAAAE,IAAA;cAAA;YAAA;YACTX,KAAK,CAACc,IAAI,CAAC,GAAG,CAAC,CAACE,IAAI,CAAC;cAAEC,KAAK,EAAE;YAAiB,CAAE,CAAC;YAAC,OAAAR,QAAA,CAAAS,MAAA;UAAA;YAI/Cb,MAAM,GAAGkB,sBAAc,CAACC,WAAW,EAAE;YAAAf,QAAA,CAAAE,IAAA;YAAA,OACrBN,MAAM,CAACoB,WAAW,CAACC,GAAG,CAACxB,MAAM,CAAC;UAAA;YAA9CI,OAAO,GAAAG,QAAA,CAAAkB,IAAA;YAAA,IACRrB,OAAO;cAAAG,QAAA,CAAAE,IAAA;cAAA;YAAA;YACVX,KAAK,CAACc,IAAI,CAAC,GAAG,CAAC,CAACE,IAAI,CAAC;cAAEC,KAAK,EAAE;YAAiB,CAAE,CAAC;YAAC,OAAAR,QAAA,CAAAS,MAAA;UAAA;YAAA,MAGjD1B,MAAM,IAAI,CAACc,OAAO,CAACsB,SAAS,CAACpC,MAAM,CAAC;cAAAiB,QAAA,CAAAE,IAAA;cAAA;YAAA;YACtCX,KAAK,CAACc,IAAI,CAAC,GAAG,CAAC,CAACE,IAAI,CAAC;cAAEC,KAAK,EAAE;YAAmB,CAAE,CAAC;YAAC,OAAAR,QAAA,CAAAS,MAAA;UAAA;YAIvDnB,OAAO,CAACO,OAAO,GAAGA,OAAO;YACzBL,IAAI,EAAE;UAAC;UAAA;YAAA,OAAAQ,QAAA,CAAAoB,IAAA;QAAA;MAAA,GAAA/B,OAAA;IAAA,CACR;IAAA,iBAAAgC,EAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAAtC,KAAA,CAAAuC,KAAA,OAAA5C,SAAA;IAAA;EAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "KeyInfo", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _keyRegistry.KeyInfo;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "apitallyPlugin", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function get() {
|
|
16
|
+
return _plugin["default"];
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "requireApiKey", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function get() {
|
|
22
|
+
return _auth.requireApiKey;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
var _keyRegistry = require("../common/keyRegistry.js");
|
|
26
|
+
var _auth = require("./auth.js");
|
|
27
|
+
var _plugin = _interopRequireDefault(require("./plugin.js"));
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_keyRegistry","require","_auth","_plugin","_interopRequireDefault"],"sources":["../../../src/fastify/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAC,sBAAA,CAAAH,OAAA"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _fastifyPlugin = _interopRequireDefault(require("fastify-plugin"));
|
|
12
|
+
var _client = require("../common/client.js");
|
|
13
|
+
var _keyRegistry = require("../common/keyRegistry.js");
|
|
14
|
+
var _utils = require("../common/utils.js");
|
|
15
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
|
+
var apitallyPlugin = /*#__PURE__*/function () {
|
|
18
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(fastify, config) {
|
|
19
|
+
var client, routes;
|
|
20
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
21
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
22
|
+
case 0:
|
|
23
|
+
client = new _client.ApitallyClient(config);
|
|
24
|
+
routes = [];
|
|
25
|
+
fastify.decorateRequest("consumerIdentifier", null);
|
|
26
|
+
fastify.decorateRequest("keyInfo", null);
|
|
27
|
+
fastify.decorateReply("payload", null);
|
|
28
|
+
fastify.addHook("onRoute", function (routeOptions) {
|
|
29
|
+
var methods = Array.isArray(routeOptions.method) ? routeOptions.method : [routeOptions.method];
|
|
30
|
+
methods.forEach(function (method) {
|
|
31
|
+
routeOptions.onSend;
|
|
32
|
+
if (method !== "HEAD") {
|
|
33
|
+
routes.push({
|
|
34
|
+
method: method,
|
|
35
|
+
path: routeOptions.url
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
fastify.addHook("onReady", function () {
|
|
41
|
+
client.setAppInfo(getAppInfo(routes, config.appVersion));
|
|
42
|
+
});
|
|
43
|
+
fastify.addHook("onClose", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
44
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
45
|
+
while (1) switch (_context.prev = _context.next) {
|
|
46
|
+
case 0:
|
|
47
|
+
_context.next = 2;
|
|
48
|
+
return client.handleShutdown();
|
|
49
|
+
case 2:
|
|
50
|
+
case "end":
|
|
51
|
+
return _context.stop();
|
|
52
|
+
}
|
|
53
|
+
}, _callee);
|
|
54
|
+
})));
|
|
55
|
+
fastify.addHook("onSend", function (request, reply, payload, done) {
|
|
56
|
+
try {
|
|
57
|
+
reply.payload = JSON.parse(payload);
|
|
58
|
+
} catch (error) {} // eslint-disable-line no-empty
|
|
59
|
+
done();
|
|
60
|
+
});
|
|
61
|
+
fastify.addHook("onResponse", function (request, reply, done) {
|
|
62
|
+
// Get path from routeOptions if available (from v4), otherwise fallback to deprecated routerPath
|
|
63
|
+
var path = "routeOptions" in request ? request.routeOptions.url : request.routerPath;
|
|
64
|
+
client.requestLogger.logRequest({
|
|
65
|
+
consumer: getConsumer(request),
|
|
66
|
+
method: request.method,
|
|
67
|
+
path: path,
|
|
68
|
+
statusCode: reply.statusCode,
|
|
69
|
+
responseTime: reply.getResponseTime()
|
|
70
|
+
});
|
|
71
|
+
if ((reply.statusCode === 400 || reply.statusCode === 422) && reply.payload && (!reply.payload.code || reply.payload.code === "FST_ERR_VALIDATION") && typeof reply.payload.message === "string") {
|
|
72
|
+
var validationErrors = extractAjvErrors(reply.payload.message);
|
|
73
|
+
validationErrors.forEach(function (error) {
|
|
74
|
+
client.validationErrorLogger.logValidationError(_objectSpread({
|
|
75
|
+
consumer: getConsumer(request),
|
|
76
|
+
method: request.method,
|
|
77
|
+
path: path
|
|
78
|
+
}, error));
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
done();
|
|
82
|
+
});
|
|
83
|
+
case 10:
|
|
84
|
+
case "end":
|
|
85
|
+
return _context2.stop();
|
|
86
|
+
}
|
|
87
|
+
}, _callee2);
|
|
88
|
+
}));
|
|
89
|
+
return function apitallyPlugin(_x, _x2) {
|
|
90
|
+
return _ref.apply(this, arguments);
|
|
91
|
+
};
|
|
92
|
+
}();
|
|
93
|
+
var getAppInfo = function getAppInfo(routes, appVersion) {
|
|
94
|
+
var versions = [["nodejs", process.version]];
|
|
95
|
+
var fastifyVersion = (0, _utils.getPackageVersion)("fastify");
|
|
96
|
+
var apitallyVersion = (0, _utils.getPackageVersion)("../..");
|
|
97
|
+
if (fastifyVersion) {
|
|
98
|
+
versions.push(["fastify", fastifyVersion]);
|
|
99
|
+
}
|
|
100
|
+
if (apitallyVersion) {
|
|
101
|
+
versions.push(["apitally", apitallyVersion]);
|
|
102
|
+
}
|
|
103
|
+
if (appVersion) {
|
|
104
|
+
versions.push(["app", appVersion]);
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
paths: routes,
|
|
108
|
+
versions: new Map(versions),
|
|
109
|
+
client: "js:fastify"
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
var getConsumer = function getConsumer(request) {
|
|
113
|
+
if (request.consumerIdentifier) {
|
|
114
|
+
return String(request.consumerIdentifier);
|
|
115
|
+
}
|
|
116
|
+
if (request.keyInfo && request.keyInfo instanceof _keyRegistry.KeyInfo) {
|
|
117
|
+
return "key:".concat(request.keyInfo.keyId);
|
|
118
|
+
}
|
|
119
|
+
return null;
|
|
120
|
+
};
|
|
121
|
+
var extractAjvErrors = function extractAjvErrors(message) {
|
|
122
|
+
var regex = /(?<=^|, )((?:headers|params|query|querystring|body)[/.][^ ]+)(?= )/g;
|
|
123
|
+
var matches = [];
|
|
124
|
+
var match;
|
|
125
|
+
while ((match = regex.exec(message)) !== null) {
|
|
126
|
+
matches.push({
|
|
127
|
+
match: match[0],
|
|
128
|
+
index: match.index
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return matches.map(function (m, i) {
|
|
132
|
+
var endIndex = i + 1 < matches.length ? matches[i + 1].index - 2 : message.length;
|
|
133
|
+
var matchSplit = m.match.split(/[/.]/);
|
|
134
|
+
if (matchSplit[0] === "querystring") {
|
|
135
|
+
matchSplit[0] = "query";
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
loc: matchSplit.join("."),
|
|
139
|
+
msg: message.substring(m.index, endIndex),
|
|
140
|
+
type: ""
|
|
141
|
+
};
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
var _default = exports["default"] = (0, _fastifyPlugin["default"])(apitallyPlugin, {
|
|
145
|
+
name: "apitally"
|
|
146
|
+
});
|
|
147
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","names":["_fastifyPlugin","_interopRequireDefault","require","_client","_keyRegistry","_utils","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","apitallyPlugin","_ref","_asyncToGenerator2","_regenerator","mark","_callee2","fastify","config","client","routes","wrap","_callee2$","_context2","prev","next","ApitallyClient","decorateRequest","decorateReply","addHook","routeOptions","methods","Array","isArray","method","onSend","path","url","setAppInfo","getAppInfo","appVersion","_callee","_callee$","_context","handleShutdown","stop","request","reply","payload","done","JSON","parse","error","routerPath","requestLogger","logRequest","consumer","getConsumer","statusCode","responseTime","getResponseTime","code","message","validationErrors","extractAjvErrors","validationErrorLogger","logValidationError","_x","_x2","versions","process","version","fastifyVersion","getPackageVersion","apitallyVersion","paths","Map","consumerIdentifier","String","keyInfo","KeyInfo","concat","keyId","regex","matches","match","exec","index","map","m","i","endIndex","matchSplit","split","loc","join","msg","substring","type","_default","exports","fp","name"],"sources":["../../../src/fastify/plugin.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;AACA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAAuD,SAAAI,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAavD,IAAMoB,cAAc;EAAA,IAAAC,IAAA,OAAAC,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAuC,SAAAC,SACzDC,OAAO,EACPC,MAAM;IAAA,IAAAC,MAAA,EAAAC,MAAA;IAAA,OAAAN,YAAA,YAAAO,IAAA,UAAAC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;QAAA;UAEAN,MAAM,GAAG,IAAIO,sBAAc,CAACR,MAAM,CAAC;UACnCE,MAAM,GAAe,EAAE;UAE7BH,OAAO,CAACU,eAAe,CAAC,oBAAoB,EAAE,IAAI,CAAC;UACnDV,OAAO,CAACU,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC;UACxCV,OAAO,CAACW,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC;UAEtCX,OAAO,CAACY,OAAO,CAAC,SAAS,EAAE,UAACC,YAAY,EAAI;YAC1C,IAAMC,OAAO,GAAGC,KAAK,CAACC,OAAO,CAACH,YAAY,CAACI,MAAM,CAAC,GAC9CJ,YAAY,CAACI,MAAM,GACnB,CAACJ,YAAY,CAACI,MAAM,CAAC;YACzBH,OAAO,CAACzB,OAAO,CAAC,UAAC4B,MAAM,EAAI;cACzBJ,YAAY,CAACK,MAAM;cACnB,IAAID,MAAM,KAAK,MAAM,EAAE;gBACrBd,MAAM,CAACnB,IAAI,CAAC;kBACViC,MAAM,EAAEA,MAAM;kBACdE,IAAI,EAAEN,YAAY,CAACO;iBACpB,CAAC;cACJ;YACF,CAAC,CAAC;UACJ,CAAC,CAAC;UAEFpB,OAAO,CAACY,OAAO,CAAC,SAAS,EAAE,YAAK;YAC9BV,MAAM,CAACmB,UAAU,CAACC,UAAU,CAACnB,MAAM,EAAEF,MAAM,CAACsB,UAAU,CAAC,CAAC;UAC1D,CAAC,CAAC;UAEFvB,OAAO,CAACY,OAAO,CAAC,SAAS,mBAAAhB,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA0B,QAAA;YAAA,OAAA3B,YAAA,YAAAO,IAAA,UAAAqB,SAAAC,QAAA;cAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;gBAAA;kBAAAkB,QAAA,CAAAlB,IAAA;kBAAA,OACnBN,MAAM,CAACyB,cAAc,EAAE;gBAAA;gBAAA;kBAAA,OAAAD,QAAA,CAAAE,IAAA;cAAA;YAAA,GAAAJ,OAAA;UAAA,CAC9B,GAAC;UAEFxB,OAAO,CAACY,OAAO,CAAC,QAAQ,EAAE,UAACiB,OAAO,EAAEC,KAAK,EAAEC,OAAY,EAAEC,IAAI,EAAI;YAC/D,IAAI;cACFF,KAAK,CAACC,OAAO,GAAGE,IAAI,CAACC,KAAK,CAACH,OAAO,CAAC;YACrC,CAAC,CAAC,OAAOI,KAAK,EAAE,CAAC,CAAC,CAAC;YACnBH,IAAI,EAAE;UACR,CAAC,CAAC;UAEFhC,OAAO,CAACY,OAAO,CAAC,YAAY,EAAE,UAACiB,OAAO,EAAEC,KAAK,EAAEE,IAAI,EAAI;YACrD;YACA,IAAMb,IAAI,GACR,cAAc,IAAIU,OAAO,GACpBA,OAAe,CAAChB,YAAY,CAACO,GAAG,GAChCS,OAAe,CAACO,UAAU;YACjClC,MAAM,CAACmC,aAAa,CAACC,UAAU,CAAC;cAC9BC,QAAQ,EAAEC,WAAW,CAACX,OAAO,CAAC;cAC9BZ,MAAM,EAAEY,OAAO,CAACZ,MAAM;cACtBE,IAAI,EAAEA,IAAI;cACVsB,UAAU,EAAEX,KAAK,CAACW,UAAU;cAC5BC,YAAY,EAAEZ,KAAK,CAACa,eAAe;aACpC,CAAC;YACF,IACE,CAACb,KAAK,CAACW,UAAU,KAAK,GAAG,IAAIX,KAAK,CAACW,UAAU,KAAK,GAAG,KACrDX,KAAK,CAACC,OAAO,KACZ,CAACD,KAAK,CAACC,OAAO,CAACa,IAAI,IAAId,KAAK,CAACC,OAAO,CAACa,IAAI,KAAK,oBAAoB,CAAC,IACpE,OAAOd,KAAK,CAACC,OAAO,CAACc,OAAO,KAAK,QAAQ,EACzC;cACA,IAAMC,gBAAgB,GAAGC,gBAAgB,CAACjB,KAAK,CAACC,OAAO,CAACc,OAAO,CAAC;cAChEC,gBAAgB,CAACzD,OAAO,CAAC,UAAC8C,KAAK,EAAI;gBACjCjC,MAAM,CAAC8C,qBAAqB,CAACC,kBAAkB,CAAA/D,aAAA;kBAC7CqD,QAAQ,EAAEC,WAAW,CAACX,OAAO,CAAC;kBAC9BZ,MAAM,EAAEY,OAAO,CAACZ,MAAM;kBACtBE,IAAI,EAAEA;gBAAI,GACPgB,KAAK,CACT,CAAC;cACJ,CAAC,CAAC;YACJ;YACAH,IAAI,EAAE;UACR,CAAC,CAAC;QAAC;QAAA;UAAA,OAAA1B,SAAA,CAAAsB,IAAA;MAAA;IAAA,GAAA7B,QAAA;EAAA,CACJ;EAAA,gBAxEKL,cAAcA,CAAAwD,EAAA,EAAAC,GAAA;IAAA,OAAAxD,IAAA,CAAAV,KAAA,OAAAE,SAAA;EAAA;AAAA,GAwEnB;AAED,IAAMmC,UAAU,GAAG,SAAbA,UAAUA,CAAInB,MAAkB,EAAEoB,UAAmB,EAAI;EAC7D,IAAM6B,QAAQ,GAA4B,CAAC,CAAC,QAAQ,EAAEC,OAAO,CAACC,OAAO,CAAC,CAAC;EACvE,IAAMC,cAAc,GAAG,IAAAC,wBAAiB,EAAC,SAAS,CAAC;EACnD,IAAMC,eAAe,GAAG,IAAAD,wBAAiB,EAAC,OAAO,CAAC;EAClD,IAAID,cAAc,EAAE;IAClBH,QAAQ,CAACpE,IAAI,CAAC,CAAC,SAAS,EAAEuE,cAAc,CAAC,CAAC;EAC5C;EACA,IAAIE,eAAe,EAAE;IACnBL,QAAQ,CAACpE,IAAI,CAAC,CAAC,UAAU,EAAEyE,eAAe,CAAC,CAAC;EAC9C;EACA,IAAIlC,UAAU,EAAE;IACd6B,QAAQ,CAACpE,IAAI,CAAC,CAAC,KAAK,EAAEuC,UAAU,CAAC,CAAC;EACpC;EACA,OAAO;IACLmC,KAAK,EAAEvD,MAAM;IACbiD,QAAQ,EAAE,IAAIO,GAAG,CAACP,QAAQ,CAAC;IAC3BlD,MAAM,EAAE;GACT;AACH,CAAC;AAED,IAAMsC,WAAW,GAAG,SAAdA,WAAWA,CAAIX,OAAuB,EAAI;EAC9C,IAAIA,OAAO,CAAC+B,kBAAkB,EAAE;IAC9B,OAAOC,MAAM,CAAChC,OAAO,CAAC+B,kBAAkB,CAAC;EAC3C;EACA,IAAI/B,OAAO,CAACiC,OAAO,IAAIjC,OAAO,CAACiC,OAAO,YAAYC,oBAAO,EAAE;IACzD,cAAAC,MAAA,CAAcnC,OAAO,CAACiC,OAAO,CAACG,KAAK;EACrC;EACA,OAAO,IAAI;AACb,CAAC;AAED,IAAMlB,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIF,OAAe,EAAuB;EAC9D,IAAMqB,KAAK,GACT,qEAAqE;EACvE,IAAMC,OAAO,GAAuC,EAAE;EACtD,IAAIC,KAA6B;EACjC,OAAO,CAACA,KAAK,GAAGF,KAAK,CAACG,IAAI,CAACxB,OAAO,CAAC,MAAM,IAAI,EAAE;IAC7CsB,OAAO,CAACnF,IAAI,CAAC;MAAEoF,KAAK,EAAEA,KAAK,CAAC,CAAC,CAAC;MAAEE,KAAK,EAAEF,KAAK,CAACE;IAAK,CAAE,CAAC;EACvD;EAEA,OAAOH,OAAO,CAACI,GAAG,CAAC,UAACC,CAAC,EAAEC,CAAC,EAAI;IAC1B,IAAMC,QAAQ,GACZD,CAAC,GAAG,CAAC,GAAGN,OAAO,CAAC/E,MAAM,GAAG+E,OAAO,CAACM,CAAC,GAAG,CAAC,CAAC,CAACH,KAAK,GAAG,CAAC,GAAGzB,OAAO,CAACzD,MAAM;IACpE,IAAMuF,UAAU,GAAGH,CAAC,CAACJ,KAAK,CAACQ,KAAK,CAAC,MAAM,CAAC;IACxC,IAAID,UAAU,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE;MACnCA,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO;IACzB;IACA,OAAO;MACLE,GAAG,EAAEF,UAAU,CAACG,IAAI,CAAC,GAAG,CAAC;MACzBC,GAAG,EAAElC,OAAO,CAACmC,SAAS,CAACR,CAAC,CAACF,KAAK,EAAEI,QAAQ,CAAC;MACzCO,IAAI,EAAE;KACP;EACH,CAAC,CAAC;AACJ,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,cAEa,IAAAC,yBAAE,EAAC1F,cAAc,EAAE;EAChC2F,IAAI,EAAE;CACP,CAAC"}
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":""}
|
|
@@ -0,0 +1,113 @@
|
|
|
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.js");
|
|
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.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","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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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "KeyInfo", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _keyRegistry.KeyInfo;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "requireApiKey", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _auth.requireApiKey;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "useApitally", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _middleware.useApitally;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
var _keyRegistry = require("../common/keyRegistry.js");
|
|
25
|
+
var _auth = require("./auth.js");
|
|
26
|
+
var _middleware = require("./middleware.js");
|
|
27
|
+
//# sourceMappingURL=index.js.map
|