@usageflow/express 0.1.10 → 0.4.0
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/plugin.d.ts +2 -2
- package/dist/plugin.js +11 -12
- package/dist/plugin.js.map +1 -1
- package/package.json +2 -2
- package/src/plugin.ts +14 -11
package/dist/plugin.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Request, Response, NextFunction } from "express";
|
|
2
|
-
import { UsageFlowAPI,
|
|
2
|
+
import { UsageFlowAPI, UsageFlowAPIConfig } from "@usageflow/core";
|
|
3
3
|
export declare class ExpressUsageFlowAPI extends UsageFlowAPI {
|
|
4
4
|
constructor(options: UsageFlowAPIConfig);
|
|
5
5
|
/**
|
|
@@ -9,5 +9,5 @@ export declare class ExpressUsageFlowAPI extends UsageFlowAPI {
|
|
|
9
9
|
*/
|
|
10
10
|
private collectRequestMetadata;
|
|
11
11
|
private executeRequestWithMetadata;
|
|
12
|
-
createMiddleware(
|
|
12
|
+
createMiddleware(): (request: Request, response: Response, next: NextFunction) => Promise<void>;
|
|
13
13
|
}
|
package/dist/plugin.js
CHANGED
|
@@ -44,7 +44,7 @@ class ExpressUsageFlowAPI extends core_1.UsageFlowAPI {
|
|
|
44
44
|
};
|
|
45
45
|
return metadata;
|
|
46
46
|
}
|
|
47
|
-
async executeRequestWithMetadata(ledgerId, metadata, request, response) {
|
|
47
|
+
async executeRequestWithMetadata(ledgerId, metadata, request, response, hasLimit) {
|
|
48
48
|
if (!this.apiKey) {
|
|
49
49
|
throw new Error("API key not initialized");
|
|
50
50
|
}
|
|
@@ -54,11 +54,9 @@ class ExpressUsageFlowAPI extends core_1.UsageFlowAPI {
|
|
|
54
54
|
metadata,
|
|
55
55
|
duration: 1000
|
|
56
56
|
};
|
|
57
|
-
await this.allocationRequest(request, payload, metadata);
|
|
57
|
+
await this.allocationRequest(request, payload, metadata, hasLimit);
|
|
58
58
|
}
|
|
59
|
-
createMiddleware(
|
|
60
|
-
const routesMap = this.createRoutesMap(routes);
|
|
61
|
-
const whitelistMap = this.createRoutesMap(whitelistRoutes);
|
|
59
|
+
createMiddleware() {
|
|
62
60
|
const self = this;
|
|
63
61
|
return async (request, response, next) => {
|
|
64
62
|
const method = request.method;
|
|
@@ -67,17 +65,20 @@ class ExpressUsageFlowAPI extends core_1.UsageFlowAPI {
|
|
|
67
65
|
request.usageflow = {
|
|
68
66
|
startTime: Date.now(),
|
|
69
67
|
};
|
|
70
|
-
if (this.shouldSkipRoute(method, url || "", whitelistMap)) {
|
|
68
|
+
if (this.shouldSkipRoute(method, url || "", this.whitelistMap)) {
|
|
71
69
|
return next();
|
|
72
70
|
}
|
|
73
|
-
if (!this.shouldMonitorRoute(method, url || "",
|
|
71
|
+
if (!this.shouldMonitorRoute(method, url || "", this.monitorMap)) {
|
|
74
72
|
return next();
|
|
75
73
|
}
|
|
76
74
|
const metadata = await this.collectRequestMetadata(request);
|
|
77
75
|
metadata.url = url;
|
|
78
|
-
|
|
76
|
+
const { ledgerId, hasLimit } = this.guessLedgerId(request);
|
|
79
77
|
try {
|
|
80
|
-
|
|
78
|
+
if (this.getBlockedEndpoints().has(ledgerId)) {
|
|
79
|
+
throw new core_1.UsageFlowError(`Endpoint is been blocked by the administrator`);
|
|
80
|
+
}
|
|
81
|
+
await this.executeRequestWithMetadata(ledgerId, metadata, request, response, hasLimit);
|
|
81
82
|
// Capture response data
|
|
82
83
|
const originalEnd = response.end;
|
|
83
84
|
response.end = function (chunk, encoding, cb) {
|
|
@@ -133,9 +134,7 @@ class ExpressUsageFlowAPI extends core_1.UsageFlowAPI {
|
|
|
133
134
|
allocationId: request.usageflow?.eventId,
|
|
134
135
|
metadata: metadata,
|
|
135
136
|
};
|
|
136
|
-
self.useAllocationRequest(payload)
|
|
137
|
-
throw err;
|
|
138
|
-
});
|
|
137
|
+
self.useAllocationRequest(payload);
|
|
139
138
|
// Send via WebSocket if connected
|
|
140
139
|
// Handle the different overloadsx
|
|
141
140
|
if (typeof chunk === "function") {
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usageflow/express",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "UsageFlow plugin for Express applications",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"access": "public"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@usageflow/core": "^0.
|
|
17
|
+
"@usageflow/core": "^0.4.0",
|
|
18
18
|
"@usageflow/logger": "^0.1.1",
|
|
19
19
|
"express": "^4.18.0",
|
|
20
20
|
"ws": "^8.16.0"
|
package/src/plugin.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Request, Response, NextFunction } from "express";
|
|
2
|
-
import { UsageFlowAPI, Route, RequestMetadata, RequestForAllocation, UsageFlowRequest, UsageFlowAPIConfig } from "@usageflow/core";
|
|
2
|
+
import { UsageFlowAPI, Route, RequestMetadata, RequestForAllocation, UsageFlowRequest, UsageFlowAPIConfig, UsageFlowError } from "@usageflow/core";
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
@@ -61,6 +61,7 @@ export class ExpressUsageFlowAPI extends UsageFlowAPI {
|
|
|
61
61
|
metadata: RequestMetadata,
|
|
62
62
|
request: Request,
|
|
63
63
|
response: Response,
|
|
64
|
+
hasLimit: boolean,
|
|
64
65
|
): Promise<void> {
|
|
65
66
|
if (!this.apiKey) {
|
|
66
67
|
throw new Error("API key not initialized");
|
|
@@ -73,12 +74,10 @@ export class ExpressUsageFlowAPI extends UsageFlowAPI {
|
|
|
73
74
|
duration: 1000
|
|
74
75
|
};
|
|
75
76
|
|
|
76
|
-
await this.allocationRequest(request as unknown as UsageFlowRequest, payload, metadata);
|
|
77
|
+
await this.allocationRequest(request as unknown as UsageFlowRequest, payload, metadata, hasLimit);
|
|
77
78
|
}
|
|
78
79
|
|
|
79
|
-
public createMiddleware(
|
|
80
|
-
const routesMap = this.createRoutesMap(routes);
|
|
81
|
-
const whitelistMap = this.createRoutesMap(whitelistRoutes);
|
|
80
|
+
public createMiddleware() {
|
|
82
81
|
const self = this;
|
|
83
82
|
|
|
84
83
|
|
|
@@ -91,24 +90,30 @@ export class ExpressUsageFlowAPI extends UsageFlowAPI {
|
|
|
91
90
|
startTime: Date.now(),
|
|
92
91
|
};
|
|
93
92
|
|
|
94
|
-
if (this.shouldSkipRoute(method, url || "", whitelistMap)) {
|
|
93
|
+
if (this.shouldSkipRoute(method, url || "", this.whitelistMap)) {
|
|
95
94
|
return next();
|
|
96
95
|
}
|
|
97
96
|
|
|
98
|
-
if (!this.shouldMonitorRoute(method, url || "",
|
|
97
|
+
if (!this.shouldMonitorRoute(method, url || "", this.monitorMap)) {
|
|
99
98
|
return next();
|
|
100
99
|
}
|
|
101
100
|
|
|
102
101
|
const metadata = await this.collectRequestMetadata(request);
|
|
103
102
|
metadata.url = url;
|
|
104
|
-
|
|
103
|
+
const { ledgerId, hasLimit } = this.guessLedgerId(request);
|
|
104
|
+
|
|
105
105
|
|
|
106
106
|
try {
|
|
107
|
+
if (this.getBlockedEndpoints().has(ledgerId)) {
|
|
108
|
+
throw new UsageFlowError(`Endpoint is been blocked by the administrator`);
|
|
109
|
+
}
|
|
110
|
+
|
|
107
111
|
await this.executeRequestWithMetadata(
|
|
108
112
|
ledgerId,
|
|
109
113
|
metadata,
|
|
110
114
|
request,
|
|
111
115
|
response,
|
|
116
|
+
hasLimit,
|
|
112
117
|
);
|
|
113
118
|
|
|
114
119
|
// Capture response data
|
|
@@ -173,9 +178,7 @@ export class ExpressUsageFlowAPI extends UsageFlowAPI {
|
|
|
173
178
|
metadata: metadata as RequestMetadata,
|
|
174
179
|
};
|
|
175
180
|
|
|
176
|
-
self.useAllocationRequest(payload)
|
|
177
|
-
throw err;
|
|
178
|
-
});
|
|
181
|
+
self.useAllocationRequest(payload)
|
|
179
182
|
// Send via WebSocket if connected
|
|
180
183
|
|
|
181
184
|
|