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