@usageflow/core 0.2.5 → 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 +4 -4
- package/dist/base.js +75 -45
- package/dist/base.js.map +1 -1
- package/jest.config.js +14 -0
- package/package.json +6 -7
- package/src/base.ts +139 -71
- 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/README.md
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Core functionality for UsageFlow API tracking. This package provides the base implementation for tracking API usage across different Node.js frameworks.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/@usageflow/core)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
7
|
|
|
7
8
|
## Installation
|
|
8
9
|
|
|
@@ -10,46 +11,226 @@ Core functionality for UsageFlow API tracking. This package provides the base im
|
|
|
10
11
|
npm install @usageflow/core
|
|
11
12
|
```
|
|
12
13
|
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
`@usageflow/core` is the foundational package that provides core functionality for UsageFlow integrations. It includes:
|
|
17
|
+
|
|
18
|
+
- Base `UsageFlowAPI` class for framework-agnostic usage tracking
|
|
19
|
+
- WebSocket connection management with connection pooling
|
|
20
|
+
- Route pattern matching and ledger ID generation
|
|
21
|
+
- Request metadata collection and sanitization
|
|
22
|
+
- Configuration management and policy fetching
|
|
23
|
+
|
|
13
24
|
## Usage
|
|
14
25
|
|
|
15
|
-
This
|
|
26
|
+
This package is typically used indirectly through framework-specific implementations:
|
|
16
27
|
|
|
17
|
-
- [@usageflow/express](
|
|
18
|
-
- [@usageflow/fastify](
|
|
19
|
-
- [@usageflow/nestjs](
|
|
28
|
+
- [@usageflow/express](../express) for Express.js
|
|
29
|
+
- [@usageflow/fastify](../fastify) for Fastify
|
|
30
|
+
- [@usageflow/nestjs](../nestjs) for NestJS
|
|
31
|
+
|
|
32
|
+
If you need to extend UsageFlow for a different framework, you can extend the `UsageFlowAPI` class:
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import { UsageFlowAPI, UsageFlowAPIConfig } from '@usageflow/core';
|
|
20
36
|
|
|
21
|
-
|
|
37
|
+
class CustomFrameworkUsageFlowAPI extends UsageFlowAPI {
|
|
38
|
+
constructor(config: UsageFlowAPIConfig) {
|
|
39
|
+
super(config);
|
|
40
|
+
this.setWebServer('custom');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Implement framework-specific methods
|
|
44
|
+
}
|
|
45
|
+
```
|
|
22
46
|
|
|
23
47
|
## API Reference
|
|
24
48
|
|
|
49
|
+
### UsageFlowAPIConfig
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
interface UsageFlowAPIConfig {
|
|
53
|
+
apiKey: string; // Your UsageFlow API key
|
|
54
|
+
poolSize?: number; // Number of WebSocket connections (default: 5)
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### UsageFlowAPI
|
|
59
|
+
|
|
60
|
+
Base class for all UsageFlow implementations.
|
|
61
|
+
|
|
62
|
+
#### Constructor
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
constructor(config: UsageFlowAPIConfig)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
#### Methods
|
|
69
|
+
|
|
70
|
+
##### `setWebServer(webServer: 'express' | 'fastify' | 'nestjs'): void`
|
|
71
|
+
|
|
72
|
+
Sets the web server type for route pattern extraction.
|
|
73
|
+
|
|
74
|
+
##### `getApiKey(): string | null`
|
|
75
|
+
|
|
76
|
+
Returns the configured API key.
|
|
77
|
+
|
|
78
|
+
##### `getUsageflowUrl(): string`
|
|
79
|
+
|
|
80
|
+
Returns the UsageFlow API URL.
|
|
81
|
+
|
|
82
|
+
##### `getRoutePattern(request: UsageFlowRequest): string`
|
|
83
|
+
|
|
84
|
+
Extracts the route pattern from a request object. Supports Express, Fastify, and NestJS.
|
|
85
|
+
|
|
86
|
+
##### `guessLedgerId(request: UsageFlowRequest, overrideUrl?: string): string`
|
|
87
|
+
|
|
88
|
+
Generates a ledger ID for tracking based on the request and configured policies.
|
|
89
|
+
|
|
90
|
+
##### `createRoutesMap(routes: Route[]): RoutesMap`
|
|
91
|
+
|
|
92
|
+
Converts an array of routes into a map for efficient lookup.
|
|
93
|
+
|
|
94
|
+
##### `shouldSkipRoute(method: string, url: string, whitelistMap: RoutesMap): boolean`
|
|
95
|
+
|
|
96
|
+
Checks if a route should be skipped based on the whitelist.
|
|
97
|
+
|
|
98
|
+
##### `shouldMonitorRoute(method: string, url: string, routesMap: RoutesMap): boolean`
|
|
99
|
+
|
|
100
|
+
Checks if a route should be monitored based on the routes map.
|
|
101
|
+
|
|
102
|
+
##### `sanitizeHeaders(headers: Headers): Headers`
|
|
103
|
+
|
|
104
|
+
Sanitizes sensitive information from headers (authorization tokens, API keys, etc.).
|
|
105
|
+
|
|
106
|
+
##### `extractBearerToken(authHeader?: string): string | null`
|
|
107
|
+
|
|
108
|
+
Extracts the bearer token from an Authorization header.
|
|
109
|
+
|
|
110
|
+
##### `decodeJwtUnverified(token: string): Record<string, any> | null`
|
|
111
|
+
|
|
112
|
+
Decodes a JWT token without verifying the signature.
|
|
113
|
+
|
|
114
|
+
##### `allocationRequest(request: UsageFlowRequest, payload: RequestForAllocation, metadata: RequestMetadata): Promise<void>`
|
|
115
|
+
|
|
116
|
+
Sends an allocation request via WebSocket.
|
|
117
|
+
|
|
118
|
+
##### `useAllocationRequest(payload: RequestForAllocation): Promise<void>`
|
|
119
|
+
|
|
120
|
+
Finalizes an allocation request.
|
|
121
|
+
|
|
122
|
+
##### `destroy(): void`
|
|
123
|
+
|
|
124
|
+
Cleans up resources including intervals and WebSocket connections.
|
|
125
|
+
|
|
126
|
+
### UsageFlowSocketManager
|
|
127
|
+
|
|
128
|
+
Manages WebSocket connections with connection pooling.
|
|
129
|
+
|
|
130
|
+
#### Constructor
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
constructor(apiKey: string, poolSize?: number)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
#### Methods
|
|
137
|
+
|
|
138
|
+
##### `connect(): Promise<void>`
|
|
139
|
+
|
|
140
|
+
Establishes WebSocket connections in the pool.
|
|
141
|
+
|
|
142
|
+
##### `sendAsync<T>(payload: UsageFlowSocketMessage): Promise<UsageFlowSocketResponse<T>>`
|
|
143
|
+
|
|
144
|
+
Sends a message and waits for a response.
|
|
145
|
+
|
|
146
|
+
##### `send(payload: UsageFlowSocketMessage): void`
|
|
147
|
+
|
|
148
|
+
Sends a message without waiting for a response.
|
|
149
|
+
|
|
150
|
+
##### `isConnected(): boolean`
|
|
151
|
+
|
|
152
|
+
Checks if at least one WebSocket connection is active.
|
|
153
|
+
|
|
154
|
+
##### `close(): void`
|
|
155
|
+
|
|
156
|
+
Closes all WebSocket connections.
|
|
157
|
+
|
|
158
|
+
##### `destroy(): void`
|
|
159
|
+
|
|
160
|
+
Cleans up all resources.
|
|
161
|
+
|
|
162
|
+
## Types
|
|
163
|
+
|
|
164
|
+
### Route
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
interface Route {
|
|
168
|
+
method: string; // HTTP method or '*' for all methods
|
|
169
|
+
url: string; // URL pattern or '*' for all URLs
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### RequestMetadata
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
interface RequestMetadata {
|
|
177
|
+
method: string;
|
|
178
|
+
url: string;
|
|
179
|
+
rawUrl: string;
|
|
180
|
+
clientIP: string;
|
|
181
|
+
userAgent?: string;
|
|
182
|
+
timestamp: string;
|
|
183
|
+
headers: Record<string, string>;
|
|
184
|
+
queryParams: Record<string, any> | null;
|
|
185
|
+
pathParams: Record<string, any> | null;
|
|
186
|
+
body?: any;
|
|
187
|
+
requestDuration?: number;
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### UsageFlowConfig
|
|
192
|
+
|
|
25
193
|
```typescript
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
url: string,
|
|
37
|
-
whitelistMap: Map<string, Set<string>>,
|
|
38
|
-
): boolean;
|
|
39
|
-
sanitizeHeaders(headers: Record<string, string>): Record<string, string>;
|
|
194
|
+
interface UsageFlowConfig {
|
|
195
|
+
url: string;
|
|
196
|
+
method: string;
|
|
197
|
+
identityFieldName?: string;
|
|
198
|
+
identityFieldLocation?:
|
|
199
|
+
| 'path_params'
|
|
200
|
+
| 'query_params'
|
|
201
|
+
| 'body'
|
|
202
|
+
| 'bearer_token'
|
|
203
|
+
| 'headers';
|
|
40
204
|
}
|
|
41
205
|
```
|
|
42
206
|
|
|
43
|
-
##
|
|
207
|
+
## Requirements
|
|
44
208
|
|
|
45
|
-
|
|
209
|
+
- Node.js >= 18.0.0
|
|
210
|
+
- TypeScript >= 5.0.0 (for TypeScript projects)
|
|
46
211
|
|
|
47
|
-
|
|
48
|
-
- Incomplete features
|
|
49
|
-
- Potential bugs
|
|
212
|
+
## Dependencies
|
|
50
213
|
|
|
51
|
-
|
|
214
|
+
- `axios`: HTTP client for API requests
|
|
215
|
+
- `ws`: WebSocket client library
|
|
216
|
+
|
|
217
|
+
## Development
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Install dependencies
|
|
221
|
+
npm install
|
|
222
|
+
|
|
223
|
+
# Build the package
|
|
224
|
+
npm run build
|
|
225
|
+
|
|
226
|
+
# Run tests
|
|
227
|
+
npm test
|
|
228
|
+
```
|
|
52
229
|
|
|
53
230
|
## License
|
|
54
231
|
|
|
55
232
|
MIT
|
|
233
|
+
|
|
234
|
+
## Support
|
|
235
|
+
|
|
236
|
+
For issues, questions, or contributions, please visit our [GitHub repository](https://github.com/usageflow/js-mongorepo).
|
package/dist/base.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Route, UsageFlowConfig, RoutesMap, Headers, RequestForAllocation, RequestMetadata, UsageFlowRequest, UsageFlowAPIConfig } from "./types";
|
|
2
|
-
import { UsageFlowSocketManger } from "./socket";
|
|
3
2
|
export declare abstract class UsageFlowAPI {
|
|
4
3
|
protected apiKey: string | null;
|
|
5
4
|
protected usageflowUrl: string;
|
|
6
|
-
protected webServer:
|
|
5
|
+
protected webServer: "express" | "fastify" | "nestjs";
|
|
7
6
|
protected apiConfigs: UsageFlowConfig[];
|
|
8
7
|
private configUpdateInterval;
|
|
9
|
-
socketManager
|
|
8
|
+
private socketManager;
|
|
10
9
|
private applicationId;
|
|
10
|
+
private logger;
|
|
11
11
|
constructor(config?: UsageFlowAPIConfig);
|
|
12
12
|
/**
|
|
13
13
|
* Initialize the UsageFlow API with credentials
|
|
@@ -16,7 +16,7 @@ export declare abstract class UsageFlowAPI {
|
|
|
16
16
|
* @param poolSize - Number of WebSocket connections in the pool (default: 5)
|
|
17
17
|
*/
|
|
18
18
|
private init;
|
|
19
|
-
setWebServer(webServer:
|
|
19
|
+
setWebServer(webServer: "express" | "fastify" | "nestjs"): void;
|
|
20
20
|
getApiKey(): string | null;
|
|
21
21
|
getUsageflowUrl(): string;
|
|
22
22
|
/**
|
package/dist/base.js
CHANGED
|
@@ -2,15 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UsageFlowAPI = void 0;
|
|
4
4
|
const socket_1 = require("./socket");
|
|
5
|
+
const logger_1 = require("@usageflow/logger");
|
|
5
6
|
class UsageFlowAPI {
|
|
6
|
-
constructor(config = { apiKey:
|
|
7
|
+
constructor(config = { apiKey: "", poolSize: 5 }) {
|
|
7
8
|
this.apiKey = null;
|
|
8
9
|
this.usageflowUrl = "https://api.usageflow.io";
|
|
9
|
-
this.webServer =
|
|
10
|
+
this.webServer = "express";
|
|
10
11
|
this.apiConfigs = [];
|
|
11
12
|
this.configUpdateInterval = null;
|
|
12
13
|
this.socketManager = null;
|
|
13
14
|
this.applicationId = false;
|
|
15
|
+
// Initialize logger with service name
|
|
16
|
+
this.logger = (0, logger_1.usLogger)({ service: 'USAGEFLOW_BASE', pretty: true, silent: process.env.UF_LOGS_ENABLED !== 'true' });
|
|
17
|
+
// Set default context for all logs
|
|
18
|
+
this.logger.setContext({
|
|
19
|
+
component: 'UsageFlowAPI',
|
|
20
|
+
webServer: this.webServer,
|
|
21
|
+
});
|
|
14
22
|
this.init(config.apiKey, this.usageflowUrl, config.poolSize);
|
|
15
23
|
}
|
|
16
24
|
/**
|
|
@@ -25,15 +33,27 @@ class UsageFlowAPI {
|
|
|
25
33
|
// this.startConfigUpdater();
|
|
26
34
|
this.socketManager = new socket_1.UsageFlowSocketManger(apiKey, poolSize);
|
|
27
35
|
// Connect the socket manager
|
|
28
|
-
this.socketManager
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
this.
|
|
36
|
+
this.socketManager
|
|
37
|
+
.connect()
|
|
38
|
+
.catch((error) => {
|
|
39
|
+
this.logger.error("[UsageFlow] Failed to establish WebSocket connection:", error);
|
|
40
|
+
})
|
|
41
|
+
.then(() => {
|
|
42
|
+
var _a;
|
|
43
|
+
this.logger.info("WebSocket connection established");
|
|
44
|
+
if ((_a = this.socketManager) === null || _a === void 0 ? void 0 : _a.isConnected()) {
|
|
45
|
+
this.startConfigUpdater();
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this.logger.error("WebSocket connection failed");
|
|
49
|
+
}
|
|
32
50
|
});
|
|
33
51
|
return this;
|
|
34
52
|
}
|
|
35
53
|
setWebServer(webServer) {
|
|
36
54
|
this.webServer = webServer;
|
|
55
|
+
// Update logger context with new web server
|
|
56
|
+
this.logger.setContext({ webServer });
|
|
37
57
|
}
|
|
38
58
|
getApiKey() {
|
|
39
59
|
return this.apiKey;
|
|
@@ -45,10 +65,11 @@ class UsageFlowAPI {
|
|
|
45
65
|
* Start background config update process
|
|
46
66
|
*/
|
|
47
67
|
startConfigUpdater() {
|
|
68
|
+
this.logger.info("Starting background config update process");
|
|
48
69
|
if (this.configUpdateInterval) {
|
|
49
70
|
clearInterval(this.configUpdateInterval);
|
|
50
71
|
}
|
|
51
|
-
this.fetchApiPolicies().catch(
|
|
72
|
+
this.fetchApiPolicies().catch(this.logger.error);
|
|
52
73
|
this.configUpdateInterval = setInterval(async () => {
|
|
53
74
|
await this.fetchApiPolicies();
|
|
54
75
|
}, 60000);
|
|
@@ -56,11 +77,11 @@ class UsageFlowAPI {
|
|
|
56
77
|
}
|
|
57
78
|
getRoutePattern(request) {
|
|
58
79
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
59
|
-
if (this.webServer ===
|
|
60
|
-
return ((_a = request === null || request === void 0 ? void 0 : request.routeOptions) === null || _a === void 0 ? void 0 : _a.url) || request.url ||
|
|
80
|
+
if (this.webServer === "fastify") {
|
|
81
|
+
return ((_a = request === null || request === void 0 ? void 0 : request.routeOptions) === null || _a === void 0 ? void 0 : _a.url) || request.url || "";
|
|
61
82
|
}
|
|
62
83
|
// For NestJS, prioritize route.path with baseUrl
|
|
63
|
-
if (this.webServer ===
|
|
84
|
+
if (this.webServer === "nestjs") {
|
|
64
85
|
// Method 1: Use request.route.path (available after route matching in NestJS)
|
|
65
86
|
if ((_b = request.route) === null || _b === void 0 ? void 0 : _b.path) {
|
|
66
87
|
const baseUrl = request.baseUrl || "";
|
|
@@ -74,7 +95,9 @@ class UsageFlowAPI {
|
|
|
74
95
|
if (request.params && Object.keys(request.params).length > 0) {
|
|
75
96
|
let path = request.path || ((_c = request.url) === null || _c === void 0 ? void 0 : _c.split("?")[0]) || "/";
|
|
76
97
|
// Split path into segments and replace matching segments with param names
|
|
77
|
-
const pathSegments = path
|
|
98
|
+
const pathSegments = path
|
|
99
|
+
.split("/")
|
|
100
|
+
.filter((segment) => segment !== "");
|
|
78
101
|
const paramEntries = Object.entries(request.params);
|
|
79
102
|
// Replace segments that match param values with :paramName
|
|
80
103
|
for (let i = 0; i < pathSegments.length; i++) {
|
|
@@ -90,20 +113,21 @@ class UsageFlowAPI {
|
|
|
90
113
|
return pattern;
|
|
91
114
|
}
|
|
92
115
|
}
|
|
93
|
-
const routePattern = ((_d = request.route) === null || _d === void 0 ? void 0 : _d.path) ||
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if (route.regexp) {
|
|
101
|
-
const patterned = route.regexp.test(request.url);
|
|
102
|
-
if (patterned) {
|
|
103
|
-
return patterned;
|
|
116
|
+
const routePattern = ((_d = request.route) === null || _d === void 0 ? void 0 : _d.path) ||
|
|
117
|
+
((_f = (_e = request.app._router.stack.find((route) => {
|
|
118
|
+
// a => a.path == request.url
|
|
119
|
+
if (!route.route)
|
|
120
|
+
return false;
|
|
121
|
+
if (route.path) {
|
|
122
|
+
return route.path == request.url;
|
|
104
123
|
}
|
|
105
|
-
|
|
106
|
-
|
|
124
|
+
if (route.regexp) {
|
|
125
|
+
const patterned = route.regexp.test(request.url);
|
|
126
|
+
if (patterned) {
|
|
127
|
+
return patterned;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
})) === null || _e === void 0 ? void 0 : _e.route) === null || _f === void 0 ? void 0 : _f.path);
|
|
107
131
|
if (routePattern) {
|
|
108
132
|
return routePattern;
|
|
109
133
|
}
|
|
@@ -127,7 +151,7 @@ class UsageFlowAPI {
|
|
|
127
151
|
if (layer.route) {
|
|
128
152
|
const route = layer.route;
|
|
129
153
|
const routePath = route.path;
|
|
130
|
-
const routeMethods = Object.keys(route.methods).map(m => m.toLowerCase());
|
|
154
|
+
const routeMethods = Object.keys(route.methods).map((m) => m.toLowerCase());
|
|
131
155
|
// Check if method matches and path pattern matches
|
|
132
156
|
if (routeMethods.includes(method) || routeMethods.includes("*")) {
|
|
133
157
|
// Try to match the pattern by checking if params match
|
|
@@ -136,7 +160,7 @@ class UsageFlowAPI {
|
|
|
136
160
|
if (request.params && Object.keys(request.params).length > 0) {
|
|
137
161
|
// Check if route path contains the param names
|
|
138
162
|
const paramNames = Object.keys(request.params);
|
|
139
|
-
const routeHasParams = paramNames.some(param => routePath.includes(`:${param}`));
|
|
163
|
+
const routeHasParams = paramNames.some((param) => routePath.includes(`:${param}`));
|
|
140
164
|
if (routeHasParams) {
|
|
141
165
|
return pattern;
|
|
142
166
|
}
|
|
@@ -149,7 +173,9 @@ class UsageFlowAPI {
|
|
|
149
173
|
}
|
|
150
174
|
}
|
|
151
175
|
}
|
|
152
|
-
else if (layer.name === "router" &&
|
|
176
|
+
else if (layer.name === "router" &&
|
|
177
|
+
layer.handle &&
|
|
178
|
+
layer.handle.stack) {
|
|
153
179
|
// Handle router middleware (nested routers)
|
|
154
180
|
const mountPath = layer.regexp.source
|
|
155
181
|
.replace("\\/?", "")
|
|
@@ -162,13 +188,15 @@ class UsageFlowAPI {
|
|
|
162
188
|
if (subLayer.route) {
|
|
163
189
|
const route = subLayer.route;
|
|
164
190
|
const routePath = route.path;
|
|
165
|
-
const routeMethods = Object.keys(route.methods).map(m => m.toLowerCase());
|
|
166
|
-
if (routeMethods.includes(method) ||
|
|
191
|
+
const routeMethods = Object.keys(route.methods).map((m) => m.toLowerCase());
|
|
192
|
+
if (routeMethods.includes(method) ||
|
|
193
|
+
routeMethods.includes("*")) {
|
|
167
194
|
const fullPath = mountPath + routePath;
|
|
168
195
|
// Check if this route matches by examining params
|
|
169
|
-
if (request.params &&
|
|
196
|
+
if (request.params &&
|
|
197
|
+
Object.keys(request.params).length > 0) {
|
|
170
198
|
const paramNames = Object.keys(request.params);
|
|
171
|
-
const routeHasParams = paramNames.some(param => routePath.includes(`:${param}`));
|
|
199
|
+
const routeHasParams = paramNames.some((param) => routePath.includes(`:${param}`));
|
|
172
200
|
if (routeHasParams) {
|
|
173
201
|
return fullPath;
|
|
174
202
|
}
|
|
@@ -242,7 +270,7 @@ class UsageFlowAPI {
|
|
|
242
270
|
}
|
|
243
271
|
break;
|
|
244
272
|
case "bearer_token":
|
|
245
|
-
const authHeader = this.getHeaderValue(request.headers,
|
|
273
|
+
const authHeader = this.getHeaderValue(request.headers, "authorization");
|
|
246
274
|
const token = this.extractBearerToken(authHeader || undefined);
|
|
247
275
|
if (token) {
|
|
248
276
|
const claims = this.decodeJwtUnverified(token);
|
|
@@ -269,17 +297,19 @@ class UsageFlowAPI {
|
|
|
269
297
|
type: "get_application_policies",
|
|
270
298
|
payload: null,
|
|
271
299
|
});
|
|
272
|
-
if (response.type ===
|
|
300
|
+
if (response.type === "success") {
|
|
273
301
|
this.apiConfigs = ((_a = response.payload) === null || _a === void 0 ? void 0 : _a.policies) || [];
|
|
274
302
|
}
|
|
275
303
|
}
|
|
276
304
|
}
|
|
277
305
|
async useAllocationRequest(payload) {
|
|
278
306
|
if (this.socketManager && this.socketManager.isConnected()) {
|
|
279
|
-
this.socketManager
|
|
307
|
+
this.socketManager
|
|
308
|
+
.sendAsync({
|
|
280
309
|
type: "use_allocation",
|
|
281
|
-
payload
|
|
282
|
-
})
|
|
310
|
+
payload,
|
|
311
|
+
})
|
|
312
|
+
.catch((error) => {
|
|
283
313
|
console.error("[UsageFlow] Error sending finalization via WebSocket:", error);
|
|
284
314
|
throw error;
|
|
285
315
|
});
|
|
@@ -290,12 +320,12 @@ class UsageFlowAPI {
|
|
|
290
320
|
try {
|
|
291
321
|
const allocationResponse = await this.socketManager.sendAsync({
|
|
292
322
|
type: "request_for_allocation",
|
|
293
|
-
payload
|
|
323
|
+
payload,
|
|
294
324
|
});
|
|
295
|
-
if (allocationResponse.type ===
|
|
325
|
+
if (allocationResponse.type === "error") {
|
|
296
326
|
throw new Error(allocationResponse.message || allocationResponse.error);
|
|
297
327
|
}
|
|
298
|
-
if (allocationResponse.type ===
|
|
328
|
+
if (allocationResponse.type === "success") {
|
|
299
329
|
request.usageflow.eventId = allocationResponse.payload.allocationId;
|
|
300
330
|
request.usageflow.metadata = metadata;
|
|
301
331
|
return;
|
|
@@ -390,8 +420,8 @@ class UsageFlowAPI {
|
|
|
390
420
|
return null;
|
|
391
421
|
}
|
|
392
422
|
// Check if it's a bearer token
|
|
393
|
-
const parts = authHeader.split(
|
|
394
|
-
if (parts.length !== 2 || parts[0].toLowerCase() !==
|
|
423
|
+
const parts = authHeader.split(" ");
|
|
424
|
+
if (parts.length !== 2 || parts[0].toLowerCase() !== "bearer") {
|
|
395
425
|
return null;
|
|
396
426
|
}
|
|
397
427
|
return parts[1];
|
|
@@ -401,12 +431,12 @@ class UsageFlowAPI {
|
|
|
401
431
|
*/
|
|
402
432
|
getHeaderValue(headers, key) {
|
|
403
433
|
// Check if it's a Headers object (from Fetch API) by checking for the 'get' method
|
|
404
|
-
if (headers && typeof headers.get ===
|
|
434
|
+
if (headers && typeof headers.get === "function") {
|
|
405
435
|
return headers.get(key) || null;
|
|
406
436
|
}
|
|
407
437
|
// Otherwise, treat it as a Record
|
|
408
438
|
const value = headers[key];
|
|
409
|
-
if (typeof value ===
|
|
439
|
+
if (typeof value === "string") {
|
|
410
440
|
return value;
|
|
411
441
|
}
|
|
412
442
|
if (Array.isArray(value) && value.length > 0) {
|
|
@@ -422,13 +452,13 @@ class UsageFlowAPI {
|
|
|
422
452
|
decodeJwtUnverified(token) {
|
|
423
453
|
try {
|
|
424
454
|
// Split the token into parts
|
|
425
|
-
const parts = token.split(
|
|
455
|
+
const parts = token.split(".");
|
|
426
456
|
if (parts.length !== 3) {
|
|
427
457
|
return null;
|
|
428
458
|
}
|
|
429
459
|
// Decode the payload (claims)
|
|
430
460
|
const payload = parts[1];
|
|
431
|
-
const decoded = Buffer.from(payload,
|
|
461
|
+
const decoded = Buffer.from(payload, "base64").toString("utf-8");
|
|
432
462
|
return JSON.parse(decoded);
|
|
433
463
|
}
|
|
434
464
|
catch (error) {
|
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":";;;AAYA,qCAAiD;AACjD,8CAA8D;AAE9D,MAAsB,YAAY;IAU9B,YAAY,SAA6B,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;QAT1D,WAAM,GAAkB,IAAI,CAAC;QAC7B,iBAAY,GAAW,0BAA0B,CAAC;QAClD,cAAS,GAAqC,SAAS,CAAC;QACxD,eAAU,GAAsB,EAAE,CAAC;QACrC,yBAAoB,GAA0B,IAAI,CAAC;QACnD,kBAAa,GAAiC,IAAI,CAAC;QACnD,kBAAa,GAAY,KAAK,CAAC;QAInC,sCAAsC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAA,iBAAQ,EAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC,CAAC;QACpH,mCAAmC;QACnC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YACnB,SAAS,EAAE,cAAc;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACK,IAAI,CACR,MAAc,EACd,eAAuB,0BAA0B,EACjD,QAAiB;QAEjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,6BAA6B;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,8BAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjE,6BAA6B;QAC7B,IAAI,CAAC,aAAa;aACb,OAAO,EAAE;aACT,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,uDAAuD,EACvD,KAAK,CACR,CAAC;QACN,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;;YACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACrD,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,WAAW,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACrD,CAAC;QACL,CAAC,CAAC,CAAC;QAEP,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,SAA2C;QAC3D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,4CAA4C;QAC5C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,eAAe;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,kBAAkB;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YAC/C,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,8CAA8C;IAClD,CAAC;IAEM,eAAe,CAAC,OAAyB;;QAC5C,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,0CAAE,GAAG,KAAI,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;QAC3D,CAAC;QAED,iDAAiD;QACjD,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC9B,8EAA8E;YAC9E,IAAI,MAAA,OAAO,CAAC,KAAK,0CAAE,IAAI,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBACtC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrC,oDAAoD;gBACpD,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;gBACrC,OAAO,QAAQ,IAAI,GAAG,CAAC;YAC3B,CAAC;YAED,8DAA8D;YAC9D,oEAAoE;YACpE,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3D,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,KAAI,MAAA,OAAO,CAAC,GAAG,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA,IAAI,GAAG,CAAC;gBAE7D,0EAA0E;gBAC1E,MAAM,YAAY,GAAG,IAAI;qBACpB,KAAK,CAAC,GAAG,CAAC;qBACV,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;gBACzC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAEpD,2DAA2D;gBAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3C,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,YAAY,EAAE,CAAC;wBACjD,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;4BACzC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;4BAClC,MAAM,CAAC,gCAAgC;wBAC3C,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,oCAAoC;gBACpC,MAAM,OAAO,GAAG,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7C,OAAO,OAAO,CAAC;YACnB,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GACd,CAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,IAAI;aACnB,MAAA,MAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE;gBAC1C,6BAA6B;gBAC7B,IAAI,CAAC,KAAK,CAAC,KAAK;oBAAE,OAAO,KAAK,CAAC;gBAC/B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACb,OAAO,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;gBACrC,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACf,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjD,IAAI,SAAS,EAAE,CAAC;wBACZ,OAAO,SAAS,CAAC;oBACrB,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,0CAAE,KAAK,0CAAE,IAAI,CAAA,CAAC;QAEpB,IAAI,YAAY,EAAE,CAAC;YACf,OAAO,YAAY,CAAC;QACxB,CAAC;QAED,oEAAoE;QACpE,IAAI,MAAA,OAAO,CAAC,KAAK,0CAAE,IAAI,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACrC,oDAAoD;YACpD,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;YACrC,OAAO,QAAQ,IAAI,GAAG,CAAC;QAC3B,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACxB,MAAM,MAAM,GAAI,GAAW,CAAC,OAAO,CAAC;YACpC,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAI,MAAA,OAAO,CAAC,GAAG,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA,IAAI,EAAE,CAAC;gBAE9D,iDAAiD;gBACjD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC/B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;wBACd,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;wBAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;wBAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtD,CAAC,CAAC,WAAW,EAAE,CAClB,CAAC;wBAEF,mDAAmD;wBACnD,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;4BAC9D,uDAAuD;4BACvD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;4BACpD,2EAA2E;4BAC3E,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC3D,+CAA+C;gCAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gCAC/C,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7C,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,CAClC,CAAC;gCACF,IAAI,cAAc,EAAE,CAAC;oCACjB,OAAO,OAAO,CAAC;gCACnB,CAAC;4BACL,CAAC;iCAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gCAClC,qEAAqE;gCACrE,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oCACzC,OAAO,OAAO,CAAC;gCACnB,CAAC;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC;yBAAM,IACH,KAAK,CAAC,IAAI,KAAK,QAAQ;wBACvB,KAAK,CAAC,MAAM;wBACZ,KAAK,CAAC,MAAM,CAAC,KAAK,EACpB,CAAC;wBACC,4CAA4C;wBAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM;6BAChC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;6BACnB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;6BACxB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;6BACrB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;6BAClB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;6BAClB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAExB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;4BACxC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gCACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;gCAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;gCAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtD,CAAC,CAAC,WAAW,EAAE,CAClB,CAAC;gCAEF,IACI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;oCAC7B,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC5B,CAAC;oCACC,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;oCACvC,kDAAkD;oCAClD,IACI,OAAO,CAAC,MAAM;wCACd,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EACxC,CAAC;wCACC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wCAC/C,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7C,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,CAClC,CAAC;wCACF,IAAI,cAAc,EAAE,CAAC;4CACjB,OAAO,QAAQ,CAAC;wCACpB,CAAC;oCACL,CAAC;yCAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wCAClC,MAAM,WAAW,GACb,OAAO,CAAC,IAAI,KAAI,MAAA,OAAO,CAAC,GAAG,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA,IAAI,EAAE,CAAC;wCACrD,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;4CACxD,OAAO,QAAQ,CAAC;wCACpB,CAAC;oCACL,CAAC;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,oCAAoC;YACpC,OAAO,CAAC,KAAK,CACT,wDAAwD,EACxD,KAAK,CACR,CAAC;QACN,CAAC;QAED,qDAAqD;QACrD,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,KAAI,MAAA,OAAO,CAAC,GAAG,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA,IAAI,GAAG,CAAC;YAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;YAEtC,0EAA0E;YAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAEpD,2DAA2D;YAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,YAAY,EAAE,CAAC;oBACjD,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;wBACjC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;wBAClC,MAAM,CAAC,gCAAgC;oBAC3C,CAAC;gBACL,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,+CAA+C;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAI,MAAA,OAAO,CAAC,GAAG,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA,IAAI,GAAG,CAAC;QAC/D,OAAO,OAAO,GAAG,IAAI,IAAI,GAAG,CAAC;IACjC,CAAC;IAEM,aAAa,CAChB,OAAyB,EACzB,WAAoB;;QAEpB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,MAAM,GAAG,GAAG,WAAW,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAEhC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;QAC9B,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAkB,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,qBAAqB,CAAC;YAE9C,QAAQ,QAAQ,EAAE,CAAC;gBACf,KAAK,aAAa;oBACd,IAAI,MAAA,OAAO,CAAC,MAAM,0CAAG,SAAS,CAAC,EAAE,CAAC;wBAC9B,OAAO,GAAG,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3D,CAAC;oBACD,MAAM;gBACV,KAAK,cAAc;oBACf,IAAI,MAAA,OAAO,CAAC,KAAK,0CAAG,SAAS,CAAC,EAAE,CAAC;wBAC7B,OAAO,GAAG,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1D,CAAC;oBACD,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,MAAA,OAAO,CAAC,IAAI,0CAAG,SAAS,CAAC,EAAE,CAAC;wBAC5B,OAAO,GAAG,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzD,CAAC;oBACD,MAAM;gBACV,KAAK,cAAc;oBACf,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAClC,OAAO,CAAC,OAAO,EACf,eAAe,CAClB,CAAC;oBACF,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;oBAC/D,IAAI,KAAK,EAAE,CAAC;wBACR,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;wBAC/C,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,SAAS,CAAC,EAAE,CAAC;4BACtB,OAAO,GAAG,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;wBACnD,CAAC;oBACL,CAAC;oBACD,MAAM;gBAEV,KAAK,SAAS,CAAC,CAAC,CAAC;oBACb,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBACpE,IAAI,WAAW,EAAE,CAAC;wBACd,OAAO,GAAG,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;oBAC7C,CAAC;oBACD,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,gBAAgB;;QAC1B,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAGhD;gBACC,IAAI,EAAE,0BAA0B;gBAChC,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC,UAAU,GAAG,CAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,QAAQ,KAAI,EAAE,CAAC;YACvD,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,OAA6B;QACpD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC;YACzD,IAAI,CAAC,aAAa;iBACb,SAAS,CAAM;gBACZ,IAAI,EAAE,gBAAgB;gBACtB,OAAO;aACV,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,OAAO,CAAC,KAAK,CACT,uDAAuD,EACvD,KAAK,CACR,CAAC;gBACF,MAAM,KAAK,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CACnB,OAAyB,EACzB,OAA6B,EAC7B,QAAyB;QAEzB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC;YACzD,IAAI,CAAC;gBACD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAM;oBAC/D,IAAI,EAAE,wBAAwB;oBAC9B,OAAO;iBACV,CAAC,CAAC;gBAEH,IAAI,kBAAkB,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CACX,kBAAkB,CAAC,OAAO,IAAI,kBAAkB,CAAC,KAAK,CACzD,CAAC;gBACN,CAAC;gBACD,IAAI,kBAAkB,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACxC,OAAO,CAAC,SAAU,CAAC,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC;oBACrE,OAAO,CAAC,SAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACvC,OAAO;gBACX,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,KAAK,CACX,kBAAkB,CAAC,OAAO,IAAI,wBAAwB,CACzD,CAAC;gBACN,CAAC;YACL,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CACT,gEAAgE,EAChE,KAAK,CACR,CAAC;gBACF,MAAM,KAAK,CAAC;gBACZ,+BAA+B;YACnC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,MAAe;QAClC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChC,CAAC;YACD,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC7C,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACI,eAAe,CAClB,MAAc,EACd,GAAW,EACX,YAAuB;QAEvB,IACI,YAAY,CAAC,MAAM,CAAC;YACpB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAC1D,CAAC;YACC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IACI,YAAY,CAAC,GAAG,CAAC;YACjB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EACpD,CAAC;YACC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,kBAAkB,CACrB,MAAc,EACd,GAAW,EACX,SAAoB;QAEpB,IACI,SAAS,CAAC,MAAM,CAAC;YACjB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EACpD,CAAC;YACC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,OAAgB;QACnC,MAAM,SAAS,GAAY,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC;QAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;gBAC/B,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9B,SAAS,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACJ,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;gBAC5B,CAAC;YACL,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACJ,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,OAAO;QACV,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACzC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACrC,CAAC;IACL,CAAC;IAEM,kBAAkB,CAAC,UAAmB;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,+BAA+B;QAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,cAAc,CAClB,OAAgE,EAChE,GAAW;QAEX,mFAAmF;QACnF,IAAI,OAAO,IAAI,OAAQ,OAAe,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YACxD,OAAQ,OAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QAC7C,CAAC;QACD,kCAAkC;QAClC,MAAM,KAAK,GAAI,OAAyD,CACpE,GAAG,CACN,CAAC;QACF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,mBAAmB,CAAC,KAAa;QACpC,IAAI,CAAC;YACD,6BAA6B;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,8BAA8B;YAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;CACJ;AA3jBD,oCA2jBC"}
|
package/jest.config.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
preset: 'ts-jest',
|
|
3
|
+
testEnvironment: 'node',
|
|
4
|
+
roots: ['<rootDir>/test'],
|
|
5
|
+
testMatch: ['**/*.test.ts'],
|
|
6
|
+
transform: {
|
|
7
|
+
'^.+\\.ts$': 'ts-jest',
|
|
8
|
+
},
|
|
9
|
+
moduleFileExtensions: ['ts', 'js', 'json'],
|
|
10
|
+
collectCoverageFrom: ['src/**/*.ts'],
|
|
11
|
+
coverageDirectory: 'coverage',
|
|
12
|
+
testTimeout: 10000,
|
|
13
|
+
};
|
|
14
|
+
|