@aifabrix/miso-client 1.8.1 → 1.9.2
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 +63 -0
- package/dist/index.d.ts +79 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +104 -31
- package/dist/index.js.map +1 -1
- package/dist/services/auth.service.d.ts +14 -6
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +20 -13
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/logger.service.js +1 -1
- package/dist/services/logger.service.js.map +1 -1
- package/dist/services/permission.service.d.ts +22 -6
- package/dist/services/permission.service.d.ts.map +1 -1
- package/dist/services/permission.service.js +30 -15
- package/dist/services/permission.service.js.map +1 -1
- package/dist/services/role.service.d.ts +19 -5
- package/dist/services/role.service.d.ts.map +1 -1
- package/dist/services/role.service.js +26 -13
- package/dist/services/role.service.js.map +1 -1
- package/dist/types/config.types.d.ts +26 -0
- package/dist/types/config.types.d.ts.map +1 -1
- package/dist/types/config.types.js.map +1 -1
- package/dist/utils/audit-log-queue.js +1 -1
- package/dist/utils/audit-log-queue.js.map +1 -1
- package/dist/utils/auth-strategy.d.ts +38 -0
- package/dist/utils/auth-strategy.d.ts.map +1 -0
- package/dist/utils/auth-strategy.js +106 -0
- package/dist/utils/auth-strategy.js.map +1 -0
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +19 -0
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/http-client.d.ts +21 -2
- package/dist/utils/http-client.d.ts.map +1 -1
- package/dist/utils/http-client.js +29 -4
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/internal-http-client.d.ts +13 -2
- package/dist/utils/internal-http-client.d.ts.map +1 -1
- package/dist/utils/internal-http-client.js +67 -9
- package/dist/utils/internal-http-client.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication strategy handler
|
|
3
|
+
* Manages authentication methods and builds appropriate headers
|
|
4
|
+
*/
|
|
5
|
+
import { AuthStrategy, AuthMethod } from '../types/config.types';
|
|
6
|
+
export declare class AuthStrategyHandler {
|
|
7
|
+
/**
|
|
8
|
+
* Build authentication headers based on strategy
|
|
9
|
+
* Returns headers for the first method in the strategy that has required data
|
|
10
|
+
* @param strategy - Authentication strategy configuration
|
|
11
|
+
* @param clientToken - Current client token (for client-token method)
|
|
12
|
+
* @param clientId - Client ID (for client-credentials method)
|
|
13
|
+
* @param clientSecret - Client secret (for client-credentials method)
|
|
14
|
+
* @returns Headers object with appropriate authentication headers
|
|
15
|
+
*/
|
|
16
|
+
static buildAuthHeaders(strategy: AuthStrategy, clientToken: string | null, clientId?: string, clientSecret?: string): Record<string, string>;
|
|
17
|
+
/**
|
|
18
|
+
* Check if a specific method should be tried based on strategy
|
|
19
|
+
* @param method - Authentication method to check
|
|
20
|
+
* @param strategy - Authentication strategy configuration
|
|
21
|
+
* @returns True if method is in strategy and has required data
|
|
22
|
+
*/
|
|
23
|
+
static shouldTryMethod(method: AuthMethod, strategy: AuthStrategy): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Get default authentication strategy
|
|
26
|
+
* @param bearerToken - Optional bearer token
|
|
27
|
+
* @returns Default strategy with bearer and client-token
|
|
28
|
+
*/
|
|
29
|
+
static getDefaultStrategy(bearerToken?: string): AuthStrategy;
|
|
30
|
+
/**
|
|
31
|
+
* Merge strategy with default, prioritizing provided strategy
|
|
32
|
+
* @param strategy - Strategy to merge
|
|
33
|
+
* @param defaultStrategy - Default strategy to fall back to
|
|
34
|
+
* @returns Merged strategy
|
|
35
|
+
*/
|
|
36
|
+
static mergeStrategy(strategy: AuthStrategy | undefined, defaultStrategy: AuthStrategy): AuthStrategy;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=auth-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-strategy.d.ts","sourceRoot":"","sources":["../../src/utils/auth-strategy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEjE,qBAAa,mBAAmB;IAC9B;;;;;;;;OAQG;IACH,MAAM,CAAC,gBAAgB,CACrB,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAyCzB;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO;IAmB3E;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY;IAO7D;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAClB,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,eAAe,EAAE,YAAY,GAC5B,YAAY;CAYhB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Authentication strategy handler
|
|
4
|
+
* Manages authentication methods and builds appropriate headers
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AuthStrategyHandler = void 0;
|
|
8
|
+
class AuthStrategyHandler {
|
|
9
|
+
/**
|
|
10
|
+
* Build authentication headers based on strategy
|
|
11
|
+
* Returns headers for the first method in the strategy that has required data
|
|
12
|
+
* @param strategy - Authentication strategy configuration
|
|
13
|
+
* @param clientToken - Current client token (for client-token method)
|
|
14
|
+
* @param clientId - Client ID (for client-credentials method)
|
|
15
|
+
* @param clientSecret - Client secret (for client-credentials method)
|
|
16
|
+
* @returns Headers object with appropriate authentication headers
|
|
17
|
+
*/
|
|
18
|
+
static buildAuthHeaders(strategy, clientToken, clientId, clientSecret) {
|
|
19
|
+
const headers = {};
|
|
20
|
+
// Try methods in priority order
|
|
21
|
+
for (const method of strategy.methods) {
|
|
22
|
+
switch (method) {
|
|
23
|
+
case 'bearer':
|
|
24
|
+
if (strategy.bearerToken) {
|
|
25
|
+
headers['Authorization'] = `Bearer ${strategy.bearerToken}`;
|
|
26
|
+
return headers;
|
|
27
|
+
}
|
|
28
|
+
break;
|
|
29
|
+
case 'client-token':
|
|
30
|
+
if (clientToken) {
|
|
31
|
+
headers['x-client-token'] = clientToken;
|
|
32
|
+
return headers;
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
case 'client-credentials':
|
|
36
|
+
if (clientId && clientSecret) {
|
|
37
|
+
headers['X-Client-Id'] = clientId;
|
|
38
|
+
headers['X-Client-Secret'] = clientSecret;
|
|
39
|
+
return headers;
|
|
40
|
+
}
|
|
41
|
+
break;
|
|
42
|
+
case 'api-key':
|
|
43
|
+
if (strategy.apiKey) {
|
|
44
|
+
headers['Authorization'] = `Bearer ${strategy.apiKey}`;
|
|
45
|
+
return headers;
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// If no method succeeded, return empty headers (will likely fail auth)
|
|
51
|
+
return headers;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if a specific method should be tried based on strategy
|
|
55
|
+
* @param method - Authentication method to check
|
|
56
|
+
* @param strategy - Authentication strategy configuration
|
|
57
|
+
* @returns True if method is in strategy and has required data
|
|
58
|
+
*/
|
|
59
|
+
static shouldTryMethod(method, strategy) {
|
|
60
|
+
if (!strategy.methods.includes(method)) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
switch (method) {
|
|
64
|
+
case 'bearer':
|
|
65
|
+
return !!strategy.bearerToken;
|
|
66
|
+
case 'client-token':
|
|
67
|
+
return true; // Client token is managed internally
|
|
68
|
+
case 'client-credentials':
|
|
69
|
+
return true; // Client credentials are from config
|
|
70
|
+
case 'api-key':
|
|
71
|
+
return !!strategy.apiKey;
|
|
72
|
+
default:
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get default authentication strategy
|
|
78
|
+
* @param bearerToken - Optional bearer token
|
|
79
|
+
* @returns Default strategy with bearer and client-token
|
|
80
|
+
*/
|
|
81
|
+
static getDefaultStrategy(bearerToken) {
|
|
82
|
+
return {
|
|
83
|
+
methods: ['bearer', 'client-token'],
|
|
84
|
+
bearerToken
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Merge strategy with default, prioritizing provided strategy
|
|
89
|
+
* @param strategy - Strategy to merge
|
|
90
|
+
* @param defaultStrategy - Default strategy to fall back to
|
|
91
|
+
* @returns Merged strategy
|
|
92
|
+
*/
|
|
93
|
+
static mergeStrategy(strategy, defaultStrategy) {
|
|
94
|
+
if (!strategy) {
|
|
95
|
+
return defaultStrategy;
|
|
96
|
+
}
|
|
97
|
+
// Use provided strategy, but fill in missing required fields from default
|
|
98
|
+
return {
|
|
99
|
+
methods: strategy.methods.length > 0 ? strategy.methods : defaultStrategy.methods,
|
|
100
|
+
bearerToken: strategy.bearerToken || defaultStrategy.bearerToken,
|
|
101
|
+
apiKey: strategy.apiKey || defaultStrategy.apiKey
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.AuthStrategyHandler = AuthStrategyHandler;
|
|
106
|
+
//# sourceMappingURL=auth-strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-strategy.js","sourceRoot":"","sources":["../../src/utils/auth-strategy.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH,MAAa,mBAAmB;IAC9B;;;;;;;;OAQG;IACH,MAAM,CAAC,gBAAgB,CACrB,QAAsB,EACtB,WAA0B,EAC1B,QAAiB,EACjB,YAAqB;QAErB,MAAM,OAAO,GAA2B,EAAE,CAAC;QAE3C,gCAAgC;QAChC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,QAAQ;oBACX,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;wBACzB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,QAAQ,CAAC,WAAW,EAAE,CAAC;wBAC5D,OAAO,OAAO,CAAC;oBACjB,CAAC;oBACD,MAAM;gBAER,KAAK,cAAc;oBACjB,IAAI,WAAW,EAAE,CAAC;wBAChB,OAAO,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC;wBACxC,OAAO,OAAO,CAAC;oBACjB,CAAC;oBACD,MAAM;gBAER,KAAK,oBAAoB;oBACvB,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;wBAC7B,OAAO,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;wBAClC,OAAO,CAAC,iBAAiB,CAAC,GAAG,YAAY,CAAC;wBAC1C,OAAO,OAAO,CAAC;oBACjB,CAAC;oBACD,MAAM;gBAER,KAAK,SAAS;oBACZ,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACpB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACvD,OAAO,OAAO,CAAC;oBACjB,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,MAAkB,EAAE,QAAsB;QAC/D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;YAChC,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC,CAAC,qCAAqC;YACpD,KAAK,oBAAoB;gBACvB,OAAO,IAAI,CAAC,CAAC,qCAAqC;YACpD,KAAK,SAAS;gBACZ,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC3B;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,WAAoB;QAC5C,OAAO;YACL,OAAO,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC;YACnC,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAClB,QAAkC,EAClC,eAA6B;QAE7B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,0EAA0E;QAC1E,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO;YACjF,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,eAAe,CAAC,WAAW;YAChE,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM;SAClD,CAAC;IACJ,CAAC;CACF;AAlHD,kDAkHC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAyC,MAAM,uBAAuB,CAAC;AAEhG;;GAEG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,CAgF7C"}
|
|
@@ -55,6 +55,25 @@ function loadConfig() {
|
|
|
55
55
|
if (process.env.MISO_EMIT_EVENTS) {
|
|
56
56
|
config.emitEvents = process.env.MISO_EMIT_EVENTS.toLowerCase() === 'true';
|
|
57
57
|
}
|
|
58
|
+
// Optional auth strategy configuration
|
|
59
|
+
// Format: MISO_AUTH_STRATEGY=bearer,client-token,api-key
|
|
60
|
+
if (process.env.MISO_AUTH_STRATEGY) {
|
|
61
|
+
const methods = process.env.MISO_AUTH_STRATEGY.split(',').map(m => m.trim());
|
|
62
|
+
const authStrategy = {
|
|
63
|
+
methods: methods.filter(m => ['bearer', 'client-token', 'client-credentials', 'api-key'].includes(m))
|
|
64
|
+
};
|
|
65
|
+
// Add bearer token if provided
|
|
66
|
+
if (process.env.MISO_BEARER_TOKEN) {
|
|
67
|
+
authStrategy.bearerToken = process.env.MISO_BEARER_TOKEN;
|
|
68
|
+
}
|
|
69
|
+
// Add API key if provided (can also use existing API_KEY env var)
|
|
70
|
+
if (process.env.MISO_API_KEY || process.env.API_KEY) {
|
|
71
|
+
authStrategy.apiKey = process.env.MISO_API_KEY || process.env.API_KEY;
|
|
72
|
+
}
|
|
73
|
+
if (authStrategy.methods.length > 0) {
|
|
74
|
+
config.authStrategy = authStrategy;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
58
77
|
return config;
|
|
59
78
|
}
|
|
60
79
|
//# sourceMappingURL=config-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAQH,
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAQH,gCAgFC;AAtFD,yBAAuB;AAGvB;;GAEG;AACH,SAAgB,UAAU;IACxB,MAAM,MAAM,GAAqB;QAC/B,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,gCAAgC;QAClF,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QACvE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;QACnF,QAAQ,EAAG,OAAO,CAAC,GAAG,CAAC,cAAsD,IAAI,OAAO;KACzF,CAAC;IAEF,2BAA2B;IAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,+BAA+B;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACzC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,WAAW,GAAgB;YAC/B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC;YAChD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;SACrC,CAAC;QAEF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACzB,WAAW,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACjC,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;IAC7B,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACpD,CAAC;IAED,gEAAgE;IAChE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,oDAAoD;IACpD,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;QAC7C,MAAM,CAAC,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IAC1E,CAAC;IAED,8EAA8E;IAC9E,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IAC5E,CAAC;IAED,uCAAuC;IACvC,yDAAyD;IACzD,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAiB,CAAC;QAC7F,MAAM,YAAY,GAAiB;YACjC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACtG,CAAC;QAEF,+BAA+B;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAClC,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC3D,CAAC;QAED,kEAAkE;QAClE,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACpD,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACxE,CAAC;QAED,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Wraps InternalHttpClient and adds ISO 27001 compliant logging
|
|
4
4
|
*/
|
|
5
5
|
import { AxiosRequestConfig } from 'axios';
|
|
6
|
-
import { MisoClientConfig } from '../types/config.types';
|
|
6
|
+
import { MisoClientConfig, AuthStrategy } from '../types/config.types';
|
|
7
7
|
import { LoggerService } from '../services/logger.service';
|
|
8
8
|
export declare class HttpClient {
|
|
9
9
|
private internalClient;
|
|
@@ -31,7 +31,26 @@ export declare class HttpClient {
|
|
|
31
31
|
delete<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
|
|
32
32
|
request<T>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
|
|
33
33
|
authenticatedRequest<T>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', url: string, token: string, // User authentication token (sent as Bearer token)
|
|
34
|
-
data?: unknown, config?: AxiosRequestConfig): Promise<T>;
|
|
34
|
+
data?: unknown, config?: AxiosRequestConfig, authStrategy?: AuthStrategy): Promise<T>;
|
|
35
|
+
/**
|
|
36
|
+
* Make request with authentication strategy
|
|
37
|
+
* Tries authentication methods in priority order based on strategy
|
|
38
|
+
* @param method - HTTP method
|
|
39
|
+
* @param url - Request URL
|
|
40
|
+
* @param authStrategy - Authentication strategy configuration
|
|
41
|
+
* @param data - Optional request data
|
|
42
|
+
* @param config - Optional Axios request config
|
|
43
|
+
* @returns Response data
|
|
44
|
+
*/
|
|
45
|
+
requestWithAuthStrategy<T>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', url: string, authStrategy: AuthStrategy, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
|
|
46
|
+
/**
|
|
47
|
+
* Validate token using /api/v1/auth/validate endpoint
|
|
48
|
+
* OpenAPI spec requires token in request body: { token: "..." }
|
|
49
|
+
* @param token - User authentication token
|
|
50
|
+
* @param authStrategy - Optional authentication strategy override
|
|
51
|
+
* @returns Response data from validate endpoint
|
|
52
|
+
*/
|
|
53
|
+
validateTokenRequest<T>(token: string, authStrategy?: AuthStrategy): Promise<T>;
|
|
35
54
|
/**
|
|
36
55
|
* GET request with filter builder support.
|
|
37
56
|
* Builds query string from FilterBuilder and appends to URL.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,kBAAkB,EAInB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,kBAAkB,EAInB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAS3D,qBAAa,UAAU;IACrB,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAC9B,SAAgB,MAAM,EAAE,gBAAgB,CAAC;gBAE7B,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa;IAa3D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6CzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;;;OAIG;YACW,mBAAmB;IAY3B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5D,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7E,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5E,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAK/D,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAQP,oBAAoB,CAAC,CAAC,EAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,mDAAmD;IAClE,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,EAC3B,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;;;;OASG;IACG,uBAAuB,CAAC,CAAC,EAC7B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,YAAY,EAC1B,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;OAMG;IACG,oBAAoB,CAAC,CAAC,EAC1B,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,CAAC,CAAC;IAWb;;;;;;;OAOG;IACG,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE;QAAE,aAAa,IAAI,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAMzH;;;;;;;OAOG;IACG,YAAY,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAC9C,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;CAOd"}
|
|
@@ -77,11 +77,11 @@ class HttpClient {
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
// Don't audit the logs endpoint itself
|
|
80
|
-
if (url && url.includes('/api/logs')) {
|
|
80
|
+
if (url && url.includes('/api/v1/logs')) {
|
|
81
81
|
return false;
|
|
82
82
|
}
|
|
83
83
|
// Don't audit the client token endpoint
|
|
84
|
-
if (url && url.includes('/api/auth/token')) {
|
|
84
|
+
if (url && url.includes('/api/v1/auth/token')) {
|
|
85
85
|
return false;
|
|
86
86
|
}
|
|
87
87
|
return true;
|
|
@@ -121,8 +121,33 @@ class HttpClient {
|
|
|
121
121
|
// User token is sent as Authorization: Bearer header (this method parameter)
|
|
122
122
|
// These are two separate tokens for different purposes
|
|
123
123
|
async authenticatedRequest(method, url, token, // User authentication token (sent as Bearer token)
|
|
124
|
-
data, config
|
|
125
|
-
|
|
124
|
+
data, config, authStrategy // Optional auth strategy override
|
|
125
|
+
) {
|
|
126
|
+
return this.internalClient.authenticatedRequest(method, url, token, data, config, authStrategy);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Make request with authentication strategy
|
|
130
|
+
* Tries authentication methods in priority order based on strategy
|
|
131
|
+
* @param method - HTTP method
|
|
132
|
+
* @param url - Request URL
|
|
133
|
+
* @param authStrategy - Authentication strategy configuration
|
|
134
|
+
* @param data - Optional request data
|
|
135
|
+
* @param config - Optional Axios request config
|
|
136
|
+
* @returns Response data
|
|
137
|
+
*/
|
|
138
|
+
async requestWithAuthStrategy(method, url, authStrategy, data, config) {
|
|
139
|
+
return this.internalClient.requestWithAuthStrategy(method, url, authStrategy, data, config);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Validate token using /api/v1/auth/validate endpoint
|
|
143
|
+
* OpenAPI spec requires token in request body: { token: "..." }
|
|
144
|
+
* @param token - User authentication token
|
|
145
|
+
* @param authStrategy - Optional authentication strategy override
|
|
146
|
+
* @returns Response data from validate endpoint
|
|
147
|
+
*/
|
|
148
|
+
async validateTokenRequest(token, authStrategy) {
|
|
149
|
+
return this.authenticatedRequest('POST', '/api/v1/auth/validate', token, { token }, // OpenAPI spec requires token in request body
|
|
150
|
+
undefined, authStrategy);
|
|
126
151
|
}
|
|
127
152
|
/**
|
|
128
153
|
* GET request with filter builder support.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* This is the base HTTP client without audit/debug logging
|
|
4
4
|
*/
|
|
5
5
|
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
6
|
-
import { MisoClientConfig } from '../types/config.types';
|
|
6
|
+
import { MisoClientConfig, AuthStrategy } from '../types/config.types';
|
|
7
7
|
export declare class InternalHttpClient {
|
|
8
8
|
private axios;
|
|
9
9
|
readonly config: MisoClientConfig;
|
|
@@ -44,6 +44,17 @@ export declare class InternalHttpClient {
|
|
|
44
44
|
delete<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
|
|
45
45
|
request<T>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
|
|
46
46
|
authenticatedRequest<T>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', url: string, token: string, // User authentication token (sent as Bearer token)
|
|
47
|
-
data?: unknown, config?: AxiosRequestConfig): Promise<T>;
|
|
47
|
+
data?: unknown, config?: AxiosRequestConfig, authStrategy?: AuthStrategy): Promise<T>;
|
|
48
|
+
/**
|
|
49
|
+
* Make request with authentication strategy
|
|
50
|
+
* Tries authentication methods in priority order based on strategy
|
|
51
|
+
* @param method - HTTP method
|
|
52
|
+
* @param url - Request URL
|
|
53
|
+
* @param authStrategy - Authentication strategy configuration
|
|
54
|
+
* @param data - Optional request data
|
|
55
|
+
* @param config - Optional Axios request config
|
|
56
|
+
* @returns Response data
|
|
57
|
+
*/
|
|
58
|
+
requestWithAuthStrategy<T>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', url: string, authStrategy: AuthStrategy, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
|
|
48
59
|
}
|
|
49
60
|
//# sourceMappingURL=internal-http-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-http-client.d.ts","sourceRoot":"","sources":["../../src/utils/internal-http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EACZ,aAAa,EACb,kBAAkB,EAInB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAuD,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"internal-http-client.d.ts","sourceRoot":"","sources":["../../src/utils/internal-http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EACZ,aAAa,EACb,kBAAkB,EAInB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAuD,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI5H,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAgB;IAC7B,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,mBAAmB,CAAgC;gBAE/C,MAAM,EAAE,gBAAgB;IAkDpC;;;OAGG;YACW,cAAc;IAuB5B;;OAEG;YACW,gBAAgB;IA+B9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAmD1B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;IACH,gBAAgB,IAAI,aAAa;IAI3B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAa5D,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAa7E,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAa5E,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAc/D,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAmBP,oBAAoB,CAAC,CAAC,EAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,mDAAmD;IAClE,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,EAC3B,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,CAAC,CAAC;IAgDb;;;;;;;;;OASG;IACG,uBAAuB,CAAC,CAAC,EAC7B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,YAAY,EAC1B,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;CA+Bd"}
|
|
@@ -41,6 +41,7 @@ exports.InternalHttpClient = void 0;
|
|
|
41
41
|
const axios_1 = __importStar(require("axios"));
|
|
42
42
|
const config_types_1 = require("../types/config.types");
|
|
43
43
|
const errors_1 = require("./errors");
|
|
44
|
+
const auth_strategy_1 = require("./auth-strategy");
|
|
44
45
|
class InternalHttpClient {
|
|
45
46
|
constructor(config) {
|
|
46
47
|
this.clientToken = null;
|
|
@@ -55,12 +56,17 @@ class InternalHttpClient {
|
|
|
55
56
|
}
|
|
56
57
|
});
|
|
57
58
|
// Interceptor adds client token (or fetches it if needed)
|
|
59
|
+
// Note: This interceptor always adds client-token for backward compatibility
|
|
60
|
+
// When using auth strategy, the strategy handler will override headers as needed
|
|
58
61
|
this.axios.interceptors.request.use(async (config) => {
|
|
59
62
|
config.headers = config.headers || {};
|
|
60
|
-
//
|
|
61
|
-
|
|
62
|
-
if (token) {
|
|
63
|
-
|
|
63
|
+
// Only add client token if not already set by auth strategy
|
|
64
|
+
// Auth strategy will set headers appropriately
|
|
65
|
+
if (!config.headers['x-client-token'] && !config.headers['X-Client-Id']) {
|
|
66
|
+
const token = await this.getClientToken();
|
|
67
|
+
if (token) {
|
|
68
|
+
config.headers['x-client-token'] = token;
|
|
69
|
+
}
|
|
64
70
|
}
|
|
65
71
|
return config;
|
|
66
72
|
}, (error) => Promise.reject(error));
|
|
@@ -117,7 +123,7 @@ class InternalHttpClient {
|
|
|
117
123
|
'X-Client-Secret': this.config.clientSecret
|
|
118
124
|
}
|
|
119
125
|
});
|
|
120
|
-
const response = await tempAxios.post('/api/auth/token');
|
|
126
|
+
const response = await tempAxios.post('/api/v1/auth/token');
|
|
121
127
|
if (response.data.success && response.data.token) {
|
|
122
128
|
this.clientToken = response.data.token;
|
|
123
129
|
// Set expiration with 30 second buffer before actual expiration
|
|
@@ -296,14 +302,66 @@ class InternalHttpClient {
|
|
|
296
302
|
// User token is sent as Authorization: Bearer header (this method parameter)
|
|
297
303
|
// These are two separate tokens for different purposes
|
|
298
304
|
async authenticatedRequest(method, url, token, // User authentication token (sent as Bearer token)
|
|
299
|
-
data, config
|
|
305
|
+
data, config, authStrategy // Optional auth strategy override
|
|
306
|
+
) {
|
|
307
|
+
// Use auth strategy if provided, otherwise use default bearer token behavior
|
|
308
|
+
let requestConfig;
|
|
309
|
+
if (authStrategy) {
|
|
310
|
+
// Build headers based on auth strategy
|
|
311
|
+
const clientToken = await this.getClientToken();
|
|
312
|
+
const authHeaders = auth_strategy_1.AuthStrategyHandler.buildAuthHeaders(authStrategy, clientToken, this.config.clientId, this.config.clientSecret);
|
|
313
|
+
requestConfig = {
|
|
314
|
+
...config,
|
|
315
|
+
headers: {
|
|
316
|
+
...config?.headers,
|
|
317
|
+
...authHeaders
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
// Default behavior: Bearer token + client token
|
|
323
|
+
requestConfig = {
|
|
324
|
+
...config,
|
|
325
|
+
headers: {
|
|
326
|
+
...config?.headers,
|
|
327
|
+
// Add Bearer token for user authentication
|
|
328
|
+
// x-client-token is automatically added by interceptor (not a Bearer token)
|
|
329
|
+
Authorization: `Bearer ${token}`
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
switch (method) {
|
|
334
|
+
case 'GET':
|
|
335
|
+
return this.get(url, requestConfig);
|
|
336
|
+
case 'POST':
|
|
337
|
+
return this.post(url, data, requestConfig);
|
|
338
|
+
case 'PUT':
|
|
339
|
+
return this.put(url, data, requestConfig);
|
|
340
|
+
case 'DELETE':
|
|
341
|
+
return this.delete(url, requestConfig);
|
|
342
|
+
default:
|
|
343
|
+
throw new Error(`Unsupported HTTP method: ${method}`);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Make request with authentication strategy
|
|
348
|
+
* Tries authentication methods in priority order based on strategy
|
|
349
|
+
* @param method - HTTP method
|
|
350
|
+
* @param url - Request URL
|
|
351
|
+
* @param authStrategy - Authentication strategy configuration
|
|
352
|
+
* @param data - Optional request data
|
|
353
|
+
* @param config - Optional Axios request config
|
|
354
|
+
* @returns Response data
|
|
355
|
+
*/
|
|
356
|
+
async requestWithAuthStrategy(method, url, authStrategy, data, config) {
|
|
357
|
+
// Build headers based on auth strategy
|
|
358
|
+
const clientToken = await this.getClientToken();
|
|
359
|
+
const authHeaders = auth_strategy_1.AuthStrategyHandler.buildAuthHeaders(authStrategy, clientToken, this.config.clientId, this.config.clientSecret);
|
|
300
360
|
const requestConfig = {
|
|
301
361
|
...config,
|
|
302
362
|
headers: {
|
|
303
363
|
...config?.headers,
|
|
304
|
-
|
|
305
|
-
// x-client-token is automatically added by interceptor (not a Bearer token)
|
|
306
|
-
Authorization: `Bearer ${token}`
|
|
364
|
+
...authHeaders
|
|
307
365
|
}
|
|
308
366
|
};
|
|
309
367
|
switch (method) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-http-client.js","sourceRoot":"","sources":["../../src/utils/internal-http-client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAMe;AACf,
|
|
1
|
+
{"version":3,"file":"internal-http-client.js","sourceRoot":"","sources":["../../src/utils/internal-http-client.ts"],"names":[],"mappings":"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"}
|