@trigger.dev/core 4.5.13 → 4.5.15
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/dist/commonjs/v3/apiClient/index.d.ts +26 -6
- package/dist/commonjs/v3/apiClient/index.js +56 -8
- package/dist/commonjs/v3/apiClient/index.js.map +1 -1
- package/dist/commonjs/v3/apiClient/refreshAccessToken.d.ts +9 -0
- package/dist/commonjs/v3/apiClient/refreshAccessToken.js +22 -0
- package/dist/commonjs/v3/apiClient/refreshAccessToken.js.map +1 -0
- package/dist/commonjs/v3/apiClient/runStream.d.ts +37 -0
- package/dist/commonjs/v3/apiClient/runStream.js +58 -8
- package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
- package/dist/commonjs/v3/apiClientManager/index.js +3 -2
- package/dist/commonjs/v3/apiClientManager/index.js.map +1 -1
- package/dist/commonjs/v3/apiClientManager/types.d.ts +6 -0
- package/dist/commonjs/v3/index.d.ts +1 -0
- package/dist/commonjs/v3/index.js +1 -0
- package/dist/commonjs/v3/index.js.map +1 -1
- package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
- package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
- package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
- package/dist/commonjs/v3/realtimeStreams/types.d.ts +10 -0
- package/dist/commonjs/v3/schemas/api.js +1 -1
- package/dist/commonjs/v3/schemas/api.js.map +1 -1
- package/dist/commonjs/v3/session-streams-api.d.ts +1 -0
- package/dist/commonjs/v3/session-streams-api.js +1 -0
- package/dist/commonjs/v3/session-streams-api.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/channels.d.ts +25 -0
- package/dist/commonjs/v3/sessionStreams/channels.js +3 -0
- package/dist/commonjs/v3/sessionStreams/channels.js.map +1 -0
- package/dist/commonjs/v3/sessionStreams/index.d.ts +16 -16
- package/dist/commonjs/v3/sessionStreams/index.js +32 -32
- package/dist/commonjs/v3/sessionStreams/index.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/manager.d.ts +16 -16
- package/dist/commonjs/v3/sessionStreams/manager.js +48 -47
- package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/types.d.ts +16 -16
- package/dist/commonjs/version.js +1 -1
- package/dist/esm/v3/apiClient/index.d.ts +26 -6
- package/dist/esm/v3/apiClient/index.js +56 -9
- package/dist/esm/v3/apiClient/index.js.map +1 -1
- package/dist/esm/v3/apiClient/refreshAccessToken.d.ts +9 -0
- package/dist/esm/v3/apiClient/refreshAccessToken.js +19 -0
- package/dist/esm/v3/apiClient/refreshAccessToken.js.map +1 -0
- package/dist/esm/v3/apiClient/runStream.d.ts +37 -0
- package/dist/esm/v3/apiClient/runStream.js +57 -7
- package/dist/esm/v3/apiClient/runStream.js.map +1 -1
- package/dist/esm/v3/apiClientManager/index.js +3 -2
- package/dist/esm/v3/apiClientManager/index.js.map +1 -1
- package/dist/esm/v3/apiClientManager/types.d.ts +6 -0
- package/dist/esm/v3/index.d.ts +1 -0
- package/dist/esm/v3/index.js +1 -0
- package/dist/esm/v3/index.js.map +1 -1
- package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
- package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
- package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
- package/dist/esm/v3/realtimeStreams/types.d.ts +10 -0
- package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +54 -54
- package/dist/esm/v3/schemas/api.js +1 -1
- package/dist/esm/v3/schemas/api.js.map +1 -1
- package/dist/esm/v3/session-streams-api.d.ts +1 -0
- package/dist/esm/v3/session-streams-api.js +1 -0
- package/dist/esm/v3/session-streams-api.js.map +1 -1
- package/dist/esm/v3/sessionStreams/channels.d.ts +25 -0
- package/dist/esm/v3/sessionStreams/channels.js +2 -0
- package/dist/esm/v3/sessionStreams/channels.js.map +1 -0
- package/dist/esm/v3/sessionStreams/index.d.ts +16 -16
- package/dist/esm/v3/sessionStreams/index.js +32 -32
- package/dist/esm/v3/sessionStreams/index.js.map +1 -1
- package/dist/esm/v3/sessionStreams/manager.d.ts +16 -16
- package/dist/esm/v3/sessionStreams/manager.js +48 -47
- package/dist/esm/v3/sessionStreams/manager.js.map +1 -1
- package/dist/esm/v3/sessionStreams/types.d.ts +16 -16
- package/dist/esm/version.js +1 -1
- package/package.json +4 -1
- package/dist/commonjs/v3/apiClient/bulkActions.test.d.ts +0 -1
- package/dist/commonjs/v3/apiClient/bulkActions.test.js +0 -151
- package/dist/commonjs/v3/apiClient/bulkActions.test.js.map +0 -1
- package/dist/commonjs/v3/apiClient/runStream.test.d.ts +0 -1
- package/dist/commonjs/v3/apiClient/runStream.test.js +0 -546
- package/dist/commonjs/v3/apiClient/runStream.test.js.map +0 -1
- package/dist/commonjs/v3/apiClient/streamBatchItems.test.d.ts +0 -1
- package/dist/commonjs/v3/apiClient/streamBatchItems.test.js +0 -408
- package/dist/commonjs/v3/apiClient/streamBatchItems.test.js.map +0 -1
- package/dist/commonjs/v3/apiKeys.test.d.ts +0 -1
- package/dist/commonjs/v3/apiKeys.test.js +0 -19
- package/dist/commonjs/v3/apiKeys.test.js.map +0 -1
- package/dist/commonjs/v3/apps/exec.test.d.ts +0 -1
- package/dist/commonjs/v3/apps/exec.test.js +0 -23
- package/dist/commonjs/v3/apps/exec.test.js.map +0 -1
- package/dist/commonjs/v3/build/flags.test.d.ts +0 -1
- package/dist/commonjs/v3/build/flags.test.js +0 -50
- package/dist/commonjs/v3/build/flags.test.js.map +0 -1
- package/dist/commonjs/v3/build/runtime.test.d.ts +0 -1
- package/dist/commonjs/v3/build/runtime.test.js +0 -44
- package/dist/commonjs/v3/build/runtime.test.js.map +0 -1
- package/dist/commonjs/v3/errors.test.d.ts +0 -1
- package/dist/commonjs/v3/errors.test.js +0 -36
- package/dist/commonjs/v3/errors.test.js.map +0 -1
- package/dist/commonjs/v3/externalDeploymentId.test.d.ts +0 -1
- package/dist/commonjs/v3/externalDeploymentId.test.js +0 -173
- package/dist/commonjs/v3/externalDeploymentId.test.js.map +0 -1
- package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
- package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -44
- package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
- package/dist/commonjs/v3/idempotencyKeys.test.d.ts +0 -1
- package/dist/commonjs/v3/idempotencyKeys.test.js +0 -192
- package/dist/commonjs/v3/idempotencyKeys.test.js.map +0 -1
- package/dist/commonjs/v3/isomorphic/friendlyId.test.d.ts +0 -1
- package/dist/commonjs/v3/isomorphic/friendlyId.test.js +0 -497
- package/dist/commonjs/v3/isomorphic/friendlyId.test.js.map +0 -1
- package/dist/commonjs/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
- package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js +0 -141
- package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js.map +0 -1
- package/dist/commonjs/v3/isomorphic/waitpointMint.test.d.ts +0 -1
- package/dist/commonjs/v3/isomorphic/waitpointMint.test.js +0 -97
- package/dist/commonjs/v3/isomorphic/waitpointMint.test.js.map +0 -1
- package/dist/commonjs/v3/machines/max-old-space.test.d.ts +0 -1
- package/dist/commonjs/v3/machines/max-old-space.test.js +0 -44
- package/dist/commonjs/v3/machines/max-old-space.test.js.map +0 -1
- package/dist/commonjs/v3/otel/tracingSDK.test.d.ts +0 -1
- package/dist/commonjs/v3/otel/tracingSDK.test.js +0 -174
- package/dist/commonjs/v3/otel/tracingSDK.test.js.map +0 -1
- package/dist/commonjs/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
- package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js +0 -18
- package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js.map +0 -1
- package/dist/commonjs/v3/realtimeStreams/manager.test.d.ts +0 -1
- package/dist/commonjs/v3/realtimeStreams/manager.test.js +0 -89
- package/dist/commonjs/v3/realtimeStreams/manager.test.js.map +0 -1
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js +0 -68
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -674
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -77
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -293
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -235
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
- package/dist/commonjs/v3/schemas/api-type.test.d.ts +0 -1
- package/dist/commonjs/v3/schemas/api-type.test.js +0 -358
- package/dist/commonjs/v3/schemas/api-type.test.js.map +0 -1
- package/dist/commonjs/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
- package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js +0 -79
- package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js.map +0 -1
- package/dist/commonjs/v3/schemas/idempotencyKey.test.d.ts +0 -1
- package/dist/commonjs/v3/schemas/idempotencyKey.test.js +0 -157
- package/dist/commonjs/v3/schemas/idempotencyKey.test.js.map +0 -1
- package/dist/commonjs/v3/schemas/scheduleWindow.test.d.ts +0 -1
- package/dist/commonjs/v3/schemas/scheduleWindow.test.js +0 -52
- package/dist/commonjs/v3/schemas/scheduleWindow.test.js.map +0 -1
- package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
- package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js +0 -104
- package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
- package/dist/commonjs/v3/serverOnly/shutdownManager.test.d.ts +0 -1
- package/dist/commonjs/v3/serverOnly/shutdownManager.test.js +0 -139
- package/dist/commonjs/v3/serverOnly/shutdownManager.test.js.map +0 -1
- package/dist/commonjs/v3/sessionStreams/manager.test.d.ts +0 -1
- package/dist/commonjs/v3/sessionStreams/manager.test.js +0 -375
- package/dist/commonjs/v3/sessionStreams/manager.test.js.map +0 -1
- package/dist/commonjs/v3/sessionStreams/router.test.d.ts +0 -1
- package/dist/commonjs/v3/sessionStreams/router.test.js +0 -463
- package/dist/commonjs/v3/sessionStreams/router.test.js.map +0 -1
- package/dist/commonjs/v3/taskContext/index.test.d.ts +0 -1
- package/dist/commonjs/v3/taskContext/index.test.js +0 -73
- package/dist/commonjs/v3/taskContext/index.test.js.map +0 -1
- package/dist/commonjs/v3/taskContext/otelProcessors.test.d.ts +0 -1
- package/dist/commonjs/v3/taskContext/otelProcessors.test.js +0 -109
- package/dist/commonjs/v3/taskContext/otelProcessors.test.js.map +0 -1
- package/dist/commonjs/v3/telnetLogServer.test.d.ts +0 -1
- package/dist/commonjs/v3/telnetLogServer.test.js +0 -144
- package/dist/commonjs/v3/telnetLogServer.test.js.map +0 -1
- package/dist/commonjs/v3/utils/reconnectBackoff.test.d.ts +0 -1
- package/dist/commonjs/v3/utils/reconnectBackoff.test.js +0 -76
- package/dist/commonjs/v3/utils/reconnectBackoff.test.js.map +0 -1
- package/dist/commonjs/v3/workloadDeploymentToken.test.d.ts +0 -1
- package/dist/commonjs/v3/workloadDeploymentToken.test.js +0 -110
- package/dist/commonjs/v3/workloadDeploymentToken.test.js.map +0 -1
- package/dist/esm/v3/apiClient/bulkActions.test.d.ts +0 -1
- package/dist/esm/v3/apiClient/bulkActions.test.js +0 -149
- package/dist/esm/v3/apiClient/bulkActions.test.js.map +0 -1
- package/dist/esm/v3/apiClient/runStream.test.d.ts +0 -1
- package/dist/esm/v3/apiClient/runStream.test.js +0 -544
- package/dist/esm/v3/apiClient/runStream.test.js.map +0 -1
- package/dist/esm/v3/apiClient/streamBatchItems.test.d.ts +0 -1
- package/dist/esm/v3/apiClient/streamBatchItems.test.js +0 -406
- package/dist/esm/v3/apiClient/streamBatchItems.test.js.map +0 -1
- package/dist/esm/v3/apiKeys.test.d.ts +0 -1
- package/dist/esm/v3/apiKeys.test.js +0 -17
- package/dist/esm/v3/apiKeys.test.js.map +0 -1
- package/dist/esm/v3/apps/exec.test.d.ts +0 -1
- package/dist/esm/v3/apps/exec.test.js +0 -21
- package/dist/esm/v3/apps/exec.test.js.map +0 -1
- package/dist/esm/v3/build/flags.test.d.ts +0 -1
- package/dist/esm/v3/build/flags.test.js +0 -48
- package/dist/esm/v3/build/flags.test.js.map +0 -1
- package/dist/esm/v3/build/runtime.test.d.ts +0 -1
- package/dist/esm/v3/build/runtime.test.js +0 -42
- package/dist/esm/v3/build/runtime.test.js.map +0 -1
- package/dist/esm/v3/errors.test.d.ts +0 -1
- package/dist/esm/v3/errors.test.js +0 -34
- package/dist/esm/v3/errors.test.js.map +0 -1
- package/dist/esm/v3/externalDeploymentId.test.d.ts +0 -1
- package/dist/esm/v3/externalDeploymentId.test.js +0 -171
- package/dist/esm/v3/externalDeploymentId.test.js.map +0 -1
- package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
- package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -42
- package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
- package/dist/esm/v3/idempotencyKeys.test.d.ts +0 -1
- package/dist/esm/v3/idempotencyKeys.test.js +0 -190
- package/dist/esm/v3/idempotencyKeys.test.js.map +0 -1
- package/dist/esm/v3/isomorphic/friendlyId.test.d.ts +0 -1
- package/dist/esm/v3/isomorphic/friendlyId.test.js +0 -495
- package/dist/esm/v3/isomorphic/friendlyId.test.js.map +0 -1
- package/dist/esm/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
- package/dist/esm/v3/isomorphic/runOpsResidency.test.js +0 -139
- package/dist/esm/v3/isomorphic/runOpsResidency.test.js.map +0 -1
- package/dist/esm/v3/isomorphic/waitpointMint.test.d.ts +0 -1
- package/dist/esm/v3/isomorphic/waitpointMint.test.js +0 -95
- package/dist/esm/v3/isomorphic/waitpointMint.test.js.map +0 -1
- package/dist/esm/v3/machines/max-old-space.test.d.ts +0 -1
- package/dist/esm/v3/machines/max-old-space.test.js +0 -42
- package/dist/esm/v3/machines/max-old-space.test.js.map +0 -1
- package/dist/esm/v3/otel/tracingSDK.test.d.ts +0 -1
- package/dist/esm/v3/otel/tracingSDK.test.js +0 -172
- package/dist/esm/v3/otel/tracingSDK.test.js.map +0 -1
- package/dist/esm/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
- package/dist/esm/v3/otel/tracingSDKShutdown.test.js +0 -16
- package/dist/esm/v3/otel/tracingSDKShutdown.test.js.map +0 -1
- package/dist/esm/v3/realtimeStreams/manager.test.d.ts +0 -1
- package/dist/esm/v3/realtimeStreams/manager.test.js +0 -87
- package/dist/esm/v3/realtimeStreams/manager.test.js.map +0 -1
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js +0 -66
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -672
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -75
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -291
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -233
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
- package/dist/esm/v3/schemas/api-type.test.d.ts +0 -1
- package/dist/esm/v3/schemas/api-type.test.js +0 -356
- package/dist/esm/v3/schemas/api-type.test.js.map +0 -1
- package/dist/esm/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
- package/dist/esm/v3/schemas/batchItemNDJSON.test.js +0 -77
- package/dist/esm/v3/schemas/batchItemNDJSON.test.js.map +0 -1
- package/dist/esm/v3/schemas/idempotencyKey.test.d.ts +0 -1
- package/dist/esm/v3/schemas/idempotencyKey.test.js +0 -155
- package/dist/esm/v3/schemas/idempotencyKey.test.js.map +0 -1
- package/dist/esm/v3/schemas/scheduleWindow.test.d.ts +0 -1
- package/dist/esm/v3/schemas/scheduleWindow.test.js +0 -50
- package/dist/esm/v3/schemas/scheduleWindow.test.js.map +0 -1
- package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
- package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js +0 -102
- package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
- package/dist/esm/v3/serverOnly/shutdownManager.test.d.ts +0 -1
- package/dist/esm/v3/serverOnly/shutdownManager.test.js +0 -137
- package/dist/esm/v3/serverOnly/shutdownManager.test.js.map +0 -1
- package/dist/esm/v3/sessionStreams/manager.test.d.ts +0 -1
- package/dist/esm/v3/sessionStreams/manager.test.js +0 -373
- package/dist/esm/v3/sessionStreams/manager.test.js.map +0 -1
- package/dist/esm/v3/sessionStreams/router.test.d.ts +0 -1
- package/dist/esm/v3/sessionStreams/router.test.js +0 -461
- package/dist/esm/v3/sessionStreams/router.test.js.map +0 -1
- package/dist/esm/v3/taskContext/index.test.d.ts +0 -1
- package/dist/esm/v3/taskContext/index.test.js +0 -71
- package/dist/esm/v3/taskContext/index.test.js.map +0 -1
- package/dist/esm/v3/taskContext/otelProcessors.test.d.ts +0 -1
- package/dist/esm/v3/taskContext/otelProcessors.test.js +0 -107
- package/dist/esm/v3/taskContext/otelProcessors.test.js.map +0 -1
- package/dist/esm/v3/telnetLogServer.test.d.ts +0 -1
- package/dist/esm/v3/telnetLogServer.test.js +0 -139
- package/dist/esm/v3/telnetLogServer.test.js.map +0 -1
- package/dist/esm/v3/utils/reconnectBackoff.test.d.ts +0 -1
- package/dist/esm/v3/utils/reconnectBackoff.test.js +0 -74
- package/dist/esm/v3/utils/reconnectBackoff.test.js.map +0 -1
- package/dist/esm/v3/workloadDeploymentToken.test.d.ts +0 -1
- package/dist/esm/v3/workloadDeploymentToken.test.js +0 -108
- package/dist/esm/v3/workloadDeploymentToken.test.js.map +0 -1
|
@@ -1,546 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const runStream_js_1 = require("./runStream.js");
|
|
5
|
-
vitest_1.vi.setConfig({ testTimeout: 10_000 });
|
|
6
|
-
(0, vitest_1.describe)("SSEStreamSubscription retry behavior", () => {
|
|
7
|
-
const originalFetch = globalThis.fetch;
|
|
8
|
-
(0, vitest_1.afterEach)(() => {
|
|
9
|
-
globalThis.fetch = originalFetch;
|
|
10
|
-
vitest_1.vi.restoreAllMocks();
|
|
11
|
-
});
|
|
12
|
-
// A response.body that emits one SSE event then closes, so each
|
|
13
|
-
// successful subscribe() exits cleanly via reader.read() done=true
|
|
14
|
-
// and the test doesn't hang reading from a long-lived stream.
|
|
15
|
-
function makeSSEResponse() {
|
|
16
|
-
const body = new ReadableStream({
|
|
17
|
-
start(controller) {
|
|
18
|
-
controller.enqueue(new TextEncoder().encode(`id: 1\ndata: {"hello":1}\n\n`));
|
|
19
|
-
controller.close();
|
|
20
|
-
},
|
|
21
|
-
});
|
|
22
|
-
return new Response(body, {
|
|
23
|
-
status: 200,
|
|
24
|
-
headers: { "Content-Type": "text/event-stream", "X-Stream-Version": "v1" },
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* A response.body that emits one SSE event then stays open (never closes),
|
|
29
|
-
* so the connection sits mid-read until the fetch signal aborts.
|
|
30
|
-
*/
|
|
31
|
-
function makeOpenSSEResponse() {
|
|
32
|
-
const body = new ReadableStream({
|
|
33
|
-
start(controller) {
|
|
34
|
-
controller.enqueue(new TextEncoder().encode(`id: 1\ndata: {"hello":1}\n\n`));
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
return new Response(body, {
|
|
38
|
-
status: 200,
|
|
39
|
-
headers: { "Content-Type": "text/event-stream", "X-Stream-Version": "v1" },
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
// Drain a ReadableStream<SSEStreamPart> until it closes or errors.
|
|
43
|
-
// Returns received chunks plus terminal state.
|
|
44
|
-
async function drain(stream) {
|
|
45
|
-
const reader = stream.getReader();
|
|
46
|
-
const chunks = [];
|
|
47
|
-
try {
|
|
48
|
-
while (true) {
|
|
49
|
-
const { done, value } = await reader.read();
|
|
50
|
-
if (done)
|
|
51
|
-
return { chunks, error: undefined };
|
|
52
|
-
chunks.push(value);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
catch (e) {
|
|
56
|
-
return { chunks, error: e };
|
|
57
|
-
}
|
|
58
|
-
finally {
|
|
59
|
-
try {
|
|
60
|
-
reader.releaseLock();
|
|
61
|
-
}
|
|
62
|
-
catch {
|
|
63
|
-
/* already released */
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
(0, vitest_1.it)("retries past the legacy 5-attempt cap", async () => {
|
|
68
|
-
let attempts = 0;
|
|
69
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async () => {
|
|
70
|
-
attempts++;
|
|
71
|
-
if (attempts < 8) {
|
|
72
|
-
throw new TypeError("fetch failed (simulated network drop)");
|
|
73
|
-
}
|
|
74
|
-
return makeSSEResponse();
|
|
75
|
-
});
|
|
76
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
77
|
-
// Compress the timing for the test — defaults are 100ms initial,
|
|
78
|
-
// 5s cap, retry forever; here we want fast iteration.
|
|
79
|
-
retryDelayMs: 1,
|
|
80
|
-
maxRetryDelayMs: 5,
|
|
81
|
-
});
|
|
82
|
-
const stream = await sub.subscribe();
|
|
83
|
-
const result = await drain(stream);
|
|
84
|
-
(0, vitest_1.expect)(attempts).toBe(8);
|
|
85
|
-
(0, vitest_1.expect)(result.error).toBeUndefined();
|
|
86
|
-
(0, vitest_1.expect)(result.chunks).toHaveLength(1);
|
|
87
|
-
});
|
|
88
|
-
(0, vitest_1.it)("does not reconnect after the consumer cancels the returned stream", async () => {
|
|
89
|
-
let attempts = 0;
|
|
90
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async () => {
|
|
91
|
-
attempts++;
|
|
92
|
-
return makeOpenSSEResponse();
|
|
93
|
-
});
|
|
94
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
95
|
-
retryDelayMs: 1,
|
|
96
|
-
maxRetryDelayMs: 5,
|
|
97
|
-
maxRetries: 10,
|
|
98
|
-
});
|
|
99
|
-
const stream = await sub.subscribe();
|
|
100
|
-
const reader = stream.getReader();
|
|
101
|
-
const first = await reader.read();
|
|
102
|
-
(0, vitest_1.expect)(first.done).toBe(false);
|
|
103
|
-
await reader.cancel();
|
|
104
|
-
await new Promise((r) => setTimeout(r, 50));
|
|
105
|
-
(0, vitest_1.expect)(attempts).toBe(1);
|
|
106
|
-
});
|
|
107
|
-
(0, vitest_1.it)("caps the exponential backoff at maxRetryDelayMs", async () => {
|
|
108
|
-
let attempts = 0;
|
|
109
|
-
const callTimes = [];
|
|
110
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async () => {
|
|
111
|
-
callTimes.push(Date.now());
|
|
112
|
-
attempts++;
|
|
113
|
-
if (attempts < 6) {
|
|
114
|
-
throw new TypeError("fetch failed");
|
|
115
|
-
}
|
|
116
|
-
return makeSSEResponse();
|
|
117
|
-
});
|
|
118
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
119
|
-
retryDelayMs: 10,
|
|
120
|
-
maxRetryDelayMs: 30,
|
|
121
|
-
});
|
|
122
|
-
const stream = await sub.subscribe();
|
|
123
|
-
await drain(stream);
|
|
124
|
-
(0, vitest_1.expect)(attempts).toBe(6);
|
|
125
|
-
// Without the cap, backoff would be 10, 20, 40, 80, 160 (= 310ms total).
|
|
126
|
-
// With cap=30, it's 10, 20, 30, 30, 30 (= 120ms total). Allow generous
|
|
127
|
-
// slack for setTimeout jitter; the assertion is "well under uncapped".
|
|
128
|
-
const totalElapsed = callTimes.at(-1) - callTimes[0];
|
|
129
|
-
(0, vitest_1.expect)(totalElapsed).toBeLessThan(250);
|
|
130
|
-
});
|
|
131
|
-
(0, vitest_1.it)("retryNow() wakes an in-flight backoff and reconnects immediately", async () => {
|
|
132
|
-
let attempts = 0;
|
|
133
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async () => {
|
|
134
|
-
attempts++;
|
|
135
|
-
if (attempts === 1) {
|
|
136
|
-
throw new TypeError("fetch failed");
|
|
137
|
-
}
|
|
138
|
-
return makeSSEResponse();
|
|
139
|
-
});
|
|
140
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
141
|
-
// Backoff is intentionally long. retryNow() should short-circuit it.
|
|
142
|
-
retryDelayMs: 5_000,
|
|
143
|
-
maxRetryDelayMs: 5_000,
|
|
144
|
-
});
|
|
145
|
-
const subscribePromise = sub.subscribe().then(drain);
|
|
146
|
-
// Wait for the first attempt to fail and the backoff to start.
|
|
147
|
-
await new Promise((r) => setTimeout(r, 50));
|
|
148
|
-
sub.retryNow();
|
|
149
|
-
const start = Date.now();
|
|
150
|
-
const result = await subscribePromise;
|
|
151
|
-
const elapsed = Date.now() - start;
|
|
152
|
-
(0, vitest_1.expect)(attempts).toBe(2);
|
|
153
|
-
(0, vitest_1.expect)(result.error).toBeUndefined();
|
|
154
|
-
// Without retryNow this would have waited ~5000ms; with it, the
|
|
155
|
-
// second attempt fires nearly immediately after the first failure.
|
|
156
|
-
(0, vitest_1.expect)(elapsed).toBeLessThan(500);
|
|
157
|
-
});
|
|
158
|
-
(0, vitest_1.it)("respects abort signal during retry backoff", async () => {
|
|
159
|
-
let attempts = 0;
|
|
160
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async () => {
|
|
161
|
-
attempts++;
|
|
162
|
-
throw new TypeError("fetch failed");
|
|
163
|
-
});
|
|
164
|
-
const ac = new AbortController();
|
|
165
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
166
|
-
signal: ac.signal,
|
|
167
|
-
retryDelayMs: 1_000,
|
|
168
|
-
maxRetryDelayMs: 1_000,
|
|
169
|
-
});
|
|
170
|
-
const subscribePromise = sub.subscribe().then(drain);
|
|
171
|
-
// Let the first attempt fail and enter backoff, then abort.
|
|
172
|
-
await new Promise((r) => setTimeout(r, 50));
|
|
173
|
-
ac.abort();
|
|
174
|
-
const result = await subscribePromise;
|
|
175
|
-
(0, vitest_1.expect)(result.error).toBeUndefined();
|
|
176
|
-
// Abort should stop retries; we should have made at most a couple
|
|
177
|
-
// of attempts before the abort took effect.
|
|
178
|
-
(0, vitest_1.expect)(attempts).toBeLessThanOrEqual(2);
|
|
179
|
-
});
|
|
180
|
-
(0, vitest_1.it)("forceReconnect mid-read drops the stream and resumes with Last-Event-ID", async () => {
|
|
181
|
-
let attempts = 0;
|
|
182
|
-
const seenLastEventIds = [];
|
|
183
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async (_url, init) => {
|
|
184
|
-
attempts++;
|
|
185
|
-
const lastEventIdHeader = init?.headers?.["Last-Event-ID"];
|
|
186
|
-
seenLastEventIds.push(lastEventIdHeader ?? null);
|
|
187
|
-
if (attempts === 1) {
|
|
188
|
-
// Headers arrive immediately, body emits one chunk then hangs
|
|
189
|
-
// until aborted. The test calls forceReconnect after seeing
|
|
190
|
-
// the chunk, which should drop this stream and trigger a
|
|
191
|
-
// resume request with Last-Event-ID set.
|
|
192
|
-
const body = new ReadableStream({
|
|
193
|
-
start(controller) {
|
|
194
|
-
controller.enqueue(new TextEncoder().encode(`id: 7\ndata: {"first":true}\n\n`));
|
|
195
|
-
init?.signal?.addEventListener("abort", () => controller.error(new Error("aborted")));
|
|
196
|
-
},
|
|
197
|
-
});
|
|
198
|
-
return new Response(body, {
|
|
199
|
-
status: 200,
|
|
200
|
-
headers: { "Content-Type": "text/event-stream", "X-Stream-Version": "v1" },
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
// Second attempt: emit a second chunk and close cleanly.
|
|
204
|
-
const body = new ReadableStream({
|
|
205
|
-
start(controller) {
|
|
206
|
-
controller.enqueue(new TextEncoder().encode(`id: 8\ndata: {"second":true}\n\n`));
|
|
207
|
-
controller.close();
|
|
208
|
-
},
|
|
209
|
-
});
|
|
210
|
-
return new Response(body, {
|
|
211
|
-
status: 200,
|
|
212
|
-
headers: { "Content-Type": "text/event-stream", "X-Stream-Version": "v1" },
|
|
213
|
-
});
|
|
214
|
-
});
|
|
215
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
216
|
-
retryDelayMs: 1,
|
|
217
|
-
maxRetryDelayMs: 5,
|
|
218
|
-
fetchTimeoutMs: 60_000,
|
|
219
|
-
});
|
|
220
|
-
const stream = await sub.subscribe();
|
|
221
|
-
const reader = stream.getReader();
|
|
222
|
-
// Read the first chunk, then force-reconnect mid-stream.
|
|
223
|
-
const first = await reader.read();
|
|
224
|
-
(0, vitest_1.expect)(first.done).toBe(false);
|
|
225
|
-
(0, vitest_1.expect)(first.value.chunk.first).toBe(true);
|
|
226
|
-
sub.forceReconnect();
|
|
227
|
-
// Second chunk arrives from the resumed connection.
|
|
228
|
-
const second = await reader.read();
|
|
229
|
-
(0, vitest_1.expect)(second.done).toBe(false);
|
|
230
|
-
(0, vitest_1.expect)(second.value.chunk.second).toBe(true);
|
|
231
|
-
const tail = await reader.read();
|
|
232
|
-
(0, vitest_1.expect)(tail.done).toBe(true);
|
|
233
|
-
(0, vitest_1.expect)(attempts).toBe(2);
|
|
234
|
-
(0, vitest_1.expect)(seenLastEventIds[0]).toBeNull();
|
|
235
|
-
// Resumed request includes the Last-Event-ID from the first chunk.
|
|
236
|
-
(0, vitest_1.expect)(seenLastEventIds[1]).toBe("7");
|
|
237
|
-
});
|
|
238
|
-
(0, vitest_1.it)("forceReconnect aborts the in-flight fetch and retries", async () => {
|
|
239
|
-
let attempts = 0;
|
|
240
|
-
let firstResolve;
|
|
241
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async (_url, init) => {
|
|
242
|
-
attempts++;
|
|
243
|
-
if (attempts === 1) {
|
|
244
|
-
// Hang the first attempt forever (or until signal aborts).
|
|
245
|
-
// forceReconnect should make this attempt's signal abort and
|
|
246
|
-
// throw, taking us into the retry path.
|
|
247
|
-
return new Promise((resolve, reject) => {
|
|
248
|
-
firstResolve = () => resolve(makeSSEResponse());
|
|
249
|
-
init?.signal?.addEventListener("abort", () => {
|
|
250
|
-
reject(new DOMException("aborted", "AbortError"));
|
|
251
|
-
});
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
return makeSSEResponse();
|
|
255
|
-
});
|
|
256
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
257
|
-
retryDelayMs: 1,
|
|
258
|
-
maxRetryDelayMs: 5,
|
|
259
|
-
// Long fetch timeout so it doesn't fire instead of forceReconnect.
|
|
260
|
-
fetchTimeoutMs: 60_000,
|
|
261
|
-
});
|
|
262
|
-
const subscribePromise = sub.subscribe().then(drain);
|
|
263
|
-
// Let the first fetch hang, then force reconnect.
|
|
264
|
-
await new Promise((r) => setTimeout(r, 50));
|
|
265
|
-
sub.forceReconnect();
|
|
266
|
-
const result = await subscribePromise;
|
|
267
|
-
(0, vitest_1.expect)(attempts).toBe(2);
|
|
268
|
-
(0, vitest_1.expect)(result.error).toBeUndefined();
|
|
269
|
-
(0, vitest_1.expect)(result.chunks).toHaveLength(1);
|
|
270
|
-
// Sanity: the hung first fetch was abandoned, never resolved.
|
|
271
|
-
(0, vitest_1.expect)(firstResolve).toBeDefined();
|
|
272
|
-
});
|
|
273
|
-
(0, vitest_1.it)("aborts a slow fetch via fetchTimeoutMs and retries", async () => {
|
|
274
|
-
let attempts = 0;
|
|
275
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async (_url, init) => {
|
|
276
|
-
attempts++;
|
|
277
|
-
if (attempts === 1) {
|
|
278
|
-
// Hang until aborted.
|
|
279
|
-
return new Promise((_resolve, reject) => {
|
|
280
|
-
init?.signal?.addEventListener("abort", () => {
|
|
281
|
-
reject(new DOMException("aborted", "AbortError"));
|
|
282
|
-
});
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
return makeSSEResponse();
|
|
286
|
-
});
|
|
287
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
288
|
-
retryDelayMs: 1,
|
|
289
|
-
maxRetryDelayMs: 5,
|
|
290
|
-
fetchTimeoutMs: 100,
|
|
291
|
-
});
|
|
292
|
-
const result = await sub.subscribe().then(drain);
|
|
293
|
-
(0, vitest_1.expect)(attempts).toBe(2);
|
|
294
|
-
(0, vitest_1.expect)(result.error).toBeUndefined();
|
|
295
|
-
(0, vitest_1.expect)(result.chunks).toHaveLength(1);
|
|
296
|
-
});
|
|
297
|
-
(0, vitest_1.it)("aborts a silent reader via stallTimeoutMs and retries", async () => {
|
|
298
|
-
let attempts = 0;
|
|
299
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async (_url, init) => {
|
|
300
|
-
attempts++;
|
|
301
|
-
if (attempts === 1) {
|
|
302
|
-
// Headers arrive immediately, but the body stream emits no
|
|
303
|
-
// chunks until aborted. The stall timer should fire and
|
|
304
|
-
// force a reconnect.
|
|
305
|
-
const body = new ReadableStream({
|
|
306
|
-
start(controller) {
|
|
307
|
-
init?.signal?.addEventListener("abort", () => controller.error(new Error("aborted")));
|
|
308
|
-
},
|
|
309
|
-
});
|
|
310
|
-
return new Response(body, {
|
|
311
|
-
status: 200,
|
|
312
|
-
headers: { "Content-Type": "text/event-stream", "X-Stream-Version": "v1" },
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
return makeSSEResponse();
|
|
316
|
-
});
|
|
317
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
318
|
-
retryDelayMs: 1,
|
|
319
|
-
maxRetryDelayMs: 5,
|
|
320
|
-
stallTimeoutMs: 100,
|
|
321
|
-
});
|
|
322
|
-
const result = await sub.subscribe().then(drain);
|
|
323
|
-
(0, vitest_1.expect)(attempts).toBe(2);
|
|
324
|
-
(0, vitest_1.expect)(result.error).toBeUndefined();
|
|
325
|
-
(0, vitest_1.expect)(result.chunks).toHaveLength(1);
|
|
326
|
-
});
|
|
327
|
-
(0, vitest_1.it)("does not retry on 404 (stream gone)", async () => {
|
|
328
|
-
let attempts = 0;
|
|
329
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async () => {
|
|
330
|
-
attempts++;
|
|
331
|
-
return new Response("not found", { status: 404 });
|
|
332
|
-
});
|
|
333
|
-
const errors = [];
|
|
334
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
335
|
-
retryDelayMs: 1,
|
|
336
|
-
maxRetryDelayMs: 5,
|
|
337
|
-
onError: (e) => errors.push(e),
|
|
338
|
-
});
|
|
339
|
-
const result = await sub.subscribe().then(drain);
|
|
340
|
-
(0, vitest_1.expect)(attempts).toBe(1);
|
|
341
|
-
(0, vitest_1.expect)(result.error).toBeDefined();
|
|
342
|
-
(0, vitest_1.expect)(errors).toHaveLength(1);
|
|
343
|
-
});
|
|
344
|
-
(0, vitest_1.it)("does not retry on 410 (session closed)", async () => {
|
|
345
|
-
let attempts = 0;
|
|
346
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async () => {
|
|
347
|
-
attempts++;
|
|
348
|
-
return new Response("gone", { status: 410 });
|
|
349
|
-
});
|
|
350
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
351
|
-
retryDelayMs: 1,
|
|
352
|
-
maxRetryDelayMs: 5,
|
|
353
|
-
});
|
|
354
|
-
const result = await sub.subscribe().then(drain);
|
|
355
|
-
(0, vitest_1.expect)(attempts).toBe(1);
|
|
356
|
-
(0, vitest_1.expect)(result.error).toBeDefined();
|
|
357
|
-
});
|
|
358
|
-
(0, vitest_1.it)("respects custom nonRetryableStatuses", async () => {
|
|
359
|
-
let attempts = 0;
|
|
360
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async () => {
|
|
361
|
-
attempts++;
|
|
362
|
-
return new Response("forbidden", { status: 403 });
|
|
363
|
-
});
|
|
364
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
365
|
-
retryDelayMs: 1,
|
|
366
|
-
maxRetryDelayMs: 5,
|
|
367
|
-
nonRetryableStatuses: [403],
|
|
368
|
-
});
|
|
369
|
-
const result = await sub.subscribe().then(drain);
|
|
370
|
-
(0, vitest_1.expect)(attempts).toBe(1);
|
|
371
|
-
(0, vitest_1.expect)(result.error).toBeDefined();
|
|
372
|
-
});
|
|
373
|
-
(0, vitest_1.it)("retries on 503 (caller-tunable nonRetryableStatuses)", async () => {
|
|
374
|
-
let attempts = 0;
|
|
375
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async () => {
|
|
376
|
-
attempts++;
|
|
377
|
-
if (attempts < 3)
|
|
378
|
-
return new Response("unavailable", { status: 503 });
|
|
379
|
-
return makeSSEResponse();
|
|
380
|
-
});
|
|
381
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
382
|
-
retryDelayMs: 1,
|
|
383
|
-
maxRetryDelayMs: 5,
|
|
384
|
-
// 503 is NOT in the default non-retryable set; it should retry.
|
|
385
|
-
});
|
|
386
|
-
const result = await sub.subscribe().then(drain);
|
|
387
|
-
(0, vitest_1.expect)(attempts).toBe(3);
|
|
388
|
-
(0, vitest_1.expect)(result.error).toBeUndefined();
|
|
389
|
-
(0, vitest_1.expect)(result.chunks).toHaveLength(1);
|
|
390
|
-
});
|
|
391
|
-
(0, vitest_1.it)("applies jitter to backoff (delays vary across attempts)", async () => {
|
|
392
|
-
const callTimes = [];
|
|
393
|
-
globalThis.fetch = vitest_1.vi.fn().mockImplementation(async () => {
|
|
394
|
-
callTimes.push(performance.now());
|
|
395
|
-
throw new TypeError("fetch failed");
|
|
396
|
-
});
|
|
397
|
-
const ac = new AbortController();
|
|
398
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://example.test/sse", {
|
|
399
|
-
signal: ac.signal,
|
|
400
|
-
retryDelayMs: 50,
|
|
401
|
-
maxRetryDelayMs: 50,
|
|
402
|
-
retryJitter: 0.5, // 50% — final delay in [25ms, 50ms]
|
|
403
|
-
});
|
|
404
|
-
const promise = sub.subscribe().then(drain);
|
|
405
|
-
await new Promise((r) => setTimeout(r, 600)); // allow ~10 attempts
|
|
406
|
-
ac.abort();
|
|
407
|
-
await promise;
|
|
408
|
-
(0, vitest_1.expect)(callTimes.length).toBeGreaterThanOrEqual(5);
|
|
409
|
-
// Compute inter-attempt gaps (skip the first since it has no prior).
|
|
410
|
-
const gaps = callTimes.slice(1).map((t, i) => t - callTimes[i]);
|
|
411
|
-
// Without jitter all gaps would be ~50ms. With 50% jitter they
|
|
412
|
-
// should land in [~25ms, ~50ms] and not all be identical.
|
|
413
|
-
const min = Math.min(...gaps);
|
|
414
|
-
const max = Math.max(...gaps);
|
|
415
|
-
(0, vitest_1.expect)(min).toBeGreaterThanOrEqual(20); // a little slack for timer scheduling
|
|
416
|
-
(0, vitest_1.expect)(max).toBeLessThanOrEqual(80);
|
|
417
|
-
// Variance check — at least one gap should differ from another by
|
|
418
|
-
// a measurable amount (rules out a deterministic-delay regression).
|
|
419
|
-
(0, vitest_1.expect)(max - min).toBeGreaterThan(2);
|
|
420
|
-
});
|
|
421
|
-
});
|
|
422
|
-
(0, vitest_1.describe)("SSEStreamSubscription v2 batch parsing — record kinds", () => {
|
|
423
|
-
const originalFetch = globalThis.fetch;
|
|
424
|
-
(0, vitest_1.afterEach)(() => {
|
|
425
|
-
globalThis.fetch = originalFetch;
|
|
426
|
-
vitest_1.vi.restoreAllMocks();
|
|
427
|
-
});
|
|
428
|
-
// Build a v2 batch SSE response with the given records and close.
|
|
429
|
-
function makeBatchResponse(records) {
|
|
430
|
-
const body = new ReadableStream({
|
|
431
|
-
start(controller) {
|
|
432
|
-
controller.enqueue(new TextEncoder().encode(`event: batch\ndata: ${JSON.stringify({ records })}\n\n`));
|
|
433
|
-
controller.close();
|
|
434
|
-
},
|
|
435
|
-
});
|
|
436
|
-
return new Response(body, {
|
|
437
|
-
status: 200,
|
|
438
|
-
headers: { "Content-Type": "text/event-stream", "X-Stream-Version": "v2" },
|
|
439
|
-
});
|
|
440
|
-
}
|
|
441
|
-
async function drain(stream) {
|
|
442
|
-
const reader = stream.getReader();
|
|
443
|
-
const parts = [];
|
|
444
|
-
while (true) {
|
|
445
|
-
const { done, value } = await reader.read();
|
|
446
|
-
if (done) {
|
|
447
|
-
reader.releaseLock();
|
|
448
|
-
return parts;
|
|
449
|
-
}
|
|
450
|
-
parts.push(value);
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
(0, vitest_1.it)("data records flow through with headers and parsed body", async () => {
|
|
454
|
-
globalThis.fetch = vitest_1.vi.fn().mockResolvedValue(makeBatchResponse([
|
|
455
|
-
{
|
|
456
|
-
body: JSON.stringify({ data: { type: "text-delta", delta: "hi" }, id: "p1" }),
|
|
457
|
-
seq_num: 5,
|
|
458
|
-
timestamp: 1700000000000,
|
|
459
|
-
headers: [],
|
|
460
|
-
},
|
|
461
|
-
]));
|
|
462
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://x", { maxRetries: 0 });
|
|
463
|
-
const parts = await sub.subscribe().then(drain);
|
|
464
|
-
(0, vitest_1.expect)(parts).toHaveLength(1);
|
|
465
|
-
(0, vitest_1.expect)(parts[0].recordId).toBe("p1");
|
|
466
|
-
(0, vitest_1.expect)(parts[0].id).toBe("5");
|
|
467
|
-
(0, vitest_1.expect)(parts[0].chunk).toEqual({ type: "text-delta", delta: "hi" });
|
|
468
|
-
(0, vitest_1.expect)(parts[0].headers).toEqual([]);
|
|
469
|
-
});
|
|
470
|
-
(0, vitest_1.it)("S2 command records (empty-name header) are filtered out", async () => {
|
|
471
|
-
globalThis.fetch = vitest_1.vi.fn().mockResolvedValue(makeBatchResponse([
|
|
472
|
-
{
|
|
473
|
-
body: JSON.stringify({ data: { type: "text-delta", delta: "before" }, id: "p1" }),
|
|
474
|
-
seq_num: 4,
|
|
475
|
-
timestamp: 1700000000000,
|
|
476
|
-
headers: [],
|
|
477
|
-
},
|
|
478
|
-
// Trim command record — empty-name header, opaque body.
|
|
479
|
-
{
|
|
480
|
-
body: "AAAAAAAAAAQ=",
|
|
481
|
-
seq_num: 5,
|
|
482
|
-
timestamp: 1700000000001,
|
|
483
|
-
headers: [["", "trim"]],
|
|
484
|
-
},
|
|
485
|
-
{
|
|
486
|
-
body: JSON.stringify({ data: { type: "text-delta", delta: "after" }, id: "p2" }),
|
|
487
|
-
seq_num: 6,
|
|
488
|
-
timestamp: 1700000000002,
|
|
489
|
-
headers: [],
|
|
490
|
-
},
|
|
491
|
-
]));
|
|
492
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://x", { maxRetries: 0 });
|
|
493
|
-
const parts = await sub.subscribe().then(drain);
|
|
494
|
-
// Trim record stripped — only the two data records survive.
|
|
495
|
-
(0, vitest_1.expect)(parts).toHaveLength(2);
|
|
496
|
-
(0, vitest_1.expect)(parts[0].chunk.delta).toBe("before");
|
|
497
|
-
(0, vitest_1.expect)(parts[1].chunk.delta).toBe("after");
|
|
498
|
-
});
|
|
499
|
-
(0, vitest_1.it)("trigger-control records flow with headers and undefined chunk", async () => {
|
|
500
|
-
globalThis.fetch = vitest_1.vi.fn().mockResolvedValue(makeBatchResponse([
|
|
501
|
-
{
|
|
502
|
-
body: "",
|
|
503
|
-
seq_num: 7,
|
|
504
|
-
timestamp: 1700000000003,
|
|
505
|
-
headers: [
|
|
506
|
-
["trigger-control", "turn-complete"],
|
|
507
|
-
["public-access-token", "eyJ..."],
|
|
508
|
-
],
|
|
509
|
-
},
|
|
510
|
-
]));
|
|
511
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://x", { maxRetries: 0 });
|
|
512
|
-
const parts = await sub.subscribe().then(drain);
|
|
513
|
-
// Control record passes through so consumers can route by header,
|
|
514
|
-
// but its `chunk` is undefined (empty body).
|
|
515
|
-
(0, vitest_1.expect)(parts).toHaveLength(1);
|
|
516
|
-
(0, vitest_1.expect)(parts[0].chunk).toBeUndefined();
|
|
517
|
-
(0, vitest_1.expect)(parts[0].headers).toEqual([
|
|
518
|
-
["trigger-control", "turn-complete"],
|
|
519
|
-
["public-access-token", "eyJ..."],
|
|
520
|
-
]);
|
|
521
|
-
});
|
|
522
|
-
(0, vitest_1.it)("malformed data record body does not crash; cursor still advances", async () => {
|
|
523
|
-
globalThis.fetch = vitest_1.vi.fn().mockResolvedValue(makeBatchResponse([
|
|
524
|
-
{
|
|
525
|
-
body: "not json at all",
|
|
526
|
-
seq_num: 8,
|
|
527
|
-
timestamp: 1700000000004,
|
|
528
|
-
headers: [],
|
|
529
|
-
},
|
|
530
|
-
{
|
|
531
|
-
body: JSON.stringify({ data: { type: "text-delta", delta: "x" }, id: "p3" }),
|
|
532
|
-
seq_num: 9,
|
|
533
|
-
timestamp: 1700000000005,
|
|
534
|
-
headers: [],
|
|
535
|
-
},
|
|
536
|
-
]));
|
|
537
|
-
const sub = new runStream_js_1.SSEStreamSubscription("http://x", { maxRetries: 0 });
|
|
538
|
-
const parts = await sub.subscribe().then(drain);
|
|
539
|
-
// Malformed record still propagates with undefined chunk (matches
|
|
540
|
-
// control-record shape); next data record is fine.
|
|
541
|
-
(0, vitest_1.expect)(parts).toHaveLength(2);
|
|
542
|
-
(0, vitest_1.expect)(parts[0].chunk).toBeUndefined();
|
|
543
|
-
(0, vitest_1.expect)(parts[1].chunk.delta).toBe("x");
|
|
544
|
-
});
|
|
545
|
-
});
|
|
546
|
-
//# sourceMappingURL=runStream.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runStream.test.js","sourceRoot":"","sources":["../../../../src/v3/apiClient/runStream.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|