@revenium/openai 1.0.13 → 1.0.14
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/.env.example +10 -15
- package/CHANGELOG.md +44 -11
- package/CODE_OF_CONDUCT.md +57 -0
- package/CONTRIBUTING.md +38 -0
- package/README.md +104 -216
- package/SECURITY.md +34 -0
- package/dist/cjs/core/client/index.js +14 -0
- package/dist/cjs/core/client/index.js.map +1 -0
- package/dist/cjs/core/client/manager.js +109 -0
- package/dist/cjs/core/client/manager.js.map +1 -0
- package/dist/cjs/core/config/azure-config.js +5 -17
- package/dist/cjs/core/config/azure-config.js.map +1 -1
- package/dist/cjs/core/config/index.js +2 -2
- package/dist/cjs/core/config/index.js.map +1 -1
- package/dist/cjs/core/config/loader.js +34 -14
- package/dist/cjs/core/config/loader.js.map +1 -1
- package/dist/cjs/core/config/manager.js +11 -5
- package/dist/cjs/core/config/manager.js.map +1 -1
- package/dist/cjs/core/config/validator.js +3 -45
- package/dist/cjs/core/config/validator.js.map +1 -1
- package/dist/cjs/core/middleware/index.js +17 -0
- package/dist/cjs/core/middleware/index.js.map +1 -0
- package/dist/cjs/core/middleware/interfaces.js +361 -0
- package/dist/cjs/core/middleware/interfaces.js.map +1 -0
- package/dist/cjs/core/middleware/revenium-client.js +142 -0
- package/dist/cjs/core/middleware/revenium-client.js.map +1 -0
- package/dist/cjs/core/providers/detector.js +45 -23
- package/dist/cjs/core/providers/detector.js.map +1 -1
- package/dist/cjs/core/providers/index.js +2 -1
- package/dist/cjs/core/providers/index.js.map +1 -1
- package/dist/cjs/core/tracking/api-client.js +14 -13
- package/dist/cjs/core/tracking/api-client.js.map +1 -1
- package/dist/cjs/core/tracking/payload-builder.js +15 -25
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
- package/dist/cjs/core/tracking/usage-tracker.js +22 -18
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
- package/dist/cjs/index.js +26 -195
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/index.js +0 -8
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/openai-augmentation.js +0 -49
- package/dist/cjs/types/openai-augmentation.js.map +1 -1
- package/dist/cjs/utils/constants.js +17 -20
- package/dist/cjs/utils/constants.js.map +1 -1
- package/dist/cjs/utils/error-handler.js +18 -14
- package/dist/cjs/utils/error-handler.js.map +1 -1
- package/dist/cjs/utils/metadata-builder.js +17 -16
- package/dist/cjs/utils/metadata-builder.js.map +1 -1
- package/dist/cjs/utils/provider-detection.js +25 -28
- package/dist/cjs/utils/provider-detection.js.map +1 -1
- package/dist/esm/core/client/index.js +6 -0
- package/dist/esm/core/client/index.js.map +1 -0
- package/dist/esm/core/client/manager.js +102 -0
- package/dist/esm/core/client/manager.js.map +1 -0
- package/dist/esm/core/config/azure-config.js +6 -18
- package/dist/esm/core/config/azure-config.js.map +1 -1
- package/dist/esm/core/config/index.js +5 -4
- package/dist/esm/core/config/index.js.map +1 -1
- package/dist/esm/core/config/loader.js +33 -13
- package/dist/esm/core/config/loader.js.map +1 -1
- package/dist/esm/core/config/manager.js +13 -7
- package/dist/esm/core/config/manager.js.map +1 -1
- package/dist/esm/core/config/validator.js +3 -44
- package/dist/esm/core/config/validator.js.map +1 -1
- package/dist/esm/core/middleware/index.js +8 -0
- package/dist/esm/core/middleware/index.js.map +1 -0
- package/dist/esm/core/middleware/interfaces.js +353 -0
- package/dist/esm/core/middleware/interfaces.js.map +1 -0
- package/dist/esm/core/middleware/revenium-client.js +105 -0
- package/dist/esm/core/middleware/revenium-client.js.map +1 -0
- package/dist/esm/core/providers/detector.js +43 -22
- package/dist/esm/core/providers/detector.js.map +1 -1
- package/dist/esm/core/providers/index.js +2 -2
- package/dist/esm/core/providers/index.js.map +1 -1
- package/dist/esm/core/tracking/api-client.js +13 -12
- package/dist/esm/core/tracking/api-client.js.map +1 -1
- package/dist/esm/core/tracking/payload-builder.js +16 -26
- package/dist/esm/core/tracking/payload-builder.js.map +1 -1
- package/dist/esm/core/tracking/usage-tracker.js +24 -20
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
- package/dist/esm/index.js +9 -177
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/index.js +2 -10
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/openai-augmentation.js +0 -49
- package/dist/esm/types/openai-augmentation.js.map +1 -1
- package/dist/esm/utils/constants.js +16 -19
- package/dist/esm/utils/constants.js.map +1 -1
- package/dist/esm/utils/error-handler.js +19 -15
- package/dist/esm/utils/error-handler.js.map +1 -1
- package/dist/esm/utils/metadata-builder.js +17 -16
- package/dist/esm/utils/metadata-builder.js.map +1 -1
- package/dist/esm/utils/provider-detection.js +26 -29
- package/dist/esm/utils/provider-detection.js.map +1 -1
- package/dist/types/core/client/index.d.ts +6 -0
- package/dist/types/core/client/index.d.ts.map +1 -0
- package/dist/types/core/client/manager.d.ts +32 -0
- package/dist/types/core/client/manager.d.ts.map +1 -0
- package/dist/types/core/config/azure-config.d.ts +2 -2
- package/dist/types/core/config/azure-config.d.ts.map +1 -1
- package/dist/types/core/config/index.d.ts +4 -4
- package/dist/types/core/config/index.d.ts.map +1 -1
- package/dist/types/core/config/loader.d.ts +3 -1
- package/dist/types/core/config/loader.d.ts.map +1 -1
- package/dist/types/core/config/manager.d.ts +1 -1
- package/dist/types/core/config/manager.d.ts.map +1 -1
- package/dist/types/core/config/validator.d.ts +1 -12
- package/dist/types/core/config/validator.d.ts.map +1 -1
- package/dist/types/core/middleware/index.d.ts +8 -0
- package/dist/types/core/middleware/index.d.ts.map +1 -0
- package/dist/types/core/middleware/interfaces.d.ts +74 -0
- package/dist/types/core/middleware/interfaces.d.ts.map +1 -0
- package/dist/types/core/middleware/revenium-client.d.ts +58 -0
- package/dist/types/core/middleware/revenium-client.d.ts.map +1 -0
- package/dist/types/core/providers/detector.d.ts +9 -2
- package/dist/types/core/providers/detector.d.ts.map +1 -1
- package/dist/types/core/providers/index.d.ts +2 -2
- package/dist/types/core/providers/index.d.ts.map +1 -1
- package/dist/types/core/tracking/api-client.d.ts +1 -1
- package/dist/types/core/tracking/api-client.d.ts.map +1 -1
- package/dist/types/core/tracking/payload-builder.d.ts +3 -3
- package/dist/types/core/tracking/payload-builder.d.ts.map +1 -1
- package/dist/types/core/tracking/usage-tracker.d.ts +2 -2
- package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -1
- package/dist/types/index.d.ts +11 -135
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/function-parameters.d.ts +2 -23
- package/dist/types/types/function-parameters.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +11 -105
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/openai-augmentation.d.ts +4 -138
- package/dist/types/types/openai-augmentation.d.ts.map +1 -1
- package/dist/types/utils/constants.d.ts +7 -1
- package/dist/types/utils/constants.d.ts.map +1 -1
- package/dist/types/utils/error-handler.d.ts +2 -2
- package/dist/types/utils/error-handler.d.ts.map +1 -1
- package/dist/types/utils/metadata-builder.d.ts +2 -2
- package/dist/types/utils/metadata-builder.d.ts.map +1 -1
- package/dist/types/utils/provider-detection.d.ts +3 -3
- package/dist/types/utils/provider-detection.d.ts.map +1 -1
- package/examples/README.md +282 -198
- package/examples/azure/basic.ts +62 -0
- package/examples/azure/responses-basic.ts +45 -0
- package/examples/azure/responses-stream.ts +61 -0
- package/examples/azure/stream.ts +56 -0
- package/examples/getting_started.ts +31 -43
- package/examples/openai/basic.ts +45 -0
- package/examples/openai/metadata.ts +67 -0
- package/examples/openai/responses-basic.ts +44 -0
- package/examples/openai/responses-embed.ts +34 -0
- package/examples/openai/responses-streaming.ts +63 -0
- package/examples/openai/streaming.ts +59 -0
- package/package.json +20 -13
- package/dist/cjs/core/wrapper/index.js +0 -15
- package/dist/cjs/core/wrapper/index.js.map +0 -1
- package/dist/cjs/core/wrapper/instance-patcher.js +0 -202
- package/dist/cjs/core/wrapper/instance-patcher.js.map +0 -1
- package/dist/cjs/core/wrapper/request-handler.js +0 -317
- package/dist/cjs/core/wrapper/request-handler.js.map +0 -1
- package/dist/cjs/core/wrapper/stream-wrapper.js +0 -82
- package/dist/cjs/core/wrapper/stream-wrapper.js.map +0 -1
- package/dist/cjs/utils/azure-model-resolver.js +0 -211
- package/dist/cjs/utils/azure-model-resolver.js.map +0 -1
- package/dist/cjs/utils/request-handler-factory.js +0 -185
- package/dist/cjs/utils/request-handler-factory.js.map +0 -1
- package/dist/esm/core/wrapper/index.js +0 -9
- package/dist/esm/core/wrapper/index.js.map +0 -1
- package/dist/esm/core/wrapper/instance-patcher.js +0 -199
- package/dist/esm/core/wrapper/instance-patcher.js.map +0 -1
- package/dist/esm/core/wrapper/request-handler.js +0 -310
- package/dist/esm/core/wrapper/request-handler.js.map +0 -1
- package/dist/esm/core/wrapper/stream-wrapper.js +0 -79
- package/dist/esm/core/wrapper/stream-wrapper.js.map +0 -1
- package/dist/esm/utils/azure-model-resolver.js +0 -204
- package/dist/esm/utils/azure-model-resolver.js.map +0 -1
- package/dist/esm/utils/request-handler-factory.js +0 -146
- package/dist/esm/utils/request-handler-factory.js.map +0 -1
- package/dist/types/core/wrapper/index.d.ts +0 -8
- package/dist/types/core/wrapper/index.d.ts.map +0 -1
- package/dist/types/core/wrapper/instance-patcher.d.ts +0 -33
- package/dist/types/core/wrapper/instance-patcher.d.ts.map +0 -1
- package/dist/types/core/wrapper/request-handler.d.ts +0 -29
- package/dist/types/core/wrapper/request-handler.d.ts.map +0 -1
- package/dist/types/core/wrapper/stream-wrapper.d.ts +0 -13
- package/dist/types/core/wrapper/stream-wrapper.d.ts.map +0 -1
- package/dist/types/utils/azure-model-resolver.d.ts +0 -41
- package/dist/types/utils/azure-model-resolver.d.ts.map +0 -1
- package/dist/types/utils/request-handler-factory.d.ts +0 -81
- package/dist/types/utils/request-handler-factory.d.ts.map +0 -1
- package/examples/azure-basic.ts +0 -206
- package/examples/azure-responses-basic.ts +0 -233
- package/examples/azure-responses-streaming.ts +0 -255
- package/examples/azure-streaming.ts +0 -209
- package/examples/openai-basic.ts +0 -147
- package/examples/openai-function-calling.ts +0 -259
- package/examples/openai-responses-basic.ts +0 -212
- package/examples/openai-responses-streaming.ts +0 -232
- package/examples/openai-streaming.ts +0 -172
- package/examples/openai-vision.ts +0 -289
- package/src/core/config/azure-config.ts +0 -72
- package/src/core/config/index.ts +0 -23
- package/src/core/config/loader.ts +0 -66
- package/src/core/config/manager.ts +0 -95
- package/src/core/config/validator.ts +0 -89
- package/src/core/providers/detector.ts +0 -159
- package/src/core/providers/index.ts +0 -16
- package/src/core/tracking/api-client.ts +0 -78
- package/src/core/tracking/index.ts +0 -21
- package/src/core/tracking/payload-builder.ts +0 -137
- package/src/core/tracking/usage-tracker.ts +0 -189
- package/src/core/wrapper/index.ts +0 -9
- package/src/core/wrapper/instance-patcher.ts +0 -288
- package/src/core/wrapper/request-handler.ts +0 -423
- package/src/core/wrapper/stream-wrapper.ts +0 -100
- package/src/index.ts +0 -360
- package/src/types/function-parameters.ts +0 -251
- package/src/types/index.ts +0 -310
- package/src/types/openai-augmentation.ts +0 -232
- package/src/types/responses-api.ts +0 -308
- package/src/utils/azure-model-resolver.ts +0 -220
- package/src/utils/constants.ts +0 -21
- package/src/utils/error-handler.ts +0 -251
- package/src/utils/metadata-builder.ts +0 -228
- package/src/utils/provider-detection.ts +0 -257
- package/src/utils/request-handler-factory.ts +0 -285
- package/src/utils/stop-reason-mapper.ts +0 -78
- package/src/utils/type-guards.ts +0 -202
- package/src/utils/url-builder.ts +0 -68
|
@@ -10,23 +10,23 @@ exports.sendReveniumMetrics = sendReveniumMetrics;
|
|
|
10
10
|
exports.sendReveniumEmbeddingsMetrics = sendReveniumEmbeddingsMetrics;
|
|
11
11
|
exports.trackUsageAsync = trackUsageAsync;
|
|
12
12
|
exports.trackEmbeddingsUsageAsync = trackEmbeddingsUsageAsync;
|
|
13
|
-
const
|
|
13
|
+
const config_1 = require("../config");
|
|
14
14
|
const api_client_js_1 = require("./api-client.js");
|
|
15
15
|
const payload_builder_js_1 = require("./payload-builder.js");
|
|
16
16
|
const error_handler_js_1 = require("../../utils/error-handler.js");
|
|
17
17
|
// Global logger
|
|
18
|
-
const logger = (0,
|
|
18
|
+
const logger = (0, config_1.getLogger)();
|
|
19
19
|
/**
|
|
20
20
|
* Chat completions tracking - now a thin wrapper with Azure support
|
|
21
21
|
*/
|
|
22
22
|
async function sendReveniumMetrics(response, request, startTime, duration, providerInfo) {
|
|
23
23
|
await (0, error_handler_js_1.safeAsyncOperation)(async () => {
|
|
24
|
-
const payload = (0, payload_builder_js_1.buildPayload)(
|
|
24
|
+
const payload = (0, payload_builder_js_1.buildPayload)("CHAT", response, request, startTime, duration, providerInfo);
|
|
25
25
|
await (0, api_client_js_1.sendToRevenium)(payload);
|
|
26
|
-
},
|
|
26
|
+
}, "Chat completion tracking", {
|
|
27
27
|
logError: true,
|
|
28
28
|
rethrow: false, // Don't rethrow to maintain fire-and-forget behavior
|
|
29
|
-
messagePrefix:
|
|
29
|
+
messagePrefix: "Chat completion tracking failed: ",
|
|
30
30
|
}, logger);
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
@@ -34,12 +34,12 @@ async function sendReveniumMetrics(response, request, startTime, duration, provi
|
|
|
34
34
|
*/
|
|
35
35
|
async function sendReveniumEmbeddingsMetrics(response, request, startTime, duration, providerInfo) {
|
|
36
36
|
await (0, error_handler_js_1.safeAsyncOperation)(async () => {
|
|
37
|
-
const payload = (0, payload_builder_js_1.buildPayload)(
|
|
37
|
+
const payload = (0, payload_builder_js_1.buildPayload)("EMBED", response, request, startTime, duration, providerInfo);
|
|
38
38
|
await (0, api_client_js_1.sendToRevenium)(payload);
|
|
39
|
-
},
|
|
39
|
+
}, "Embeddings tracking", {
|
|
40
40
|
logError: true,
|
|
41
41
|
rethrow: false, // Don't rethrow to maintain fire-and-forget behavior
|
|
42
|
-
messagePrefix:
|
|
42
|
+
messagePrefix: "Embeddings tracking failed: ",
|
|
43
43
|
}, logger);
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
@@ -53,8 +53,12 @@ function trackUsageAsync(trackingData) {
|
|
|
53
53
|
prompt_tokens: trackingData.promptTokens,
|
|
54
54
|
completion_tokens: trackingData.completionTokens,
|
|
55
55
|
total_tokens: trackingData.totalTokens,
|
|
56
|
-
...(trackingData.reasoningTokens && {
|
|
57
|
-
|
|
56
|
+
...(trackingData.reasoningTokens && {
|
|
57
|
+
reasoning_tokens: trackingData.reasoningTokens,
|
|
58
|
+
}),
|
|
59
|
+
...(trackingData.cachedTokens && {
|
|
60
|
+
cached_tokens: trackingData.cachedTokens,
|
|
61
|
+
}),
|
|
58
62
|
},
|
|
59
63
|
choices: [
|
|
60
64
|
{
|
|
@@ -71,15 +75,15 @@ function trackUsageAsync(trackingData) {
|
|
|
71
75
|
const startTime = Date.now() - trackingData.duration;
|
|
72
76
|
sendReveniumMetrics(mockResponse, mockRequest, startTime, trackingData.duration, trackingData.providerInfo)
|
|
73
77
|
.then(() => {
|
|
74
|
-
logger.debug(
|
|
78
|
+
logger.debug("Usage tracking completed successfully", {
|
|
75
79
|
requestId: trackingData.requestId,
|
|
76
80
|
model: trackingData.model,
|
|
77
81
|
totalTokens: trackingData.totalTokens,
|
|
78
82
|
isStreamed: trackingData.isStreamed,
|
|
79
83
|
});
|
|
80
84
|
})
|
|
81
|
-
.catch(error => {
|
|
82
|
-
logger.warn(
|
|
85
|
+
.catch((error) => {
|
|
86
|
+
logger.warn("Usage tracking failed", {
|
|
83
87
|
error: error instanceof Error ? error.message : String(error),
|
|
84
88
|
requestId: trackingData.requestId,
|
|
85
89
|
model: trackingData.model,
|
|
@@ -97,21 +101,21 @@ function trackEmbeddingsUsageAsync(trackingData) {
|
|
|
97
101
|
total_tokens: trackingData.totalTokens,
|
|
98
102
|
},
|
|
99
103
|
data: [], // Mock empty data array for type compliance
|
|
100
|
-
object:
|
|
104
|
+
object: "list",
|
|
101
105
|
};
|
|
102
106
|
const mockRequest = {
|
|
103
107
|
model: trackingData.model,
|
|
104
|
-
input:
|
|
108
|
+
input: "", // Mock empty input for type compliance
|
|
105
109
|
usageMetadata: trackingData.usageMetadata,
|
|
106
110
|
};
|
|
107
111
|
sendReveniumEmbeddingsMetrics(mockResponse, mockRequest, trackingData.requestStartTime, trackingData.duration, trackingData.providerInfo)
|
|
108
112
|
.then(() => {
|
|
109
|
-
logger.debug(
|
|
113
|
+
logger.debug("Embeddings tracking completed successfully", {
|
|
110
114
|
transactionId: trackingData.transactionId,
|
|
111
115
|
});
|
|
112
116
|
})
|
|
113
|
-
.catch(error => {
|
|
114
|
-
logger.warn(
|
|
117
|
+
.catch((error) => {
|
|
118
|
+
logger.warn("Embeddings tracking failed", {
|
|
115
119
|
error: error instanceof Error ? error.message : String(error),
|
|
116
120
|
transactionId: trackingData.transactionId,
|
|
117
121
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -3,214 +3,45 @@
|
|
|
3
3
|
* Revenium OpenAI Middleware for TypeScript
|
|
4
4
|
*
|
|
5
5
|
* This middleware tracks OpenAI usage and sends metrics to Revenium.
|
|
6
|
-
* Uses hybrid initialization: auto-initializes on import with graceful fallback to manual init.
|
|
7
|
-
*
|
|
8
|
-
* Environment Variables:
|
|
9
|
-
* REVENIUM_METERING_API_KEY=hak_your_api_key
|
|
10
|
-
* REVENIUM_METERING_BASE_URL=https://api.revenium.ai (optional)
|
|
11
|
-
* OPENAI_API_KEY=sk_your_openai_key
|
|
12
|
-
*
|
|
13
|
-
* Simple Usage (auto-initialization):
|
|
14
|
-
* import { patchOpenAIInstance } from '@revenium/openai';
|
|
15
|
-
* import OpenAI from 'openai';
|
|
16
|
-
*
|
|
17
|
-
* const openai = patchOpenAIInstance(new OpenAI());
|
|
18
|
-
* // Auto-initializes from environment variables
|
|
19
|
-
*
|
|
20
|
-
* Advanced Usage (explicit initialization):
|
|
21
|
-
* import { initializeReveniumFromEnv, patchOpenAIInstance } from '@revenium/openai';
|
|
22
|
-
* import OpenAI from 'openai';
|
|
23
|
-
*
|
|
24
|
-
* const result = initializeReveniumFromEnv();
|
|
25
|
-
* if (!result.success) {
|
|
26
|
-
* throw new Error(result.message);
|
|
27
|
-
* }
|
|
28
|
-
* const openai = patchOpenAIInstance(new OpenAI());
|
|
29
|
-
*
|
|
30
|
-
* const response = await openai.chat.completions.create({
|
|
31
|
-
* model: 'gpt-4',
|
|
32
|
-
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
33
|
-
* usageMetadata: {
|
|
34
|
-
* subscriber: {
|
|
35
|
-
* id: 'user-123',
|
|
36
|
-
* email: 'user@my-org.com'
|
|
37
|
-
* },
|
|
38
|
-
* organizationId: 'my-org',
|
|
39
|
-
* productId: 'my-app'
|
|
40
|
-
* }
|
|
41
|
-
* });
|
|
42
6
|
*/
|
|
43
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.
|
|
45
|
-
exports.initializeRevenium = initializeRevenium;
|
|
46
|
-
exports.configure = configure;
|
|
47
|
-
exports.initializeReveniumFromEnv = initializeReveniumFromEnv;
|
|
48
|
-
exports.isReveniumInitialized = isReveniumInitialized;
|
|
49
|
-
exports.getInitializationStatus = getInitializationStatus;
|
|
8
|
+
exports.getProviderMetadata = exports.validateAzureConfig = exports.hasAzureConfig = exports.detectProvider = exports.trackEmbeddingsUsageAsync = exports.trackUsageAsync = exports.StreamingWrapper = exports.ResponsesInterface = exports.EmbeddingsInterface = exports.CompletionsInterface = exports.ChatInterface = exports.ReveniumOpenAI = exports.Configure = exports.Reset = exports.IsInitialized = exports.GetClient = exports.Initialize = void 0;
|
|
50
9
|
// Import type augmentations to extend OpenAI types with usageMetadata
|
|
51
10
|
require("./types/openai-augmentation.js");
|
|
52
|
-
// Import from new modular structure
|
|
53
|
-
const index_js_1 = require("./core/config/index.js");
|
|
54
|
-
const index_js_2 = require("./core/wrapper/index.js");
|
|
55
|
-
// Track initialization state
|
|
56
|
-
let isInitialized = false;
|
|
57
|
-
let autoInitAttempted = false;
|
|
58
11
|
// Note: ExtendedChatCompletionCreateParams and ExtendedEmbeddingCreateParams are no longer exported
|
|
59
12
|
// as they have been replaced with seamless TypeScript module augmentation. The usageMetadata field
|
|
60
13
|
// is now natively available on OpenAI's types without requiring additional imports.
|
|
61
|
-
// Export tracking functions
|
|
62
|
-
var index_js_3 = require("./core/tracking/index.js");
|
|
63
|
-
Object.defineProperty(exports, "trackUsageAsync", { enumerable: true, get: function () { return index_js_3.trackUsageAsync; } });
|
|
64
|
-
Object.defineProperty(exports, "trackEmbeddingsUsageAsync", { enumerable: true, get: function () { return index_js_3.trackEmbeddingsUsageAsync; } });
|
|
65
|
-
// Export provider detection functions
|
|
66
|
-
var index_js_4 = require("./core/providers/index.js");
|
|
67
|
-
Object.defineProperty(exports, "detectProvider", { enumerable: true, get: function () { return index_js_4.detectProvider; } });
|
|
68
|
-
Object.defineProperty(exports, "hasAzureConfig", { enumerable: true, get: function () { return index_js_4.hasAzureConfig; } });
|
|
69
|
-
Object.defineProperty(exports, "validateAzureConfig", { enumerable: true, get: function () { return index_js_4.validateAzureConfig; } });
|
|
70
|
-
Object.defineProperty(exports, "getProviderMetadata", { enumerable: true, get: function () { return index_js_4.getProviderMetadata; } });
|
|
71
|
-
var index_js_5 = require("./core/wrapper/index.js");
|
|
72
|
-
Object.defineProperty(exports, "getProviderInfo", { enumerable: true, get: function () { return index_js_5.getProviderInfo; } });
|
|
73
|
-
// Export Azure model resolution functions
|
|
74
|
-
var azure_model_resolver_js_1 = require("./utils/azure-model-resolver.js");
|
|
75
|
-
Object.defineProperty(exports, "resolveAzureModelName", { enumerable: true, get: function () { return azure_model_resolver_js_1.resolveAzureModelName; } });
|
|
76
|
-
Object.defineProperty(exports, "clearModelNameCache", { enumerable: true, get: function () { return azure_model_resolver_js_1.clearModelNameCache; } });
|
|
77
|
-
Object.defineProperty(exports, "getModelNameCacheStats", { enumerable: true, get: function () { return azure_model_resolver_js_1.getModelNameCacheStats; } });
|
|
78
|
-
Object.defineProperty(exports, "batchResolveModelNames", { enumerable: true, get: function () { return azure_model_resolver_js_1.batchResolveModelNames; } });
|
|
79
|
-
Object.defineProperty(exports, "wouldTransformDeploymentName", { enumerable: true, get: function () { return azure_model_resolver_js_1.wouldTransformDeploymentName; } });
|
|
80
|
-
// Global logger
|
|
81
|
-
const logger = (0, index_js_1.getLogger)();
|
|
82
|
-
/**
|
|
83
|
-
* Initialize Revenium middleware with configuration
|
|
84
|
-
*/
|
|
85
|
-
function initializeRevenium(config) {
|
|
86
|
-
// Check if already initialized to prevent duplicate initialization
|
|
87
|
-
if (isInitialized) {
|
|
88
|
-
return {
|
|
89
|
-
success: true,
|
|
90
|
-
message: 'Revenium middleware already initialized',
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
try {
|
|
94
|
-
// Apply default base URL if not provided
|
|
95
|
-
const configWithDefaults = {
|
|
96
|
-
...config,
|
|
97
|
-
reveniumBaseUrl: config.reveniumBaseUrl || 'https://api.revenium.ai',
|
|
98
|
-
};
|
|
99
|
-
(0, index_js_1.validateConfig)(configWithDefaults);
|
|
100
|
-
(0, index_js_1.setConfig)(configWithDefaults);
|
|
101
|
-
// Mark as initialized
|
|
102
|
-
isInitialized = true;
|
|
103
|
-
// Patch OpenAI prototype methods
|
|
104
|
-
(0, index_js_2.patchOpenAI)();
|
|
105
|
-
return {
|
|
106
|
-
success: true,
|
|
107
|
-
message: 'Revenium middleware initialized successfully',
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
isInitialized = false;
|
|
112
|
-
return {
|
|
113
|
-
success: false,
|
|
114
|
-
message: error instanceof Error ? error.message : 'Unknown initialization error',
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Configure Revenium middleware manually
|
|
120
|
-
* Alias for initializeRevenium() with a more intuitive name
|
|
121
|
-
*
|
|
122
|
-
* @param config - Revenium configuration object
|
|
123
|
-
* @returns Initialization result with success status and message
|
|
124
|
-
*
|
|
125
|
-
* @example
|
|
126
|
-
* ```typescript
|
|
127
|
-
* import { configure } from '@revenium/openai';
|
|
128
|
-
*
|
|
129
|
-
* configure({
|
|
130
|
-
* reveniumApiKey: 'hak_your_api_key',
|
|
131
|
-
* reveniumBaseUrl: 'https://api.revenium.ai',
|
|
132
|
-
* });
|
|
133
|
-
* ```
|
|
134
|
-
*/
|
|
135
|
-
function configure(config) {
|
|
136
|
-
return initializeRevenium(config);
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Initialize Revenium middleware from environment variables
|
|
140
|
-
*/
|
|
141
|
-
function initializeReveniumFromEnv() {
|
|
142
|
-
// Check if already initialized to prevent duplicate initialization
|
|
143
|
-
if (isInitialized) {
|
|
144
|
-
return {
|
|
145
|
-
success: true,
|
|
146
|
-
message: 'Revenium middleware already initialized',
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
const envSuccess = (0, index_js_1.initializeConfig)();
|
|
150
|
-
if (!envSuccess) {
|
|
151
|
-
isInitialized = false;
|
|
152
|
-
return {
|
|
153
|
-
success: false,
|
|
154
|
-
message: 'Failed to load configuration from environment variables. Check REVENIUM_METERING_API_KEY and REVENIUM_METERING_BASE_URL.',
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
// Mark as initialized
|
|
158
|
-
isInitialized = true;
|
|
159
|
-
// Patch OpenAI prototype methods
|
|
160
|
-
(0, index_js_2.patchOpenAI)();
|
|
161
|
-
return {
|
|
162
|
-
success: true,
|
|
163
|
-
message: 'Revenium middleware initialized from environment',
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
14
|
/**
|
|
167
|
-
*
|
|
15
|
+
* Main API
|
|
168
16
|
*/
|
|
169
|
-
var
|
|
170
|
-
Object.defineProperty(exports, "
|
|
17
|
+
var client_1 = require("./core/client");
|
|
18
|
+
Object.defineProperty(exports, "Initialize", { enumerable: true, get: function () { return client_1.Initialize; } });
|
|
19
|
+
Object.defineProperty(exports, "GetClient", { enumerable: true, get: function () { return client_1.GetClient; } });
|
|
20
|
+
Object.defineProperty(exports, "IsInitialized", { enumerable: true, get: function () { return client_1.IsInitialized; } });
|
|
21
|
+
Object.defineProperty(exports, "Reset", { enumerable: true, get: function () { return client_1.Reset; } });
|
|
22
|
+
Object.defineProperty(exports, "Configure", { enumerable: true, get: function () { return client_1.Configure; } });
|
|
171
23
|
/**
|
|
172
|
-
*
|
|
173
|
-
* Attempts to initialize from environment variables on module load.
|
|
174
|
-
* If it fails, logs a debug message but doesn't throw - allows manual configuration later.
|
|
24
|
+
* Middleware classes
|
|
175
25
|
*/
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
// Auto-init succeeded - log debug message
|
|
184
|
-
logger.debug('Revenium middleware auto-initialized from environment variables');
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
// Auto-init failed - log debug message but don't throw
|
|
188
|
-
logger.debug('Auto-initialization failed, manual initialization required:', result.message);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
catch (error) {
|
|
192
|
-
// Unexpected error during auto-init - log but don't throw
|
|
193
|
-
logger.debug('Auto-initialization encountered error:', error instanceof Error ? error.message : String(error));
|
|
194
|
-
}
|
|
195
|
-
}
|
|
26
|
+
var middleware_1 = require("./core/middleware");
|
|
27
|
+
Object.defineProperty(exports, "ReveniumOpenAI", { enumerable: true, get: function () { return middleware_1.ReveniumOpenAI; } });
|
|
28
|
+
Object.defineProperty(exports, "ChatInterface", { enumerable: true, get: function () { return middleware_1.ChatInterface; } });
|
|
29
|
+
Object.defineProperty(exports, "CompletionsInterface", { enumerable: true, get: function () { return middleware_1.CompletionsInterface; } });
|
|
30
|
+
Object.defineProperty(exports, "EmbeddingsInterface", { enumerable: true, get: function () { return middleware_1.EmbeddingsInterface; } });
|
|
31
|
+
Object.defineProperty(exports, "ResponsesInterface", { enumerable: true, get: function () { return middleware_1.ResponsesInterface; } });
|
|
32
|
+
Object.defineProperty(exports, "StreamingWrapper", { enumerable: true, get: function () { return middleware_1.StreamingWrapper; } });
|
|
196
33
|
/**
|
|
197
|
-
*
|
|
34
|
+
* Tracking functions (for advanced use cases)
|
|
198
35
|
*/
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
36
|
+
var tracking_1 = require("./core/tracking");
|
|
37
|
+
Object.defineProperty(exports, "trackUsageAsync", { enumerable: true, get: function () { return tracking_1.trackUsageAsync; } });
|
|
38
|
+
Object.defineProperty(exports, "trackEmbeddingsUsageAsync", { enumerable: true, get: function () { return tracking_1.trackEmbeddingsUsageAsync; } });
|
|
202
39
|
/**
|
|
203
|
-
*
|
|
40
|
+
* Provider detection functions
|
|
204
41
|
*/
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
hasApiKey: !!config?.reveniumApiKey,
|
|
211
|
-
autoInitAttempted,
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
// Perform auto-initialization when module is imported
|
|
215
|
-
attemptAutoInitialization();
|
|
42
|
+
var providers_1 = require("./core/providers");
|
|
43
|
+
Object.defineProperty(exports, "detectProvider", { enumerable: true, get: function () { return providers_1.detectProvider; } });
|
|
44
|
+
Object.defineProperty(exports, "hasAzureConfig", { enumerable: true, get: function () { return providers_1.hasAzureConfig; } });
|
|
45
|
+
Object.defineProperty(exports, "validateAzureConfig", { enumerable: true, get: function () { return providers_1.validateAzureConfig; } });
|
|
46
|
+
Object.defineProperty(exports, "getProviderMetadata", { enumerable: true, get: function () { return providers_1.getProviderMetadata; } });
|
|
216
47
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,sEAAsE;AACtE,0CAAwC;AA8DxC,oGAAoG;AACpG,mGAAmG;AACnG,oFAAoF;AAEpF;;GAEG;AACH,wCAMuB;AALrB,oGAAA,UAAU,OAAA;AACV,mGAAA,SAAS,OAAA;AACT,uGAAA,aAAa,OAAA;AACb,+FAAA,KAAK,OAAA;AACL,mGAAA,SAAS,OAAA;AAGX;;GAEG;AACH,gDAO2B;AANzB,4GAAA,cAAc,OAAA;AACd,2GAAA,aAAa,OAAA;AACb,kHAAA,oBAAoB,OAAA;AACpB,iHAAA,mBAAmB,OAAA;AACnB,gHAAA,kBAAkB,OAAA;AAClB,8GAAA,gBAAgB,OAAA;AAGlB;;GAEG;AACH,4CAA6E;AAApE,2GAAA,eAAe,OAAA;AAAE,qHAAA,yBAAyB,OAAA;AAEnD;;GAEG;AACH,8CAK0B;AAJxB,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AACd,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA"}
|
package/dist/cjs/types/index.js
CHANGED
|
@@ -30,14 +30,6 @@ __exportStar(require("./responses-api.js"), exports);
|
|
|
30
30
|
*
|
|
31
31
|
* Enumeration of AI providers supported by the Revenium middleware.
|
|
32
32
|
* Used for automatic detection, routing, and provider-specific handling.
|
|
33
|
-
*
|
|
34
|
-
* @public
|
|
35
|
-
* @example
|
|
36
|
-
* ```typescript
|
|
37
|
-
* if (providerInfo.provider === Provider.AZURE_OPENAI) {
|
|
38
|
-
* console.log('Using Azure OpenAI');
|
|
39
|
-
* }
|
|
40
|
-
* ```
|
|
41
33
|
*/
|
|
42
34
|
var Provider;
|
|
43
35
|
(function (Provider) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,qCAAqC;AACrC,2DAAyC;AAEzC,gCAAgC;AAChC,qDAAmC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,qCAAqC;AACrC,2DAAyC;AAEzC,gCAAgC;AAChC,qDAAmC;AAiFnC;;;;;GAKG;AACH,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,0BAA0B;IAC1B,6BAAiB,CAAA;IACjB,2BAA2B;IAC3B,yCAA6B,CAAA;AAC/B,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB"}
|
|
@@ -1,55 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* TypeScript module augmentation for OpenAI SDK
|
|
4
|
-
*
|
|
5
|
-
* This file extends OpenAI's existing types to include the usageMetadata field
|
|
6
|
-
* through TypeScript's declaration merging feature. This provides seamless
|
|
7
|
-
* integration with the OpenAI SDK, allowing developers to use usageMetadata
|
|
8
|
-
* directly in OpenAI API calls without type casting or additional imports.
|
|
9
|
-
*
|
|
10
|
-
* The augmentation covers all major OpenAI API endpoints including:
|
|
11
|
-
* - Chat completions (streaming and non-streaming)
|
|
12
|
-
* - Embeddings
|
|
13
|
-
* - Future API endpoints as they become available
|
|
14
|
-
*
|
|
15
|
-
* @fileoverview OpenAI SDK type augmentation for Revenium middleware
|
|
16
|
-
* @author Revenium
|
|
17
|
-
* @since 1.0.0
|
|
18
|
-
*
|
|
19
|
-
* @example Basic usage with chat completions
|
|
20
|
-
* ```typescript
|
|
21
|
-
* import '@revenium/openai';
|
|
22
|
-
* import OpenAI from 'openai';
|
|
23
|
-
*
|
|
24
|
-
* const openai = new OpenAI();
|
|
25
|
-
*
|
|
26
|
-
* const response = await openai.chat.completions.create({
|
|
27
|
-
* model: 'gpt-4o-mini',
|
|
28
|
-
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
29
|
-
* usageMetadata: { // TypeScript recognizes this natively
|
|
30
|
-
* subscriber: {
|
|
31
|
-
* id: 'user-123',
|
|
32
|
-
* email: 'user@my-company.com'
|
|
33
|
-
* },
|
|
34
|
-
* organizationId: 'my-company',
|
|
35
|
-
* productId: 'chat-app',
|
|
36
|
-
* taskType: 'customer-support'
|
|
37
|
-
* }
|
|
38
|
-
* });
|
|
39
|
-
* ```
|
|
40
|
-
*
|
|
41
|
-
* @example Usage with embeddings
|
|
42
|
-
* ```typescript
|
|
43
|
-
* const embedding = await openai.embeddings.create({
|
|
44
|
-
* model: 'text-embedding-ada-002',
|
|
45
|
-
* input: 'Text to embed',
|
|
46
|
-
* usageMetadata: {
|
|
47
|
-
* subscriber: { id: 'user-456' },
|
|
48
|
-
* productId: 'search-engine',
|
|
49
|
-
* taskType: 'document-indexing'
|
|
50
|
-
* }
|
|
51
|
-
* });
|
|
52
|
-
* ```
|
|
53
4
|
*/
|
|
54
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
6
|
//# sourceMappingURL=openai-augmentation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-augmentation.js","sourceRoot":"","sources":["../../../src/types/openai-augmentation.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"openai-augmentation.js","sourceRoot":"","sources":["../../../src/types/openai-augmentation.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
'gpt-3.5-turbo',
|
|
12
|
-
'gpt-3.5-turbo-instruct',
|
|
13
|
-
'text-embedding-3-large',
|
|
14
|
-
'text-embedding-3-small',
|
|
15
|
-
'text-embedding-ada-002',
|
|
16
|
-
'dall-e-3',
|
|
17
|
-
'dall-e-2',
|
|
18
|
-
'whisper-1',
|
|
19
|
-
'tts-1',
|
|
20
|
-
'tts-1-hd'
|
|
3
|
+
exports.DEFAULT_REVENIUM_BASE_URL = exports.ERROR_MESSAGE_PATTERNS_TYPE_CONFIG = exports.MESSAGE_PATTERNS_TYPE_NETWORK = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Error message patterns for network-related errors
|
|
6
|
+
*/
|
|
7
|
+
exports.MESSAGE_PATTERNS_TYPE_NETWORK = [
|
|
8
|
+
"network",
|
|
9
|
+
"timeout",
|
|
10
|
+
"ECONNRESET",
|
|
21
11
|
];
|
|
22
|
-
|
|
23
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Error message patterns for configuration-related errors
|
|
14
|
+
*/
|
|
15
|
+
exports.ERROR_MESSAGE_PATTERNS_TYPE_CONFIG = [
|
|
16
|
+
"config",
|
|
17
|
+
"key",
|
|
18
|
+
"unauthorized",
|
|
19
|
+
];
|
|
20
|
+
exports.DEFAULT_REVENIUM_BASE_URL = "https://api.revenium.ai";
|
|
24
21
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,6BAA6B,GAAG;IAC3C,SAAS;IACT,SAAS;IACT,YAAY;CACb,CAAC;AAEF;;GAEG;AACU,QAAA,kCAAkC,GAAG;IAChD,QAAQ;IACR,KAAK;IACL,cAAc;CACf,CAAC;AAEW,QAAA,yBAAyB,GAAG,yBAAyB,CAAC"}
|
|
@@ -20,9 +20,9 @@ const constants_js_1 = require("./constants.js");
|
|
|
20
20
|
const DEFAULT_STRATEGY = {
|
|
21
21
|
logError: true,
|
|
22
22
|
rethrow: true,
|
|
23
|
-
messagePrefix:
|
|
23
|
+
messagePrefix: "",
|
|
24
24
|
fallbackValue: undefined,
|
|
25
|
-
transformError: (error) =>
|
|
25
|
+
transformError: (error) => error instanceof Error ? error : new Error(String(error)),
|
|
26
26
|
};
|
|
27
27
|
/**
|
|
28
28
|
* Safe async operation wrapper with comprehensive error handling
|
|
@@ -135,7 +135,7 @@ async function withRetry(operation, maxRetries = 3, delayMs = 1000, logger) {
|
|
|
135
135
|
nextRetryIn: delayMs,
|
|
136
136
|
});
|
|
137
137
|
}
|
|
138
|
-
await new Promise(resolve => setTimeout(resolve, delayMs));
|
|
138
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
// eslint-disable-next-line no-throw-literal
|
|
@@ -148,7 +148,7 @@ class ValidationError extends Error {
|
|
|
148
148
|
constructor(message, context) {
|
|
149
149
|
super(message);
|
|
150
150
|
this.context = context;
|
|
151
|
-
this.name =
|
|
151
|
+
this.name = "ValidationError";
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
exports.ValidationError = ValidationError;
|
|
@@ -156,7 +156,7 @@ class ConfigurationError extends Error {
|
|
|
156
156
|
constructor(message, context) {
|
|
157
157
|
super(message);
|
|
158
158
|
this.context = context;
|
|
159
|
-
this.name =
|
|
159
|
+
this.name = "ConfigurationError";
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
exports.ConfigurationError = ConfigurationError;
|
|
@@ -164,7 +164,7 @@ class NetworkError extends Error {
|
|
|
164
164
|
constructor(message, context) {
|
|
165
165
|
super(message);
|
|
166
166
|
this.context = context;
|
|
167
|
-
this.name =
|
|
167
|
+
this.name = "NetworkError";
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
exports.NetworkError = NetworkError;
|
|
@@ -173,22 +173,26 @@ exports.NetworkError = NetworkError;
|
|
|
173
173
|
*/
|
|
174
174
|
function classifyError(error) {
|
|
175
175
|
if (error instanceof ValidationError) {
|
|
176
|
-
return { type:
|
|
176
|
+
return { type: "validation", message: error.message, isRetryable: false };
|
|
177
177
|
}
|
|
178
178
|
if (error instanceof ConfigurationError) {
|
|
179
|
-
return {
|
|
179
|
+
return {
|
|
180
|
+
type: "configuration",
|
|
181
|
+
message: error.message,
|
|
182
|
+
isRetryable: false,
|
|
183
|
+
};
|
|
180
184
|
}
|
|
181
185
|
if (error instanceof NetworkError) {
|
|
182
|
-
return { type:
|
|
186
|
+
return { type: "network", message: error.message, isRetryable: true };
|
|
183
187
|
}
|
|
184
188
|
const message = error instanceof Error ? error.message : String(error);
|
|
185
189
|
// Classify based on message patterns
|
|
186
|
-
if (constants_js_1.MESSAGE_PATTERNS_TYPE_NETWORK.some(pattern => message.includes(pattern))) {
|
|
187
|
-
return { type:
|
|
190
|
+
if (constants_js_1.MESSAGE_PATTERNS_TYPE_NETWORK.some((pattern) => message.includes(pattern))) {
|
|
191
|
+
return { type: "network", message, isRetryable: true };
|
|
188
192
|
}
|
|
189
|
-
if (constants_js_1.ERROR_MESSAGE_PATTERNS_TYPE_CONFIG.some(pattern => message.includes(pattern))) {
|
|
190
|
-
return { type:
|
|
193
|
+
if (constants_js_1.ERROR_MESSAGE_PATTERNS_TYPE_CONFIG.some((pattern) => message.includes(pattern))) {
|
|
194
|
+
return { type: "configuration", message, isRetryable: false };
|
|
191
195
|
}
|
|
192
|
-
return { type:
|
|
196
|
+
return { type: "unknown", message, isRetryable: false };
|
|
193
197
|
}
|
|
194
198
|
//# sourceMappingURL=error-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/utils/error-handler.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/utils/error-handler.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA6CH,gDAuBC;AAWD,8CAuBC;AAUD,0CAOC;AAWD,kDAaC;AAWD,8BA6BC;AAsCD,sCAsCC;AAhQD,iDAGwB;AAkBxB;;GAEG;AACH,MAAM,gBAAgB,GAAoC;IACxD,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,SAAS;IACxB,cAAc,EAAE,CAAC,KAAc,EAAE,EAAE,CACjC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAC5D,CAAC;AAEF;;;;;;;;GAQG;AACI,KAAK,UAAU,kBAAkB,CACtC,SAA2B,EAC3B,OAAe,EACf,WAAkC,EAAE,EACpC,MAAe;IAEf,MAAM,MAAM,GAAG,EAAE,GAAG,gBAAgB,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEpD,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,aAAa,GAAG,OAAO,EAAE,EAAE;gBAChD,KAAK,EAAE,gBAAgB,CAAC,OAAO;gBAC/B,KAAK,EAAE,gBAAgB,CAAC,KAAK;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,OAAO;YAAE,MAAM,gBAAgB,CAAC;QAC3C,OAAO,MAAM,CAAC,aAA8B,CAAC;IAC/C,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAC/B,SAAkB,EAClB,OAAe,EACf,WAAkC,EAAE,EACpC,MAAe;IAEf,MAAM,MAAM,GAAG,EAAE,GAAG,gBAAgB,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEpD,IAAI,CAAC;QACH,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,aAAa,GAAG,OAAO,EAAE,EAAE;gBAChD,KAAK,EAAE,gBAAgB,CAAC,OAAO;gBAC/B,KAAK,EAAE,gBAAgB,CAAC,KAAK;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,OAAO;YAAE,MAAM,gBAAgB,CAAC;QAC3C,OAAO,MAAM,CAAC,aAA8B,CAAC;IAC/C,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAC7B,KAAc,EACd,SAAyC,EACzC,YAAoB;IAEpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CACjC,KAAc,EACd,SAAyC,EACzC,MAAe,EACf,OAAgB;IAEhB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO;IACT,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,SAAS,CAC7B,SAA2B,EAC3B,aAAqB,CAAC,EACtB,UAAkB,IAAI,EACtB,MAAe;IAEf,IAAI,SAAgB,CAAC;IACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtE,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,MAAM;YACR,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,+BAA+B,OAAO,IAAI,UAAU,GAAG,EAAE;oBACnE,KAAK,EAAE,SAAS,CAAC,OAAO;oBACxB,WAAW,EAAE,OAAO;iBACrB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,MAAM,SAAU,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,KAAK;IACxC,YACE,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AARD,0CAQC;AAED,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YACE,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AARD,gDAQC;AAED,MAAa,YAAa,SAAQ,KAAK;IACrC,YACE,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AARD,oCAQC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,KAAc;IAK1C,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC5E,CAAC;IAED,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;QACxC,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACxE,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvE,qCAAqC;IACrC,IACE,4CAA6B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAC1E,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACzD,CAAC;IAED,IACE,iDAAkC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC1B,EACD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC1D,CAAC"}
|