apitally 0.1.2 → 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 +96 -7
- 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,395 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ApitallyClient = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
var _axios = _interopRequireWildcard(require("axios"));
|
|
16
|
+
var _axiosRetry = _interopRequireDefault(require("axios-retry"));
|
|
17
|
+
var _crypto = require("crypto");
|
|
18
|
+
var _keyRegistry = require("./keyRegistry.js");
|
|
19
|
+
var _logging = require("./logging.js");
|
|
20
|
+
var _requestLogger = _interopRequireDefault(require("./requestLogger.js"));
|
|
21
|
+
var _utils = require("./utils.js");
|
|
22
|
+
var _validationErrorLogger = _interopRequireDefault(require("./validationErrorLogger.js"));
|
|
23
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
24
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
25
|
+
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; }
|
|
26
|
+
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; }
|
|
27
|
+
var SYNC_INTERVAL = 60000; // 60 seconds
|
|
28
|
+
var REQUEST_TIMEOUT = 10000; // 10 seconds
|
|
29
|
+
var MAX_QUEUE_TIME = 3.6e6; // 1 hour
|
|
30
|
+
var ApitallyClient = exports.ApitallyClient = /*#__PURE__*/function () {
|
|
31
|
+
function ApitallyClient(_ref) {
|
|
32
|
+
var clientId = _ref.clientId,
|
|
33
|
+
_ref$env = _ref.env,
|
|
34
|
+
env = _ref$env === void 0 ? "default" : _ref$env,
|
|
35
|
+
_ref$syncApiKeys = _ref.syncApiKeys,
|
|
36
|
+
syncApiKeys = _ref$syncApiKeys === void 0 ? false : _ref$syncApiKeys,
|
|
37
|
+
logger = _ref.logger,
|
|
38
|
+
keyCacheClass = _ref.keyCacheClass;
|
|
39
|
+
(0, _classCallCheck2["default"])(this, ApitallyClient);
|
|
40
|
+
(0, _defineProperty2["default"])(this, "clientId", void 0);
|
|
41
|
+
(0, _defineProperty2["default"])(this, "env", void 0);
|
|
42
|
+
(0, _defineProperty2["default"])(this, "syncApiKeys", void 0);
|
|
43
|
+
(0, _defineProperty2["default"])(this, "instanceUuid", void 0);
|
|
44
|
+
(0, _defineProperty2["default"])(this, "requestsDataQueue", void 0);
|
|
45
|
+
(0, _defineProperty2["default"])(this, "axiosClient", void 0);
|
|
46
|
+
(0, _defineProperty2["default"])(this, "syncIntervalId", void 0);
|
|
47
|
+
(0, _defineProperty2["default"])(this, "appInfo", void 0);
|
|
48
|
+
(0, _defineProperty2["default"])(this, "appInfoSent", false);
|
|
49
|
+
(0, _defineProperty2["default"])(this, "startedAt", void 0);
|
|
50
|
+
(0, _defineProperty2["default"])(this, "keysUpdated", void 0);
|
|
51
|
+
(0, _defineProperty2["default"])(this, "requestLogger", void 0);
|
|
52
|
+
(0, _defineProperty2["default"])(this, "validationErrorLogger", void 0);
|
|
53
|
+
(0, _defineProperty2["default"])(this, "keyRegistry", void 0);
|
|
54
|
+
(0, _defineProperty2["default"])(this, "keyCache", void 0);
|
|
55
|
+
(0, _defineProperty2["default"])(this, "logger", void 0);
|
|
56
|
+
if (ApitallyClient.instance) {
|
|
57
|
+
throw new Error("Apitally client is already initialized");
|
|
58
|
+
}
|
|
59
|
+
if (!(0, _utils.isValidClientId)(clientId)) {
|
|
60
|
+
throw new Error("Invalid client ID '".concat(clientId, "' (expecting hexadeciaml UUID format)"));
|
|
61
|
+
}
|
|
62
|
+
if (!(0, _utils.isValidEnv)(env)) {
|
|
63
|
+
throw new Error("Invalid env '".concat(env, "' (expecting 1-32 alphanumeric lowercase characters and hyphens only)"));
|
|
64
|
+
}
|
|
65
|
+
ApitallyClient.instance = this;
|
|
66
|
+
this.clientId = clientId;
|
|
67
|
+
this.env = env;
|
|
68
|
+
this.syncApiKeys = syncApiKeys;
|
|
69
|
+
this.instanceUuid = (0, _crypto.randomUUID)();
|
|
70
|
+
this.requestsDataQueue = [];
|
|
71
|
+
this.startedAt = Date.now();
|
|
72
|
+
this.requestLogger = new _requestLogger["default"]();
|
|
73
|
+
this.validationErrorLogger = new _validationErrorLogger["default"]();
|
|
74
|
+
this.keyRegistry = new _keyRegistry.KeyRegistry();
|
|
75
|
+
this.keyCache = keyCacheClass ? new keyCacheClass(clientId, env) : undefined;
|
|
76
|
+
this.logger = logger || (0, _logging.getLogger)();
|
|
77
|
+
this.axiosClient = _axios["default"].create({
|
|
78
|
+
baseURL: this.getHubUrl(),
|
|
79
|
+
timeout: REQUEST_TIMEOUT
|
|
80
|
+
});
|
|
81
|
+
(0, _axiosRetry["default"])(this.axiosClient, {
|
|
82
|
+
retries: 3,
|
|
83
|
+
retryDelay: function retryDelay(retryCount, error) {
|
|
84
|
+
return _axiosRetry["default"].exponentialDelay(retryCount, error, 1000);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
if (this.keyCache) {
|
|
88
|
+
var keyDataString = this.keyCache.retrieve();
|
|
89
|
+
if (keyDataString) {
|
|
90
|
+
try {
|
|
91
|
+
var keyData = JSON.parse(keyDataString);
|
|
92
|
+
this.updateKeyRegistry(keyData, false);
|
|
93
|
+
} catch (error) {
|
|
94
|
+
this.logger.error("Failed to load API keys from cache.", {
|
|
95
|
+
error: error
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
this.startSync();
|
|
101
|
+
this.handleShutdown = this.handleShutdown.bind(this);
|
|
102
|
+
}
|
|
103
|
+
(0, _createClass2["default"])(ApitallyClient, [{
|
|
104
|
+
key: "handleShutdown",
|
|
105
|
+
value: function () {
|
|
106
|
+
var _handleShutdown = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
107
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
108
|
+
while (1) switch (_context.prev = _context.next) {
|
|
109
|
+
case 0:
|
|
110
|
+
this.stopSync();
|
|
111
|
+
_context.next = 3;
|
|
112
|
+
return this.sendRequestsData();
|
|
113
|
+
case 3:
|
|
114
|
+
ApitallyClient.instance = undefined;
|
|
115
|
+
case 4:
|
|
116
|
+
case "end":
|
|
117
|
+
return _context.stop();
|
|
118
|
+
}
|
|
119
|
+
}, _callee, this);
|
|
120
|
+
}));
|
|
121
|
+
function handleShutdown() {
|
|
122
|
+
return _handleShutdown.apply(this, arguments);
|
|
123
|
+
}
|
|
124
|
+
return handleShutdown;
|
|
125
|
+
}()
|
|
126
|
+
}, {
|
|
127
|
+
key: "getHubUrl",
|
|
128
|
+
value: function getHubUrl() {
|
|
129
|
+
var baseURL = process.env.APITALLY_HUB_BASE_URL || "https://hub.apitally.io";
|
|
130
|
+
var version = "v1";
|
|
131
|
+
return "".concat(baseURL, "/").concat(version, "/").concat(this.clientId, "/").concat(this.env);
|
|
132
|
+
}
|
|
133
|
+
}, {
|
|
134
|
+
key: "startSync",
|
|
135
|
+
value: function startSync() {
|
|
136
|
+
var _this = this;
|
|
137
|
+
this.sync();
|
|
138
|
+
this.syncIntervalId = setInterval(function () {
|
|
139
|
+
_this.sync();
|
|
140
|
+
}, SYNC_INTERVAL);
|
|
141
|
+
}
|
|
142
|
+
}, {
|
|
143
|
+
key: "sync",
|
|
144
|
+
value: function () {
|
|
145
|
+
var _sync = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
146
|
+
var promises;
|
|
147
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
148
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
149
|
+
case 0:
|
|
150
|
+
_context2.prev = 0;
|
|
151
|
+
promises = [this.sendRequestsData()];
|
|
152
|
+
if (this.syncApiKeys) {
|
|
153
|
+
promises.push(this.getKeys());
|
|
154
|
+
}
|
|
155
|
+
if (!this.appInfoSent) {
|
|
156
|
+
promises.push(this.sendAppInfo());
|
|
157
|
+
}
|
|
158
|
+
_context2.next = 6;
|
|
159
|
+
return Promise.all(promises);
|
|
160
|
+
case 6:
|
|
161
|
+
_context2.next = 11;
|
|
162
|
+
break;
|
|
163
|
+
case 8:
|
|
164
|
+
_context2.prev = 8;
|
|
165
|
+
_context2.t0 = _context2["catch"](0);
|
|
166
|
+
this.logger.error("Error while syncing with Apitally Hub.", {
|
|
167
|
+
error: _context2.t0
|
|
168
|
+
});
|
|
169
|
+
case 11:
|
|
170
|
+
case "end":
|
|
171
|
+
return _context2.stop();
|
|
172
|
+
}
|
|
173
|
+
}, _callee2, this, [[0, 8]]);
|
|
174
|
+
}));
|
|
175
|
+
function sync() {
|
|
176
|
+
return _sync.apply(this, arguments);
|
|
177
|
+
}
|
|
178
|
+
return sync;
|
|
179
|
+
}()
|
|
180
|
+
}, {
|
|
181
|
+
key: "stopSync",
|
|
182
|
+
value: function stopSync() {
|
|
183
|
+
if (this.syncIntervalId) {
|
|
184
|
+
clearInterval(this.syncIntervalId);
|
|
185
|
+
this.syncIntervalId = undefined;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}, {
|
|
189
|
+
key: "setAppInfo",
|
|
190
|
+
value: function setAppInfo(appInfo) {
|
|
191
|
+
this.appInfo = appInfo;
|
|
192
|
+
this.appInfoSent = false;
|
|
193
|
+
this.sendAppInfo();
|
|
194
|
+
}
|
|
195
|
+
}, {
|
|
196
|
+
key: "sendAppInfo",
|
|
197
|
+
value: function () {
|
|
198
|
+
var _sendAppInfo = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
199
|
+
var payload;
|
|
200
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
201
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
202
|
+
case 0:
|
|
203
|
+
if (!this.appInfo) {
|
|
204
|
+
_context3.next = 12;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
this.logger.debug("Sending app info to Apitally Hub.");
|
|
208
|
+
payload = _objectSpread({
|
|
209
|
+
instance_uuid: this.instanceUuid,
|
|
210
|
+
message_uuid: (0, _crypto.randomUUID)()
|
|
211
|
+
}, this.appInfo);
|
|
212
|
+
_context3.prev = 3;
|
|
213
|
+
_context3.next = 6;
|
|
214
|
+
return this.axiosClient.post("/info", payload);
|
|
215
|
+
case 6:
|
|
216
|
+
this.appInfoSent = true;
|
|
217
|
+
_context3.next = 12;
|
|
218
|
+
break;
|
|
219
|
+
case 9:
|
|
220
|
+
_context3.prev = 9;
|
|
221
|
+
_context3.t0 = _context3["catch"](3);
|
|
222
|
+
if (_context3.t0 instanceof _axios.AxiosError && _context3.t0.response && _context3.t0.response.status === 404 && _context3.t0.response.data && typeof _context3.t0.response.data === "string" && _context3.t0.response.data.includes("Client ID")) {
|
|
223
|
+
this.logger.error("Invalid Apitally client ID '".concat(this.clientId, "'."));
|
|
224
|
+
this.stopSync();
|
|
225
|
+
} else {
|
|
226
|
+
this.logger.debug("Error while sending app info to Apitally Hub (".concat(_context3.t0.code, "). Will retry."), {
|
|
227
|
+
error: _context3.t0
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
case 12:
|
|
231
|
+
case "end":
|
|
232
|
+
return _context3.stop();
|
|
233
|
+
}
|
|
234
|
+
}, _callee3, this, [[3, 9]]);
|
|
235
|
+
}));
|
|
236
|
+
function sendAppInfo() {
|
|
237
|
+
return _sendAppInfo.apply(this, arguments);
|
|
238
|
+
}
|
|
239
|
+
return sendAppInfo;
|
|
240
|
+
}()
|
|
241
|
+
}, {
|
|
242
|
+
key: "sendRequestsData",
|
|
243
|
+
value: function () {
|
|
244
|
+
var _sendRequestsData = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
245
|
+
var newPayload, failedItems, queueItem, _queueItem, time, payload, timeOffset;
|
|
246
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
247
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
248
|
+
case 0:
|
|
249
|
+
this.logger.debug("Sending requests data to Apitally Hub.");
|
|
250
|
+
newPayload = {
|
|
251
|
+
time_offset: 0,
|
|
252
|
+
instance_uuid: this.instanceUuid,
|
|
253
|
+
message_uuid: (0, _crypto.randomUUID)(),
|
|
254
|
+
requests: this.requestLogger.getAndResetRequests(),
|
|
255
|
+
validation_errors: this.validationErrorLogger.getAndResetValidationErrors(),
|
|
256
|
+
api_key_usage: this.keyRegistry.getAndResetUsageCounts()
|
|
257
|
+
};
|
|
258
|
+
this.requestsDataQueue.push([Date.now(), newPayload]);
|
|
259
|
+
failedItems = [];
|
|
260
|
+
case 4:
|
|
261
|
+
if (!(this.requestsDataQueue.length > 0)) {
|
|
262
|
+
_context4.next = 22;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
queueItem = this.requestsDataQueue.shift();
|
|
266
|
+
if (!queueItem) {
|
|
267
|
+
_context4.next = 20;
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
_queueItem = (0, _slicedToArray2["default"])(queueItem, 2), time = _queueItem[0], payload = _queueItem[1];
|
|
271
|
+
_context4.prev = 8;
|
|
272
|
+
timeOffset = Date.now() - time;
|
|
273
|
+
if (!(timeOffset <= MAX_QUEUE_TIME)) {
|
|
274
|
+
_context4.next = 14;
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
payload.time_offset = timeOffset / 1000.0; // In seconds
|
|
278
|
+
_context4.next = 14;
|
|
279
|
+
return this.axiosClient.post("/requests", payload);
|
|
280
|
+
case 14:
|
|
281
|
+
_context4.next = 20;
|
|
282
|
+
break;
|
|
283
|
+
case 16:
|
|
284
|
+
_context4.prev = 16;
|
|
285
|
+
_context4.t0 = _context4["catch"](8);
|
|
286
|
+
this.logger.debug("Error while sending requests data to Apitally Hub (".concat(_context4.t0.code, "). Will retry."), {
|
|
287
|
+
error: _context4.t0
|
|
288
|
+
});
|
|
289
|
+
failedItems.push(queueItem);
|
|
290
|
+
case 20:
|
|
291
|
+
_context4.next = 4;
|
|
292
|
+
break;
|
|
293
|
+
case 22:
|
|
294
|
+
this.requestsDataQueue = failedItems;
|
|
295
|
+
case 23:
|
|
296
|
+
case "end":
|
|
297
|
+
return _context4.stop();
|
|
298
|
+
}
|
|
299
|
+
}, _callee4, this, [[8, 16]]);
|
|
300
|
+
}));
|
|
301
|
+
function sendRequestsData() {
|
|
302
|
+
return _sendRequestsData.apply(this, arguments);
|
|
303
|
+
}
|
|
304
|
+
return sendRequestsData;
|
|
305
|
+
}()
|
|
306
|
+
}, {
|
|
307
|
+
key: "getKeys",
|
|
308
|
+
value: function () {
|
|
309
|
+
var _getKeys = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
310
|
+
var response, now;
|
|
311
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
312
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
313
|
+
case 0:
|
|
314
|
+
_context5.prev = 0;
|
|
315
|
+
this.logger.debug("Getting API keys from Apitally Hub.");
|
|
316
|
+
_context5.next = 4;
|
|
317
|
+
return this.axiosClient.get("/keys");
|
|
318
|
+
case 4:
|
|
319
|
+
response = _context5.sent;
|
|
320
|
+
this.updateKeyRegistry(response.data);
|
|
321
|
+
this.keysUpdated = Date.now();
|
|
322
|
+
_context5.next = 14;
|
|
323
|
+
break;
|
|
324
|
+
case 9:
|
|
325
|
+
_context5.prev = 9;
|
|
326
|
+
_context5.t0 = _context5["catch"](0);
|
|
327
|
+
this.logger.debug("Error while getting API keys from Apitally Hub (".concat(_context5.t0.code, "). Will retry."), {
|
|
328
|
+
error: _context5.t0
|
|
329
|
+
});
|
|
330
|
+
now = Date.now();
|
|
331
|
+
if (!this.keyRegistry.salt) {
|
|
332
|
+
// Exit because application won't be able to authenticate requests
|
|
333
|
+
this.logger.error("Initial Apitally API key sync failed.");
|
|
334
|
+
process.exit(1);
|
|
335
|
+
} else if (this.keysUpdated && now - this.keysUpdated > MAX_QUEUE_TIME || !this.keysUpdated && now - this.startedAt > MAX_QUEUE_TIME) {
|
|
336
|
+
this.logger.warn("Apitally API key sync has been failing for more than 1 hour.");
|
|
337
|
+
}
|
|
338
|
+
case 14:
|
|
339
|
+
case "end":
|
|
340
|
+
return _context5.stop();
|
|
341
|
+
}
|
|
342
|
+
}, _callee5, this, [[0, 9]]);
|
|
343
|
+
}));
|
|
344
|
+
function getKeys() {
|
|
345
|
+
return _getKeys.apply(this, arguments);
|
|
346
|
+
}
|
|
347
|
+
return getKeys;
|
|
348
|
+
}()
|
|
349
|
+
}, {
|
|
350
|
+
key: "updateKeyRegistry",
|
|
351
|
+
value: function updateKeyRegistry(data) {
|
|
352
|
+
var cache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
353
|
+
this.keyRegistry.salt = data.salt || null;
|
|
354
|
+
this.keyRegistry.update(data.keys || {});
|
|
355
|
+
if (cache && this.keyCache) {
|
|
356
|
+
this.keyCache.store(JSON.stringify(data));
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}], [{
|
|
360
|
+
key: "getInstance",
|
|
361
|
+
value: function getInstance() {
|
|
362
|
+
if (!ApitallyClient.instance) {
|
|
363
|
+
throw new Error("Apitally client is not initialized");
|
|
364
|
+
}
|
|
365
|
+
return ApitallyClient.instance;
|
|
366
|
+
}
|
|
367
|
+
}, {
|
|
368
|
+
key: "shutdown",
|
|
369
|
+
value: function () {
|
|
370
|
+
var _shutdown = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
|
371
|
+
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
372
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
373
|
+
case 0:
|
|
374
|
+
if (!ApitallyClient.instance) {
|
|
375
|
+
_context6.next = 3;
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
_context6.next = 3;
|
|
379
|
+
return ApitallyClient.instance.handleShutdown();
|
|
380
|
+
case 3:
|
|
381
|
+
case "end":
|
|
382
|
+
return _context6.stop();
|
|
383
|
+
}
|
|
384
|
+
}, _callee6);
|
|
385
|
+
}));
|
|
386
|
+
function shutdown() {
|
|
387
|
+
return _shutdown.apply(this, arguments);
|
|
388
|
+
}
|
|
389
|
+
return shutdown;
|
|
390
|
+
}()
|
|
391
|
+
}]);
|
|
392
|
+
return ApitallyClient;
|
|
393
|
+
}();
|
|
394
|
+
(0, _defineProperty2["default"])(ApitallyClient, "instance", void 0);
|
|
395
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","names":["_axios","_interopRequireWildcard","require","_axiosRetry","_interopRequireDefault","_crypto","_keyRegistry","_logging","_requestLogger","_utils","_validationErrorLogger","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","SYNC_INTERVAL","REQUEST_TIMEOUT","MAX_QUEUE_TIME","ApitallyClient","exports","_ref","clientId","_ref$env","env","_ref$syncApiKeys","syncApiKeys","logger","keyCacheClass","_classCallCheck2","instance","Error","isValidClientId","concat","isValidEnv","instanceUuid","randomUUID","requestsDataQueue","startedAt","Date","now","requestLogger","RequestLogger","validationErrorLogger","ValidationErrorLogger","keyRegistry","KeyRegistry","keyCache","undefined","getLogger","axiosClient","axios","create","baseURL","getHubUrl","timeout","axiosRetry","retries","retryDelay","retryCount","error","exponentialDelay","keyDataString","retrieve","keyData","JSON","parse","updateKeyRegistry","startSync","handleShutdown","bind","_createClass2","key","value","_handleShutdown","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","stopSync","sendRequestsData","stop","process","APITALLY_HUB_BASE_URL","version","_this","sync","syncIntervalId","setInterval","_sync","_callee2","promises","_callee2$","_context2","getKeys","appInfoSent","sendAppInfo","Promise","all","t0","clearInterval","setAppInfo","appInfo","_sendAppInfo","_callee3","payload","_callee3$","_context3","debug","instance_uuid","message_uuid","post","AxiosError","response","status","data","includes","code","_sendRequestsData","_callee4","newPayload","failedItems","queueItem","_queueItem","time","timeOffset","_callee4$","_context4","time_offset","requests","getAndResetRequests","validation_errors","getAndResetValidationErrors","api_key_usage","getAndResetUsageCounts","shift","_slicedToArray2","_getKeys","_callee5","_callee5$","_context5","sent","keysUpdated","salt","exit","warn","cache","update","store","stringify","getInstance","_shutdown","_callee6","_callee6$","_context6","shutdown"],"sources":["../../../src/common/client.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "KeyCacheBase", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _keyRegistry.KeyCacheBase;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _keyRegistry = require("./keyRegistry.js");
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_keyRegistry","require"],"sources":["../../../src/common/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.KeyRegistry = exports.KeyInfo = exports.KeyCacheBase = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
+
var _crypto = require("crypto");
|
|
15
|
+
var KeyInfo = exports.KeyInfo = /*#__PURE__*/function () {
|
|
16
|
+
function KeyInfo(keyId, apiKeyId) {
|
|
17
|
+
var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
|
|
18
|
+
var scopes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
19
|
+
var expiresInSeconds = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
20
|
+
(0, _classCallCheck2["default"])(this, KeyInfo);
|
|
21
|
+
(0, _defineProperty2["default"])(this, "keyId", void 0);
|
|
22
|
+
(0, _defineProperty2["default"])(this, "apiKeyId", void 0);
|
|
23
|
+
(0, _defineProperty2["default"])(this, "name", void 0);
|
|
24
|
+
(0, _defineProperty2["default"])(this, "scopes", void 0);
|
|
25
|
+
(0, _defineProperty2["default"])(this, "expiresAt", void 0);
|
|
26
|
+
this.keyId = keyId;
|
|
27
|
+
this.apiKeyId = apiKeyId;
|
|
28
|
+
this.name = name;
|
|
29
|
+
this.scopes = scopes;
|
|
30
|
+
this.expiresAt = expiresInSeconds !== null && expiresInSeconds !== undefined ? new Date(Date.now() + expiresInSeconds * 1000) : null;
|
|
31
|
+
}
|
|
32
|
+
(0, _createClass2["default"])(KeyInfo, [{
|
|
33
|
+
key: "isExpired",
|
|
34
|
+
get: function get() {
|
|
35
|
+
return this.expiresAt !== null && this.expiresAt < new Date();
|
|
36
|
+
}
|
|
37
|
+
}, {
|
|
38
|
+
key: "hasScopes",
|
|
39
|
+
value: function hasScopes(scopes) {
|
|
40
|
+
var _this = this;
|
|
41
|
+
if (typeof scopes === "string") {
|
|
42
|
+
scopes = [scopes];
|
|
43
|
+
}
|
|
44
|
+
return scopes.every(function (scope) {
|
|
45
|
+
return _this.scopes.includes(scope);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}]);
|
|
49
|
+
return KeyInfo;
|
|
50
|
+
}();
|
|
51
|
+
var KeyRegistry = exports.KeyRegistry = /*#__PURE__*/function () {
|
|
52
|
+
function KeyRegistry() {
|
|
53
|
+
(0, _classCallCheck2["default"])(this, KeyRegistry);
|
|
54
|
+
(0, _defineProperty2["default"])(this, "salt", void 0);
|
|
55
|
+
(0, _defineProperty2["default"])(this, "keys", void 0);
|
|
56
|
+
(0, _defineProperty2["default"])(this, "usageCounts", void 0);
|
|
57
|
+
this.salt = null;
|
|
58
|
+
this.keys = new Map();
|
|
59
|
+
this.usageCounts = new Map();
|
|
60
|
+
}
|
|
61
|
+
(0, _createClass2["default"])(KeyRegistry, [{
|
|
62
|
+
key: "get",
|
|
63
|
+
value: function () {
|
|
64
|
+
var _get = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(apiKey) {
|
|
65
|
+
var hash, key;
|
|
66
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
67
|
+
while (1) switch (_context.prev = _context.next) {
|
|
68
|
+
case 0:
|
|
69
|
+
_context.next = 2;
|
|
70
|
+
return this.hashApiKey(apiKey.trim());
|
|
71
|
+
case 2:
|
|
72
|
+
hash = _context.sent;
|
|
73
|
+
key = this.keys.get(hash);
|
|
74
|
+
if (!(!key || key.isExpired)) {
|
|
75
|
+
_context.next = 6;
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
return _context.abrupt("return", null);
|
|
79
|
+
case 6:
|
|
80
|
+
this.usageCounts.set(key.apiKeyId, (this.usageCounts.get(key.apiKeyId) || 0) + 1);
|
|
81
|
+
return _context.abrupt("return", key);
|
|
82
|
+
case 8:
|
|
83
|
+
case "end":
|
|
84
|
+
return _context.stop();
|
|
85
|
+
}
|
|
86
|
+
}, _callee, this);
|
|
87
|
+
}));
|
|
88
|
+
function get(_x) {
|
|
89
|
+
return _get.apply(this, arguments);
|
|
90
|
+
}
|
|
91
|
+
return get;
|
|
92
|
+
}()
|
|
93
|
+
}, {
|
|
94
|
+
key: "hashApiKey",
|
|
95
|
+
value: function () {
|
|
96
|
+
var _hashApiKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(apiKey) {
|
|
97
|
+
var _this2 = this;
|
|
98
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
99
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
100
|
+
case 0:
|
|
101
|
+
return _context2.abrupt("return", new Promise(function (resolve, reject) {
|
|
102
|
+
if (!_this2.salt) {
|
|
103
|
+
throw new Error("Apitally API keys not initialized");
|
|
104
|
+
}
|
|
105
|
+
(0, _crypto.scrypt)(apiKey, Buffer.from(_this2.salt, "hex"), 32, {
|
|
106
|
+
N: 256,
|
|
107
|
+
r: 4,
|
|
108
|
+
p: 1
|
|
109
|
+
}, function (err, derivedKey) {
|
|
110
|
+
if (err) reject(err);
|
|
111
|
+
resolve(derivedKey.toString("hex"));
|
|
112
|
+
});
|
|
113
|
+
}));
|
|
114
|
+
case 1:
|
|
115
|
+
case "end":
|
|
116
|
+
return _context2.stop();
|
|
117
|
+
}
|
|
118
|
+
}, _callee2);
|
|
119
|
+
}));
|
|
120
|
+
function hashApiKey(_x2) {
|
|
121
|
+
return _hashApiKey.apply(this, arguments);
|
|
122
|
+
}
|
|
123
|
+
return hashApiKey;
|
|
124
|
+
}()
|
|
125
|
+
}, {
|
|
126
|
+
key: "update",
|
|
127
|
+
value: function update(keys) {
|
|
128
|
+
this.keys.clear();
|
|
129
|
+
for (var _i = 0, _Object$entries = Object.entries(keys); _i < _Object$entries.length; _i++) {
|
|
130
|
+
var _Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2),
|
|
131
|
+
hash = _Object$entries$_i[0],
|
|
132
|
+
data = _Object$entries$_i[1];
|
|
133
|
+
this.keys.set(hash, new KeyInfo(data["key_id"], data["api_key_id"], data["name"], data["scopes"], data["expires_in_seconds"]));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}, {
|
|
137
|
+
key: "getAndResetUsageCounts",
|
|
138
|
+
value: function getAndResetUsageCounts() {
|
|
139
|
+
var data = Object.fromEntries(this.usageCounts);
|
|
140
|
+
this.usageCounts.clear();
|
|
141
|
+
return data;
|
|
142
|
+
}
|
|
143
|
+
}]);
|
|
144
|
+
return KeyRegistry;
|
|
145
|
+
}();
|
|
146
|
+
var KeyCacheBase = exports.KeyCacheBase = /*#__PURE__*/function () {
|
|
147
|
+
function KeyCacheBase(clientId, env) {
|
|
148
|
+
(0, _classCallCheck2["default"])(this, KeyCacheBase);
|
|
149
|
+
(0, _defineProperty2["default"])(this, "clientId", void 0);
|
|
150
|
+
(0, _defineProperty2["default"])(this, "env", void 0);
|
|
151
|
+
this.clientId = clientId;
|
|
152
|
+
this.env = env;
|
|
153
|
+
}
|
|
154
|
+
(0, _createClass2["default"])(KeyCacheBase, [{
|
|
155
|
+
key: "cacheKey",
|
|
156
|
+
get: function get() {
|
|
157
|
+
return "apitally:keys:".concat(this.clientId, ":").concat(this.env);
|
|
158
|
+
}
|
|
159
|
+
}]);
|
|
160
|
+
return KeyCacheBase;
|
|
161
|
+
}();
|
|
162
|
+
//# sourceMappingURL=keyRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyRegistry.js","names":["_crypto","require","KeyInfo","exports","keyId","apiKeyId","name","arguments","length","undefined","scopes","expiresInSeconds","_classCallCheck2","_defineProperty2","expiresAt","Date","now","_createClass2","key","get","value","hasScopes","_this","every","scope","includes","KeyRegistry","salt","keys","Map","usageCounts","_get","_asyncToGenerator2","_regenerator","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","scrypt","Buffer","from","N","r","p","err","derivedKey","toString","_x2","update","clear","_i","_Object$entries","Object","entries","_Object$entries$_i","_slicedToArray2","data","getAndResetUsageCounts","fromEntries","KeyCacheBase","clientId","env","concat"],"sources":["../../../src/common/keyRegistry.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getLogger = void 0;
|
|
7
|
+
var _winston = require("winston");
|
|
8
|
+
var getLogger = exports.getLogger = function getLogger() {
|
|
9
|
+
return (0, _winston.createLogger)({
|
|
10
|
+
level: process.env.APITALLY_DEBUG ? "debug" : "warn",
|
|
11
|
+
format: _winston.format.combine(_winston.format.colorize(), _winston.format.timestamp(), _winston.format.printf(function (info) {
|
|
12
|
+
return "".concat(info.timestamp, " ").concat(info.level, ": ").concat(info.message);
|
|
13
|
+
})),
|
|
14
|
+
transports: [new _winston.transports.Console()]
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","names":["_winston","require","getLogger","exports","createLogger","level","process","env","APITALLY_DEBUG","format","combine","colorize","timestamp","printf","info","concat","message","transports","Console"],"sources":["../../../src/common/logging.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AASO,IAAMC,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG,SAAZA,SAASA,CAAA,EAAQ;EAC5B,OAAO,IAAAE,qBAAY,EAAC;IAClBC,KAAK,EAAEC,OAAO,CAACC,GAAG,CAACC,cAAc,GAAG,OAAO,GAAG,MAAM;IACpDC,MAAM,EAAEA,eAAM,CAACC,OAAO,CACpBD,eAAM,CAACE,QAAQ,EAAE,EACjBF,eAAM,CAACG,SAAS,EAAE,EAClBH,eAAM,CAACI,MAAM,CACX,UAACC,IAAI;MAAA,UAAAC,MAAA,CAAQD,IAAI,CAACF,SAAS,OAAAG,MAAA,CAAID,IAAI,CAACT,KAAK,QAAAU,MAAA,CAAKD,IAAI,CAACE,OAAO;IAAA,CAAE,CAC7D,CACF;IACDC,UAAU,EAAE,CAAC,IAAIA,mBAAU,CAACC,OAAO,EAAE;GACtC,CAAC;AACJ,CAAC"}
|