@usageflow/core 0.1.4 → 0.1.5
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/dist/base.d.ts +16 -6
- package/dist/base.js +252 -29
- package/dist/base.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/socket.d.ts +21 -0
- package/dist/socket.js +216 -0
- package/dist/socket.js.map +1 -0
- package/dist/types.d.ts +75 -0
- package/dist/types.js.map +1 -1
- package/package.json +9 -3
- package/src/base.ts +284 -30
- package/src/index.ts +2 -1
- package/src/socket.ts +251 -0
- package/src/types.ts +84 -1
- package/tsconfig.tsbuildinfo +1 -1
package/dist/base.d.ts
CHANGED
|
@@ -1,23 +1,29 @@
|
|
|
1
|
-
import { Route, UsageFlowConfig, RoutesMap, Headers } from "./types";
|
|
1
|
+
import { Route, UsageFlowConfig, RoutesMap, Headers, RequestForAllocation, RequestMetadata, UsageFlowRequest } from "./types";
|
|
2
|
+
import { UsageFlowSocketManger } from "./socket";
|
|
2
3
|
export declare abstract class UsageFlowAPI {
|
|
3
4
|
protected apiKey: string | null;
|
|
4
5
|
protected usageflowUrl: string;
|
|
5
|
-
protected
|
|
6
|
+
protected webServer: 'express' | 'fastify' | 'nestjs';
|
|
7
|
+
protected apiConfigs: UsageFlowConfig[];
|
|
6
8
|
private configUpdateInterval;
|
|
9
|
+
socketManager: UsageFlowSocketManger | null;
|
|
10
|
+
private applicationId;
|
|
7
11
|
/**
|
|
8
12
|
* Initialize the UsageFlow API with credentials
|
|
9
13
|
*/
|
|
10
14
|
init(apiKey: string, usageflowUrl?: string): UsageFlowAPI;
|
|
15
|
+
setWebServer(webServer: 'express' | 'fastify' | 'nestjs'): void;
|
|
11
16
|
getApiKey(): string | null;
|
|
12
17
|
getUsageflowUrl(): string;
|
|
13
18
|
/**
|
|
14
19
|
* Start background config update process
|
|
15
20
|
*/
|
|
16
21
|
private startConfigUpdater;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
protected getRoutePattern(request: UsageFlowRequest): string;
|
|
23
|
+
guessLedgerId(request: UsageFlowRequest): string;
|
|
24
|
+
private fetchApiPolicies;
|
|
25
|
+
useAllocationRequest(payload: RequestForAllocation): Promise<void>;
|
|
26
|
+
allocationRequest(request: UsageFlowRequest, payload: RequestForAllocation, metadata: RequestMetadata): Promise<void>;
|
|
21
27
|
/**
|
|
22
28
|
* Convert routes list to a map for faster lookup
|
|
23
29
|
*/
|
|
@@ -39,6 +45,10 @@ export declare abstract class UsageFlowAPI {
|
|
|
39
45
|
*/
|
|
40
46
|
destroy(): void;
|
|
41
47
|
extractBearerToken(authHeader?: string): string | null;
|
|
48
|
+
/**
|
|
49
|
+
* Get header value from headers object (handles both Record and Headers types)
|
|
50
|
+
*/
|
|
51
|
+
private getHeaderValue;
|
|
42
52
|
/**
|
|
43
53
|
* Decodes a JWT token without verifying the signature
|
|
44
54
|
* @param token The JWT token to decode
|
package/dist/base.js
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.UsageFlowAPI = void 0;
|
|
7
|
-
const
|
|
8
|
-
const types_1 = require("./types");
|
|
4
|
+
const socket_1 = require("./socket");
|
|
9
5
|
class UsageFlowAPI {
|
|
10
6
|
constructor() {
|
|
11
7
|
this.apiKey = null;
|
|
12
8
|
this.usageflowUrl = "https://api.usageflow.io";
|
|
13
|
-
this.
|
|
9
|
+
this.webServer = 'express';
|
|
10
|
+
this.apiConfigs = [];
|
|
14
11
|
this.configUpdateInterval = null;
|
|
12
|
+
this.socketManager = null;
|
|
13
|
+
this.applicationId = false;
|
|
15
14
|
}
|
|
16
15
|
/**
|
|
17
16
|
* Initialize the UsageFlow API with credentials
|
|
@@ -19,9 +18,19 @@ class UsageFlowAPI {
|
|
|
19
18
|
init(apiKey, usageflowUrl = "https://api.usageflow.io") {
|
|
20
19
|
this.apiKey = apiKey;
|
|
21
20
|
this.usageflowUrl = usageflowUrl;
|
|
22
|
-
this.startConfigUpdater();
|
|
21
|
+
// this.startConfigUpdater();
|
|
22
|
+
this.socketManager = new socket_1.UsageFlowSocketManger(apiKey);
|
|
23
|
+
// Connect the socket manager
|
|
24
|
+
this.socketManager.connect().catch((error) => {
|
|
25
|
+
console.error("[UsageFlow] Failed to establish WebSocket connection:", error);
|
|
26
|
+
}).then(() => {
|
|
27
|
+
this.startConfigUpdater();
|
|
28
|
+
});
|
|
23
29
|
return this;
|
|
24
30
|
}
|
|
31
|
+
setWebServer(webServer) {
|
|
32
|
+
this.webServer = webServer;
|
|
33
|
+
}
|
|
25
34
|
getApiKey() {
|
|
26
35
|
return this.apiKey;
|
|
27
36
|
}
|
|
@@ -36,35 +45,231 @@ class UsageFlowAPI {
|
|
|
36
45
|
clearInterval(this.configUpdateInterval);
|
|
37
46
|
}
|
|
38
47
|
this.configUpdateInterval = setInterval(async () => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
48
|
+
await this.fetchApiPolicies();
|
|
49
|
+
}, 60000);
|
|
50
|
+
// this.fetchApiConfig().catch(console.error);
|
|
51
|
+
}
|
|
52
|
+
getRoutePattern(request) {
|
|
53
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
54
|
+
if (this.webServer === 'fastify') {
|
|
55
|
+
return ((_a = request === null || request === void 0 ? void 0 : request.routeOptions) === null || _a === void 0 ? void 0 : _a.url) || request.url || '';
|
|
56
|
+
}
|
|
57
|
+
const routePattern = ((_b = request.route) === null || _b === void 0 ? void 0 : _b.path) || ((_d = (_c = request.app._router.stack.find((route) => {
|
|
58
|
+
// a => a.path == request.url
|
|
59
|
+
if (!route.route)
|
|
60
|
+
return false;
|
|
61
|
+
if (route.path) {
|
|
62
|
+
return route.path == request.url;
|
|
63
|
+
}
|
|
64
|
+
if (route.regexp) {
|
|
65
|
+
return route.regexp.test(request.url);
|
|
66
|
+
}
|
|
67
|
+
})) === null || _c === void 0 ? void 0 : _c.route) === null || _d === void 0 ? void 0 : _d.path);
|
|
68
|
+
if (routePattern) {
|
|
69
|
+
return routePattern;
|
|
70
|
+
}
|
|
71
|
+
// Method 1: Use request.route.path (available after route matching)
|
|
72
|
+
if ((_e = request.route) === null || _e === void 0 ? void 0 : _e.path) {
|
|
73
|
+
const baseUrl = request.baseUrl || "";
|
|
74
|
+
const routePath = request.route.path;
|
|
75
|
+
// Combine baseUrl and routePath to get full pattern
|
|
76
|
+
const fullPath = baseUrl + routePath;
|
|
77
|
+
return fullPath || "/";
|
|
78
|
+
}
|
|
79
|
+
// Method 2: Try to find route from router stack
|
|
80
|
+
try {
|
|
81
|
+
const app = request.app;
|
|
82
|
+
const router = app._router;
|
|
83
|
+
if (router && router.stack) {
|
|
84
|
+
const method = request.method.toLowerCase();
|
|
85
|
+
const path = request.path || ((_f = request.url) === null || _f === void 0 ? void 0 : _f.split("?")[0]) || "";
|
|
86
|
+
// Search through router stack for matching route
|
|
87
|
+
for (const layer of router.stack) {
|
|
88
|
+
if (layer.route) {
|
|
89
|
+
const route = layer.route;
|
|
90
|
+
const routePath = route.path;
|
|
91
|
+
const routeMethods = Object.keys(route.methods).map(m => m.toLowerCase());
|
|
92
|
+
// Check if method matches and path pattern matches
|
|
93
|
+
if (routeMethods.includes(method) || routeMethods.includes("*")) {
|
|
94
|
+
// Try to match the pattern by checking if params match
|
|
95
|
+
const pattern = (request.baseUrl || "") + routePath;
|
|
96
|
+
// Simple check: if we have params and the route has params, it might match
|
|
97
|
+
if (request.params && Object.keys(request.params).length > 0) {
|
|
98
|
+
// Check if route path contains the param names
|
|
99
|
+
const paramNames = Object.keys(request.params);
|
|
100
|
+
const routeHasParams = paramNames.some(param => routePath.includes(`:${param}`));
|
|
101
|
+
if (routeHasParams) {
|
|
102
|
+
return pattern;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if (!routePath.includes(":")) {
|
|
106
|
+
// If no params in request and route has no params, check exact match
|
|
107
|
+
if (path === pattern || path === routePath) {
|
|
108
|
+
return pattern;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else if (layer.name === "router" && layer.handle && layer.handle.stack) {
|
|
114
|
+
// Handle router middleware (nested routers)
|
|
115
|
+
const mountPath = layer.regexp.source
|
|
116
|
+
.replace("\\/?", "")
|
|
117
|
+
.replace("(?=\\/|$)", "")
|
|
118
|
+
.replace(/\\\//g, "/")
|
|
119
|
+
.replace(/\^/g, "")
|
|
120
|
+
.replace(/\$/g, "")
|
|
121
|
+
.replace(/\\/g, "");
|
|
122
|
+
for (const subLayer of layer.handle.stack) {
|
|
123
|
+
if (subLayer.route) {
|
|
124
|
+
const route = subLayer.route;
|
|
125
|
+
const routePath = route.path;
|
|
126
|
+
const routeMethods = Object.keys(route.methods).map(m => m.toLowerCase());
|
|
127
|
+
if (routeMethods.includes(method) || routeMethods.includes("*")) {
|
|
128
|
+
const fullPath = mountPath + routePath;
|
|
129
|
+
// Check if this route matches by examining params
|
|
130
|
+
if (request.params && Object.keys(request.params).length > 0) {
|
|
131
|
+
const paramNames = Object.keys(request.params);
|
|
132
|
+
const routeHasParams = paramNames.some(param => routePath.includes(`:${param}`));
|
|
133
|
+
if (routeHasParams) {
|
|
134
|
+
return fullPath;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else if (!routePath.includes(":")) {
|
|
138
|
+
const currentPath = request.path || ((_g = request.url) === null || _g === void 0 ? void 0 : _g.split("?")[0]) || "";
|
|
139
|
+
if (currentPath === fullPath || currentPath === routePath) {
|
|
140
|
+
return fullPath;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
43
147
|
}
|
|
44
148
|
}
|
|
45
|
-
|
|
46
|
-
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
// Silently fail and try next method
|
|
152
|
+
console.debug("[UsageFlow] Could not extract route from router stack:", error);
|
|
153
|
+
}
|
|
154
|
+
// Method 3: Reconstruct pattern from params and path
|
|
155
|
+
if (request.params && Object.keys(request.params).length > 0) {
|
|
156
|
+
let path = request.path || ((_h = request.url) === null || _h === void 0 ? void 0 : _h.split("?")[0]) || "/";
|
|
157
|
+
const baseUrl = request.baseUrl || "";
|
|
158
|
+
// Split path into segments and replace matching segments with param names
|
|
159
|
+
const pathSegments = path.split("/");
|
|
160
|
+
const paramEntries = Object.entries(request.params);
|
|
161
|
+
// Replace segments that match param values with :paramName
|
|
162
|
+
for (let i = 0; i < pathSegments.length; i++) {
|
|
163
|
+
for (const [paramName, paramValue] of paramEntries) {
|
|
164
|
+
if (pathSegments[i] === paramValue) {
|
|
165
|
+
pathSegments[i] = `:${paramName}`;
|
|
166
|
+
break; // Only replace once per segment
|
|
167
|
+
}
|
|
168
|
+
}
|
|
47
169
|
}
|
|
48
|
-
|
|
49
|
-
|
|
170
|
+
const pattern = baseUrl + pathSegments.join("/");
|
|
171
|
+
return pattern;
|
|
172
|
+
}
|
|
173
|
+
// Fallback: return baseUrl + path or just path
|
|
174
|
+
const baseUrl = request.baseUrl || "";
|
|
175
|
+
const path = request.path || ((_j = request.url) === null || _j === void 0 ? void 0 : _j.split("?")[0]) || "/";
|
|
176
|
+
return baseUrl + path || "/";
|
|
50
177
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
178
|
+
guessLedgerId(request) {
|
|
179
|
+
var _a, _b, _c;
|
|
180
|
+
const method = request.method;
|
|
181
|
+
const url = this.getRoutePattern(request);
|
|
182
|
+
const configs = this.apiConfigs;
|
|
183
|
+
if (!configs.length) {
|
|
184
|
+
return `${method} ${url}`;
|
|
57
185
|
}
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
186
|
+
for (const config of configs) {
|
|
187
|
+
const fieldName = config.identityFieldName;
|
|
188
|
+
const location = config.identityFieldLocation;
|
|
189
|
+
switch (location) {
|
|
190
|
+
case "path_params":
|
|
191
|
+
if ((_a = request.params) === null || _a === void 0 ? void 0 : _a[fieldName]) {
|
|
192
|
+
return `${method} ${url} ${request.params[fieldName]}`;
|
|
193
|
+
}
|
|
194
|
+
break;
|
|
195
|
+
case "query_params":
|
|
196
|
+
if ((_b = request.query) === null || _b === void 0 ? void 0 : _b[fieldName]) {
|
|
197
|
+
return `${method} ${url} ${request.query[fieldName]}`;
|
|
198
|
+
}
|
|
199
|
+
break;
|
|
200
|
+
case "body":
|
|
201
|
+
if ((_c = request.body) === null || _c === void 0 ? void 0 : _c[fieldName]) {
|
|
202
|
+
return `${method} ${url} ${request.body[fieldName]}`;
|
|
203
|
+
}
|
|
204
|
+
break;
|
|
205
|
+
case "bearer_token":
|
|
206
|
+
const authHeader = this.getHeaderValue(request.headers, 'authorization');
|
|
207
|
+
const token = this.extractBearerToken(authHeader || undefined);
|
|
208
|
+
if (token) {
|
|
209
|
+
const claims = this.decodeJwtUnverified(token);
|
|
210
|
+
if (claims === null || claims === void 0 ? void 0 : claims[fieldName]) {
|
|
211
|
+
return `${method} ${url} ${claims[fieldName]}`;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
break;
|
|
215
|
+
case "headers": {
|
|
216
|
+
const headerValue = this.getHeaderValue(request.headers, fieldName);
|
|
217
|
+
if (headerValue) {
|
|
218
|
+
return `${method} ${url} ${headerValue}`;
|
|
219
|
+
}
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return `${method} ${url}`;
|
|
225
|
+
}
|
|
226
|
+
async fetchApiPolicies() {
|
|
227
|
+
var _a;
|
|
228
|
+
if (this.socketManager && this.socketManager.isConnected()) {
|
|
229
|
+
const response = await this.socketManager.sendAsync({
|
|
230
|
+
type: "get_application_policies",
|
|
231
|
+
payload: null,
|
|
62
232
|
});
|
|
63
|
-
|
|
233
|
+
if (response.type === 'success') {
|
|
234
|
+
this.apiConfigs = ((_a = response.payload) === null || _a === void 0 ? void 0 : _a.policies) || [];
|
|
235
|
+
}
|
|
64
236
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
237
|
+
}
|
|
238
|
+
async useAllocationRequest(payload) {
|
|
239
|
+
if (this.socketManager && this.socketManager.isConnected()) {
|
|
240
|
+
this.socketManager.sendAsync({
|
|
241
|
+
type: "use_allocation",
|
|
242
|
+
payload
|
|
243
|
+
}).catch((error) => {
|
|
244
|
+
console.error("[UsageFlow] Error sending finalization via WebSocket:", error);
|
|
245
|
+
throw error;
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
async allocationRequest(request, payload, metadata) {
|
|
250
|
+
if (this.socketManager && this.socketManager.isConnected()) {
|
|
251
|
+
try {
|
|
252
|
+
const allocationResponse = await this.socketManager.sendAsync({
|
|
253
|
+
type: "request_for_allocation",
|
|
254
|
+
payload
|
|
255
|
+
});
|
|
256
|
+
if (allocationResponse.type === 'error') {
|
|
257
|
+
throw new Error(allocationResponse.message || allocationResponse.error);
|
|
258
|
+
}
|
|
259
|
+
if (allocationResponse.type === 'success') {
|
|
260
|
+
request.usageflow.eventId = allocationResponse.payload.allocationId;
|
|
261
|
+
request.usageflow.metadata = metadata;
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
throw new Error(allocationResponse.message || "Unknown error occurred");
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
console.error("[UsageFlow] WebSocket allocation failed, falling back to HTTP:", error);
|
|
270
|
+
throw error;
|
|
271
|
+
// Fall through to HTTP request
|
|
272
|
+
}
|
|
68
273
|
}
|
|
69
274
|
}
|
|
70
275
|
/**
|
|
@@ -152,6 +357,24 @@ class UsageFlowAPI {
|
|
|
152
357
|
}
|
|
153
358
|
return parts[1];
|
|
154
359
|
}
|
|
360
|
+
/**
|
|
361
|
+
* Get header value from headers object (handles both Record and Headers types)
|
|
362
|
+
*/
|
|
363
|
+
getHeaderValue(headers, key) {
|
|
364
|
+
// Check if it's a Headers object (from Fetch API) by checking for the 'get' method
|
|
365
|
+
if (headers && typeof headers.get === 'function') {
|
|
366
|
+
return headers.get(key) || null;
|
|
367
|
+
}
|
|
368
|
+
// Otherwise, treat it as a Record
|
|
369
|
+
const value = headers[key];
|
|
370
|
+
if (typeof value === 'string') {
|
|
371
|
+
return value;
|
|
372
|
+
}
|
|
373
|
+
if (Array.isArray(value) && value.length > 0) {
|
|
374
|
+
return value[0];
|
|
375
|
+
}
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
155
378
|
/**
|
|
156
379
|
* Decodes a JWT token without verifying the signature
|
|
157
380
|
* @param token The JWT token to decode
|
package/dist/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./types"), exports);
|
|
18
18
|
__exportStar(require("./base"), exports);
|
|
19
|
+
__exportStar(require("./socket"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCAAuB;AACvB,2CAAyB"}
|
package/dist/socket.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import WebSocket from "ws";
|
|
2
|
+
import { UsageFlowSocketMessage, UsageFlowSocketResponse } from "./types";
|
|
3
|
+
export declare class UsageFlowSocketManger {
|
|
4
|
+
private apiKey;
|
|
5
|
+
private ws;
|
|
6
|
+
private wsUrl;
|
|
7
|
+
private wsConnected;
|
|
8
|
+
constructor(apiKey: string);
|
|
9
|
+
establishWebSocketConnection(): Promise<void>;
|
|
10
|
+
connect(): Promise<void>;
|
|
11
|
+
sendAsync<T>(payload: UsageFlowSocketMessage): Promise<UsageFlowSocketResponse<T>>;
|
|
12
|
+
send(payload: UsageFlowSocketMessage): void;
|
|
13
|
+
close(): void;
|
|
14
|
+
isConnected(): boolean;
|
|
15
|
+
getWs(): WebSocket | null;
|
|
16
|
+
private _asyncSend;
|
|
17
|
+
/**
|
|
18
|
+
* Clean up resources including WebSocket connection
|
|
19
|
+
*/
|
|
20
|
+
destroy(): void;
|
|
21
|
+
}
|
package/dist/socket.js
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.UsageFlowSocketManger = void 0;
|
|
7
|
+
const ws_1 = __importDefault(require("ws"));
|
|
8
|
+
class UsageFlowSocketManger {
|
|
9
|
+
constructor(apiKey) {
|
|
10
|
+
this.apiKey = apiKey;
|
|
11
|
+
this.ws = null;
|
|
12
|
+
this.wsUrl = "wss://api.usageflow.io/ws";
|
|
13
|
+
this.wsConnected = false;
|
|
14
|
+
this.apiKey = apiKey;
|
|
15
|
+
// Connection is explicit - call connect() when ready
|
|
16
|
+
// Do NOT auto-connect in constructor to avoid immediate execution
|
|
17
|
+
}
|
|
18
|
+
async establishWebSocketConnection() {
|
|
19
|
+
if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
|
|
20
|
+
this.wsConnected = true;
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (!this.apiKey) {
|
|
24
|
+
console.warn("[UsageFlow] Cannot establish WebSocket connection: API key not initialized");
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
try {
|
|
29
|
+
if (!this.apiKey) {
|
|
30
|
+
reject(new Error("API key not available"));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const headers = {
|
|
34
|
+
"x-usage-key": this.apiKey,
|
|
35
|
+
};
|
|
36
|
+
this.ws = new ws_1.default(this.wsUrl, {
|
|
37
|
+
headers,
|
|
38
|
+
family: 4 // This forces IPv4
|
|
39
|
+
});
|
|
40
|
+
this.ws.on("open", () => {
|
|
41
|
+
this.wsConnected = true;
|
|
42
|
+
resolve();
|
|
43
|
+
});
|
|
44
|
+
this.ws.on("error", (error) => {
|
|
45
|
+
console.error("[UsageFlow] WebSocket error:", error);
|
|
46
|
+
this.wsConnected = false;
|
|
47
|
+
reject(error);
|
|
48
|
+
});
|
|
49
|
+
this.ws.on("close", () => {
|
|
50
|
+
this.wsConnected = false;
|
|
51
|
+
// Attempt to reconnect after a delay
|
|
52
|
+
setTimeout(() => {
|
|
53
|
+
if (this.apiKey) {
|
|
54
|
+
this.establishWebSocketConnection().catch(console.error);
|
|
55
|
+
}
|
|
56
|
+
}, 5000);
|
|
57
|
+
});
|
|
58
|
+
this.ws.on("message", (data) => {
|
|
59
|
+
// Message handling done in _asyncSend
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error("[UsageFlow] Error creating WebSocket connection:", error);
|
|
64
|
+
this.wsConnected = false;
|
|
65
|
+
reject(error);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
async connect() {
|
|
70
|
+
if (!this.apiKey) {
|
|
71
|
+
console.warn("[UsageFlow] Cannot establish WebSocket connection: API key not initialized");
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
return new Promise((resolve, reject) => {
|
|
75
|
+
try {
|
|
76
|
+
const headers = {
|
|
77
|
+
"x-usage-key": this.apiKey,
|
|
78
|
+
};
|
|
79
|
+
this.ws = new ws_1.default(this.wsUrl, {
|
|
80
|
+
headers,
|
|
81
|
+
family: 4 // This forces IPv4
|
|
82
|
+
});
|
|
83
|
+
this.ws.on("open", () => {
|
|
84
|
+
console.debug("[UsageFlow] WebSocket connection established");
|
|
85
|
+
this.wsConnected = true;
|
|
86
|
+
resolve();
|
|
87
|
+
});
|
|
88
|
+
this.ws.on("error", (error) => {
|
|
89
|
+
console.debug("[UsageFlow] WebSocket error:", error);
|
|
90
|
+
this.wsConnected = false;
|
|
91
|
+
reject(error);
|
|
92
|
+
});
|
|
93
|
+
this.ws.on("close", () => {
|
|
94
|
+
console.debug("[UsageFlow] WebSocket connection closed");
|
|
95
|
+
this.wsConnected = false;
|
|
96
|
+
// Attempt to reconnect after a delay
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
if (this.apiKey) {
|
|
99
|
+
this.connect().catch(console.error);
|
|
100
|
+
}
|
|
101
|
+
}, 5000);
|
|
102
|
+
});
|
|
103
|
+
this.ws.on("message", (data) => {
|
|
104
|
+
console.debug("[UsageFlow] WebSocket message received:", data.toString());
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
console.debug("[UsageFlow] Error creating WebSocket connection:", error);
|
|
109
|
+
this.wsConnected = false;
|
|
110
|
+
reject(error);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
async sendAsync(payload) {
|
|
115
|
+
if (!this.ws || !this.wsConnected) {
|
|
116
|
+
throw new Error("WebSocket not connected");
|
|
117
|
+
}
|
|
118
|
+
const socketResponse = await this._asyncSend(payload);
|
|
119
|
+
return socketResponse;
|
|
120
|
+
}
|
|
121
|
+
send(payload) {
|
|
122
|
+
if (!this.ws || !this.wsConnected) {
|
|
123
|
+
throw new Error("WebSocket not connected");
|
|
124
|
+
}
|
|
125
|
+
this.ws.send(JSON.stringify(payload));
|
|
126
|
+
}
|
|
127
|
+
close() {
|
|
128
|
+
if (this.ws) {
|
|
129
|
+
this.ws.close();
|
|
130
|
+
}
|
|
131
|
+
this.ws = null;
|
|
132
|
+
this.wsConnected = false;
|
|
133
|
+
}
|
|
134
|
+
isConnected() {
|
|
135
|
+
return this.wsConnected;
|
|
136
|
+
}
|
|
137
|
+
getWs() {
|
|
138
|
+
return this.ws;
|
|
139
|
+
}
|
|
140
|
+
async _asyncSend(payload) {
|
|
141
|
+
return new Promise((resolve, reject) => {
|
|
142
|
+
if (!this.ws || !this.wsConnected) {
|
|
143
|
+
reject(new Error("WebSocket not connected"));
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const id = Math.random().toString(36).slice(2) + Date.now().toString(36);
|
|
147
|
+
const message = { id, ...payload };
|
|
148
|
+
let isResolved = false;
|
|
149
|
+
// Set up timeout to prevent handlers from accumulating forever
|
|
150
|
+
const timeout = setTimeout(() => {
|
|
151
|
+
if (!isResolved) {
|
|
152
|
+
isResolved = true;
|
|
153
|
+
if (this.ws) {
|
|
154
|
+
this.ws.off('message', handleMessage);
|
|
155
|
+
}
|
|
156
|
+
reject(new Error(`WebSocket request timeout for id: ${id}`));
|
|
157
|
+
}
|
|
158
|
+
}, 30000); // 30 second timeout
|
|
159
|
+
// Wrap resolve to clear timeout
|
|
160
|
+
const wrappedResolve = (value) => {
|
|
161
|
+
if (!isResolved) {
|
|
162
|
+
clearTimeout(timeout);
|
|
163
|
+
isResolved = true;
|
|
164
|
+
resolve(value);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
const handleMessage = (data) => {
|
|
168
|
+
if (isResolved)
|
|
169
|
+
return; // Prevent multiple processing
|
|
170
|
+
try {
|
|
171
|
+
const response = JSON.parse(data.toString());
|
|
172
|
+
// Use strict equality and check if this response matches our request
|
|
173
|
+
if (response.id === id || response.replyTo === id) {
|
|
174
|
+
console.debug("[UsageFlow] WebSocket message received for id:", id, response);
|
|
175
|
+
// Remove handler immediately before resolving
|
|
176
|
+
if (this.ws) {
|
|
177
|
+
this.ws.off('message', handleMessage);
|
|
178
|
+
}
|
|
179
|
+
wrappedResolve(response);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
// Ignore parse errors for messages that don't match
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
this.ws.on('message', handleMessage);
|
|
187
|
+
this.ws.send(JSON.stringify(message), (err) => {
|
|
188
|
+
if (err) {
|
|
189
|
+
clearTimeout(timeout);
|
|
190
|
+
if (!isResolved) {
|
|
191
|
+
isResolved = true;
|
|
192
|
+
if (this.ws) {
|
|
193
|
+
this.ws.off('message', handleMessage);
|
|
194
|
+
}
|
|
195
|
+
reject(err);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Clean up resources including WebSocket connection
|
|
203
|
+
*/
|
|
204
|
+
destroy() {
|
|
205
|
+
if (this.ws) {
|
|
206
|
+
this.ws.removeAllListeners();
|
|
207
|
+
if (this.ws.readyState === ws_1.default.OPEN || this.ws.readyState === ws_1.default.CONNECTING) {
|
|
208
|
+
this.ws.close();
|
|
209
|
+
}
|
|
210
|
+
this.ws = null;
|
|
211
|
+
this.wsConnected = false;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.UsageFlowSocketManger = UsageFlowSocketManger;
|
|
216
|
+
//# sourceMappingURL=socket.js.map
|