openai 6.44.0 → 6.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/README.md +85 -102
- package/_vendor/zod-to-json-schema/parseDef.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parseDef.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parseDef.js +41 -15
- package/_vendor/zod-to-json-schema/parseDef.js.map +1 -1
- package/_vendor/zod-to-json-schema/parseDef.mjs +41 -15
- package/_vendor/zod-to-json-schema/parseDef.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/branded.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/branded.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/catch.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/catch.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/default.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/default.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/nullable.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/nullable.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.js +3 -3
- package/_vendor/zod-to-json-schema/parsers/optional.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.mjs +3 -3
- package/_vendor/zod-to-json-schema/parsers/optional.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.js +3 -3
- package/_vendor/zod-to-json-schema/parsers/pipeline.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.mjs +3 -3
- package/_vendor/zod-to-json-schema/parsers/pipeline.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/promise.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/promise.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/readonly.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/readonly.mjs.map +1 -1
- package/auth/workload-identity-auth.d.mts.map +1 -1
- package/auth/workload-identity-auth.d.ts.map +1 -1
- package/auth/workload-identity-auth.js +12 -4
- package/auth/workload-identity-auth.js.map +1 -1
- package/auth/workload-identity-auth.mjs +13 -5
- package/auth/workload-identity-auth.mjs.map +1 -1
- package/azure.d.mts +3 -1
- package/azure.d.mts.map +1 -1
- package/azure.d.ts +3 -1
- package/azure.d.ts.map +1 -1
- package/azure.js.map +1 -1
- package/azure.mjs.map +1 -1
- package/beta/realtime/internal-base.d.mts +14 -1
- package/beta/realtime/internal-base.d.mts.map +1 -1
- package/beta/realtime/internal-base.d.ts +14 -1
- package/beta/realtime/internal-base.d.ts.map +1 -1
- package/beta/realtime/internal-base.js +21 -5
- package/beta/realtime/internal-base.js.map +1 -1
- package/beta/realtime/internal-base.mjs +21 -5
- package/beta/realtime/internal-base.mjs.map +1 -1
- package/beta/realtime/websocket.d.mts +3 -5
- package/beta/realtime/websocket.d.mts.map +1 -1
- package/beta/realtime/websocket.d.ts +3 -5
- package/beta/realtime/websocket.d.ts.map +1 -1
- package/beta/realtime/websocket.js +2 -3
- package/beta/realtime/websocket.js.map +1 -1
- package/beta/realtime/websocket.mjs +3 -4
- package/beta/realtime/websocket.mjs.map +1 -1
- package/beta/realtime/ws.d.mts +3 -5
- package/beta/realtime/ws.d.mts.map +1 -1
- package/beta/realtime/ws.d.ts +3 -5
- package/beta/realtime/ws.d.ts.map +1 -1
- package/beta/realtime/ws.js +2 -3
- package/beta/realtime/ws.js.map +1 -1
- package/beta/realtime/ws.mjs +3 -4
- package/beta/realtime/ws.mjs.map +1 -1
- package/client.d.mts +9 -1
- package/client.d.mts.map +1 -1
- package/client.d.ts +9 -1
- package/client.d.ts.map +1 -1
- package/client.js +56 -9
- package/client.js.map +1 -1
- package/client.mjs +56 -9
- package/client.mjs.map +1 -1
- package/helpers/zod.d.mts.map +1 -1
- package/helpers/zod.d.ts.map +1 -1
- package/helpers/zod.js +12 -0
- package/helpers/zod.js.map +1 -1
- package/helpers/zod.mjs +12 -0
- package/helpers/zod.mjs.map +1 -1
- package/internal/bedrock.d.mts +34 -0
- package/internal/bedrock.d.mts.map +1 -0
- package/internal/bedrock.d.ts +34 -0
- package/internal/bedrock.d.ts.map +1 -0
- package/internal/bedrock.js +107 -0
- package/internal/bedrock.js.map +1 -0
- package/internal/bedrock.mjs +99 -0
- package/internal/bedrock.mjs.map +1 -0
- package/internal/provider.d.mts +23 -0
- package/internal/provider.d.mts.map +1 -0
- package/internal/provider.d.ts +23 -0
- package/internal/provider.d.ts.map +1 -0
- package/internal/provider.js +36 -0
- package/internal/provider.js.map +1 -0
- package/internal/provider.mjs +32 -0
- package/internal/provider.mjs.map +1 -0
- package/internal/utils/log.d.mts.map +1 -1
- package/internal/utils/log.d.ts.map +1 -1
- package/internal/utils/log.js +1 -0
- package/internal/utils/log.js.map +1 -1
- package/internal/utils/log.mjs +1 -0
- package/internal/utils/log.mjs.map +1 -1
- package/lib/AbstractChatCompletionRunner.d.mts +15 -4
- package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
- package/lib/AbstractChatCompletionRunner.d.ts +15 -4
- package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
- package/lib/AbstractChatCompletionRunner.js +63 -40
- package/lib/AbstractChatCompletionRunner.js.map +1 -1
- package/lib/AbstractChatCompletionRunner.mjs +63 -40
- package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
- package/lib/AssistantStream.d.mts.map +1 -1
- package/lib/AssistantStream.d.ts.map +1 -1
- package/lib/AssistantStream.js +4 -24
- package/lib/AssistantStream.js.map +1 -1
- package/lib/AssistantStream.mjs +4 -24
- package/lib/AssistantStream.mjs.map +1 -1
- package/lib/ChatCompletionRunner.js +1 -1
- package/lib/ChatCompletionRunner.js.map +1 -1
- package/lib/ChatCompletionRunner.mjs +1 -1
- package/lib/ChatCompletionRunner.mjs.map +1 -1
- package/lib/ChatCompletionStream.d.mts.map +1 -1
- package/lib/ChatCompletionStream.d.ts.map +1 -1
- package/lib/ChatCompletionStream.js +4 -13
- package/lib/ChatCompletionStream.js.map +1 -1
- package/lib/ChatCompletionStream.mjs +4 -13
- package/lib/ChatCompletionStream.mjs.map +1 -1
- package/lib/ChatCompletionStreamingRunner.js +1 -1
- package/lib/ChatCompletionStreamingRunner.js.map +1 -1
- package/lib/ChatCompletionStreamingRunner.mjs +1 -1
- package/lib/ChatCompletionStreamingRunner.mjs.map +1 -1
- package/lib/EventEmitter.d.mts.map +1 -1
- package/lib/EventEmitter.d.ts.map +1 -1
- package/lib/EventEmitter.js +12 -2
- package/lib/EventEmitter.js.map +1 -1
- package/lib/EventEmitter.mjs +12 -2
- package/lib/EventEmitter.mjs.map +1 -1
- package/lib/EventStream.d.mts +1 -0
- package/lib/EventStream.d.mts.map +1 -1
- package/lib/EventStream.d.ts +1 -0
- package/lib/EventStream.d.ts.map +1 -1
- package/lib/EventStream.js +19 -2
- package/lib/EventStream.js.map +1 -1
- package/lib/EventStream.mjs +19 -2
- package/lib/EventStream.mjs.map +1 -1
- package/lib/ResponsesParser.d.mts.map +1 -1
- package/lib/ResponsesParser.d.ts.map +1 -1
- package/lib/ResponsesParser.js +12 -4
- package/lib/ResponsesParser.js.map +1 -1
- package/lib/ResponsesParser.mjs +12 -4
- package/lib/ResponsesParser.mjs.map +1 -1
- package/lib/responses/ResponseAccumulator.d.mts +10 -0
- package/lib/responses/ResponseAccumulator.d.mts.map +1 -0
- package/lib/responses/ResponseAccumulator.d.ts +10 -0
- package/lib/responses/ResponseAccumulator.d.ts.map +1 -0
- package/lib/responses/ResponseAccumulator.js +402 -0
- package/lib/responses/ResponseAccumulator.js.map +1 -0
- package/lib/responses/ResponseAccumulator.mjs +399 -0
- package/lib/responses/ResponseAccumulator.mjs.map +1 -0
- package/lib/responses/ResponseInputItems.d.mts +19 -0
- package/lib/responses/ResponseInputItems.d.mts.map +1 -0
- package/lib/responses/ResponseInputItems.d.ts +19 -0
- package/lib/responses/ResponseInputItems.d.ts.map +1 -0
- package/lib/responses/ResponseInputItems.js +102 -0
- package/lib/responses/ResponseInputItems.js.map +1 -0
- package/lib/responses/ResponseInputItems.mjs +98 -0
- package/lib/responses/ResponseInputItems.mjs.map +1 -0
- package/lib/responses/ResponseStream.d.mts.map +1 -1
- package/lib/responses/ResponseStream.d.ts.map +1 -1
- package/lib/responses/ResponseStream.js +5 -90
- package/lib/responses/ResponseStream.js.map +1 -1
- package/lib/responses/ResponseStream.mjs +5 -90
- package/lib/responses/ResponseStream.mjs.map +1 -1
- package/package.json +24 -1
- package/providers/bedrock/aws.d.mts +24 -0
- package/providers/bedrock/aws.d.mts.map +1 -0
- package/providers/bedrock/aws.d.ts +24 -0
- package/providers/bedrock/aws.d.ts.map +1 -0
- package/providers/bedrock/aws.js +170 -0
- package/providers/bedrock/aws.js.map +1 -0
- package/providers/bedrock/aws.mjs +166 -0
- package/providers/bedrock/aws.mjs.map +1 -0
- package/providers/bedrock.d.mts +7 -0
- package/providers/bedrock.d.mts.map +1 -0
- package/providers/bedrock.d.ts +7 -0
- package/providers/bedrock.d.ts.map +1 -0
- package/providers/bedrock.js +26 -0
- package/providers/bedrock.js.map +1 -0
- package/providers/bedrock.mjs +22 -0
- package/providers/bedrock.mjs.map +1 -0
- package/realtime/internal-base.d.mts +28 -1
- package/realtime/internal-base.d.mts.map +1 -1
- package/realtime/internal-base.d.ts +28 -1
- package/realtime/internal-base.d.ts.map +1 -1
- package/realtime/internal-base.js +50 -7
- package/realtime/internal-base.js.map +1 -1
- package/realtime/internal-base.mjs +49 -7
- package/realtime/internal-base.mjs.map +1 -1
- package/realtime/websocket.d.mts +4 -7
- package/realtime/websocket.d.mts.map +1 -1
- package/realtime/websocket.d.ts +4 -7
- package/realtime/websocket.d.ts.map +1 -1
- package/realtime/websocket.js +4 -8
- package/realtime/websocket.js.map +1 -1
- package/realtime/websocket.mjs +5 -9
- package/realtime/websocket.mjs.map +1 -1
- package/realtime/ws.d.mts +4 -7
- package/realtime/ws.d.mts.map +1 -1
- package/realtime/ws.d.ts +4 -7
- package/realtime/ws.d.ts.map +1 -1
- package/realtime/ws.js +4 -8
- package/realtime/ws.js.map +1 -1
- package/realtime/ws.mjs +5 -9
- package/realtime/ws.mjs.map +1 -1
- package/src/_vendor/zod-to-json-schema/parseDef.ts +44 -16
- package/src/_vendor/zod-to-json-schema/parsers/branded.ts +2 -2
- package/src/_vendor/zod-to-json-schema/parsers/catch.ts +2 -2
- package/src/_vendor/zod-to-json-schema/parsers/default.ts +6 -2
- package/src/_vendor/zod-to-json-schema/parsers/nullable.ts +13 -5
- package/src/_vendor/zod-to-json-schema/parsers/optional.ts +14 -6
- package/src/_vendor/zod-to-json-schema/parsers/pipeline.ts +3 -2
- package/src/_vendor/zod-to-json-schema/parsers/promise.ts +6 -2
- package/src/_vendor/zod-to-json-schema/parsers/readonly.ts +2 -2
- package/src/auth/workload-identity-auth.ts +16 -5
- package/src/azure.ts +4 -1
- package/src/beta/realtime/internal-base.ts +43 -5
- package/src/beta/realtime/websocket.ts +10 -7
- package/src/beta/realtime/ws.ts +10 -7
- package/src/client.ts +80 -18
- package/src/helpers/zod.ts +16 -0
- package/src/internal/bedrock.ts +153 -0
- package/src/internal/provider.ts +60 -0
- package/src/internal/utils/log.ts +1 -0
- package/src/lib/AbstractChatCompletionRunner.ts +96 -45
- package/src/lib/AssistantStream.ts +4 -20
- package/src/lib/ChatCompletionRunner.ts +1 -1
- package/src/lib/ChatCompletionStream.ts +4 -11
- package/src/lib/ChatCompletionStreamingRunner.ts +1 -1
- package/src/lib/EventEmitter.ts +11 -2
- package/src/lib/EventStream.ts +20 -0
- package/src/lib/ResponsesParser.ts +18 -4
- package/src/lib/responses/ResponseAccumulator.ts +412 -0
- package/src/lib/responses/ResponseInputItems.ts +127 -0
- package/src/lib/responses/ResponseStream.ts +4 -93
- package/src/providers/bedrock/aws.ts +255 -0
- package/src/providers/bedrock.ts +33 -0
- package/src/realtime/internal-base.ts +90 -7
- package/src/realtime/websocket.ts +15 -13
- package/src/realtime/ws.ts +15 -13
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -31,18 +31,60 @@ export class OpenAIRealtimeEmitter extends EventEmitter {
|
|
|
31
31
|
export function isAzure(client) {
|
|
32
32
|
return client instanceof AzureOpenAI;
|
|
33
33
|
}
|
|
34
|
-
export function buildRealtimeURL(client,
|
|
35
|
-
const
|
|
34
|
+
export function buildRealtimeURL(client, connection) {
|
|
35
|
+
const config = typeof connection === 'string' ? { model: connection } : connection;
|
|
36
36
|
const baseURL = client.baseURL;
|
|
37
|
-
const
|
|
37
|
+
const azure = isAzure(client);
|
|
38
|
+
const hasModel = !!config.model;
|
|
39
|
+
const hasCallID = !!config.callID;
|
|
40
|
+
if (hasModel === hasCallID) {
|
|
41
|
+
throw new Error('Pass exactly one of `model` or `callID` when opening a Realtime WebSocket.');
|
|
42
|
+
}
|
|
43
|
+
let url;
|
|
44
|
+
if (azure && hasCallID) {
|
|
45
|
+
url = new URL(baseURL);
|
|
46
|
+
const basePath = url.pathname.replace(/\/+/g, '/').replace(/\/+$/, '');
|
|
47
|
+
const versionedPath = basePath.endsWith('/v1') ? basePath : `${basePath}/v1`;
|
|
48
|
+
url.pathname = `${versionedPath}/realtime`;
|
|
49
|
+
url.search = '';
|
|
50
|
+
url.hash = '';
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const path = '/realtime';
|
|
54
|
+
url = new URL(baseURL + (baseURL.endsWith('/') ? path.slice(1) : path));
|
|
55
|
+
}
|
|
38
56
|
url.protocol = 'wss';
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
57
|
+
// Sideband control connections attach to an existing call via `call_id`.
|
|
58
|
+
if (azure) {
|
|
59
|
+
if (hasCallID) {
|
|
60
|
+
url.searchParams.set('call_id', config.callID);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
url.searchParams.set('api-version', client.apiVersion);
|
|
64
|
+
url.searchParams.set('deployment', config.model);
|
|
65
|
+
}
|
|
42
66
|
}
|
|
43
67
|
else {
|
|
44
|
-
|
|
68
|
+
if (hasCallID) {
|
|
69
|
+
url.searchParams.set('call_id', config.callID);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
url.searchParams.set('model', config.model);
|
|
73
|
+
}
|
|
45
74
|
}
|
|
46
75
|
return url;
|
|
47
76
|
}
|
|
77
|
+
export function getAzureRealtimeConnection(client, connection) {
|
|
78
|
+
if (connection.callID !== undefined) {
|
|
79
|
+
if (connection.deploymentName !== undefined) {
|
|
80
|
+
throw new Error('Pass either `deploymentName` or `callID`, but not both.');
|
|
81
|
+
}
|
|
82
|
+
return { callID: connection.callID };
|
|
83
|
+
}
|
|
84
|
+
const model = connection.deploymentName ?? client.deploymentName;
|
|
85
|
+
if (!model) {
|
|
86
|
+
throw new Error('No deployment name provided');
|
|
87
|
+
}
|
|
88
|
+
return { model };
|
|
89
|
+
}
|
|
48
90
|
//# sourceMappingURL=internal-base.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-base.mjs","sourceRoot":"","sources":["../src/realtime/internal-base.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,gCAA4B;AACnD,OAAO,EAAE,WAAW,EAAE,qBAAiB;AACvC,OAAe,EAAE,WAAW,EAAE,qBAAiB;AAE/C,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAWlD,YAAY,OAAe,EAAE,KAAgC;QAC3D,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,QAAQ,CAAC;IAClC,CAAC;CACF;AAeD,MAAM,OAAgB,qBAAsB,SAAQ,YAA4B;IAapE,QAAQ,CAAC,KAAgC,EAAE,OAA4B,EAAE,KAAW;QAC5F,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,CAAC;gBACZ,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,SAAS,KAAK,CAAC,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACxI,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC;QAE/B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,mBAAmB,CACnC,OAAO;gBACL,iIAAiI,EACnI,KAAK,CACN,CAAC;YACF,aAAa;YACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtD,aAAa;QACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,OAAO,CAAC,MAA0C;IAChE,OAAO,MAAM,YAAY,WAAW,CAAC;AACvC,CAAC;
|
|
1
|
+
{"version":3,"file":"internal-base.mjs","sourceRoot":"","sources":["../src/realtime/internal-base.ts"],"names":[],"mappings":"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"}
|
package/realtime/websocket.d.mts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { AzureOpenAI, OpenAI } from "../index.mjs";
|
|
2
2
|
import type { RealtimeClientEvent } from "../resources/realtime/realtime.mjs";
|
|
3
|
-
import { OpenAIRealtimeEmitter } from "./internal-base.mjs";
|
|
3
|
+
import { OpenAIRealtimeEmitter, type AzureRealtimeConnectionConfig, type RealtimeConnectionConfig } from "./internal-base.mjs";
|
|
4
4
|
type _WebSocket = typeof globalThis extends ({
|
|
5
5
|
WebSocket: infer ws extends abstract new (...args: any) => any;
|
|
6
6
|
}) ? InstanceType<ws> : any;
|
|
7
7
|
export declare class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
8
8
|
url: URL;
|
|
9
9
|
socket: _WebSocket;
|
|
10
|
-
constructor(props: {
|
|
11
|
-
model: string;
|
|
10
|
+
constructor(props: RealtimeConnectionConfig & {
|
|
12
11
|
dangerouslyAllowBrowser?: boolean;
|
|
13
12
|
/**
|
|
14
13
|
* Callback to mutate the URL, needed for Azure.
|
|
@@ -18,12 +17,10 @@ export declare class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
|
18
17
|
/** Indicates the token was resolved by the factory just before connecting. @internal */
|
|
19
18
|
__resolvedApiKey?: boolean;
|
|
20
19
|
}, client?: Pick<OpenAI, 'apiKey' | 'baseURL'>);
|
|
21
|
-
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: {
|
|
22
|
-
model: string;
|
|
20
|
+
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: RealtimeConnectionConfig & {
|
|
23
21
|
dangerouslyAllowBrowser?: boolean;
|
|
24
22
|
}): Promise<OpenAIRealtimeWebSocket>;
|
|
25
|
-
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, options?: {
|
|
26
|
-
deploymentName?: string;
|
|
23
|
+
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, options?: AzureRealtimeConnectionConfig & {
|
|
27
24
|
dangerouslyAllowBrowser?: boolean;
|
|
28
25
|
}): Promise<OpenAIRealtimeWebSocket>;
|
|
29
26
|
send(event: RealtimeClientEvent): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.mts","sourceRoot":"","sources":["../src/realtime/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAiB;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAuB,2CAAuC;AAC/F,OAAO,
|
|
1
|
+
{"version":3,"file":"websocket.d.mts","sourceRoot":"","sources":["../src/realtime/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAiB;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAuB,2CAAuC;AAC/F,OAAO,EACL,qBAAqB,EAIrB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC9B,4BAAwB;AAOzB,KAAK,UAAU,GACb,OAAO,UAAU,SAAS,CACxB;IACE,SAAS,EAAE,MAAM,EAAE,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;CAChE,CACF,GAEC,YAAY,CAAC,EAAE,CAAC,GAChB,GAAG,CAAC;AAER,qBAAa,uBAAwB,SAAQ,qBAAqB;IAChE,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;gBAGjB,KAAK,EAAE,wBAAwB,GAAG;QAChC,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC;;;WAGG;QACH,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;QAC3B,wFAAwF;QACxF,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,EACD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;WAqEhC,MAAM,CACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC,EAC1D,KAAK,EAAE,wBAAwB,GAAG;QAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;KAAE,GACtE,OAAO,CAAC,uBAAuB,CAAC;WAItB,KAAK,CAChB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC,EACjG,OAAO,GAAE,6BAA6B,GAAG;QAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;KAAO,GAClF,OAAO,CAAC,uBAAuB,CAAC;IA2BnC,IAAI,CAAC,KAAK,EAAE,mBAAmB;IAQ/B,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAO/C"}
|
package/realtime/websocket.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { AzureOpenAI, OpenAI } from "../index.js";
|
|
2
2
|
import type { RealtimeClientEvent } from "../resources/realtime/realtime.js";
|
|
3
|
-
import { OpenAIRealtimeEmitter } from "./internal-base.js";
|
|
3
|
+
import { OpenAIRealtimeEmitter, type AzureRealtimeConnectionConfig, type RealtimeConnectionConfig } from "./internal-base.js";
|
|
4
4
|
type _WebSocket = typeof globalThis extends ({
|
|
5
5
|
WebSocket: infer ws extends abstract new (...args: any) => any;
|
|
6
6
|
}) ? InstanceType<ws> : any;
|
|
7
7
|
export declare class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
8
8
|
url: URL;
|
|
9
9
|
socket: _WebSocket;
|
|
10
|
-
constructor(props: {
|
|
11
|
-
model: string;
|
|
10
|
+
constructor(props: RealtimeConnectionConfig & {
|
|
12
11
|
dangerouslyAllowBrowser?: boolean;
|
|
13
12
|
/**
|
|
14
13
|
* Callback to mutate the URL, needed for Azure.
|
|
@@ -18,12 +17,10 @@ export declare class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
|
18
17
|
/** Indicates the token was resolved by the factory just before connecting. @internal */
|
|
19
18
|
__resolvedApiKey?: boolean;
|
|
20
19
|
}, client?: Pick<OpenAI, 'apiKey' | 'baseURL'>);
|
|
21
|
-
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: {
|
|
22
|
-
model: string;
|
|
20
|
+
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: RealtimeConnectionConfig & {
|
|
23
21
|
dangerouslyAllowBrowser?: boolean;
|
|
24
22
|
}): Promise<OpenAIRealtimeWebSocket>;
|
|
25
|
-
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, options?: {
|
|
26
|
-
deploymentName?: string;
|
|
23
|
+
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, options?: AzureRealtimeConnectionConfig & {
|
|
27
24
|
dangerouslyAllowBrowser?: boolean;
|
|
28
25
|
}): Promise<OpenAIRealtimeWebSocket>;
|
|
29
26
|
send(event: RealtimeClientEvent): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/realtime/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAiB;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAuB,0CAAuC;AAC/F,OAAO,
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/realtime/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAiB;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAuB,0CAAuC;AAC/F,OAAO,EACL,qBAAqB,EAIrB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC9B,2BAAwB;AAOzB,KAAK,UAAU,GACb,OAAO,UAAU,SAAS,CACxB;IACE,SAAS,EAAE,MAAM,EAAE,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;CAChE,CACF,GAEC,YAAY,CAAC,EAAE,CAAC,GAChB,GAAG,CAAC;AAER,qBAAa,uBAAwB,SAAQ,qBAAqB;IAChE,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;gBAGjB,KAAK,EAAE,wBAAwB,GAAG;QAChC,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC;;;WAGG;QACH,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;QAC3B,wFAAwF;QACxF,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,EACD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;WAqEhC,MAAM,CACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC,EAC1D,KAAK,EAAE,wBAAwB,GAAG;QAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;KAAE,GACtE,OAAO,CAAC,uBAAuB,CAAC;WAItB,KAAK,CAChB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC,EACjG,OAAO,GAAE,6BAA6B,GAAG;QAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;KAAO,GAClF,OAAO,CAAC,uBAAuB,CAAC;IA2BnC,IAAI,CAAC,KAAK,EAAE,mBAAmB;IAQ/B,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAO/C"}
|
package/realtime/websocket.js
CHANGED
|
@@ -19,11 +19,10 @@ class OpenAIRealtimeWebSocket extends internal_base_1.OpenAIRealtimeEmitter {
|
|
|
19
19
|
if (hasProvider && !props?.__resolvedApiKey) {
|
|
20
20
|
throw new Error([
|
|
21
21
|
'Cannot open Realtime WebSocket with a function-based apiKey.',
|
|
22
|
-
'Use the .create() method so that the key is resolved before connecting
|
|
23
|
-
'await OpenAIRealtimeWebSocket.create(client, { model })',
|
|
22
|
+
'Use the .create() method so that the key is resolved before connecting.',
|
|
24
23
|
].join('\n'));
|
|
25
24
|
}
|
|
26
|
-
this.url = (0, internal_base_1.buildRealtimeURL)(client, props
|
|
25
|
+
this.url = (0, internal_base_1.buildRealtimeURL)(client, props);
|
|
27
26
|
props.onURL?.(this.url);
|
|
28
27
|
// @ts-ignore
|
|
29
28
|
this.socket = new WebSocket(this.url.toString(), [
|
|
@@ -67,6 +66,7 @@ class OpenAIRealtimeWebSocket extends internal_base_1.OpenAIRealtimeEmitter {
|
|
|
67
66
|
return new OpenAIRealtimeWebSocket({ ...props, __resolvedApiKey: await client._callApiKey() }, client);
|
|
68
67
|
}
|
|
69
68
|
static async azure(client, options = {}) {
|
|
69
|
+
const connection = (0, internal_base_1.getAzureRealtimeConnection)(client, options);
|
|
70
70
|
const isApiKeyProvider = await client._callApiKey();
|
|
71
71
|
const apiKey = client.apiKey;
|
|
72
72
|
if (!apiKey) {
|
|
@@ -81,13 +81,9 @@ class OpenAIRealtimeWebSocket extends internal_base_1.OpenAIRealtimeEmitter {
|
|
|
81
81
|
url.searchParams.set('api-key', azureApiKey);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
const deploymentName = options.deploymentName ?? client.deploymentName;
|
|
85
|
-
if (!deploymentName) {
|
|
86
|
-
throw new Error('No deployment name provided');
|
|
87
|
-
}
|
|
88
84
|
const { dangerouslyAllowBrowser } = options;
|
|
89
85
|
return new OpenAIRealtimeWebSocket({
|
|
90
|
-
|
|
86
|
+
...connection,
|
|
91
87
|
onURL,
|
|
92
88
|
...(dangerouslyAllowBrowser ? { dangerouslyAllowBrowser } : {}),
|
|
93
89
|
__resolvedApiKey: isApiKeyProvider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/realtime/websocket.ts"],"names":[],"mappings":";;;AAAA,uCAA+C;AAC/C,uCAAuC;AAEvC,
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/realtime/websocket.ts"],"names":[],"mappings":"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"}
|
package/realtime/websocket.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OpenAI } from "../index.mjs";
|
|
2
2
|
import { OpenAIError } from "../error.mjs";
|
|
3
|
-
import { OpenAIRealtimeEmitter, buildRealtimeURL, isAzure } from "./internal-base.mjs";
|
|
3
|
+
import { OpenAIRealtimeEmitter, buildRealtimeURL, getAzureRealtimeConnection, isAzure, } from "./internal-base.mjs";
|
|
4
4
|
import { isRunningInBrowser } from "../internal/detect-platform.mjs";
|
|
5
5
|
export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
6
6
|
constructor(props, client) {
|
|
@@ -16,11 +16,10 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
|
16
16
|
if (hasProvider && !props?.__resolvedApiKey) {
|
|
17
17
|
throw new Error([
|
|
18
18
|
'Cannot open Realtime WebSocket with a function-based apiKey.',
|
|
19
|
-
'Use the .create() method so that the key is resolved before connecting
|
|
20
|
-
'await OpenAIRealtimeWebSocket.create(client, { model })',
|
|
19
|
+
'Use the .create() method so that the key is resolved before connecting.',
|
|
21
20
|
].join('\n'));
|
|
22
21
|
}
|
|
23
|
-
this.url = buildRealtimeURL(client, props
|
|
22
|
+
this.url = buildRealtimeURL(client, props);
|
|
24
23
|
props.onURL?.(this.url);
|
|
25
24
|
// @ts-ignore
|
|
26
25
|
this.socket = new WebSocket(this.url.toString(), [
|
|
@@ -64,6 +63,7 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
|
64
63
|
return new OpenAIRealtimeWebSocket({ ...props, __resolvedApiKey: await client._callApiKey() }, client);
|
|
65
64
|
}
|
|
66
65
|
static async azure(client, options = {}) {
|
|
66
|
+
const connection = getAzureRealtimeConnection(client, options);
|
|
67
67
|
const isApiKeyProvider = await client._callApiKey();
|
|
68
68
|
const apiKey = client.apiKey;
|
|
69
69
|
if (!apiKey) {
|
|
@@ -78,13 +78,9 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
|
78
78
|
url.searchParams.set('api-key', azureApiKey);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
const deploymentName = options.deploymentName ?? client.deploymentName;
|
|
82
|
-
if (!deploymentName) {
|
|
83
|
-
throw new Error('No deployment name provided');
|
|
84
|
-
}
|
|
85
81
|
const { dangerouslyAllowBrowser } = options;
|
|
86
82
|
return new OpenAIRealtimeWebSocket({
|
|
87
|
-
|
|
83
|
+
...connection,
|
|
88
84
|
onURL,
|
|
89
85
|
...(dangerouslyAllowBrowser ? { dangerouslyAllowBrowser } : {}),
|
|
90
86
|
__resolvedApiKey: isApiKeyProvider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.mjs","sourceRoot":"","sources":["../src/realtime/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,qBAAiB;AAC/C,OAAO,EAAE,WAAW,EAAE,qBAAiB;AAEvC,OAAO,
|
|
1
|
+
{"version":3,"file":"websocket.mjs","sourceRoot":"","sources":["../src/realtime/websocket.ts"],"names":[],"mappings":"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"}
|
package/realtime/ws.d.mts
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import * as WS from 'ws';
|
|
2
2
|
import { AzureOpenAI, OpenAI } from "../index.mjs";
|
|
3
3
|
import type { RealtimeClientEvent } from "../resources/realtime/realtime.mjs";
|
|
4
|
-
import { OpenAIRealtimeEmitter } from "./internal-base.mjs";
|
|
4
|
+
import { OpenAIRealtimeEmitter, type AzureRealtimeConnectionConfig, type RealtimeConnectionConfig } from "./internal-base.mjs";
|
|
5
5
|
export declare class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
|
|
6
6
|
url: URL;
|
|
7
7
|
socket: WS.WebSocket;
|
|
8
|
-
constructor(props: {
|
|
9
|
-
model: string;
|
|
8
|
+
constructor(props: RealtimeConnectionConfig & {
|
|
10
9
|
options?: WS.ClientOptions | undefined;
|
|
11
10
|
/** @internal */ __resolvedApiKey?: boolean;
|
|
12
11
|
}, client?: Pick<OpenAI, 'apiKey' | 'baseURL'>);
|
|
13
|
-
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: {
|
|
14
|
-
model: string;
|
|
12
|
+
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: RealtimeConnectionConfig & {
|
|
15
13
|
options?: WS.ClientOptions | undefined;
|
|
16
14
|
}): Promise<OpenAIRealtimeWS>;
|
|
17
|
-
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, props?: {
|
|
18
|
-
deploymentName?: string;
|
|
15
|
+
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, props?: AzureRealtimeConnectionConfig & {
|
|
19
16
|
options?: WS.ClientOptions | undefined;
|
|
20
17
|
}): Promise<OpenAIRealtimeWS>;
|
|
21
18
|
send(event: RealtimeClientEvent): void;
|
package/realtime/ws.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.mts","sourceRoot":"","sources":["../src/realtime/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAiB;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAuB,2CAAuC;AAC/F,OAAO,
|
|
1
|
+
{"version":3,"file":"ws.d.mts","sourceRoot":"","sources":["../src/realtime/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAiB;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAuB,2CAAuC;AAC/F,OAAO,EACL,qBAAqB,EAIrB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC9B,4BAAwB;AAEzB,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;gBAGnB,KAAK,EAAE,wBAAwB,GAAG;QAChC,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC;QACvC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC7C,EACD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;WAiDhC,MAAM,CACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC,EAC1D,KAAK,EAAE,wBAAwB,GAAG;QAAE,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAA;KAAE,GAC3E,OAAO,CAAC,gBAAgB,CAAC;WAIf,KAAK,CAChB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC,EACjG,KAAK,GAAE,6BAA6B,GAAG;QAAE,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAA;KAAO,GACrF,OAAO,CAAC,gBAAgB,CAAC;IAuB5B,IAAI,CAAC,KAAK,EAAE,mBAAmB;IAQ/B,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAO/C"}
|
package/realtime/ws.d.ts
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import * as WS from 'ws';
|
|
2
2
|
import { AzureOpenAI, OpenAI } from "../index.js";
|
|
3
3
|
import type { RealtimeClientEvent } from "../resources/realtime/realtime.js";
|
|
4
|
-
import { OpenAIRealtimeEmitter } from "./internal-base.js";
|
|
4
|
+
import { OpenAIRealtimeEmitter, type AzureRealtimeConnectionConfig, type RealtimeConnectionConfig } from "./internal-base.js";
|
|
5
5
|
export declare class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
|
|
6
6
|
url: URL;
|
|
7
7
|
socket: WS.WebSocket;
|
|
8
|
-
constructor(props: {
|
|
9
|
-
model: string;
|
|
8
|
+
constructor(props: RealtimeConnectionConfig & {
|
|
10
9
|
options?: WS.ClientOptions | undefined;
|
|
11
10
|
/** @internal */ __resolvedApiKey?: boolean;
|
|
12
11
|
}, client?: Pick<OpenAI, 'apiKey' | 'baseURL'>);
|
|
13
|
-
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: {
|
|
14
|
-
model: string;
|
|
12
|
+
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: RealtimeConnectionConfig & {
|
|
15
13
|
options?: WS.ClientOptions | undefined;
|
|
16
14
|
}): Promise<OpenAIRealtimeWS>;
|
|
17
|
-
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, props?: {
|
|
18
|
-
deploymentName?: string;
|
|
15
|
+
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, props?: AzureRealtimeConnectionConfig & {
|
|
19
16
|
options?: WS.ClientOptions | undefined;
|
|
20
17
|
}): Promise<OpenAIRealtimeWS>;
|
|
21
18
|
send(event: RealtimeClientEvent): void;
|
package/realtime/ws.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/realtime/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAiB;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAuB,0CAAuC;AAC/F,OAAO,
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/realtime/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAiB;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAuB,0CAAuC;AAC/F,OAAO,EACL,qBAAqB,EAIrB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC9B,2BAAwB;AAEzB,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;gBAGnB,KAAK,EAAE,wBAAwB,GAAG;QAChC,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC;QACvC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC7C,EACD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;WAiDhC,MAAM,CACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC,EAC1D,KAAK,EAAE,wBAAwB,GAAG;QAAE,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAA;KAAE,GAC3E,OAAO,CAAC,gBAAgB,CAAC;WAIf,KAAK,CAChB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC,EACjG,KAAK,GAAE,6BAA6B,GAAG;QAAE,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAA;KAAO,GACrF,OAAO,CAAC,gBAAgB,CAAC;IAuB5B,IAAI,CAAC,KAAK,EAAE,mBAAmB;IAQ/B,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAO/C"}
|
package/realtime/ws.js
CHANGED
|
@@ -13,11 +13,10 @@ class OpenAIRealtimeWS extends internal_base_1.OpenAIRealtimeEmitter {
|
|
|
13
13
|
if (hasProvider && !props.__resolvedApiKey) {
|
|
14
14
|
throw new Error([
|
|
15
15
|
'Cannot open Realtime WebSocket with a function-based apiKey.',
|
|
16
|
-
'Use the .create() method so that the key is resolved before connecting
|
|
17
|
-
'await OpenAIRealtimeWS.create(client, { model })',
|
|
16
|
+
'Use the .create() method so that the key is resolved before connecting.',
|
|
18
17
|
].join('\n'));
|
|
19
18
|
}
|
|
20
|
-
this.url = (0, internal_base_1.buildRealtimeURL)(client, props
|
|
19
|
+
this.url = (0, internal_base_1.buildRealtimeURL)(client, props);
|
|
21
20
|
this.socket = new WS.WebSocket(this.url, {
|
|
22
21
|
...props.options,
|
|
23
22
|
headers: {
|
|
@@ -54,17 +53,14 @@ class OpenAIRealtimeWS extends internal_base_1.OpenAIRealtimeEmitter {
|
|
|
54
53
|
return new OpenAIRealtimeWS({ ...props, __resolvedApiKey: await client._callApiKey() }, client);
|
|
55
54
|
}
|
|
56
55
|
static async azure(client, props = {}) {
|
|
56
|
+
const connection = (0, internal_base_1.getAzureRealtimeConnection)(client, props);
|
|
57
57
|
const isApiKeyProvider = await client._callApiKey();
|
|
58
58
|
const apiKey = client.apiKey;
|
|
59
59
|
if (!apiKey) {
|
|
60
60
|
throw new Error('Azure OpenAI Realtime requires an API key');
|
|
61
61
|
}
|
|
62
|
-
const deploymentName = props.deploymentName ?? client.deploymentName;
|
|
63
|
-
if (!deploymentName) {
|
|
64
|
-
throw new Error('No deployment name provided');
|
|
65
|
-
}
|
|
66
62
|
return new OpenAIRealtimeWS({
|
|
67
|
-
|
|
63
|
+
...connection,
|
|
68
64
|
options: {
|
|
69
65
|
...props.options,
|
|
70
66
|
headers: {
|
package/realtime/ws.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/realtime/ws.ts"],"names":[],"mappings":";;;;AAAA,+CAAyB;AACzB,uCAA+C;AAE/C,
|
|
1
|
+
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/realtime/ws.ts"],"names":[],"mappings":";;;;AAAA,+CAAyB;AACzB,uCAA+C;AAE/C,sDAOyB;AAEzB,MAAa,gBAAiB,SAAQ,qCAAqB;IAIzD,YACE,KAGC,EACD,MAA2C;QAE3C,KAAK,EAAE,CAAC;QACR,MAAM,KAAN,MAAM,GAAK,IAAI,cAAM,EAAE,EAAC;QACxB,MAAM,WAAW,GAAG,OAAQ,MAAc,EAAE,QAAQ,EAAE,MAAM,KAAK,UAAU,CAAC;QAC5E,IAAI,WAAW,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb;gBACE,8DAA8D;gBAC9D,yEAAyE;aAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,IAAA,gCAAgB,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;YACvC,GAAG,KAAK,CAAC,OAAO;YAChB,OAAO,EAAE;gBACP,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO;gBACzB,GAAG,CAAC,IAAA,uBAAO,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;aACpG;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;gBAClB,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAwB,CAAC;gBAC/D,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC;oBAC5D,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAE3B,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,4EAA4E;oBAC5E,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,MAA0D,EAC1D,KAA4E;QAE5E,OAAO,IAAI,gBAAgB,CAAC,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,MAAiG,EACjG,QAAoF,EAAE;QAEtF,MAAM,UAAU,GAAG,IAAA,0CAA0B,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7D,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,gBAAgB,CACzB;YACE,GAAG,UAAU;YACb,OAAO,EAAE;gBACP,GAAG,KAAK,CAAC,OAAO;gBAChB,OAAO,EAAE;oBACP,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO;oBACzB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;iBACnD;aACF;YACD,gBAAgB,EAAE,gBAAgB;SACnC,EACD,MAAM,CACP,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAA0B;QAC7B,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAwC;QAC5C,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF;AA1GD,4CA0GC"}
|
package/realtime/ws.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as WS from 'ws';
|
|
2
2
|
import { OpenAI } from "../index.mjs";
|
|
3
|
-
import { OpenAIRealtimeEmitter, buildRealtimeURL, isAzure } from "./internal-base.mjs";
|
|
3
|
+
import { OpenAIRealtimeEmitter, buildRealtimeURL, getAzureRealtimeConnection, isAzure, } from "./internal-base.mjs";
|
|
4
4
|
export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
|
|
5
5
|
constructor(props, client) {
|
|
6
6
|
super();
|
|
@@ -9,11 +9,10 @@ export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
|
|
|
9
9
|
if (hasProvider && !props.__resolvedApiKey) {
|
|
10
10
|
throw new Error([
|
|
11
11
|
'Cannot open Realtime WebSocket with a function-based apiKey.',
|
|
12
|
-
'Use the .create() method so that the key is resolved before connecting
|
|
13
|
-
'await OpenAIRealtimeWS.create(client, { model })',
|
|
12
|
+
'Use the .create() method so that the key is resolved before connecting.',
|
|
14
13
|
].join('\n'));
|
|
15
14
|
}
|
|
16
|
-
this.url = buildRealtimeURL(client, props
|
|
15
|
+
this.url = buildRealtimeURL(client, props);
|
|
17
16
|
this.socket = new WS.WebSocket(this.url, {
|
|
18
17
|
...props.options,
|
|
19
18
|
headers: {
|
|
@@ -50,17 +49,14 @@ export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
|
|
|
50
49
|
return new OpenAIRealtimeWS({ ...props, __resolvedApiKey: await client._callApiKey() }, client);
|
|
51
50
|
}
|
|
52
51
|
static async azure(client, props = {}) {
|
|
52
|
+
const connection = getAzureRealtimeConnection(client, props);
|
|
53
53
|
const isApiKeyProvider = await client._callApiKey();
|
|
54
54
|
const apiKey = client.apiKey;
|
|
55
55
|
if (!apiKey) {
|
|
56
56
|
throw new Error('Azure OpenAI Realtime requires an API key');
|
|
57
57
|
}
|
|
58
|
-
const deploymentName = props.deploymentName ?? client.deploymentName;
|
|
59
|
-
if (!deploymentName) {
|
|
60
|
-
throw new Error('No deployment name provided');
|
|
61
|
-
}
|
|
62
58
|
return new OpenAIRealtimeWS({
|
|
63
|
-
|
|
59
|
+
...connection,
|
|
64
60
|
options: {
|
|
65
61
|
...props.options,
|
|
66
62
|
headers: {
|
package/realtime/ws.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.mjs","sourceRoot":"","sources":["../src/realtime/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAe,MAAM,EAAE,qBAAiB;AAE/C,OAAO,
|
|
1
|
+
{"version":3,"file":"ws.mjs","sourceRoot":"","sources":["../src/realtime/ws.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,15 +99,23 @@ export function parseDef(
|
|
|
99
99
|
|
|
100
100
|
refs.seen.set(def, newItem);
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
try {
|
|
103
|
+
const jsonSchema = selectParser(def, (def as any).typeName, refs, forceResolution);
|
|
103
104
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
if (jsonSchema) {
|
|
106
|
+
addMeta(def, refs, jsonSchema);
|
|
107
|
+
}
|
|
107
108
|
|
|
108
|
-
|
|
109
|
+
newItem.jsonSchema = jsonSchema;
|
|
109
110
|
|
|
110
|
-
|
|
111
|
+
return jsonSchema;
|
|
112
|
+
} finally {
|
|
113
|
+
if (forceResolution && seenItem) {
|
|
114
|
+
// Materializing a definition temporarily moves it to the definition path. Restore the
|
|
115
|
+
// original path so later references to a shared inner type don't inherit wrapper metadata.
|
|
116
|
+
refs.seen.set(def, seenItem);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
111
119
|
}
|
|
112
120
|
|
|
113
121
|
const get$ref = (
|
|
@@ -131,7 +139,13 @@ const get$ref = (
|
|
|
131
139
|
// `["#","definitions","contactPerson","properties","person1","properties","name"]`
|
|
132
140
|
// then we'll extract it out to `contactPerson_properties_person1_properties_name`
|
|
133
141
|
case 'extract-to-root':
|
|
134
|
-
const name = item.path
|
|
142
|
+
const name = item.path
|
|
143
|
+
.slice(refs.basePath.length + 1)
|
|
144
|
+
// The first part is either the root schema name or an extracted definition
|
|
145
|
+
// name that is being materialized. Keep it stable so recursive definitions
|
|
146
|
+
// do not generate a new name each time they are resolved.
|
|
147
|
+
.map((part, index) => (index === 0 ? part : encodeDefinitionPathPart(part)))
|
|
148
|
+
.join('_');
|
|
135
149
|
|
|
136
150
|
// we don't need to extract the root schema in this case, as it's already
|
|
137
151
|
// been added to the definitions
|
|
@@ -158,6 +172,20 @@ const get$ref = (
|
|
|
158
172
|
}
|
|
159
173
|
};
|
|
160
174
|
|
|
175
|
+
const encodedDefinitionPathPartPrefix = '_x_';
|
|
176
|
+
|
|
177
|
+
const encodeDefinitionPathPart = (part: string) => {
|
|
178
|
+
if (/^[A-Za-z0-9_-]*$/.test(part) && !part.startsWith(encodedDefinitionPathPartPrefix)) {
|
|
179
|
+
return part;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
let encoded = encodedDefinitionPathPartPrefix;
|
|
183
|
+
for (let i = 0; i < part.length; i++) {
|
|
184
|
+
encoded += part.charCodeAt(i).toString(16).padStart(4, '0');
|
|
185
|
+
}
|
|
186
|
+
return encoded;
|
|
187
|
+
};
|
|
188
|
+
|
|
161
189
|
const getRelativePath = (pathA: string[], pathB: string[]) => {
|
|
162
190
|
let i = 0;
|
|
163
191
|
for (; i < pathA.length && i < pathB.length; i++) {
|
|
@@ -207,17 +235,17 @@ const selectParser = (
|
|
|
207
235
|
case ZodFirstPartyTypeKind.ZodNativeEnum:
|
|
208
236
|
return parseNativeEnumDef(def);
|
|
209
237
|
case ZodFirstPartyTypeKind.ZodNullable:
|
|
210
|
-
return parseNullableDef(def, refs);
|
|
238
|
+
return parseNullableDef(def, refs, forceResolution);
|
|
211
239
|
case ZodFirstPartyTypeKind.ZodOptional:
|
|
212
|
-
return parseOptionalDef(def, refs);
|
|
240
|
+
return parseOptionalDef(def, refs, forceResolution);
|
|
213
241
|
case ZodFirstPartyTypeKind.ZodMap:
|
|
214
242
|
return parseMapDef(def, refs);
|
|
215
243
|
case ZodFirstPartyTypeKind.ZodSet:
|
|
216
244
|
return parseSetDef(def, refs);
|
|
217
245
|
case ZodFirstPartyTypeKind.ZodLazy:
|
|
218
|
-
return parseDef(def.getter()._def, refs);
|
|
246
|
+
return parseDef(def.getter()._def, refs, forceResolution);
|
|
219
247
|
case ZodFirstPartyTypeKind.ZodPromise:
|
|
220
|
-
return parsePromiseDef(def, refs);
|
|
248
|
+
return parsePromiseDef(def, refs, forceResolution);
|
|
221
249
|
case ZodFirstPartyTypeKind.ZodNaN:
|
|
222
250
|
case ZodFirstPartyTypeKind.ZodNever:
|
|
223
251
|
return parseNeverDef();
|
|
@@ -228,15 +256,15 @@ const selectParser = (
|
|
|
228
256
|
case ZodFirstPartyTypeKind.ZodUnknown:
|
|
229
257
|
return parseUnknownDef();
|
|
230
258
|
case ZodFirstPartyTypeKind.ZodDefault:
|
|
231
|
-
return parseDefaultDef(def, refs);
|
|
259
|
+
return parseDefaultDef(def, refs, forceResolution);
|
|
232
260
|
case ZodFirstPartyTypeKind.ZodBranded:
|
|
233
|
-
return parseBrandedDef(def, refs);
|
|
261
|
+
return parseBrandedDef(def, refs, forceResolution);
|
|
234
262
|
case ZodFirstPartyTypeKind.ZodReadonly:
|
|
235
|
-
return parseReadonlyDef(def, refs);
|
|
263
|
+
return parseReadonlyDef(def, refs, forceResolution);
|
|
236
264
|
case ZodFirstPartyTypeKind.ZodCatch:
|
|
237
|
-
return parseCatchDef(def, refs);
|
|
265
|
+
return parseCatchDef(def, refs, forceResolution);
|
|
238
266
|
case ZodFirstPartyTypeKind.ZodPipeline:
|
|
239
|
-
return parsePipelineDef(def, refs);
|
|
267
|
+
return parsePipelineDef(def, refs, forceResolution);
|
|
240
268
|
case ZodFirstPartyTypeKind.ZodFunction:
|
|
241
269
|
case ZodFirstPartyTypeKind.ZodVoid:
|
|
242
270
|
case ZodFirstPartyTypeKind.ZodSymbol:
|
|
@@ -2,6 +2,6 @@ import { ZodBrandedDef } from 'zod/v3';
|
|
|
2
2
|
import { parseDef } from '../parseDef';
|
|
3
3
|
import { Refs } from '../Refs';
|
|
4
4
|
|
|
5
|
-
export function parseBrandedDef(_def: ZodBrandedDef<any>, refs: Refs) {
|
|
6
|
-
return parseDef(_def.type._def, refs);
|
|
5
|
+
export function parseBrandedDef(_def: ZodBrandedDef<any>, refs: Refs, forceResolution: boolean) {
|
|
6
|
+
return parseDef(_def.type._def, refs, forceResolution);
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@ import { ZodCatchDef } from 'zod/v3';
|
|
|
2
2
|
import { parseDef } from '../parseDef';
|
|
3
3
|
import { Refs } from '../Refs';
|
|
4
4
|
|
|
5
|
-
export const parseCatchDef = (def: ZodCatchDef<any>, refs: Refs) => {
|
|
6
|
-
return parseDef(def.innerType._def, refs);
|
|
5
|
+
export const parseCatchDef = (def: ZodCatchDef<any>, refs: Refs, forceResolution: boolean) => {
|
|
6
|
+
return parseDef(def.innerType._def, refs, forceResolution);
|
|
7
7
|
};
|