@usageflow/core 0.2.4 → 0.2.6
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/README.md +207 -26
- package/dist/base.d.ts +9 -8
- package/dist/base.js +111 -49
- package/dist/base.js.map +1 -1
- package/dist/socket.js +2 -2
- package/dist/socket.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/jest.config.js +14 -0
- package/package.json +6 -7
- package/src/base.ts +177 -67
- package/src/socket.ts +2 -2
- package/src/types.ts +5 -0
- package/test/base.test.ts +290 -0
- package/test/socket.test.ts +72 -0
- package/test/src/base.d.ts +62 -0
- package/test/src/base.js +440 -0
- package/test/src/base.js.map +1 -0
- package/test/src/index.d.ts +3 -0
- package/test/src/index.js +20 -0
- package/test/src/index.js.map +1 -0
- package/test/src/socket.d.ts +26 -0
- package/test/src/socket.js +266 -0
- package/test/src/socket.js.map +1 -0
- package/test/src/types.d.ts +117 -0
- package/test/src/types.js +11 -0
- package/test/src/types.js.map +1 -0
- package/test/tsconfig.test.tsbuildinfo +1 -0
- package/test/types.test.ts +56 -0
- package/tsconfig.json +2 -1
- package/tsconfig.test.json +11 -0
- package/tsconfig.test.tsbuildinfo +1 -0
- package/tsconfig.tsbuildinfo +1 -1
package/test/src/base.js
ADDED
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UsageFlowAPI = void 0;
|
|
4
|
+
const socket_1 = require("./socket");
|
|
5
|
+
class UsageFlowAPI {
|
|
6
|
+
constructor(config = { apiKey: '', poolSize: 5 }) {
|
|
7
|
+
this.apiKey = null;
|
|
8
|
+
this.usageflowUrl = "https://api.usageflow.io";
|
|
9
|
+
this.webServer = 'express';
|
|
10
|
+
this.apiConfigs = [];
|
|
11
|
+
this.configUpdateInterval = null;
|
|
12
|
+
this.socketManager = null;
|
|
13
|
+
this.applicationId = false;
|
|
14
|
+
this.init(config.apiKey, this.usageflowUrl, config.poolSize);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Initialize the UsageFlow API with credentials
|
|
18
|
+
* @param apiKey - Your UsageFlow API key
|
|
19
|
+
* @param usageflowUrl - The UsageFlow API URL (default: https://api.usageflow.io)
|
|
20
|
+
* @param poolSize - Number of WebSocket connections in the pool (default: 5)
|
|
21
|
+
*/
|
|
22
|
+
init(apiKey, usageflowUrl = "https://api.usageflow.io", poolSize) {
|
|
23
|
+
this.apiKey = apiKey;
|
|
24
|
+
this.usageflowUrl = usageflowUrl;
|
|
25
|
+
// this.startConfigUpdater();
|
|
26
|
+
this.socketManager = new socket_1.UsageFlowSocketManger(apiKey, poolSize);
|
|
27
|
+
// Connect the socket manager
|
|
28
|
+
this.socketManager.connect().catch((error) => {
|
|
29
|
+
console.error("[UsageFlow] Failed to establish WebSocket connection:", error);
|
|
30
|
+
}).then(() => {
|
|
31
|
+
this.startConfigUpdater();
|
|
32
|
+
});
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
setWebServer(webServer) {
|
|
36
|
+
this.webServer = webServer;
|
|
37
|
+
}
|
|
38
|
+
getApiKey() {
|
|
39
|
+
return this.apiKey;
|
|
40
|
+
}
|
|
41
|
+
getUsageflowUrl() {
|
|
42
|
+
return this.usageflowUrl;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Start background config update process
|
|
46
|
+
*/
|
|
47
|
+
startConfigUpdater() {
|
|
48
|
+
if (this.configUpdateInterval) {
|
|
49
|
+
clearInterval(this.configUpdateInterval);
|
|
50
|
+
}
|
|
51
|
+
this.fetchApiPolicies().catch(console.error);
|
|
52
|
+
this.configUpdateInterval = setInterval(async () => {
|
|
53
|
+
await this.fetchApiPolicies();
|
|
54
|
+
}, 60000);
|
|
55
|
+
// this.fetchApiConfig().catch(console.error);
|
|
56
|
+
}
|
|
57
|
+
getRoutePattern(request) {
|
|
58
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
59
|
+
if (this.webServer === 'fastify') {
|
|
60
|
+
return ((_a = request === null || request === void 0 ? void 0 : request.routeOptions) === null || _a === void 0 ? void 0 : _a.url) || request.url || '';
|
|
61
|
+
}
|
|
62
|
+
// For NestJS, prioritize route.path with baseUrl
|
|
63
|
+
if (this.webServer === 'nestjs') {
|
|
64
|
+
// Method 1: Use request.route.path (available after route matching in NestJS)
|
|
65
|
+
if ((_b = request.route) === null || _b === void 0 ? void 0 : _b.path) {
|
|
66
|
+
const baseUrl = request.baseUrl || "";
|
|
67
|
+
const routePath = request.route.path;
|
|
68
|
+
// Combine baseUrl and routePath to get full pattern
|
|
69
|
+
const fullPath = baseUrl + routePath;
|
|
70
|
+
return fullPath || "/";
|
|
71
|
+
}
|
|
72
|
+
// Method 2: Reconstruct pattern from params (NestJS-specific)
|
|
73
|
+
// This is more reliable for NestJS when route.path is not available
|
|
74
|
+
if (request.params && Object.keys(request.params).length > 0) {
|
|
75
|
+
let path = request.path || ((_c = request.url) === null || _c === void 0 ? void 0 : _c.split("?")[0]) || "/";
|
|
76
|
+
// Split path into segments and replace matching segments with param names
|
|
77
|
+
const pathSegments = path.split("/").filter(segment => segment !== "");
|
|
78
|
+
const paramEntries = Object.entries(request.params);
|
|
79
|
+
// Replace segments that match param values with :paramName
|
|
80
|
+
for (let i = 0; i < pathSegments.length; i++) {
|
|
81
|
+
for (const [paramName, paramValue] of paramEntries) {
|
|
82
|
+
if (pathSegments[i] === String(paramValue)) {
|
|
83
|
+
pathSegments[i] = `:${paramName}`;
|
|
84
|
+
break; // Only replace once per segment
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Reconstruct the full path pattern
|
|
89
|
+
const pattern = "/" + pathSegments.join("/");
|
|
90
|
+
return pattern;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const routePattern = ((_d = request.route) === null || _d === void 0 ? void 0 : _d.path) || ((_f = (_e = request.app._router.stack.find((route) => {
|
|
94
|
+
// a => a.path == request.url
|
|
95
|
+
if (!route.route)
|
|
96
|
+
return false;
|
|
97
|
+
if (route.path) {
|
|
98
|
+
return route.path == request.url;
|
|
99
|
+
}
|
|
100
|
+
if (route.regexp) {
|
|
101
|
+
const patterned = route.regexp.test(request.url);
|
|
102
|
+
if (patterned) {
|
|
103
|
+
return patterned;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
})) === null || _e === void 0 ? void 0 : _e.route) === null || _f === void 0 ? void 0 : _f.path);
|
|
107
|
+
if (routePattern) {
|
|
108
|
+
return routePattern;
|
|
109
|
+
}
|
|
110
|
+
// Method 1: Use request.route.path (available after route matching)
|
|
111
|
+
if ((_g = request.route) === null || _g === void 0 ? void 0 : _g.path) {
|
|
112
|
+
const baseUrl = request.baseUrl || "";
|
|
113
|
+
const routePath = request.route.path;
|
|
114
|
+
// Combine baseUrl and routePath to get full pattern
|
|
115
|
+
const fullPath = baseUrl + routePath;
|
|
116
|
+
return fullPath || "/";
|
|
117
|
+
}
|
|
118
|
+
// Method 2: Try to find route from router stack
|
|
119
|
+
try {
|
|
120
|
+
const app = request.app;
|
|
121
|
+
const router = app._router;
|
|
122
|
+
if (router && router.stack) {
|
|
123
|
+
const method = request.method.toLowerCase();
|
|
124
|
+
const path = request.path || ((_h = request.url) === null || _h === void 0 ? void 0 : _h.split("?")[0]) || "";
|
|
125
|
+
// Search through router stack for matching route
|
|
126
|
+
for (const layer of router.stack) {
|
|
127
|
+
if (layer.route) {
|
|
128
|
+
const route = layer.route;
|
|
129
|
+
const routePath = route.path;
|
|
130
|
+
const routeMethods = Object.keys(route.methods).map(m => m.toLowerCase());
|
|
131
|
+
// Check if method matches and path pattern matches
|
|
132
|
+
if (routeMethods.includes(method) || routeMethods.includes("*")) {
|
|
133
|
+
// Try to match the pattern by checking if params match
|
|
134
|
+
const pattern = (request.baseUrl || "") + routePath;
|
|
135
|
+
// Simple check: if we have params and the route has params, it might match
|
|
136
|
+
if (request.params && Object.keys(request.params).length > 0) {
|
|
137
|
+
// Check if route path contains the param names
|
|
138
|
+
const paramNames = Object.keys(request.params);
|
|
139
|
+
const routeHasParams = paramNames.some(param => routePath.includes(`:${param}`));
|
|
140
|
+
if (routeHasParams) {
|
|
141
|
+
return pattern;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else if (!routePath.includes(":")) {
|
|
145
|
+
// If no params in request and route has no params, check exact match
|
|
146
|
+
if (path === pattern || path === routePath) {
|
|
147
|
+
return pattern;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
else if (layer.name === "router" && layer.handle && layer.handle.stack) {
|
|
153
|
+
// Handle router middleware (nested routers)
|
|
154
|
+
const mountPath = layer.regexp.source
|
|
155
|
+
.replace("\\/?", "")
|
|
156
|
+
.replace("(?=\\/|$)", "")
|
|
157
|
+
.replace(/\\\//g, "/")
|
|
158
|
+
.replace(/\^/g, "")
|
|
159
|
+
.replace(/\$/g, "")
|
|
160
|
+
.replace(/\\/g, "");
|
|
161
|
+
for (const subLayer of layer.handle.stack) {
|
|
162
|
+
if (subLayer.route) {
|
|
163
|
+
const route = subLayer.route;
|
|
164
|
+
const routePath = route.path;
|
|
165
|
+
const routeMethods = Object.keys(route.methods).map(m => m.toLowerCase());
|
|
166
|
+
if (routeMethods.includes(method) || routeMethods.includes("*")) {
|
|
167
|
+
const fullPath = mountPath + routePath;
|
|
168
|
+
// Check if this route matches by examining params
|
|
169
|
+
if (request.params && Object.keys(request.params).length > 0) {
|
|
170
|
+
const paramNames = Object.keys(request.params);
|
|
171
|
+
const routeHasParams = paramNames.some(param => routePath.includes(`:${param}`));
|
|
172
|
+
if (routeHasParams) {
|
|
173
|
+
return fullPath;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else if (!routePath.includes(":")) {
|
|
177
|
+
const currentPath = request.path || ((_j = request.url) === null || _j === void 0 ? void 0 : _j.split("?")[0]) || "";
|
|
178
|
+
if (currentPath === fullPath || currentPath === routePath) {
|
|
179
|
+
return fullPath;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
// Silently fail and try next method
|
|
191
|
+
console.debug("[UsageFlow] Could not extract route from router stack:", error);
|
|
192
|
+
}
|
|
193
|
+
// Method 3: Reconstruct pattern from params and path
|
|
194
|
+
if (request.params && Object.keys(request.params).length > 0) {
|
|
195
|
+
let path = request.path || ((_k = request.url) === null || _k === void 0 ? void 0 : _k.split("?")[0]) || "/";
|
|
196
|
+
const baseUrl = request.baseUrl || "";
|
|
197
|
+
// Split path into segments and replace matching segments with param names
|
|
198
|
+
const pathSegments = path.split("/");
|
|
199
|
+
const paramEntries = Object.entries(request.params);
|
|
200
|
+
// Replace segments that match param values with :paramName
|
|
201
|
+
for (let i = 0; i < pathSegments.length; i++) {
|
|
202
|
+
for (const [paramName, paramValue] of paramEntries) {
|
|
203
|
+
if (pathSegments[i] === paramValue) {
|
|
204
|
+
pathSegments[i] = `:${paramName}`;
|
|
205
|
+
break; // Only replace once per segment
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const pattern = baseUrl + pathSegments.join("/");
|
|
210
|
+
return pattern;
|
|
211
|
+
}
|
|
212
|
+
// Fallback: return baseUrl + path or just path
|
|
213
|
+
const baseUrl = request.baseUrl || "";
|
|
214
|
+
const path = request.path || ((_l = request.url) === null || _l === void 0 ? void 0 : _l.split("?")[0]) || "/";
|
|
215
|
+
return baseUrl + path || "/";
|
|
216
|
+
}
|
|
217
|
+
guessLedgerId(request, overrideUrl) {
|
|
218
|
+
var _a, _b, _c;
|
|
219
|
+
const method = request.method;
|
|
220
|
+
const url = overrideUrl || this.getRoutePattern(request);
|
|
221
|
+
const configs = this.apiConfigs;
|
|
222
|
+
if (!configs.length) {
|
|
223
|
+
return `${method} ${url}`;
|
|
224
|
+
}
|
|
225
|
+
for (const config of configs) {
|
|
226
|
+
const fieldName = config.identityFieldName;
|
|
227
|
+
const location = config.identityFieldLocation;
|
|
228
|
+
switch (location) {
|
|
229
|
+
case "path_params":
|
|
230
|
+
if ((_a = request.params) === null || _a === void 0 ? void 0 : _a[fieldName]) {
|
|
231
|
+
return `${method} ${url} ${request.params[fieldName]}`;
|
|
232
|
+
}
|
|
233
|
+
break;
|
|
234
|
+
case "query_params":
|
|
235
|
+
if ((_b = request.query) === null || _b === void 0 ? void 0 : _b[fieldName]) {
|
|
236
|
+
return `${method} ${url} ${request.query[fieldName]}`;
|
|
237
|
+
}
|
|
238
|
+
break;
|
|
239
|
+
case "body":
|
|
240
|
+
if ((_c = request.body) === null || _c === void 0 ? void 0 : _c[fieldName]) {
|
|
241
|
+
return `${method} ${url} ${request.body[fieldName]}`;
|
|
242
|
+
}
|
|
243
|
+
break;
|
|
244
|
+
case "bearer_token":
|
|
245
|
+
const authHeader = this.getHeaderValue(request.headers, 'authorization');
|
|
246
|
+
const token = this.extractBearerToken(authHeader || undefined);
|
|
247
|
+
if (token) {
|
|
248
|
+
const claims = this.decodeJwtUnverified(token);
|
|
249
|
+
if (claims === null || claims === void 0 ? void 0 : claims[fieldName]) {
|
|
250
|
+
return `${method} ${url} ${claims[fieldName]}`;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
break;
|
|
254
|
+
case "headers": {
|
|
255
|
+
const headerValue = this.getHeaderValue(request.headers, fieldName);
|
|
256
|
+
if (headerValue) {
|
|
257
|
+
return `${method} ${url} ${headerValue}`;
|
|
258
|
+
}
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return `${method} ${url}`;
|
|
264
|
+
}
|
|
265
|
+
async fetchApiPolicies() {
|
|
266
|
+
var _a;
|
|
267
|
+
if (this.socketManager && this.socketManager.isConnected()) {
|
|
268
|
+
const response = await this.socketManager.sendAsync({
|
|
269
|
+
type: "get_application_policies",
|
|
270
|
+
payload: null,
|
|
271
|
+
});
|
|
272
|
+
if (response.type === 'success') {
|
|
273
|
+
this.apiConfigs = ((_a = response.payload) === null || _a === void 0 ? void 0 : _a.policies) || [];
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
async useAllocationRequest(payload) {
|
|
278
|
+
if (this.socketManager && this.socketManager.isConnected()) {
|
|
279
|
+
this.socketManager.sendAsync({
|
|
280
|
+
type: "use_allocation",
|
|
281
|
+
payload
|
|
282
|
+
}).catch((error) => {
|
|
283
|
+
console.error("[UsageFlow] Error sending finalization via WebSocket:", error);
|
|
284
|
+
throw error;
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
async allocationRequest(request, payload, metadata) {
|
|
289
|
+
if (this.socketManager && this.socketManager.isConnected()) {
|
|
290
|
+
try {
|
|
291
|
+
const allocationResponse = await this.socketManager.sendAsync({
|
|
292
|
+
type: "request_for_allocation",
|
|
293
|
+
payload
|
|
294
|
+
});
|
|
295
|
+
if (allocationResponse.type === 'error') {
|
|
296
|
+
throw new Error(allocationResponse.message || allocationResponse.error);
|
|
297
|
+
}
|
|
298
|
+
if (allocationResponse.type === 'success') {
|
|
299
|
+
request.usageflow.eventId = allocationResponse.payload.allocationId;
|
|
300
|
+
request.usageflow.metadata = metadata;
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
throw new Error(allocationResponse.message || "Unknown error occurred");
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
catch (error) {
|
|
308
|
+
console.error("[UsageFlow] WebSocket allocation failed, falling back to HTTP:", error);
|
|
309
|
+
throw error;
|
|
310
|
+
// Fall through to HTTP request
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Convert routes list to a map for faster lookup
|
|
316
|
+
*/
|
|
317
|
+
createRoutesMap(routes) {
|
|
318
|
+
const routeMap = {};
|
|
319
|
+
for (const route of routes) {
|
|
320
|
+
if (!routeMap[route.method]) {
|
|
321
|
+
routeMap[route.method] = {};
|
|
322
|
+
}
|
|
323
|
+
routeMap[route.method][route.url] = true;
|
|
324
|
+
}
|
|
325
|
+
return routeMap;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Check if the route should be skipped based on whitelist
|
|
329
|
+
*/
|
|
330
|
+
shouldSkipRoute(method, url, whitelistMap) {
|
|
331
|
+
if (whitelistMap[method] &&
|
|
332
|
+
(whitelistMap[method][url] || whitelistMap[method]["*"])) {
|
|
333
|
+
return true;
|
|
334
|
+
}
|
|
335
|
+
if (whitelistMap["*"] &&
|
|
336
|
+
(whitelistMap["*"][url] || whitelistMap["*"]["*"])) {
|
|
337
|
+
return true;
|
|
338
|
+
}
|
|
339
|
+
return false;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Check if the route should be monitored
|
|
343
|
+
*/
|
|
344
|
+
shouldMonitorRoute(method, url, routesMap) {
|
|
345
|
+
if (routesMap[method] &&
|
|
346
|
+
(routesMap[method][url] || routesMap[method]["*"])) {
|
|
347
|
+
return true;
|
|
348
|
+
}
|
|
349
|
+
if (routesMap["*"] && (routesMap["*"][url] || routesMap["*"]["*"])) {
|
|
350
|
+
return true;
|
|
351
|
+
}
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Sanitize sensitive information from headers
|
|
356
|
+
*/
|
|
357
|
+
sanitizeHeaders(headers) {
|
|
358
|
+
const sanitized = {};
|
|
359
|
+
const keyRegex = /^x-.*key$/i;
|
|
360
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
361
|
+
const keyLower = key.toLowerCase();
|
|
362
|
+
if (keyLower === "authorization") {
|
|
363
|
+
if (value.startsWith("Bearer ")) {
|
|
364
|
+
sanitized[key] = "Bearer ****";
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
sanitized[key] = "****";
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
else if (keyRegex.test(key)) {
|
|
371
|
+
sanitized[key] = "****";
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
sanitized[key] = value;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
return sanitized;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Clean up resources when shutting down
|
|
381
|
+
*/
|
|
382
|
+
destroy() {
|
|
383
|
+
if (this.configUpdateInterval) {
|
|
384
|
+
clearInterval(this.configUpdateInterval);
|
|
385
|
+
this.configUpdateInterval = null;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
extractBearerToken(authHeader) {
|
|
389
|
+
if (!authHeader) {
|
|
390
|
+
return null;
|
|
391
|
+
}
|
|
392
|
+
// Check if it's a bearer token
|
|
393
|
+
const parts = authHeader.split(' ');
|
|
394
|
+
if (parts.length !== 2 || parts[0].toLowerCase() !== 'bearer') {
|
|
395
|
+
return null;
|
|
396
|
+
}
|
|
397
|
+
return parts[1];
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Get header value from headers object (handles both Record and Headers types)
|
|
401
|
+
*/
|
|
402
|
+
getHeaderValue(headers, key) {
|
|
403
|
+
// Check if it's a Headers object (from Fetch API) by checking for the 'get' method
|
|
404
|
+
if (headers && typeof headers.get === 'function') {
|
|
405
|
+
return headers.get(key) || null;
|
|
406
|
+
}
|
|
407
|
+
// Otherwise, treat it as a Record
|
|
408
|
+
const value = headers[key];
|
|
409
|
+
if (typeof value === 'string') {
|
|
410
|
+
return value;
|
|
411
|
+
}
|
|
412
|
+
if (Array.isArray(value) && value.length > 0) {
|
|
413
|
+
return value[0];
|
|
414
|
+
}
|
|
415
|
+
return null;
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Decodes a JWT token without verifying the signature
|
|
419
|
+
* @param token The JWT token to decode
|
|
420
|
+
* @returns The decoded claims or null if invalid
|
|
421
|
+
*/
|
|
422
|
+
decodeJwtUnverified(token) {
|
|
423
|
+
try {
|
|
424
|
+
// Split the token into parts
|
|
425
|
+
const parts = token.split('.');
|
|
426
|
+
if (parts.length !== 3) {
|
|
427
|
+
return null;
|
|
428
|
+
}
|
|
429
|
+
// Decode the payload (claims)
|
|
430
|
+
const payload = parts[1];
|
|
431
|
+
const decoded = Buffer.from(payload, 'base64').toString('utf-8');
|
|
432
|
+
return JSON.parse(decoded);
|
|
433
|
+
}
|
|
434
|
+
catch (error) {
|
|
435
|
+
return null;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
exports.UsageFlowAPI = UsageFlowAPI;
|
|
440
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./base"), exports);
|
|
19
|
+
__exportStar(require("./socket"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCAAuB;AACvB,2CAAyB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import WebSocket from "ws";
|
|
2
|
+
import { UsageFlowSocketMessage, UsageFlowSocketResponse } from "./types";
|
|
3
|
+
export declare class UsageFlowSocketManger {
|
|
4
|
+
private apiKey;
|
|
5
|
+
private connections;
|
|
6
|
+
private wsUrl;
|
|
7
|
+
private poolSize;
|
|
8
|
+
private currentIndex;
|
|
9
|
+
private connecting;
|
|
10
|
+
private connectionPromises;
|
|
11
|
+
constructor(apiKey: string, poolSize?: number);
|
|
12
|
+
private createConnection;
|
|
13
|
+
private reconnectConnection;
|
|
14
|
+
connect(): Promise<void>;
|
|
15
|
+
private getConnection;
|
|
16
|
+
sendAsync<T>(payload: UsageFlowSocketMessage): Promise<UsageFlowSocketResponse<T>>;
|
|
17
|
+
send(payload: UsageFlowSocketMessage): void;
|
|
18
|
+
close(): void;
|
|
19
|
+
isConnected(): boolean;
|
|
20
|
+
getWs(): WebSocket | null;
|
|
21
|
+
private _asyncSend;
|
|
22
|
+
/**
|
|
23
|
+
* Clean up resources including WebSocket connections
|
|
24
|
+
*/
|
|
25
|
+
destroy(): void;
|
|
26
|
+
}
|