openai 7.5.0 → 7.6.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 +105 -0
- package/README.md +46 -2
- package/auth/index.d.mts +1 -1
- package/auth/index.d.mts.map +1 -1
- package/auth/index.d.ts +1 -1
- package/auth/index.d.ts.map +1 -1
- package/auth/index.js.map +1 -1
- package/auth/index.mjs.map +1 -1
- package/auth/subject-token-providers.d.mts.map +1 -1
- package/auth/subject-token-providers.d.ts.map +1 -1
- package/auth/subject-token-providers.js +176 -4
- package/auth/subject-token-providers.js.map +1 -1
- package/auth/subject-token-providers.mjs +176 -4
- package/auth/subject-token-providers.mjs.map +1 -1
- package/auth/types.d.mts +17 -0
- package/auth/types.d.mts.map +1 -1
- package/auth/types.d.ts +17 -0
- package/auth/types.d.ts.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 +80 -7
- package/auth/workload-identity-auth.js.map +1 -1
- package/auth/workload-identity-auth.mjs +80 -7
- package/auth/workload-identity-auth.mjs.map +1 -1
- package/auth/x509-transport.d.mts +5 -0
- package/auth/x509-transport.d.mts.map +1 -0
- package/auth/x509-transport.d.ts +5 -0
- package/auth/x509-transport.d.ts.map +1 -0
- package/auth/x509-transport.js +39 -0
- package/auth/x509-transport.js.map +1 -0
- package/auth/x509-transport.mjs +36 -0
- package/auth/x509-transport.mjs.map +1 -0
- package/azure.d.mts +11 -2
- package/azure.d.mts.map +1 -1
- package/azure.d.ts +11 -2
- package/azure.d.ts.map +1 -1
- package/azure.js +7 -1
- package/azure.js.map +1 -1
- package/azure.mjs +7 -1
- package/azure.mjs.map +1 -1
- package/bedrock.d.mts +6 -2
- package/bedrock.d.mts.map +1 -1
- package/bedrock.d.ts +6 -2
- package/bedrock.d.ts.map +1 -1
- package/bedrock.js +34 -4
- package/bedrock.js.map +1 -1
- package/bedrock.mjs +35 -5
- package/bedrock.mjs.map +1 -1
- package/beta/realtime/internal-base.d.mts +2 -0
- package/beta/realtime/internal-base.d.mts.map +1 -1
- package/beta/realtime/internal-base.d.ts +2 -0
- package/beta/realtime/internal-base.d.ts.map +1 -1
- package/beta/realtime/internal-base.js +15 -0
- package/beta/realtime/internal-base.js.map +1 -1
- package/beta/realtime/internal-base.mjs +14 -0
- package/beta/realtime/internal-base.mjs.map +1 -1
- package/beta/realtime/websocket.d.mts +11 -5
- package/beta/realtime/websocket.d.mts.map +1 -1
- package/beta/realtime/websocket.d.ts +11 -5
- package/beta/realtime/websocket.d.ts.map +1 -1
- package/beta/realtime/websocket.js +106 -31
- package/beta/realtime/websocket.js.map +1 -1
- package/beta/realtime/websocket.mjs +107 -32
- package/beta/realtime/websocket.mjs.map +1 -1
- package/beta/realtime/ws.d.mts +0 -2
- package/beta/realtime/ws.d.mts.map +1 -1
- package/beta/realtime/ws.d.ts +0 -2
- package/beta/realtime/ws.d.ts.map +1 -1
- package/beta/realtime/ws.js +24 -5
- package/beta/realtime/ws.js.map +1 -1
- package/beta/realtime/ws.mjs +25 -6
- package/beta/realtime/ws.mjs.map +1 -1
- package/client.d.mts +17 -2
- package/client.d.mts.map +1 -1
- package/client.d.ts +17 -2
- package/client.d.ts.map +1 -1
- package/client.js +422 -70
- package/client.js.map +1 -1
- package/client.mjs +423 -71
- package/client.mjs.map +1 -1
- package/core/EventEmitter.d.mts.map +1 -1
- package/core/EventEmitter.d.ts.map +1 -1
- package/core/EventEmitter.js +67 -9
- package/core/EventEmitter.js.map +1 -1
- package/core/EventEmitter.mjs +68 -10
- package/core/EventEmitter.mjs.map +1 -1
- package/core/streaming.d.mts +1 -0
- package/core/streaming.d.mts.map +1 -1
- package/core/streaming.d.ts +1 -0
- package/core/streaming.d.ts.map +1 -1
- package/core/streaming.js +58 -19
- package/core/streaming.js.map +1 -1
- package/core/streaming.mjs +58 -19
- package/core/streaming.mjs.map +1 -1
- package/helpers/audio.d.mts +5 -5
- package/helpers/audio.d.mts.map +1 -1
- package/helpers/audio.d.ts +5 -5
- package/helpers/audio.d.ts.map +1 -1
- package/helpers/audio.js +93 -22
- package/helpers/audio.js.map +1 -1
- package/helpers/audio.mjs +93 -22
- package/helpers/audio.mjs.map +1 -1
- package/helpers/standard-schema.d.mts.map +1 -1
- package/helpers/standard-schema.d.ts.map +1 -1
- package/helpers/standard-schema.js +34 -14
- package/helpers/standard-schema.js.map +1 -1
- package/helpers/standard-schema.mjs +35 -15
- package/helpers/standard-schema.mjs.map +1 -1
- package/helpers/zod-v3-strict-schema.d.mts +7 -0
- package/helpers/zod-v3-strict-schema.d.mts.map +1 -0
- package/helpers/zod-v3-strict-schema.d.ts +7 -0
- package/helpers/zod-v3-strict-schema.d.ts.map +1 -0
- package/helpers/zod-v3-strict-schema.js +403 -0
- package/helpers/zod-v3-strict-schema.js.map +1 -0
- package/helpers/zod-v3-strict-schema.mjs +399 -0
- package/helpers/zod-v3-strict-schema.mjs.map +1 -0
- package/helpers/zod.d.mts.map +1 -1
- package/helpers/zod.d.ts.map +1 -1
- package/helpers/zod.js +11 -3
- package/helpers/zod.js.map +1 -1
- package/helpers/zod.mjs +12 -4
- package/helpers/zod.mjs.map +1 -1
- package/index.d.mts +1 -1
- package/index.d.mts.map +1 -1
- package/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/index.js.map +1 -1
- package/index.mjs.map +1 -1
- package/internal/assistant-stream-delta.d.mts.map +1 -1
- package/internal/assistant-stream-delta.d.ts.map +1 -1
- package/internal/assistant-stream-delta.js +28 -8
- package/internal/assistant-stream-delta.js.map +1 -1
- package/internal/assistant-stream-delta.mjs +28 -8
- package/internal/assistant-stream-delta.mjs.map +1 -1
- package/internal/auth/x509-token-exchange.d.mts +16 -0
- package/internal/auth/x509-token-exchange.d.mts.map +1 -0
- package/internal/auth/x509-token-exchange.d.ts +16 -0
- package/internal/auth/x509-token-exchange.d.ts.map +1 -0
- package/internal/auth/x509-token-exchange.js +246 -0
- package/internal/auth/x509-token-exchange.js.map +1 -0
- package/internal/auth/x509-token-exchange.mjs +243 -0
- package/internal/auth/x509-token-exchange.mjs.map +1 -0
- package/internal/auth/x509-transport-capability.d.mts +37 -0
- package/internal/auth/x509-transport-capability.d.mts.map +1 -0
- package/internal/auth/x509-transport-capability.d.ts +37 -0
- package/internal/auth/x509-transport-capability.d.ts.map +1 -0
- package/internal/auth/x509-transport-capability.js +169 -0
- package/internal/auth/x509-transport-capability.js.map +1 -0
- package/internal/auth/x509-transport-capability.mjs +164 -0
- package/internal/auth/x509-transport-capability.mjs.map +1 -0
- package/internal/auth/x509-transport-registry.d.mts +63 -0
- package/internal/auth/x509-transport-registry.d.mts.map +1 -0
- package/internal/auth/x509-transport-registry.d.ts +63 -0
- package/internal/auth/x509-transport-registry.d.ts.map +1 -0
- package/internal/auth/x509-transport-registry.js +53 -0
- package/internal/auth/x509-transport-registry.js.map +1 -0
- package/internal/auth/x509-transport-registry.mjs +48 -0
- package/internal/auth/x509-transport-registry.mjs.map +1 -0
- package/internal/auth/x509-transport-state-browser.d.mts +21 -0
- package/internal/auth/x509-transport-state-browser.d.mts.map +1 -0
- package/internal/auth/x509-transport-state-browser.d.ts +21 -0
- package/internal/auth/x509-transport-state-browser.d.ts.map +1 -0
- package/internal/auth/x509-transport-state-browser.js +30 -0
- package/internal/auth/x509-transport-state-browser.js.map +1 -0
- package/internal/auth/x509-transport-state-browser.mjs +27 -0
- package/internal/auth/x509-transport-state-browser.mjs.map +1 -0
- package/internal/auth/x509-transport-state.cjs +30 -0
- package/internal/auth/x509-transport-state.cjs.map +1 -0
- package/internal/auth/x509-transport-state.d.cts +21 -0
- package/internal/auth/x509-transport-state.d.cts.map +1 -0
- package/internal/auth/x509-workload-identity-auth.d.mts +128 -0
- package/internal/auth/x509-workload-identity-auth.d.mts.map +1 -0
- package/internal/auth/x509-workload-identity-auth.d.ts +128 -0
- package/internal/auth/x509-workload-identity-auth.d.ts.map +1 -0
- package/internal/auth/x509-workload-identity-auth.js +767 -0
- package/internal/auth/x509-workload-identity-auth.js.map +1 -0
- package/internal/auth/x509-workload-identity-auth.mjs +757 -0
- package/internal/auth/x509-workload-identity-auth.mjs.map +1 -0
- package/internal/bedrock.d.mts +2 -0
- package/internal/bedrock.d.mts.map +1 -1
- package/internal/bedrock.d.ts +2 -0
- package/internal/bedrock.d.ts.map +1 -1
- package/internal/bedrock.js +169 -5
- package/internal/bedrock.js.map +1 -1
- package/internal/bedrock.mjs +168 -5
- package/internal/bedrock.mjs.map +1 -1
- package/internal/data-residency.d.mts +12 -0
- package/internal/data-residency.d.mts.map +1 -0
- package/internal/data-residency.d.ts +12 -0
- package/internal/data-residency.d.ts.map +1 -0
- package/internal/data-residency.js +34 -0
- package/internal/data-residency.js.map +1 -0
- package/internal/data-residency.mjs +30 -0
- package/internal/data-residency.mjs.map +1 -0
- package/internal/multipart-encoding.d.mts +8 -0
- package/internal/multipart-encoding.d.mts.map +1 -0
- package/internal/multipart-encoding.d.ts +8 -0
- package/internal/multipart-encoding.d.ts.map +1 -0
- package/internal/multipart-encoding.js +51 -0
- package/internal/multipart-encoding.js.map +1 -0
- package/internal/multipart-encoding.mjs +48 -0
- package/internal/multipart-encoding.mjs.map +1 -0
- package/internal/qs/utils.d.mts.map +1 -1
- package/internal/qs/utils.d.ts.map +1 -1
- package/internal/qs/utils.js +307 -10
- package/internal/qs/utils.js.map +1 -1
- package/internal/qs/utils.mjs +307 -10
- package/internal/qs/utils.mjs.map +1 -1
- package/internal/request-options.d.mts +7 -0
- package/internal/request-options.d.mts.map +1 -1
- package/internal/request-options.d.ts +7 -0
- package/internal/request-options.d.ts.map +1 -1
- package/internal/request-options.js +43 -1
- package/internal/request-options.js.map +1 -1
- package/internal/request-options.mjs +42 -1
- package/internal/request-options.mjs.map +1 -1
- package/internal/responses/canonical-output-text.js +3 -3
- package/internal/responses/canonical-output-text.js.map +1 -1
- package/internal/responses/canonical-output-text.mjs +3 -3
- package/internal/responses/canonical-output-text.mjs.map +1 -1
- package/internal/responses/response-accumulator.d.mts +1 -1
- package/internal/responses/response-accumulator.d.mts.map +1 -1
- package/internal/responses/response-accumulator.d.ts +1 -1
- package/internal/responses/response-accumulator.d.ts.map +1 -1
- package/internal/responses/response-accumulator.js +331 -25
- package/internal/responses/response-accumulator.js.map +1 -1
- package/internal/responses/response-accumulator.mjs +331 -25
- package/internal/responses/response-accumulator.mjs.map +1 -1
- package/internal/tslib.js +6 -0
- package/internal/tslib.mjs +6 -1
- package/internal/uploads.d.mts +10 -6
- package/internal/uploads.d.mts.map +1 -1
- package/internal/uploads.d.ts +10 -6
- package/internal/uploads.d.ts.map +1 -1
- package/internal/uploads.js +65 -24
- package/internal/uploads.js.map +1 -1
- package/internal/uploads.mjs +65 -24
- package/internal/uploads.mjs.map +1 -1
- package/internal/utils/env.d.mts.map +1 -1
- package/internal/utils/env.d.ts.map +1 -1
- package/internal/utils/env.js +9 -4
- package/internal/utils/env.js.map +1 -1
- package/internal/utils/env.mjs +9 -4
- package/internal/utils/env.mjs.map +1 -1
- package/internal/ws.d.mts.map +1 -1
- package/internal/ws.d.ts.map +1 -1
- package/internal/ws.js +23 -1
- package/internal/ws.js.map +1 -1
- package/internal/ws.mjs +23 -1
- package/internal/ws.mjs.map +1 -1
- package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
- package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
- package/lib/AbstractChatCompletionRunner.js +32 -7
- package/lib/AbstractChatCompletionRunner.js.map +1 -1
- package/lib/AbstractChatCompletionRunner.mjs +34 -9
- 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 +211 -23
- package/lib/AssistantStream.js.map +1 -1
- package/lib/AssistantStream.mjs +211 -23
- package/lib/AssistantStream.mjs.map +1 -1
- package/lib/ChatCompletionStream.d.mts +1 -1
- package/lib/ChatCompletionStream.d.mts.map +1 -1
- package/lib/ChatCompletionStream.d.ts +1 -1
- package/lib/ChatCompletionStream.d.ts.map +1 -1
- package/lib/ChatCompletionStream.js +1118 -67
- package/lib/ChatCompletionStream.js.map +1 -1
- package/lib/ChatCompletionStream.mjs +1119 -68
- package/lib/ChatCompletionStream.mjs.map +1 -1
- package/lib/EventEmitter.d.mts.map +1 -1
- package/lib/EventEmitter.d.ts.map +1 -1
- package/lib/EventEmitter.js +67 -9
- package/lib/EventEmitter.js.map +1 -1
- package/lib/EventEmitter.mjs +68 -10
- package/lib/EventEmitter.mjs.map +1 -1
- package/lib/EventStream.d.mts +4 -0
- package/lib/EventStream.d.mts.map +1 -1
- package/lib/EventStream.d.ts +4 -0
- package/lib/EventStream.d.ts.map +1 -1
- package/lib/EventStream.js +1096 -11
- package/lib/EventStream.js.map +1 -1
- package/lib/EventStream.mjs +1097 -12
- 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 +1 -1
- package/lib/ResponsesParser.js.map +1 -1
- package/lib/ResponsesParser.mjs +1 -1
- package/lib/ResponsesParser.mjs.map +1 -1
- package/lib/Util.d.mts +2 -0
- package/lib/Util.d.mts.map +1 -1
- package/lib/Util.d.ts +2 -0
- package/lib/Util.d.ts.map +1 -1
- package/lib/Util.js +7 -4
- package/lib/Util.js.map +1 -1
- package/lib/Util.mjs +7 -4
- package/lib/Util.mjs.map +1 -1
- package/lib/assistant-run-polling.d.mts +12 -0
- package/lib/assistant-run-polling.d.mts.map +1 -0
- package/lib/assistant-run-polling.d.ts +12 -0
- package/lib/assistant-run-polling.d.ts.map +1 -0
- package/lib/assistant-run-polling.js +17 -0
- package/lib/assistant-run-polling.js.map +1 -0
- package/lib/assistant-run-polling.mjs +14 -0
- package/lib/assistant-run-polling.mjs.map +1 -0
- package/lib/embeddings.d.mts +18 -0
- package/lib/embeddings.d.mts.map +1 -0
- package/lib/embeddings.d.ts +18 -0
- package/lib/embeddings.d.ts.map +1 -0
- package/lib/embeddings.js +50 -0
- package/lib/embeddings.js.map +1 -0
- package/lib/embeddings.mjs +47 -0
- package/lib/embeddings.mjs.map +1 -0
- package/lib/file-processing.d.mts +10 -0
- package/lib/file-processing.d.mts.map +1 -0
- package/lib/file-processing.d.ts +10 -0
- package/lib/file-processing.d.ts.map +1 -0
- package/lib/file-processing.js +30 -0
- package/lib/file-processing.js.map +1 -0
- package/lib/file-processing.mjs +27 -0
- package/lib/file-processing.mjs.map +1 -0
- package/lib/parser.d.mts.map +1 -1
- package/lib/parser.d.ts.map +1 -1
- package/lib/parser.js +16 -4
- package/lib/parser.js.map +1 -1
- package/lib/parser.mjs +16 -4
- package/lib/parser.mjs.map +1 -1
- package/lib/polling.d.mts +20 -0
- package/lib/polling.d.mts.map +1 -0
- package/lib/polling.d.ts +20 -0
- package/lib/polling.d.ts.map +1 -0
- package/lib/polling.js +130 -0
- package/lib/polling.js.map +1 -0
- package/lib/polling.mjs +127 -0
- package/lib/polling.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 +21 -11
- package/lib/responses/ResponseStream.js.map +1 -1
- package/lib/responses/ResponseStream.mjs +21 -11
- package/lib/responses/ResponseStream.mjs.map +1 -1
- package/lib/vector-store-polling.d.mts +22 -0
- package/lib/vector-store-polling.d.mts.map +1 -0
- package/lib/vector-store-polling.d.ts +22 -0
- package/lib/vector-store-polling.d.ts.map +1 -0
- package/lib/vector-store-polling.js +24 -0
- package/lib/vector-store-polling.js.map +1 -0
- package/lib/vector-store-polling.mjs +20 -0
- package/lib/vector-store-polling.mjs.map +1 -0
- package/lib/vector-store-upload.d.mts +17 -0
- package/lib/vector-store-upload.d.mts.map +1 -0
- package/lib/vector-store-upload.d.ts +17 -0
- package/lib/vector-store-upload.d.ts.map +1 -0
- package/lib/vector-store-upload.js +37 -0
- package/lib/vector-store-upload.js.map +1 -0
- package/lib/vector-store-upload.mjs +34 -0
- package/lib/vector-store-upload.mjs.map +1 -0
- package/lib/webhook-signature.d.mts +15 -0
- package/lib/webhook-signature.d.mts.map +1 -0
- package/lib/webhook-signature.d.ts +15 -0
- package/lib/webhook-signature.d.ts.map +1 -0
- package/lib/webhook-signature.js +125 -0
- package/lib/webhook-signature.js.map +1 -0
- package/lib/webhook-signature.mjs +121 -0
- package/lib/webhook-signature.mjs.map +1 -0
- package/package.json +14 -1
- package/realtime/internal-base.d.mts +2 -0
- package/realtime/internal-base.d.mts.map +1 -1
- package/realtime/internal-base.d.ts +2 -0
- package/realtime/internal-base.d.ts.map +1 -1
- package/realtime/internal-base.js +15 -0
- package/realtime/internal-base.js.map +1 -1
- package/realtime/internal-base.mjs +14 -0
- package/realtime/internal-base.mjs.map +1 -1
- package/realtime/websocket.d.mts +3 -2
- package/realtime/websocket.d.mts.map +1 -1
- package/realtime/websocket.d.ts +3 -2
- package/realtime/websocket.d.ts.map +1 -1
- package/realtime/websocket.js +90 -26
- package/realtime/websocket.js.map +1 -1
- package/realtime/websocket.mjs +91 -27
- package/realtime/websocket.mjs.map +1 -1
- package/realtime/ws.d.mts.map +1 -1
- package/realtime/ws.d.ts.map +1 -1
- package/realtime/ws.js +9 -1
- package/realtime/ws.js.map +1 -1
- package/realtime/ws.mjs +10 -2
- package/realtime/ws.mjs.map +1 -1
- package/resources/admin/organization/index.d.mts +2 -2
- package/resources/admin/organization/index.d.mts.map +1 -1
- package/resources/admin/organization/index.d.ts +2 -2
- package/resources/admin/organization/index.d.ts.map +1 -1
- package/resources/admin/organization/index.js.map +1 -1
- package/resources/admin/organization/index.mjs.map +1 -1
- package/resources/admin/organization/organization.d.mts +4 -4
- package/resources/admin/organization/organization.d.mts.map +1 -1
- package/resources/admin/organization/organization.d.ts +4 -4
- package/resources/admin/organization/organization.d.ts.map +1 -1
- package/resources/admin/organization/organization.js.map +1 -1
- package/resources/admin/organization/organization.mjs.map +1 -1
- package/resources/admin/organization/projects/index.d.mts +1 -1
- package/resources/admin/organization/projects/index.d.mts.map +1 -1
- package/resources/admin/organization/projects/index.d.ts +1 -1
- package/resources/admin/organization/projects/index.d.ts.map +1 -1
- package/resources/admin/organization/projects/index.js.map +1 -1
- package/resources/admin/organization/projects/index.mjs.map +1 -1
- package/resources/admin/organization/projects/projects.d.mts +22 -5
- package/resources/admin/organization/projects/projects.d.mts.map +1 -1
- package/resources/admin/organization/projects/projects.d.ts +22 -5
- package/resources/admin/organization/projects/projects.d.ts.map +1 -1
- package/resources/admin/organization/projects/projects.js.map +1 -1
- package/resources/admin/organization/projects/projects.mjs.map +1 -1
- package/resources/admin/organization/usage.d.mts +62 -1
- package/resources/admin/organization/usage.d.mts.map +1 -1
- package/resources/admin/organization/usage.d.ts +62 -1
- package/resources/admin/organization/usage.d.ts.map +1 -1
- package/resources/admin/organization/usage.js.map +1 -1
- package/resources/admin/organization/usage.mjs.map +1 -1
- package/resources/beta/responses/internal-base.d.mts.map +1 -1
- package/resources/beta/responses/internal-base.d.ts.map +1 -1
- package/resources/beta/responses/internal-base.js +2 -0
- package/resources/beta/responses/internal-base.js.map +1 -1
- package/resources/beta/responses/internal-base.mjs +2 -0
- package/resources/beta/responses/internal-base.mjs.map +1 -1
- package/resources/beta/responses/responses.d.mts +9 -12
- package/resources/beta/responses/responses.d.mts.map +1 -1
- package/resources/beta/responses/responses.d.ts +9 -12
- package/resources/beta/responses/responses.d.ts.map +1 -1
- package/resources/beta/responses/responses.js.map +1 -1
- package/resources/beta/responses/responses.mjs.map +1 -1
- package/resources/beta/threads/runs/index.d.mts +1 -1
- package/resources/beta/threads/runs/index.d.mts.map +1 -1
- package/resources/beta/threads/runs/index.d.ts +1 -1
- package/resources/beta/threads/runs/index.d.ts.map +1 -1
- package/resources/beta/threads/runs/runs.d.mts.map +1 -1
- package/resources/beta/threads/runs/runs.d.ts.map +1 -1
- package/resources/beta/threads/runs/runs.js +2 -43
- package/resources/beta/threads/runs/runs.js.map +1 -1
- package/resources/beta/threads/runs/runs.mjs +2 -43
- package/resources/beta/threads/runs/runs.mjs.map +1 -1
- package/resources/chat/completions/completions.d.mts +6 -0
- package/resources/chat/completions/completions.d.mts.map +1 -1
- package/resources/chat/completions/completions.d.ts +6 -0
- package/resources/chat/completions/completions.d.ts.map +1 -1
- package/resources/chat/completions/completions.js.map +1 -1
- package/resources/chat/completions/completions.mjs.map +1 -1
- package/resources/embeddings.d.mts.map +1 -1
- package/resources/embeddings.d.ts.map +1 -1
- package/resources/embeddings.js +2 -36
- package/resources/embeddings.js.map +1 -1
- package/resources/embeddings.mjs +2 -36
- package/resources/embeddings.mjs.map +1 -1
- package/resources/files.d.mts.map +1 -1
- package/resources/files.d.ts.map +1 -1
- package/resources/files.js +2 -15
- package/resources/files.js.map +1 -1
- package/resources/files.mjs +2 -15
- package/resources/files.mjs.map +1 -1
- package/resources/images.d.mts +12 -22
- package/resources/images.d.mts.map +1 -1
- package/resources/images.d.ts +12 -22
- package/resources/images.d.ts.map +1 -1
- package/resources/realtime/calls.d.mts +23 -1
- package/resources/realtime/calls.d.mts.map +1 -1
- package/resources/realtime/calls.d.ts +23 -1
- package/resources/realtime/calls.d.ts.map +1 -1
- package/resources/realtime/calls.js +24 -0
- package/resources/realtime/calls.js.map +1 -1
- package/resources/realtime/calls.mjs +24 -0
- package/resources/realtime/calls.mjs.map +1 -1
- package/resources/realtime/index.d.mts +1 -1
- package/resources/realtime/index.d.mts.map +1 -1
- package/resources/realtime/index.d.ts +1 -1
- package/resources/realtime/index.d.ts.map +1 -1
- package/resources/realtime/index.js.map +1 -1
- package/resources/realtime/index.mjs +1 -1
- package/resources/realtime/index.mjs.map +1 -1
- package/resources/realtime/realtime.d.mts +5 -4
- package/resources/realtime/realtime.d.mts.map +1 -1
- package/resources/realtime/realtime.d.ts +5 -4
- package/resources/realtime/realtime.d.ts.map +1 -1
- package/resources/realtime/realtime.js.map +1 -1
- package/resources/realtime/realtime.mjs.map +1 -1
- package/resources/responses/internal-base.d.mts.map +1 -1
- package/resources/responses/internal-base.d.ts.map +1 -1
- package/resources/responses/internal-base.js +2 -0
- package/resources/responses/internal-base.js.map +1 -1
- package/resources/responses/internal-base.mjs +2 -0
- package/resources/responses/internal-base.mjs.map +1 -1
- package/resources/responses/responses.d.mts +9 -12
- package/resources/responses/responses.d.mts.map +1 -1
- package/resources/responses/responses.d.ts +9 -12
- package/resources/responses/responses.d.ts.map +1 -1
- package/resources/responses/responses.js.map +1 -1
- package/resources/responses/responses.mjs.map +1 -1
- package/resources/vector-stores/file-batches.d.mts.map +1 -1
- package/resources/vector-stores/file-batches.d.ts.map +1 -1
- package/resources/vector-stores/file-batches.js +4 -61
- package/resources/vector-stores/file-batches.js.map +1 -1
- package/resources/vector-stores/file-batches.mjs +4 -61
- package/resources/vector-stores/file-batches.mjs.map +1 -1
- package/resources/vector-stores/files.d.mts +1 -1
- package/resources/vector-stores/files.d.mts.map +1 -1
- package/resources/vector-stores/files.d.ts +1 -1
- package/resources/vector-stores/files.d.ts.map +1 -1
- package/resources/vector-stores/files.js +2 -35
- package/resources/vector-stores/files.js.map +1 -1
- package/resources/vector-stores/files.mjs +2 -35
- package/resources/vector-stores/files.mjs.map +1 -1
- package/resources/webhooks/webhooks.d.mts.map +1 -1
- package/resources/webhooks/webhooks.d.ts.map +1 -1
- package/resources/webhooks/webhooks.js +5 -43
- package/resources/webhooks/webhooks.js.map +1 -1
- package/resources/webhooks/webhooks.mjs +5 -43
- package/resources/webhooks/webhooks.mjs.map +1 -1
- package/src/auth/index.ts +6 -1
- package/src/auth/subject-token-providers.ts +196 -4
- package/src/auth/types.ts +24 -0
- package/src/auth/workload-identity-auth.ts +104 -7
- package/src/auth/x509-transport.ts +49 -0
- package/src/azure.ts +22 -1
- package/src/bedrock.ts +49 -5
- package/src/beta/realtime/internal-base.ts +15 -0
- package/src/beta/realtime/websocket.ts +148 -40
- package/src/beta/realtime/ws.ts +31 -13
- package/src/client.ts +536 -92
- package/src/core/EventEmitter.ts +91 -7
- package/src/core/streaming.ts +71 -20
- package/src/helpers/audio.ts +93 -22
- package/src/helpers/standard-schema.ts +50 -16
- package/src/helpers/zod-v3-strict-schema.ts +514 -0
- package/src/helpers/zod.ts +17 -4
- package/src/index.ts +1 -1
- package/src/internal/assistant-stream-delta.ts +33 -10
- package/src/internal/auth/x509-token-exchange.ts +310 -0
- package/src/internal/auth/x509-transport-capability.ts +219 -0
- package/src/internal/auth/x509-transport-registry.ts +118 -0
- package/src/internal/auth/x509-transport-state-browser.ts +36 -0
- package/src/internal/auth/x509-transport-state.cts +36 -0
- package/src/internal/auth/x509-workload-identity-auth.ts +958 -0
- package/src/internal/bedrock.ts +182 -5
- package/src/internal/data-residency.ts +44 -0
- package/src/internal/multipart-encoding.ts +53 -0
- package/src/internal/qs/utils.ts +375 -13
- package/src/internal/request-options.ts +52 -1
- package/src/internal/responses/canonical-output-text.ts +3 -3
- package/src/internal/responses/response-accumulator.ts +411 -24
- package/src/internal/uploads.ts +81 -26
- package/src/internal/utils/env.ts +9 -5
- package/src/internal/ws.ts +24 -3
- package/src/lib/AbstractChatCompletionRunner.ts +33 -6
- package/src/lib/AssistantStream.ts +262 -22
- package/src/lib/ChatCompletionStream.ts +1467 -103
- package/src/lib/EventEmitter.ts +91 -7
- package/src/lib/EventStream.ts +1483 -10
- package/src/lib/ResponsesParser.ts +4 -1
- package/src/lib/Util.ts +7 -5
- package/src/lib/assistant-run-polling.ts +27 -0
- package/src/lib/embeddings.ts +65 -0
- package/src/lib/file-processing.ts +36 -0
- package/src/lib/parser.ts +19 -4
- package/src/lib/polling.ts +144 -0
- package/src/lib/responses/ResponseStream.ts +22 -10
- package/src/lib/vector-store-polling.ts +46 -0
- package/src/lib/vector-store-upload.ts +53 -0
- package/src/lib/webhook-signature.ts +164 -0
- package/src/realtime/internal-base.ts +15 -0
- package/src/realtime/websocket.ts +130 -27
- package/src/realtime/ws.ts +15 -2
- package/src/resources/admin/organization/index.ts +2 -0
- package/src/resources/admin/organization/organization.ts +4 -0
- package/src/resources/admin/organization/projects/index.ts +1 -0
- package/src/resources/admin/organization/projects/projects.ts +37 -4
- package/src/resources/admin/organization/usage.ts +83 -0
- package/src/resources/beta/responses/internal-base.ts +2 -0
- package/src/resources/beta/responses/responses.ts +9 -12
- package/src/resources/beta/threads/runs/index.ts +1 -1
- package/src/resources/beta/threads/runs/runs.ts +2 -45
- package/src/resources/chat/completions/completions.ts +7 -0
- package/src/resources/embeddings.ts +2 -42
- package/src/resources/files.ts +2 -19
- package/src/resources/images.ts +12 -22
- package/src/resources/realtime/api.md +1 -0
- package/src/resources/realtime/calls.ts +46 -0
- package/src/resources/realtime/index.ts +7 -1
- package/src/resources/realtime/realtime.ts +5 -3
- package/src/resources/responses/internal-base.ts +2 -0
- package/src/resources/responses/responses.ts +9 -12
- package/src/resources/vector-stores/file-batches.ts +8 -77
- package/src/resources/vector-stores/files.ts +3 -43
- package/src/resources/webhooks/webhooks.ts +5 -61
- 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
package/lib/EventStream.js
CHANGED
|
@@ -1,9 +1,343 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _EventStream_instances, _EventStream_connectedPromise, _EventStream_resolveConnectedPromise, _EventStream_rejectConnectedPromise, _EventStream_endPromise, _EventStream_resolveEndPromise, _EventStream_rejectEndPromise, _EventStream_listeners, _EventStream_abortListeners, _EventStream_ended, _EventStream_errored, _EventStream_aborted, _EventStream_catchingPromiseCreated, _EventStream_removeAbortListeners, _EventStream_handleError;
|
|
2
|
+
var _EventStream_instances, _EventStream_connectedPromise, _EventStream_resolveConnectedPromise, _EventStream_rejectConnectedPromise, _EventStream_endPromise, _EventStream_resolveEndPromise, _EventStream_rejectEndPromise, _EventStream_listeners, _EventStream_abortListeners, _EventStream_emittedListenerRegistrations, _EventStream_pendingListenerCleanup, _EventStream_pendingBufferedEventChecks, _EventStream_listenerDispatchDepth, _EventStream_ended, _EventStream_errored, _EventStream_aborted, _EventStream_catchingPromiseCreated, _EventStream_removeAbortListeners, _EventStream_onceForEmitted, _EventStream_removeEmittedListener, _EventStream_cleanupEmittedListeners, _EventStream_handleError;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.EventStream = void 0;
|
|
5
5
|
const tslib_1 = require("../internal/tslib.js");
|
|
6
6
|
const error_1 = require("../error.js");
|
|
7
|
+
const MAX_BUFFERED_ITERATOR_EVENTS = 4096;
|
|
8
|
+
const MAX_BUFFERED_ITERATOR_BYTES = 8 * 1024 * 1024;
|
|
9
|
+
// Typed-array own-key enumeration materializes every dense index before custom keys.
|
|
10
|
+
const MAX_INSPECTABLE_TYPED_ARRAY_ELEMENTS = 4096;
|
|
11
|
+
// Structured JSON may nest 128 levels before stream-event wrappers are added.
|
|
12
|
+
const MAX_BUFFERED_EVENT_DEPTH = 256;
|
|
13
|
+
const bufferedJSONStringify = JSON.stringify;
|
|
14
|
+
const bufferedJSONParse = JSON.parse;
|
|
15
|
+
const sdkOwnedBufferedEventArguments = new WeakSet();
|
|
16
|
+
const typedArrayBufferGetter = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'buffer')?.get;
|
|
17
|
+
const typedArrayLengthGetter = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'length')?.get;
|
|
18
|
+
const dataViewBufferGetter = Object.getOwnPropertyDescriptor(DataView.prototype, 'buffer')?.get;
|
|
19
|
+
const symbolDescriptionGetter = Object.getOwnPropertyDescriptor(Symbol.prototype, 'description')?.get;
|
|
20
|
+
const dateTimestampGetter = Date.prototype.getTime;
|
|
21
|
+
const arrayBufferByteLengthGetter = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength')?.get;
|
|
22
|
+
const sharedArrayBufferByteLengthGetter = typeof SharedArrayBuffer === 'function'
|
|
23
|
+
? Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, 'byteLength')?.get
|
|
24
|
+
: undefined;
|
|
25
|
+
// V8 uses the same trusted lazy-stack accessor pair for native Error instances.
|
|
26
|
+
const errorStackDescriptor = Object.getOwnPropertyDescriptor(new Error('native stack descriptor'), 'stack');
|
|
27
|
+
const functionToString = Function.prototype.toString;
|
|
28
|
+
const objectToString = Object.prototype.toString;
|
|
29
|
+
const errorBrandDescriptor = Object.getOwnPropertyDescriptor(Error, 'isError');
|
|
30
|
+
const nativeErrorBrand = errorBrandDescriptor && 'value' in errorBrandDescriptor && typeof errorBrandDescriptor.value === 'function'
|
|
31
|
+
? errorBrandDescriptor.value
|
|
32
|
+
: undefined;
|
|
33
|
+
const nativeErrorConstructorSource = functionToString.call(Error);
|
|
34
|
+
const nativeDateConstructorSource = functionToString.call(Date);
|
|
35
|
+
const nativeFunctionConstructorSource = functionToString.call(Function);
|
|
36
|
+
const trustedIntrinsicPrototypes = new Set([
|
|
37
|
+
error_1.APIConnectionError.prototype,
|
|
38
|
+
error_1.APIConnectionTimeoutError.prototype,
|
|
39
|
+
error_1.APIError.prototype,
|
|
40
|
+
error_1.OpenAIError.prototype,
|
|
41
|
+
error_1.APIUserAbortError.prototype,
|
|
42
|
+
error_1.AuthenticationError.prototype,
|
|
43
|
+
error_1.BadRequestError.prototype,
|
|
44
|
+
error_1.ConflictError.prototype,
|
|
45
|
+
error_1.ContentFilterFinishReasonError.prototype,
|
|
46
|
+
error_1.InternalServerError.prototype,
|
|
47
|
+
error_1.InvalidWebhookSignatureError.prototype,
|
|
48
|
+
error_1.LengthFinishReasonError.prototype,
|
|
49
|
+
error_1.NotFoundError.prototype,
|
|
50
|
+
error_1.OAuthError.prototype,
|
|
51
|
+
error_1.PermissionDeniedError.prototype,
|
|
52
|
+
error_1.RateLimitError.prototype,
|
|
53
|
+
error_1.SubjectTokenProviderError.prototype,
|
|
54
|
+
error_1.UnprocessableEntityError.prototype,
|
|
55
|
+
]);
|
|
56
|
+
const trustedNativeConstructorSources = new Set();
|
|
57
|
+
const canonicalIntrinsicDescriptors = new Map();
|
|
58
|
+
const foreignErrorStackDescriptors = new WeakMap();
|
|
59
|
+
function captureNativeProxyDetector() {
|
|
60
|
+
if (typeof process === 'undefined') {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const loader = Object.getOwnPropertyDescriptor(process, 'getBuiltinModule');
|
|
65
|
+
if (!loader || !('value' in loader) || typeof loader.value !== 'function') {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
const util = Reflect.apply(loader.value, process, ['node:util']);
|
|
69
|
+
if (typeof util !== 'object' || util === null) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const types = Object.getOwnPropertyDescriptor(util, 'types');
|
|
73
|
+
if (!types || !('value' in types) || typeof types.value !== 'object' || types.value === null) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
const detector = Object.getOwnPropertyDescriptor(types.value, 'isProxy');
|
|
77
|
+
if (!detector || !('value' in detector) || typeof detector.value !== 'function') {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
return detector.value;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Transparent proxies have no portable ECMAScript brand. Newer Node runtimes
|
|
87
|
+
// expose one without adding a Node-only import to browser-compatible bundles.
|
|
88
|
+
const nativeProxyDetector = captureNativeProxyDetector();
|
|
89
|
+
function rememberTrustedIntrinsic(constructor) {
|
|
90
|
+
if (typeof constructor !== 'function') {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const prototypeDescriptor = Object.getOwnPropertyDescriptor(constructor, 'prototype');
|
|
94
|
+
if (!prototypeDescriptor ||
|
|
95
|
+
!('value' in prototypeDescriptor) ||
|
|
96
|
+
(typeof prototypeDescriptor.value !== 'object' && typeof prototypeDescriptor.value !== 'function')) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
trustedIntrinsicPrototypes.add(prototypeDescriptor.value);
|
|
100
|
+
const source = functionToString.call(constructor);
|
|
101
|
+
if (/^function [A-Za-z_$][\w$]*\(\) \{ \[native code\] \}$/u.test(source) &&
|
|
102
|
+
prototypeDescriptor.configurable === false &&
|
|
103
|
+
prototypeDescriptor.writable === false) {
|
|
104
|
+
trustedNativeConstructorSources.add(source);
|
|
105
|
+
const descriptors = new Map();
|
|
106
|
+
for (const key of Reflect.ownKeys(prototypeDescriptor.value)) {
|
|
107
|
+
const descriptor = Object.getOwnPropertyDescriptor(prototypeDescriptor.value, key);
|
|
108
|
+
if (descriptor) {
|
|
109
|
+
descriptors.set(key, descriptor);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
canonicalIntrinsicDescriptors.set(source, descriptors);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
for (const constructor of [
|
|
116
|
+
Object,
|
|
117
|
+
Function,
|
|
118
|
+
Array,
|
|
119
|
+
Date,
|
|
120
|
+
Map,
|
|
121
|
+
Set,
|
|
122
|
+
ArrayBuffer,
|
|
123
|
+
DataView,
|
|
124
|
+
Error,
|
|
125
|
+
EvalError,
|
|
126
|
+
RangeError,
|
|
127
|
+
ReferenceError,
|
|
128
|
+
SyntaxError,
|
|
129
|
+
TypeError,
|
|
130
|
+
URIError,
|
|
131
|
+
Uint8Array,
|
|
132
|
+
Uint8ClampedArray,
|
|
133
|
+
Uint16Array,
|
|
134
|
+
Uint32Array,
|
|
135
|
+
Int8Array,
|
|
136
|
+
Int16Array,
|
|
137
|
+
Int32Array,
|
|
138
|
+
Float32Array,
|
|
139
|
+
Float64Array,
|
|
140
|
+
]) {
|
|
141
|
+
rememberTrustedIntrinsic(constructor);
|
|
142
|
+
}
|
|
143
|
+
for (const name of [
|
|
144
|
+
'SharedArrayBuffer',
|
|
145
|
+
'AggregateError',
|
|
146
|
+
'Float16Array',
|
|
147
|
+
'BigInt64Array',
|
|
148
|
+
'BigUint64Array',
|
|
149
|
+
'Blob',
|
|
150
|
+
'File',
|
|
151
|
+
'Headers',
|
|
152
|
+
]) {
|
|
153
|
+
const descriptor = Object.getOwnPropertyDescriptor(globalThis, name);
|
|
154
|
+
if (descriptor && 'value' in descriptor) {
|
|
155
|
+
rememberTrustedIntrinsic(descriptor.value);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
const typedArrayConstructorDescriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'constructor');
|
|
159
|
+
if (typedArrayConstructorDescriptor && 'value' in typedArrayConstructorDescriptor) {
|
|
160
|
+
rememberTrustedIntrinsic(typedArrayConstructorDescriptor.value);
|
|
161
|
+
}
|
|
162
|
+
if (typeof Buffer === 'function') {
|
|
163
|
+
rememberTrustedIntrinsic(Buffer);
|
|
164
|
+
}
|
|
165
|
+
const blobInternalHandlePrototype = (() => {
|
|
166
|
+
if (typeof Blob !== 'function') {
|
|
167
|
+
return undefined;
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
const blob = new Blob([]);
|
|
171
|
+
for (const key of Object.getOwnPropertySymbols(blob)) {
|
|
172
|
+
const descriptor = Object.getOwnPropertyDescriptor(blob, key);
|
|
173
|
+
if (descriptor && 'value' in descriptor && typeof descriptor.value === 'object' && descriptor.value) {
|
|
174
|
+
return Object.getPrototypeOf(descriptor.value);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
return undefined;
|
|
182
|
+
})();
|
|
183
|
+
const mapEntries = Map.prototype.entries;
|
|
184
|
+
const setValues = Set.prototype.values;
|
|
185
|
+
const headersEntriesDescriptor = typeof Headers === 'function' ? Object.getOwnPropertyDescriptor(Headers.prototype, 'entries') : undefined;
|
|
186
|
+
const headersEntries = headersEntriesDescriptor &&
|
|
187
|
+
'value' in headersEntriesDescriptor &&
|
|
188
|
+
typeof headersEntriesDescriptor.value === 'function'
|
|
189
|
+
? headersEntriesDescriptor.value
|
|
190
|
+
: undefined;
|
|
191
|
+
const retainedStorageBrands = new Set([
|
|
192
|
+
'ArrayBuffer',
|
|
193
|
+
'SharedArrayBuffer',
|
|
194
|
+
'Blob',
|
|
195
|
+
'File',
|
|
196
|
+
'Map',
|
|
197
|
+
'Date',
|
|
198
|
+
'Set',
|
|
199
|
+
'Headers',
|
|
200
|
+
]);
|
|
201
|
+
function getTrustedForeignIntrinsic(prototype) {
|
|
202
|
+
const descriptor = Object.getOwnPropertyDescriptor(prototype, 'constructor');
|
|
203
|
+
if (!descriptor || !('value' in descriptor) || typeof descriptor.value !== 'function') {
|
|
204
|
+
return undefined;
|
|
205
|
+
}
|
|
206
|
+
const constructor = descriptor.value;
|
|
207
|
+
const source = functionToString.call(constructor);
|
|
208
|
+
const descriptors = canonicalIntrinsicDescriptors.get(source);
|
|
209
|
+
if (!trustedNativeConstructorSources.has(source) || !descriptors) {
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
const constructorPrototype = Object.getOwnPropertyDescriptor(constructor, 'prototype');
|
|
213
|
+
if (!constructorPrototype ||
|
|
214
|
+
!('value' in constructorPrototype) ||
|
|
215
|
+
constructorPrototype.value !== prototype ||
|
|
216
|
+
constructorPrototype.configurable !== false ||
|
|
217
|
+
constructorPrototype.writable !== false) {
|
|
218
|
+
return undefined;
|
|
219
|
+
}
|
|
220
|
+
return { constructor, descriptors, functionPrototype: Object.getPrototypeOf(constructor) };
|
|
221
|
+
}
|
|
222
|
+
function isTrustedIntrinsicPrototype(prototype) {
|
|
223
|
+
return trustedIntrinsicPrototypes.has(prototype) || getTrustedForeignIntrinsic(prototype) !== undefined;
|
|
224
|
+
}
|
|
225
|
+
function isCanonicalIntrinsicFunction(value, canonical, functionPrototype) {
|
|
226
|
+
if (canonical === undefined) {
|
|
227
|
+
return value === undefined;
|
|
228
|
+
}
|
|
229
|
+
if (typeof value !== 'function' || typeof canonical !== 'function') {
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
const source = functionToString.call(canonical);
|
|
233
|
+
if (functionToString.call(value) !== source) {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
const actualFunctionPrototype = Object.getPrototypeOf(value);
|
|
237
|
+
if (actualFunctionPrototype === functionPrototype) {
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
if (!/^function [A-Za-z_$][\w$]*\(\) \{ \[native code\] \}$/u.test(source)) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
const intrinsic = getTrustedForeignIntrinsic(actualFunctionPrototype);
|
|
244
|
+
return (intrinsic !== undefined &&
|
|
245
|
+
functionToString.call(intrinsic.constructor) === nativeFunctionConstructorSource);
|
|
246
|
+
}
|
|
247
|
+
function isCanonicalIntrinsicDescriptor(descriptor, canonical, functionPrototype) {
|
|
248
|
+
if (!canonical ||
|
|
249
|
+
descriptor.configurable !== canonical.configurable ||
|
|
250
|
+
descriptor.enumerable !== canonical.enumerable ||
|
|
251
|
+
'value' in descriptor !== 'value' in canonical) {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
if ('value' in descriptor && 'value' in canonical) {
|
|
255
|
+
if (descriptor.writable !== canonical.writable) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
if (typeof canonical.value === 'function') {
|
|
259
|
+
return isCanonicalIntrinsicFunction(descriptor.value, canonical.value, functionPrototype);
|
|
260
|
+
}
|
|
261
|
+
if (canonical.value !== null && typeof canonical.value === 'object') {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
return Object.is(descriptor.value, canonical.value);
|
|
265
|
+
}
|
|
266
|
+
return (isCanonicalIntrinsicFunction(descriptor.get, canonical.get, functionPrototype) &&
|
|
267
|
+
isCanonicalIntrinsicFunction(descriptor.set, canonical.set, functionPrototype));
|
|
268
|
+
}
|
|
269
|
+
function hasNativeErrorBrand(current) {
|
|
270
|
+
if (nativeErrorBrand) {
|
|
271
|
+
return nativeErrorBrand.call(Error, current);
|
|
272
|
+
}
|
|
273
|
+
let prototype = current;
|
|
274
|
+
for (let depth = 0; prototype !== null && depth < MAX_BUFFERED_EVENT_DEPTH; depth += 1) {
|
|
275
|
+
if (Object.getOwnPropertyDescriptor(prototype, Symbol.toStringTag)) {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
prototype = Object.getPrototypeOf(prototype);
|
|
279
|
+
}
|
|
280
|
+
return prototype === null && objectToString.call(current) === '[object Error]';
|
|
281
|
+
}
|
|
282
|
+
function getVerifiedForeignErrorConstructor(current, stackDescriptor) {
|
|
283
|
+
if (typeof stackDescriptor.get !== 'function' || typeof stackDescriptor.set !== 'function') {
|
|
284
|
+
return undefined;
|
|
285
|
+
}
|
|
286
|
+
let prototype = Object.getPrototypeOf(current);
|
|
287
|
+
for (let depth = 0; prototype !== null && depth < MAX_BUFFERED_EVENT_DEPTH; depth += 1) {
|
|
288
|
+
const descriptor = Object.getOwnPropertyDescriptor(prototype, 'constructor');
|
|
289
|
+
if (descriptor && 'value' in descriptor && typeof descriptor.value === 'function') {
|
|
290
|
+
const constructor = descriptor.value;
|
|
291
|
+
if (functionToString.call(constructor) === nativeErrorConstructorSource &&
|
|
292
|
+
isTrustedIntrinsicPrototype(prototype)) {
|
|
293
|
+
const functionPrototype = Object.getPrototypeOf(constructor);
|
|
294
|
+
if (Object.getPrototypeOf(stackDescriptor.get) === functionPrototype &&
|
|
295
|
+
Object.getPrototypeOf(stackDescriptor.set) === functionPrototype) {
|
|
296
|
+
return { constructor, prototype };
|
|
297
|
+
}
|
|
298
|
+
return undefined;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
prototype = Object.getPrototypeOf(prototype);
|
|
302
|
+
}
|
|
303
|
+
return undefined;
|
|
304
|
+
}
|
|
305
|
+
function isTrustedNativeErrorStack(current, descriptor) {
|
|
306
|
+
if (!hasNativeErrorBrand(current)) {
|
|
307
|
+
return false;
|
|
308
|
+
}
|
|
309
|
+
if (errorStackDescriptor &&
|
|
310
|
+
!('value' in errorStackDescriptor) &&
|
|
311
|
+
typeof errorStackDescriptor.get === 'function' &&
|
|
312
|
+
Object.prototype.isPrototypeOf.call(Error.prototype, current) &&
|
|
313
|
+
descriptor.get === errorStackDescriptor.get &&
|
|
314
|
+
descriptor.set === errorStackDescriptor.set) {
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
317
|
+
const verified = getVerifiedForeignErrorConstructor(current, descriptor);
|
|
318
|
+
if (!verified) {
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
let canonicalDescriptor = foreignErrorStackDescriptors.get(verified.prototype);
|
|
322
|
+
if (!canonicalDescriptor) {
|
|
323
|
+
const canonical = Reflect.construct(verified.constructor, []);
|
|
324
|
+
if (typeof canonical !== 'object' ||
|
|
325
|
+
canonical === null ||
|
|
326
|
+
!hasNativeErrorBrand(canonical) ||
|
|
327
|
+
Object.getPrototypeOf(canonical) !== verified.prototype) {
|
|
328
|
+
return false;
|
|
329
|
+
}
|
|
330
|
+
canonicalDescriptor = Object.getOwnPropertyDescriptor(canonical, 'stack');
|
|
331
|
+
if (!canonicalDescriptor ||
|
|
332
|
+
'value' in canonicalDescriptor ||
|
|
333
|
+
typeof canonicalDescriptor.get !== 'function' ||
|
|
334
|
+
typeof canonicalDescriptor.set !== 'function') {
|
|
335
|
+
return false;
|
|
336
|
+
}
|
|
337
|
+
foreignErrorStackDescriptors.set(verified.prototype, canonicalDescriptor);
|
|
338
|
+
}
|
|
339
|
+
return descriptor.get === canonicalDescriptor.get && descriptor.set === canonicalDescriptor.set;
|
|
340
|
+
}
|
|
7
341
|
function createEventQueue() {
|
|
8
342
|
let entries = [];
|
|
9
343
|
let head = 0;
|
|
@@ -37,6 +371,605 @@ function createEventQueue() {
|
|
|
37
371
|
},
|
|
38
372
|
};
|
|
39
373
|
}
|
|
374
|
+
function getRetainedStorageBrand(current) {
|
|
375
|
+
let prototype = Object.getPrototypeOf(current);
|
|
376
|
+
for (let depth = 0; prototype !== null && depth < MAX_BUFFERED_EVENT_DEPTH; depth += 1) {
|
|
377
|
+
if (prototype === Date.prototype) {
|
|
378
|
+
return 'Date';
|
|
379
|
+
}
|
|
380
|
+
if (!trustedIntrinsicPrototypes.has(prototype)) {
|
|
381
|
+
const constructor = Object.getOwnPropertyDescriptor(prototype, 'constructor');
|
|
382
|
+
if (constructor &&
|
|
383
|
+
'value' in constructor &&
|
|
384
|
+
typeof constructor.value === 'function' &&
|
|
385
|
+
functionToString.call(constructor.value) === nativeDateConstructorSource &&
|
|
386
|
+
getTrustedForeignIntrinsic(prototype)) {
|
|
387
|
+
return 'Date';
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
const descriptor = Object.getOwnPropertyDescriptor(prototype, Symbol.toStringTag);
|
|
391
|
+
if (descriptor &&
|
|
392
|
+
'value' in descriptor &&
|
|
393
|
+
typeof descriptor.value === 'string' &&
|
|
394
|
+
retainedStorageBrands.has(descriptor.value)) {
|
|
395
|
+
return descriptor.value;
|
|
396
|
+
}
|
|
397
|
+
prototype = Object.getPrototypeOf(prototype);
|
|
398
|
+
}
|
|
399
|
+
return undefined;
|
|
400
|
+
}
|
|
401
|
+
function estimateRetainedBufferBytes(current, visit, depth) {
|
|
402
|
+
if (ArrayBuffer.isView(current)) {
|
|
403
|
+
let buffer;
|
|
404
|
+
let kind = 'typed-array';
|
|
405
|
+
try {
|
|
406
|
+
buffer = typedArrayBufferGetter?.call(current);
|
|
407
|
+
}
|
|
408
|
+
catch {
|
|
409
|
+
kind = 'data-view';
|
|
410
|
+
buffer = dataViewBufferGetter?.call(current);
|
|
411
|
+
}
|
|
412
|
+
if (typeof buffer !== 'object' || buffer === null) {
|
|
413
|
+
return { bytes: Number.POSITIVE_INFINITY, kind };
|
|
414
|
+
}
|
|
415
|
+
// Even a one-byte cross-realm view retains its complete backing allocation.
|
|
416
|
+
visit(buffer, depth + 1);
|
|
417
|
+
return { bytes: 0, kind };
|
|
418
|
+
}
|
|
419
|
+
const brand = getRetainedStorageBrand(current);
|
|
420
|
+
if (!brand) {
|
|
421
|
+
return undefined;
|
|
422
|
+
}
|
|
423
|
+
let getter;
|
|
424
|
+
const kind = 'buffer';
|
|
425
|
+
switch (brand) {
|
|
426
|
+
case 'ArrayBuffer': {
|
|
427
|
+
getter = arrayBufferByteLengthGetter;
|
|
428
|
+
break;
|
|
429
|
+
}
|
|
430
|
+
case 'SharedArrayBuffer': {
|
|
431
|
+
getter = sharedArrayBufferByteLengthGetter;
|
|
432
|
+
break;
|
|
433
|
+
}
|
|
434
|
+
case 'Blob':
|
|
435
|
+
case 'File': {
|
|
436
|
+
// Blob slices can retain an arbitrarily larger native backing allocation,
|
|
437
|
+
// and neither browser nor Node exposes its extent or ownership. Detached
|
|
438
|
+
// queues must fail closed; waiting readers bypass retained-size inspection.
|
|
439
|
+
return { bytes: Number.POSITIVE_INFINITY, kind: 'blob' };
|
|
440
|
+
}
|
|
441
|
+
case 'Map': {
|
|
442
|
+
return { bytes: 0, kind: 'map' };
|
|
443
|
+
}
|
|
444
|
+
case 'Date': {
|
|
445
|
+
Reflect.apply(dateTimestampGetter, current, []);
|
|
446
|
+
return { bytes: 8, kind: 'date' };
|
|
447
|
+
}
|
|
448
|
+
case 'Set': {
|
|
449
|
+
return { bytes: 0, kind: 'set' };
|
|
450
|
+
}
|
|
451
|
+
case 'Headers': {
|
|
452
|
+
return { bytes: 0, kind: 'headers' };
|
|
453
|
+
}
|
|
454
|
+
default: {
|
|
455
|
+
return undefined;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
const bytes = getter?.call(current);
|
|
459
|
+
return {
|
|
460
|
+
bytes: typeof bytes === 'number' && Number.isSafeInteger(bytes) && bytes >= 0
|
|
461
|
+
? bytes
|
|
462
|
+
: Number.POSITIVE_INFINITY,
|
|
463
|
+
kind,
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
function visitHiddenEventValues(current, kind, visit) {
|
|
467
|
+
if (kind === 'map') {
|
|
468
|
+
for (const [key, entry] of mapEntries.call(current)) {
|
|
469
|
+
if (!visit(key, 8) || !visit(entry, 8)) {
|
|
470
|
+
return false;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
if (kind === 'set') {
|
|
475
|
+
for (const entry of setValues.call(current)) {
|
|
476
|
+
if (!visit(entry, 8)) {
|
|
477
|
+
return false;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
if (kind === 'headers') {
|
|
482
|
+
if (!headersEntries) {
|
|
483
|
+
return false;
|
|
484
|
+
}
|
|
485
|
+
for (const [name, value] of headersEntries.call(current)) {
|
|
486
|
+
if (!visit(name, 8) || !visit(value, 8)) {
|
|
487
|
+
return false;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
return true;
|
|
492
|
+
}
|
|
493
|
+
function getInspectableEventKeys(current, kind, availableBytes) {
|
|
494
|
+
if (Array.isArray(current)) {
|
|
495
|
+
const descriptor = Object.getOwnPropertyDescriptor(current, 'length');
|
|
496
|
+
const length = descriptor && 'value' in descriptor ? descriptor.value : undefined;
|
|
497
|
+
if (typeof length !== 'number' ||
|
|
498
|
+
!Number.isSafeInteger(length) ||
|
|
499
|
+
length < 0 ||
|
|
500
|
+
length > Math.floor(availableBytes / 16)) {
|
|
501
|
+
return undefined;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
if (kind !== 'typed-array') {
|
|
505
|
+
return Reflect.ownKeys(current);
|
|
506
|
+
}
|
|
507
|
+
const length = typedArrayLengthGetter?.call(current);
|
|
508
|
+
if (typeof length !== 'number' ||
|
|
509
|
+
!Number.isSafeInteger(length) ||
|
|
510
|
+
length < 0 ||
|
|
511
|
+
length > MAX_INSPECTABLE_TYPED_ARRAY_ELEMENTS) {
|
|
512
|
+
return undefined;
|
|
513
|
+
}
|
|
514
|
+
return Reflect.ownKeys(current).filter((key) => {
|
|
515
|
+
if (typeof key !== 'string') {
|
|
516
|
+
return true;
|
|
517
|
+
}
|
|
518
|
+
const index = Number(key);
|
|
519
|
+
return !Number.isInteger(index) || index < 0 || index >= length || String(index) !== key;
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
function visitInspectableEventProperties(current, kind, depth, availableBytes, charge, visit) {
|
|
523
|
+
const keys = getInspectableEventKeys(current, kind, availableBytes());
|
|
524
|
+
if (keys === undefined) {
|
|
525
|
+
return false;
|
|
526
|
+
}
|
|
527
|
+
for (const key of keys) {
|
|
528
|
+
if (!charge(typeof key === 'string' ? key.length * 2 + 8 : 8)) {
|
|
529
|
+
return false;
|
|
530
|
+
}
|
|
531
|
+
if (typeof key === 'symbol') {
|
|
532
|
+
visit(key, depth + 1);
|
|
533
|
+
}
|
|
534
|
+
const descriptor = Object.getOwnPropertyDescriptor(current, key);
|
|
535
|
+
if (!descriptor) {
|
|
536
|
+
return false;
|
|
537
|
+
}
|
|
538
|
+
if (!('value' in descriptor)) {
|
|
539
|
+
if (key === 'stack' && isTrustedNativeErrorStack(current, descriptor)) {
|
|
540
|
+
continue;
|
|
541
|
+
}
|
|
542
|
+
return false;
|
|
543
|
+
}
|
|
544
|
+
visit(descriptor.value, depth + 1, kind === 'blob');
|
|
545
|
+
}
|
|
546
|
+
return true;
|
|
547
|
+
}
|
|
548
|
+
function visitRetainedEventPrototypes(current, depth, isBlobInternalHandle, visited, availableBytes, charge, visit, retainPrototype) {
|
|
549
|
+
let prototype = Object.getPrototypeOf(current);
|
|
550
|
+
for (let prototypeDepth = depth + 1; prototype !== null; prototypeDepth += 1) {
|
|
551
|
+
if (prototypeDepth >= MAX_BUFFERED_EVENT_DEPTH) {
|
|
552
|
+
return false;
|
|
553
|
+
}
|
|
554
|
+
if (trustedIntrinsicPrototypes.has(prototype) ||
|
|
555
|
+
(isBlobInternalHandle && prototype === blobInternalHandlePrototype)) {
|
|
556
|
+
return true;
|
|
557
|
+
}
|
|
558
|
+
if (visited.has(prototype)) {
|
|
559
|
+
visit(prototype, prototypeDepth);
|
|
560
|
+
return availableBytes() >= 0;
|
|
561
|
+
}
|
|
562
|
+
visited.add(prototype);
|
|
563
|
+
const retainedPrototype = prototype;
|
|
564
|
+
const retained = retainPrototype(retainedPrototype, () => {
|
|
565
|
+
if (!charge(16)) {
|
|
566
|
+
return false;
|
|
567
|
+
}
|
|
568
|
+
const intrinsic = getTrustedForeignIntrinsic(retainedPrototype);
|
|
569
|
+
if (!intrinsic) {
|
|
570
|
+
return visitInspectableEventProperties(retainedPrototype, undefined, prototypeDepth, availableBytes, charge, visit);
|
|
571
|
+
}
|
|
572
|
+
for (const key of Reflect.ownKeys(retainedPrototype)) {
|
|
573
|
+
const descriptor = Object.getOwnPropertyDescriptor(retainedPrototype, key);
|
|
574
|
+
if (!descriptor) {
|
|
575
|
+
return false;
|
|
576
|
+
}
|
|
577
|
+
if (isCanonicalIntrinsicDescriptor(descriptor, intrinsic.descriptors.get(key), intrinsic.functionPrototype)) {
|
|
578
|
+
continue;
|
|
579
|
+
}
|
|
580
|
+
if (!charge(typeof key === 'string' ? key.length * 2 + 8 : 8) || !('value' in descriptor)) {
|
|
581
|
+
return false;
|
|
582
|
+
}
|
|
583
|
+
if (typeof key === 'symbol') {
|
|
584
|
+
visit(key, prototypeDepth + 1);
|
|
585
|
+
}
|
|
586
|
+
visit(descriptor.value, prototypeDepth + 1);
|
|
587
|
+
}
|
|
588
|
+
return availableBytes() >= 0;
|
|
589
|
+
});
|
|
590
|
+
if (!retained) {
|
|
591
|
+
return false;
|
|
592
|
+
}
|
|
593
|
+
prototype = Object.getPrototypeOf(retainedPrototype);
|
|
594
|
+
}
|
|
595
|
+
return true;
|
|
596
|
+
}
|
|
597
|
+
const BUFFERED_LEDGER_ENTRY_BYTES = 32;
|
|
598
|
+
const BUFFERED_LEDGER_NODE_BYTES = 32;
|
|
599
|
+
const BUFFERED_LEDGER_EDGE_BYTES = 8;
|
|
600
|
+
const BUFFERED_LEDGER_OWNER_BYTES = 16;
|
|
601
|
+
const MAX_BUFFERED_LEDGER_RECONCILIATION_WORK = 128 * 1024;
|
|
602
|
+
function inspectBufferedEventGraph(value, remainingBytes) {
|
|
603
|
+
let bytes = 0;
|
|
604
|
+
let scalarBytes = 0;
|
|
605
|
+
const visited = new WeakSet();
|
|
606
|
+
const visitedSymbols = new Set();
|
|
607
|
+
const roots = new Set();
|
|
608
|
+
const nodes = new Map();
|
|
609
|
+
let activeNode;
|
|
610
|
+
const availableBytes = () => remainingBytes - bytes;
|
|
611
|
+
const charge = (amount) => {
|
|
612
|
+
if (!Number.isSafeInteger(amount) || amount < 0) {
|
|
613
|
+
bytes = remainingBytes + 1;
|
|
614
|
+
return false;
|
|
615
|
+
}
|
|
616
|
+
bytes += amount;
|
|
617
|
+
if (activeNode) {
|
|
618
|
+
activeNode.bytes += amount;
|
|
619
|
+
}
|
|
620
|
+
else {
|
|
621
|
+
scalarBytes += amount;
|
|
622
|
+
}
|
|
623
|
+
return bytes <= remainingBytes;
|
|
624
|
+
};
|
|
625
|
+
const addIdentity = (identity) => {
|
|
626
|
+
if (activeNode) {
|
|
627
|
+
activeNode.edges.add(identity);
|
|
628
|
+
}
|
|
629
|
+
else {
|
|
630
|
+
roots.add(identity);
|
|
631
|
+
}
|
|
632
|
+
};
|
|
633
|
+
const retainIdentity = (identity, inspect) => {
|
|
634
|
+
addIdentity(identity);
|
|
635
|
+
const node = { bytes: 0, edges: new Set() };
|
|
636
|
+
nodes.set(identity, node);
|
|
637
|
+
const previous = activeNode;
|
|
638
|
+
activeNode = node;
|
|
639
|
+
try {
|
|
640
|
+
return inspect();
|
|
641
|
+
}
|
|
642
|
+
finally {
|
|
643
|
+
activeNode = previous;
|
|
644
|
+
}
|
|
645
|
+
};
|
|
646
|
+
const visitSymbol = (current) => {
|
|
647
|
+
if (visitedSymbols.has(current)) {
|
|
648
|
+
addIdentity(current);
|
|
649
|
+
charge(8);
|
|
650
|
+
return;
|
|
651
|
+
}
|
|
652
|
+
visitedSymbols.add(current);
|
|
653
|
+
if (!retainIdentity(current, () => {
|
|
654
|
+
if (!symbolDescriptionGetter) {
|
|
655
|
+
return false;
|
|
656
|
+
}
|
|
657
|
+
const description = Reflect.apply(symbolDescriptionGetter, current, []);
|
|
658
|
+
return charge(8 + (description?.length ?? 0) * 2);
|
|
659
|
+
})) {
|
|
660
|
+
bytes = remainingBytes + 1;
|
|
661
|
+
}
|
|
662
|
+
};
|
|
663
|
+
const visit = (current, depth, isBlobInternalHandle = false) => {
|
|
664
|
+
if (bytes > remainingBytes) {
|
|
665
|
+
return;
|
|
666
|
+
}
|
|
667
|
+
if (typeof current === 'string') {
|
|
668
|
+
charge(current.length * 2);
|
|
669
|
+
return;
|
|
670
|
+
}
|
|
671
|
+
if (typeof current === 'symbol') {
|
|
672
|
+
visitSymbol(current);
|
|
673
|
+
return;
|
|
674
|
+
}
|
|
675
|
+
if (typeof current === 'function') {
|
|
676
|
+
bytes = remainingBytes + 1;
|
|
677
|
+
return;
|
|
678
|
+
}
|
|
679
|
+
if (current === null || typeof current !== 'object') {
|
|
680
|
+
charge(8);
|
|
681
|
+
return;
|
|
682
|
+
}
|
|
683
|
+
if (nativeProxyDetector?.(current)) {
|
|
684
|
+
bytes = remainingBytes + 1;
|
|
685
|
+
return;
|
|
686
|
+
}
|
|
687
|
+
if (depth >= MAX_BUFFERED_EVENT_DEPTH) {
|
|
688
|
+
bytes = remainingBytes + 1;
|
|
689
|
+
return;
|
|
690
|
+
}
|
|
691
|
+
if (visited.has(current)) {
|
|
692
|
+
addIdentity(current);
|
|
693
|
+
charge(8);
|
|
694
|
+
return;
|
|
695
|
+
}
|
|
696
|
+
visited.add(current);
|
|
697
|
+
if (!retainIdentity(current, () => {
|
|
698
|
+
if (!charge(16)) {
|
|
699
|
+
return false;
|
|
700
|
+
}
|
|
701
|
+
const retainedStorage = estimateRetainedBufferBytes(current, visit, depth);
|
|
702
|
+
if (!visitRetainedEventPrototypes(current, depth, isBlobInternalHandle, visited, availableBytes, charge, visit, retainIdentity)) {
|
|
703
|
+
return false;
|
|
704
|
+
}
|
|
705
|
+
if (retainedStorage !== undefined && !charge(retainedStorage.bytes)) {
|
|
706
|
+
return false;
|
|
707
|
+
}
|
|
708
|
+
if (!visitHiddenEventValues(current, retainedStorage?.kind, (hiddenValue, overhead) => {
|
|
709
|
+
if (!charge(overhead)) {
|
|
710
|
+
return false;
|
|
711
|
+
}
|
|
712
|
+
visit(hiddenValue, depth + 1);
|
|
713
|
+
return bytes <= remainingBytes;
|
|
714
|
+
})) {
|
|
715
|
+
return false;
|
|
716
|
+
}
|
|
717
|
+
return visitInspectableEventProperties(current, retainedStorage?.kind, depth, availableBytes, charge, visit);
|
|
718
|
+
})) {
|
|
719
|
+
bytes = remainingBytes + 1;
|
|
720
|
+
}
|
|
721
|
+
};
|
|
722
|
+
try {
|
|
723
|
+
visit(value, 0);
|
|
724
|
+
}
|
|
725
|
+
catch {
|
|
726
|
+
return undefined;
|
|
727
|
+
}
|
|
728
|
+
return bytes <= remainingBytes ? { scalarBytes, roots, nodes } : undefined;
|
|
729
|
+
}
|
|
730
|
+
function areBufferedRetainedEdgesEqual(first, second) {
|
|
731
|
+
if (first.size !== second.size) {
|
|
732
|
+
return false;
|
|
733
|
+
}
|
|
734
|
+
for (const identity of first) {
|
|
735
|
+
if (!second.has(identity)) {
|
|
736
|
+
return false;
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
return true;
|
|
740
|
+
}
|
|
741
|
+
function getBufferedLedgerNodeBytes(node, owners) {
|
|
742
|
+
return (node.bytes +
|
|
743
|
+
BUFFERED_LEDGER_NODE_BYTES +
|
|
744
|
+
node.edges.size * BUFFERED_LEDGER_EDGE_BYTES +
|
|
745
|
+
owners * BUFFERED_LEDGER_OWNER_BYTES);
|
|
746
|
+
}
|
|
747
|
+
function getBufferedLedgerEntryBytes(entry) {
|
|
748
|
+
return BUFFERED_LEDGER_ENTRY_BYTES + entry.scalarBytes + entry.roots.size * BUFFERED_LEDGER_EDGE_BYTES;
|
|
749
|
+
}
|
|
750
|
+
function collectBufferedLedgerIdentities(roots, candidate, records, work) {
|
|
751
|
+
const identities = new Set();
|
|
752
|
+
const pending = [...roots];
|
|
753
|
+
while (pending.length) {
|
|
754
|
+
work.remaining -= 1;
|
|
755
|
+
if (work.remaining < 0) {
|
|
756
|
+
return undefined;
|
|
757
|
+
}
|
|
758
|
+
const identity = pending.pop();
|
|
759
|
+
if (identities.has(identity)) {
|
|
760
|
+
continue;
|
|
761
|
+
}
|
|
762
|
+
const node = candidate.get(identity) ?? records.get(identity);
|
|
763
|
+
if (!node) {
|
|
764
|
+
return undefined;
|
|
765
|
+
}
|
|
766
|
+
identities.add(identity);
|
|
767
|
+
for (const edge of node.edges) {
|
|
768
|
+
pending.push(edge);
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
return identities;
|
|
772
|
+
}
|
|
773
|
+
function getBufferedLedgerChange(identity, graph, records, changes, node) {
|
|
774
|
+
const existing = changes.get(identity);
|
|
775
|
+
if (existing) {
|
|
776
|
+
if (node) {
|
|
777
|
+
existing.node = node;
|
|
778
|
+
}
|
|
779
|
+
return existing;
|
|
780
|
+
}
|
|
781
|
+
const current = node ?? graph.nodes.get(identity) ?? records.get(identity);
|
|
782
|
+
if (!current) {
|
|
783
|
+
return undefined;
|
|
784
|
+
}
|
|
785
|
+
const update = { node: current, ownerDelta: 0 };
|
|
786
|
+
changes.set(identity, update);
|
|
787
|
+
return update;
|
|
788
|
+
}
|
|
789
|
+
function findBufferedLedgerAffectedOwners(entry, graph, records, changes, work) {
|
|
790
|
+
const affected = new Set([entry]);
|
|
791
|
+
for (const [identity, node] of graph.nodes) {
|
|
792
|
+
work.remaining -= 1;
|
|
793
|
+
if (work.remaining < 0) {
|
|
794
|
+
return undefined;
|
|
795
|
+
}
|
|
796
|
+
const previous = records.get(identity);
|
|
797
|
+
if (!previous) {
|
|
798
|
+
continue;
|
|
799
|
+
}
|
|
800
|
+
const changedEdges = !areBufferedRetainedEdgesEqual(previous.edges, node.edges);
|
|
801
|
+
if (previous.bytes !== node.bytes || changedEdges) {
|
|
802
|
+
getBufferedLedgerChange(identity, graph, records, changes, node);
|
|
803
|
+
}
|
|
804
|
+
if (!changedEdges) {
|
|
805
|
+
continue;
|
|
806
|
+
}
|
|
807
|
+
for (const owner of previous.owners) {
|
|
808
|
+
work.remaining -= 1;
|
|
809
|
+
if (work.remaining < 0) {
|
|
810
|
+
return undefined;
|
|
811
|
+
}
|
|
812
|
+
affected.add(owner);
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
return affected;
|
|
816
|
+
}
|
|
817
|
+
function updateBufferedLedgerMembershipChanges(owner, next, graph, records, changes, work) {
|
|
818
|
+
for (const identity of owner.identities) {
|
|
819
|
+
work.remaining -= 1;
|
|
820
|
+
if (work.remaining < 0) {
|
|
821
|
+
return false;
|
|
822
|
+
}
|
|
823
|
+
if (!next.has(identity)) {
|
|
824
|
+
const update = getBufferedLedgerChange(identity, graph, records, changes);
|
|
825
|
+
if (!update) {
|
|
826
|
+
return false;
|
|
827
|
+
}
|
|
828
|
+
update.ownerDelta -= 1;
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
for (const identity of next) {
|
|
832
|
+
work.remaining -= 1;
|
|
833
|
+
if (work.remaining < 0) {
|
|
834
|
+
return false;
|
|
835
|
+
}
|
|
836
|
+
if (!owner.identities.has(identity)) {
|
|
837
|
+
const update = getBufferedLedgerChange(identity, graph, records, changes);
|
|
838
|
+
if (!update) {
|
|
839
|
+
return false;
|
|
840
|
+
}
|
|
841
|
+
update.ownerDelta += 1;
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
return true;
|
|
845
|
+
}
|
|
846
|
+
function collectBufferedLedgerMemberships(entry, graph, affected, records, changes, work) {
|
|
847
|
+
const memberships = new Map();
|
|
848
|
+
for (const owner of affected) {
|
|
849
|
+
const roots = owner === entry ? graph.roots : owner.roots;
|
|
850
|
+
const next = collectBufferedLedgerIdentities(roots, graph.nodes, records, work);
|
|
851
|
+
if (!next || !updateBufferedLedgerMembershipChanges(owner, next, graph, records, changes, work)) {
|
|
852
|
+
return undefined;
|
|
853
|
+
}
|
|
854
|
+
memberships.set(owner, next);
|
|
855
|
+
}
|
|
856
|
+
return memberships;
|
|
857
|
+
}
|
|
858
|
+
function projectBufferedLedgerBytes(currentBytes, entry, graph, isNew, changes, records) {
|
|
859
|
+
let projected = currentBytes - (isNew ? 0 : getBufferedLedgerEntryBytes(entry)) + getBufferedLedgerEntryBytes(graph);
|
|
860
|
+
for (const [identity, update] of changes) {
|
|
861
|
+
const previous = records.get(identity);
|
|
862
|
+
const owners = (previous?.owners.size ?? 0) + update.ownerDelta;
|
|
863
|
+
if (owners < 0) {
|
|
864
|
+
return undefined;
|
|
865
|
+
}
|
|
866
|
+
if (previous) {
|
|
867
|
+
projected -= getBufferedLedgerNodeBytes(previous, previous.owners.size);
|
|
868
|
+
}
|
|
869
|
+
if (owners) {
|
|
870
|
+
projected += getBufferedLedgerNodeBytes(update.node, owners);
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
return Number.isSafeInteger(projected) && projected >= 0 && projected <= MAX_BUFFERED_ITERATOR_BYTES
|
|
874
|
+
? projected
|
|
875
|
+
: undefined;
|
|
876
|
+
}
|
|
877
|
+
function applyBufferedLedgerChanges(records, changes, memberships) {
|
|
878
|
+
for (const [identity, update] of changes) {
|
|
879
|
+
const previous = records.get(identity);
|
|
880
|
+
const owners = (previous?.owners.size ?? 0) + update.ownerDelta;
|
|
881
|
+
if (!owners) {
|
|
882
|
+
continue;
|
|
883
|
+
}
|
|
884
|
+
if (previous) {
|
|
885
|
+
previous.bytes = update.node.bytes;
|
|
886
|
+
previous.edges = update.node.edges;
|
|
887
|
+
}
|
|
888
|
+
else {
|
|
889
|
+
records.set(identity, {
|
|
890
|
+
bytes: update.node.bytes,
|
|
891
|
+
edges: update.node.edges,
|
|
892
|
+
owners: new Set(),
|
|
893
|
+
});
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
for (const [owner, next] of memberships) {
|
|
897
|
+
for (const identity of owner.identities) {
|
|
898
|
+
if (!next.has(identity)) {
|
|
899
|
+
records.get(identity)?.owners.delete(owner);
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
for (const identity of next) {
|
|
903
|
+
if (!owner.identities.has(identity)) {
|
|
904
|
+
records.get(identity).owners.add(owner);
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
owner.identities = next;
|
|
908
|
+
}
|
|
909
|
+
for (const identity of changes.keys()) {
|
|
910
|
+
if (records.get(identity)?.owners.size === 0) {
|
|
911
|
+
records.delete(identity);
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
/**
|
|
916
|
+
* Account for queue-owned identities once while charging bounded ownership and
|
|
917
|
+
* edge metadata. Shared topology changes are reconciled for every queued owner.
|
|
918
|
+
*/
|
|
919
|
+
function createBufferedEventLedger() {
|
|
920
|
+
const records = new Map();
|
|
921
|
+
let bytes = 0;
|
|
922
|
+
const reconcile = (entry, graph, isNew) => {
|
|
923
|
+
const work = { remaining: MAX_BUFFERED_LEDGER_RECONCILIATION_WORK };
|
|
924
|
+
const changes = new Map();
|
|
925
|
+
const affected = findBufferedLedgerAffectedOwners(entry, graph, records, changes, work);
|
|
926
|
+
if (!affected) {
|
|
927
|
+
return false;
|
|
928
|
+
}
|
|
929
|
+
const memberships = collectBufferedLedgerMemberships(entry, graph, affected, records, changes, work);
|
|
930
|
+
if (!memberships) {
|
|
931
|
+
return false;
|
|
932
|
+
}
|
|
933
|
+
const projectedBytes = projectBufferedLedgerBytes(bytes, entry, graph, isNew, changes, records);
|
|
934
|
+
if (projectedBytes === undefined) {
|
|
935
|
+
return false;
|
|
936
|
+
}
|
|
937
|
+
applyBufferedLedgerChanges(records, changes, memberships);
|
|
938
|
+
entry.scalarBytes = graph.scalarBytes;
|
|
939
|
+
entry.roots = graph.roots;
|
|
940
|
+
bytes = projectedBytes;
|
|
941
|
+
return true;
|
|
942
|
+
};
|
|
943
|
+
const release = (entry) => {
|
|
944
|
+
bytes -= getBufferedLedgerEntryBytes(entry);
|
|
945
|
+
for (const identity of entry.identities) {
|
|
946
|
+
const record = records.get(identity);
|
|
947
|
+
if (!record?.owners.delete(entry)) {
|
|
948
|
+
continue;
|
|
949
|
+
}
|
|
950
|
+
bytes -= BUFFERED_LEDGER_OWNER_BYTES;
|
|
951
|
+
if (record.owners.size === 0) {
|
|
952
|
+
bytes -= getBufferedLedgerNodeBytes(record, 0);
|
|
953
|
+
records.delete(identity);
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
entry.identities.clear();
|
|
957
|
+
};
|
|
958
|
+
return {
|
|
959
|
+
retain(graph) {
|
|
960
|
+
const entry = { scalarBytes: 0, roots: new Set(), identities: new Set() };
|
|
961
|
+
return reconcile(entry, graph, true) ? entry : undefined;
|
|
962
|
+
},
|
|
963
|
+
refresh(entry, graph) {
|
|
964
|
+
return reconcile(entry, graph, false);
|
|
965
|
+
},
|
|
966
|
+
release,
|
|
967
|
+
clear() {
|
|
968
|
+
records.clear();
|
|
969
|
+
bytes = 0;
|
|
970
|
+
},
|
|
971
|
+
};
|
|
972
|
+
}
|
|
40
973
|
/** An abortable event stream with typed listeners, asynchronous iteration, and lifecycle state. */
|
|
41
974
|
class EventStream {
|
|
42
975
|
/** Creates an unstarted stream with independent connection and completion lifecycle promises. */
|
|
@@ -54,6 +987,10 @@ class EventStream {
|
|
|
54
987
|
// oxlint-enable class-methods-use-this
|
|
55
988
|
_EventStream_listeners.set(this, Object.create(null));
|
|
56
989
|
_EventStream_abortListeners.set(this, []);
|
|
990
|
+
_EventStream_emittedListenerRegistrations.set(this, new WeakMap());
|
|
991
|
+
_EventStream_pendingListenerCleanup.set(this, new Set());
|
|
992
|
+
_EventStream_pendingBufferedEventChecks.set(this, new Set());
|
|
993
|
+
_EventStream_listenerDispatchDepth.set(this, 0);
|
|
57
994
|
_EventStream_ended.set(this, false);
|
|
58
995
|
_EventStream_errored.set(this, false);
|
|
59
996
|
_EventStream_aborted.set(this, false);
|
|
@@ -162,7 +1099,14 @@ class EventStream {
|
|
|
162
1099
|
if (!listeners) {
|
|
163
1100
|
return this;
|
|
164
1101
|
}
|
|
165
|
-
const
|
|
1102
|
+
const emittedRegistration = tslib_1.__classPrivateFieldGet(this, _EventStream_emittedListenerRegistrations, "f").get(listener);
|
|
1103
|
+
if (emittedRegistration?.event === event &&
|
|
1104
|
+
!emittedRegistration.registration.removed &&
|
|
1105
|
+
!emittedRegistration.registration.detached) {
|
|
1106
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_removeEmittedListener).call(this, event, emittedRegistration.registration);
|
|
1107
|
+
return this;
|
|
1108
|
+
}
|
|
1109
|
+
const index = listeners.findIndex((l) => !l.removed && l.listener === listener);
|
|
166
1110
|
if (index !== -1) {
|
|
167
1111
|
listeners.splice(index, 1);
|
|
168
1112
|
}
|
|
@@ -206,9 +1150,9 @@ class EventStream {
|
|
|
206
1150
|
resolve((values.length > 1 ? values : values[0]));
|
|
207
1151
|
};
|
|
208
1152
|
if (event !== 'error') {
|
|
209
|
-
this.
|
|
1153
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_onceForEmitted).call(this, 'error', onError);
|
|
210
1154
|
}
|
|
211
|
-
this.
|
|
1155
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_onceForEmitted).call(this, event, onEvent);
|
|
212
1156
|
});
|
|
213
1157
|
}
|
|
214
1158
|
/**
|
|
@@ -225,7 +1169,15 @@ class EventStream {
|
|
|
225
1169
|
*/
|
|
226
1170
|
events(event) {
|
|
227
1171
|
return this._createIterator((push) => {
|
|
228
|
-
const onEvent = (...args) =>
|
|
1172
|
+
const onEvent = (...args) => {
|
|
1173
|
+
sdkOwnedBufferedEventArguments.add(args);
|
|
1174
|
+
try {
|
|
1175
|
+
push(args);
|
|
1176
|
+
}
|
|
1177
|
+
finally {
|
|
1178
|
+
sdkOwnedBufferedEventArguments.delete(args);
|
|
1179
|
+
}
|
|
1180
|
+
};
|
|
229
1181
|
this.on(event, onEvent);
|
|
230
1182
|
return () => this.off(event, onEvent);
|
|
231
1183
|
}, {
|
|
@@ -243,10 +1195,16 @@ class EventStream {
|
|
|
243
1195
|
* here: the iterator ends when the stream ends, listeners are removed on
|
|
244
1196
|
* end/return, and a terminal error is retained until buffered values have
|
|
245
1197
|
* drained so it is surfaced even when no reader was waiting when it fired.
|
|
1198
|
+
* Detached consumers have bounded event and byte queues; exceeding either
|
|
1199
|
+
* limit fails the stream and aborts its underlying request. Detached queues
|
|
1200
|
+
* also reject accessor-backed payloads because getter closures cannot be
|
|
1201
|
+
* safely sized without executing untrusted code.
|
|
246
1202
|
*/
|
|
247
1203
|
_createIterator(attach, { rejectOnError = true, rejectOnAbort = true, onReturn, } = {}) {
|
|
248
1204
|
const pushQueue = createEventQueue();
|
|
1205
|
+
const bufferedEventSizes = createEventQueue();
|
|
249
1206
|
const readQueue = createEventQueue();
|
|
1207
|
+
const bufferedLedger = createBufferedEventLedger();
|
|
250
1208
|
let ended = this.ended;
|
|
251
1209
|
let failure;
|
|
252
1210
|
let failureDelivered = false;
|
|
@@ -274,6 +1232,39 @@ class EventStream {
|
|
|
274
1232
|
this.off('abort', onFailure);
|
|
275
1233
|
}
|
|
276
1234
|
};
|
|
1235
|
+
const deactivateBufferedEvent = (entry) => {
|
|
1236
|
+
entry.active = false;
|
|
1237
|
+
if (entry.check) {
|
|
1238
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_pendingBufferedEventChecks, "f").delete(entry.check);
|
|
1239
|
+
entry.check = undefined;
|
|
1240
|
+
}
|
|
1241
|
+
};
|
|
1242
|
+
const failBufferedEvents = (discardRetained = false) => {
|
|
1243
|
+
if (discardRetained) {
|
|
1244
|
+
while (bufferedEventSizes.length) {
|
|
1245
|
+
deactivateBufferedEvent(bufferedEventSizes.dequeue());
|
|
1246
|
+
}
|
|
1247
|
+
pushQueue.clear();
|
|
1248
|
+
bufferedLedger.clear();
|
|
1249
|
+
}
|
|
1250
|
+
const error = new error_1.OpenAIError(`Event stream iterator buffer limit exceeded (${MAX_BUFFERED_ITERATOR_EVENTS} events or ${MAX_BUFFERED_ITERATOR_BYTES} bytes); consume events as they arrive.`);
|
|
1251
|
+
try {
|
|
1252
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_handleError).call(this, error);
|
|
1253
|
+
}
|
|
1254
|
+
finally {
|
|
1255
|
+
this.controller.abort();
|
|
1256
|
+
}
|
|
1257
|
+
return error;
|
|
1258
|
+
};
|
|
1259
|
+
const revalidateBufferedEvent = (value, entry) => {
|
|
1260
|
+
if (!entry.active || tslib_1.__classPrivateFieldGet(this, _EventStream_ended, "f")) {
|
|
1261
|
+
return;
|
|
1262
|
+
}
|
|
1263
|
+
const graph = inspectBufferedEventGraph(value, MAX_BUFFERED_ITERATOR_BYTES);
|
|
1264
|
+
if (!graph || !bufferedLedger.refresh(entry.retention, graph)) {
|
|
1265
|
+
failBufferedEvents(true);
|
|
1266
|
+
}
|
|
1267
|
+
};
|
|
277
1268
|
const push = (value) => {
|
|
278
1269
|
if (ended) {
|
|
279
1270
|
return;
|
|
@@ -283,7 +1274,34 @@ class EventStream {
|
|
|
283
1274
|
reader.resolve({ value, done: false });
|
|
284
1275
|
}
|
|
285
1276
|
else {
|
|
1277
|
+
if (pushQueue.length >= MAX_BUFFERED_ITERATOR_EVENTS) {
|
|
1278
|
+
failBufferedEvents();
|
|
1279
|
+
return;
|
|
1280
|
+
}
|
|
1281
|
+
const graph = inspectBufferedEventGraph(value, MAX_BUFFERED_ITERATOR_BYTES);
|
|
1282
|
+
const retention = graph && bufferedLedger.retain(graph);
|
|
1283
|
+
if (!retention) {
|
|
1284
|
+
failBufferedEvents();
|
|
1285
|
+
return;
|
|
1286
|
+
}
|
|
1287
|
+
if (typeof value === 'object' && value !== null && sdkOwnedBufferedEventArguments.has(value)) {
|
|
1288
|
+
const argumentsTuple = value;
|
|
1289
|
+
for (let index = 0; index < argumentsTuple.length; index += 1) {
|
|
1290
|
+
const argument = argumentsTuple[index];
|
|
1291
|
+
if (typeof argument === 'string') {
|
|
1292
|
+
argumentsTuple[index] = bufferedJSONParse(bufferedJSONStringify(argument));
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1296
|
+
const entry = { retention, active: true, check: undefined };
|
|
286
1297
|
pushQueue.enqueue(value);
|
|
1298
|
+
bufferedEventSizes.enqueue(entry);
|
|
1299
|
+
const check = () => {
|
|
1300
|
+
entry.check = undefined;
|
|
1301
|
+
revalidateBufferedEvent(value, entry);
|
|
1302
|
+
};
|
|
1303
|
+
entry.check = check;
|
|
1304
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_pendingBufferedEventChecks, "f").add(check);
|
|
287
1305
|
}
|
|
288
1306
|
};
|
|
289
1307
|
const onFailure = (error) => {
|
|
@@ -313,7 +1331,17 @@ class EventStream {
|
|
|
313
1331
|
return {
|
|
314
1332
|
next: () => {
|
|
315
1333
|
if (pushQueue.length) {
|
|
316
|
-
|
|
1334
|
+
const value = pushQueue.dequeue();
|
|
1335
|
+
const entry = bufferedEventSizes.dequeue();
|
|
1336
|
+
deactivateBufferedEvent(entry);
|
|
1337
|
+
const graph = inspectBufferedEventGraph(value, MAX_BUFFERED_ITERATOR_BYTES);
|
|
1338
|
+
if (!graph || !bufferedLedger.refresh(entry.retention, graph)) {
|
|
1339
|
+
const error = failBufferedEvents(true);
|
|
1340
|
+
failureDelivered = true;
|
|
1341
|
+
return Promise.reject(error);
|
|
1342
|
+
}
|
|
1343
|
+
bufferedLedger.release(entry.retention);
|
|
1344
|
+
return Promise.resolve({ value, done: false });
|
|
317
1345
|
}
|
|
318
1346
|
if (failure && !failureDelivered) {
|
|
319
1347
|
failureDelivered = true;
|
|
@@ -328,7 +1356,11 @@ class EventStream {
|
|
|
328
1356
|
},
|
|
329
1357
|
return: () => {
|
|
330
1358
|
ended = true;
|
|
1359
|
+
while (bufferedEventSizes.length) {
|
|
1360
|
+
deactivateBufferedEvent(bufferedEventSizes.dequeue());
|
|
1361
|
+
}
|
|
331
1362
|
pushQueue.clear();
|
|
1363
|
+
bufferedLedger.clear();
|
|
332
1364
|
cleanup();
|
|
333
1365
|
finishReaders();
|
|
334
1366
|
if (onReturn) {
|
|
@@ -353,7 +1385,7 @@ class EventStream {
|
|
|
353
1385
|
}
|
|
354
1386
|
/** Returns whether an event currently has one or more registered listeners. */
|
|
355
1387
|
_hasListeners(event) {
|
|
356
|
-
return Boolean(tslib_1.__classPrivateFieldGet(this, _EventStream_listeners, "f")[event]?.
|
|
1388
|
+
return Boolean(tslib_1.__classPrivateFieldGet(this, _EventStream_listeners, "f")[event]?.some((listener) => !listener.removed));
|
|
357
1389
|
}
|
|
358
1390
|
/** Dispatches a stream event and performs the associated lifecycle transitions. */
|
|
359
1391
|
_emit(event, ...args) {
|
|
@@ -368,9 +1400,31 @@ class EventStream {
|
|
|
368
1400
|
}
|
|
369
1401
|
const listeners = tslib_1.__classPrivateFieldGet(this, _EventStream_listeners, "f")[event];
|
|
370
1402
|
if (listeners) {
|
|
371
|
-
tslib_1.__classPrivateFieldGet(this, _EventStream_listeners, "f")[event] = listeners.filter((
|
|
372
|
-
|
|
373
|
-
|
|
1403
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_listeners, "f")[event] = listeners.filter((listener) => {
|
|
1404
|
+
if (listener.once) {
|
|
1405
|
+
listener.detached = true;
|
|
1406
|
+
}
|
|
1407
|
+
return !listener.once && !listener.removed;
|
|
1408
|
+
});
|
|
1409
|
+
tslib_1.__classPrivateFieldSet(this, _EventStream_listenerDispatchDepth, tslib_1.__classPrivateFieldGet(this, _EventStream_listenerDispatchDepth, "f") + 1, "f");
|
|
1410
|
+
try {
|
|
1411
|
+
for (const registration of listeners) {
|
|
1412
|
+
if (!registration.removed) {
|
|
1413
|
+
registration.listener(...args);
|
|
1414
|
+
}
|
|
1415
|
+
}
|
|
1416
|
+
}
|
|
1417
|
+
finally {
|
|
1418
|
+
tslib_1.__classPrivateFieldSet(this, _EventStream_listenerDispatchDepth, tslib_1.__classPrivateFieldGet(this, _EventStream_listenerDispatchDepth, "f") - 1, "f");
|
|
1419
|
+
if (tslib_1.__classPrivateFieldGet(this, _EventStream_listenerDispatchDepth, "f") === 0) {
|
|
1420
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_cleanupEmittedListeners).call(this);
|
|
1421
|
+
for (const check of tslib_1.__classPrivateFieldGet(this, _EventStream_pendingBufferedEventChecks, "f")) {
|
|
1422
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_pendingBufferedEventChecks, "f").delete(check);
|
|
1423
|
+
if (!tslib_1.__classPrivateFieldGet(this, _EventStream_ended, "f")) {
|
|
1424
|
+
check();
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
374
1428
|
}
|
|
375
1429
|
}
|
|
376
1430
|
if (event === 'abort') {
|
|
@@ -406,10 +1460,41 @@ class EventStream {
|
|
|
406
1460
|
}
|
|
407
1461
|
}
|
|
408
1462
|
exports.EventStream = EventStream;
|
|
409
|
-
_EventStream_connectedPromise = new WeakMap(), _EventStream_resolveConnectedPromise = new WeakMap(), _EventStream_rejectConnectedPromise = new WeakMap(), _EventStream_endPromise = new WeakMap(), _EventStream_resolveEndPromise = new WeakMap(), _EventStream_rejectEndPromise = new WeakMap(), _EventStream_listeners = new WeakMap(), _EventStream_abortListeners = new WeakMap(), _EventStream_ended = new WeakMap(), _EventStream_errored = new WeakMap(), _EventStream_aborted = new WeakMap(), _EventStream_catchingPromiseCreated = new WeakMap(), _EventStream_instances = new WeakSet(), _EventStream_removeAbortListeners = function _EventStream_removeAbortListeners() {
|
|
1463
|
+
_EventStream_connectedPromise = new WeakMap(), _EventStream_resolveConnectedPromise = new WeakMap(), _EventStream_rejectConnectedPromise = new WeakMap(), _EventStream_endPromise = new WeakMap(), _EventStream_resolveEndPromise = new WeakMap(), _EventStream_rejectEndPromise = new WeakMap(), _EventStream_listeners = new WeakMap(), _EventStream_abortListeners = new WeakMap(), _EventStream_emittedListenerRegistrations = new WeakMap(), _EventStream_pendingListenerCleanup = new WeakMap(), _EventStream_pendingBufferedEventChecks = new WeakMap(), _EventStream_listenerDispatchDepth = new WeakMap(), _EventStream_ended = new WeakMap(), _EventStream_errored = new WeakMap(), _EventStream_aborted = new WeakMap(), _EventStream_catchingPromiseCreated = new WeakMap(), _EventStream_instances = new WeakSet(), _EventStream_removeAbortListeners = function _EventStream_removeAbortListeners() {
|
|
410
1464
|
for (const { signal, listener } of tslib_1.__classPrivateFieldGet(this, _EventStream_abortListeners, "f").splice(0)) {
|
|
411
1465
|
signal.removeEventListener('abort', listener);
|
|
412
1466
|
}
|
|
1467
|
+
}, _EventStream_onceForEmitted = function _EventStream_onceForEmitted(event, listener) {
|
|
1468
|
+
const previousListeners = tslib_1.__classPrivateFieldGet(this, _EventStream_listeners, "f")[event];
|
|
1469
|
+
const previousLength = previousListeners?.length ?? 0;
|
|
1470
|
+
this.once(event, listener);
|
|
1471
|
+
const listeners = tslib_1.__classPrivateFieldGet(this, _EventStream_listeners, "f")[event];
|
|
1472
|
+
const [registration] = listeners?.slice(-1) ?? [];
|
|
1473
|
+
if ((previousListeners === undefined || listeners === previousListeners) &&
|
|
1474
|
+
listeners?.length === previousLength + 1 &&
|
|
1475
|
+
registration?.listener === listener &&
|
|
1476
|
+
registration.once) {
|
|
1477
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_emittedListenerRegistrations, "f").set(listener, { event, registration });
|
|
1478
|
+
}
|
|
1479
|
+
}, _EventStream_removeEmittedListener = function _EventStream_removeEmittedListener(event, registration) {
|
|
1480
|
+
if (registration.removed) {
|
|
1481
|
+
return;
|
|
1482
|
+
}
|
|
1483
|
+
registration.removed = true;
|
|
1484
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_emittedListenerRegistrations, "f").delete(registration.listener);
|
|
1485
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_pendingListenerCleanup, "f").add(event);
|
|
1486
|
+
if (tslib_1.__classPrivateFieldGet(this, _EventStream_listenerDispatchDepth, "f") === 0) {
|
|
1487
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_cleanupEmittedListeners).call(this);
|
|
1488
|
+
}
|
|
1489
|
+
}, _EventStream_cleanupEmittedListeners = function _EventStream_cleanupEmittedListeners() {
|
|
1490
|
+
for (const event of tslib_1.__classPrivateFieldGet(this, _EventStream_pendingListenerCleanup, "f")) {
|
|
1491
|
+
const eventType = event;
|
|
1492
|
+
const listeners = tslib_1.__classPrivateFieldGet(this, _EventStream_listeners, "f")[eventType];
|
|
1493
|
+
if (listeners) {
|
|
1494
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_listeners, "f")[eventType] = listeners.filter((listener) => !listener.removed);
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1497
|
+
tslib_1.__classPrivateFieldGet(this, _EventStream_pendingListenerCleanup, "f").clear();
|
|
413
1498
|
}, _EventStream_handleError = function _EventStream_handleError(error) {
|
|
414
1499
|
tslib_1.__classPrivateFieldSet(this, _EventStream_errored, true, "f");
|
|
415
1500
|
if (error instanceof Error && error.name === 'AbortError') {
|