@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.
Files changed (288) hide show
  1. package/dist/commonjs/v3/apiClient/index.d.ts +26 -6
  2. package/dist/commonjs/v3/apiClient/index.js +56 -8
  3. package/dist/commonjs/v3/apiClient/index.js.map +1 -1
  4. package/dist/commonjs/v3/apiClient/refreshAccessToken.d.ts +9 -0
  5. package/dist/commonjs/v3/apiClient/refreshAccessToken.js +22 -0
  6. package/dist/commonjs/v3/apiClient/refreshAccessToken.js.map +1 -0
  7. package/dist/commonjs/v3/apiClient/runStream.d.ts +37 -0
  8. package/dist/commonjs/v3/apiClient/runStream.js +58 -8
  9. package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
  10. package/dist/commonjs/v3/apiClientManager/index.js +3 -2
  11. package/dist/commonjs/v3/apiClientManager/index.js.map +1 -1
  12. package/dist/commonjs/v3/apiClientManager/types.d.ts +6 -0
  13. package/dist/commonjs/v3/index.d.ts +1 -0
  14. package/dist/commonjs/v3/index.js +1 -0
  15. package/dist/commonjs/v3/index.js.map +1 -1
  16. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
  17. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
  18. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
  19. package/dist/commonjs/v3/realtimeStreams/types.d.ts +10 -0
  20. package/dist/commonjs/v3/schemas/api.js +1 -1
  21. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  22. package/dist/commonjs/v3/session-streams-api.d.ts +1 -0
  23. package/dist/commonjs/v3/session-streams-api.js +1 -0
  24. package/dist/commonjs/v3/session-streams-api.js.map +1 -1
  25. package/dist/commonjs/v3/sessionStreams/channels.d.ts +25 -0
  26. package/dist/commonjs/v3/sessionStreams/channels.js +3 -0
  27. package/dist/commonjs/v3/sessionStreams/channels.js.map +1 -0
  28. package/dist/commonjs/v3/sessionStreams/index.d.ts +16 -16
  29. package/dist/commonjs/v3/sessionStreams/index.js +32 -32
  30. package/dist/commonjs/v3/sessionStreams/index.js.map +1 -1
  31. package/dist/commonjs/v3/sessionStreams/manager.d.ts +16 -16
  32. package/dist/commonjs/v3/sessionStreams/manager.js +48 -47
  33. package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -1
  34. package/dist/commonjs/v3/sessionStreams/types.d.ts +16 -16
  35. package/dist/commonjs/version.js +1 -1
  36. package/dist/esm/v3/apiClient/index.d.ts +26 -6
  37. package/dist/esm/v3/apiClient/index.js +56 -9
  38. package/dist/esm/v3/apiClient/index.js.map +1 -1
  39. package/dist/esm/v3/apiClient/refreshAccessToken.d.ts +9 -0
  40. package/dist/esm/v3/apiClient/refreshAccessToken.js +19 -0
  41. package/dist/esm/v3/apiClient/refreshAccessToken.js.map +1 -0
  42. package/dist/esm/v3/apiClient/runStream.d.ts +37 -0
  43. package/dist/esm/v3/apiClient/runStream.js +57 -7
  44. package/dist/esm/v3/apiClient/runStream.js.map +1 -1
  45. package/dist/esm/v3/apiClientManager/index.js +3 -2
  46. package/dist/esm/v3/apiClientManager/index.js.map +1 -1
  47. package/dist/esm/v3/apiClientManager/types.d.ts +6 -0
  48. package/dist/esm/v3/index.d.ts +1 -0
  49. package/dist/esm/v3/index.js +1 -0
  50. package/dist/esm/v3/index.js.map +1 -1
  51. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
  52. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
  53. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
  54. package/dist/esm/v3/realtimeStreams/types.d.ts +10 -0
  55. package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +54 -54
  56. package/dist/esm/v3/schemas/api.js +1 -1
  57. package/dist/esm/v3/schemas/api.js.map +1 -1
  58. package/dist/esm/v3/session-streams-api.d.ts +1 -0
  59. package/dist/esm/v3/session-streams-api.js +1 -0
  60. package/dist/esm/v3/session-streams-api.js.map +1 -1
  61. package/dist/esm/v3/sessionStreams/channels.d.ts +25 -0
  62. package/dist/esm/v3/sessionStreams/channels.js +2 -0
  63. package/dist/esm/v3/sessionStreams/channels.js.map +1 -0
  64. package/dist/esm/v3/sessionStreams/index.d.ts +16 -16
  65. package/dist/esm/v3/sessionStreams/index.js +32 -32
  66. package/dist/esm/v3/sessionStreams/index.js.map +1 -1
  67. package/dist/esm/v3/sessionStreams/manager.d.ts +16 -16
  68. package/dist/esm/v3/sessionStreams/manager.js +48 -47
  69. package/dist/esm/v3/sessionStreams/manager.js.map +1 -1
  70. package/dist/esm/v3/sessionStreams/types.d.ts +16 -16
  71. package/dist/esm/version.js +1 -1
  72. package/package.json +4 -1
  73. package/dist/commonjs/v3/apiClient/bulkActions.test.d.ts +0 -1
  74. package/dist/commonjs/v3/apiClient/bulkActions.test.js +0 -151
  75. package/dist/commonjs/v3/apiClient/bulkActions.test.js.map +0 -1
  76. package/dist/commonjs/v3/apiClient/runStream.test.d.ts +0 -1
  77. package/dist/commonjs/v3/apiClient/runStream.test.js +0 -546
  78. package/dist/commonjs/v3/apiClient/runStream.test.js.map +0 -1
  79. package/dist/commonjs/v3/apiClient/streamBatchItems.test.d.ts +0 -1
  80. package/dist/commonjs/v3/apiClient/streamBatchItems.test.js +0 -408
  81. package/dist/commonjs/v3/apiClient/streamBatchItems.test.js.map +0 -1
  82. package/dist/commonjs/v3/apiKeys.test.d.ts +0 -1
  83. package/dist/commonjs/v3/apiKeys.test.js +0 -19
  84. package/dist/commonjs/v3/apiKeys.test.js.map +0 -1
  85. package/dist/commonjs/v3/apps/exec.test.d.ts +0 -1
  86. package/dist/commonjs/v3/apps/exec.test.js +0 -23
  87. package/dist/commonjs/v3/apps/exec.test.js.map +0 -1
  88. package/dist/commonjs/v3/build/flags.test.d.ts +0 -1
  89. package/dist/commonjs/v3/build/flags.test.js +0 -50
  90. package/dist/commonjs/v3/build/flags.test.js.map +0 -1
  91. package/dist/commonjs/v3/build/runtime.test.d.ts +0 -1
  92. package/dist/commonjs/v3/build/runtime.test.js +0 -44
  93. package/dist/commonjs/v3/build/runtime.test.js.map +0 -1
  94. package/dist/commonjs/v3/errors.test.d.ts +0 -1
  95. package/dist/commonjs/v3/errors.test.js +0 -36
  96. package/dist/commonjs/v3/errors.test.js.map +0 -1
  97. package/dist/commonjs/v3/externalDeploymentId.test.d.ts +0 -1
  98. package/dist/commonjs/v3/externalDeploymentId.test.js +0 -173
  99. package/dist/commonjs/v3/externalDeploymentId.test.js.map +0 -1
  100. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
  101. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -44
  102. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
  103. package/dist/commonjs/v3/idempotencyKeys.test.d.ts +0 -1
  104. package/dist/commonjs/v3/idempotencyKeys.test.js +0 -192
  105. package/dist/commonjs/v3/idempotencyKeys.test.js.map +0 -1
  106. package/dist/commonjs/v3/isomorphic/friendlyId.test.d.ts +0 -1
  107. package/dist/commonjs/v3/isomorphic/friendlyId.test.js +0 -497
  108. package/dist/commonjs/v3/isomorphic/friendlyId.test.js.map +0 -1
  109. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
  110. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js +0 -141
  111. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js.map +0 -1
  112. package/dist/commonjs/v3/isomorphic/waitpointMint.test.d.ts +0 -1
  113. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js +0 -97
  114. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js.map +0 -1
  115. package/dist/commonjs/v3/machines/max-old-space.test.d.ts +0 -1
  116. package/dist/commonjs/v3/machines/max-old-space.test.js +0 -44
  117. package/dist/commonjs/v3/machines/max-old-space.test.js.map +0 -1
  118. package/dist/commonjs/v3/otel/tracingSDK.test.d.ts +0 -1
  119. package/dist/commonjs/v3/otel/tracingSDK.test.js +0 -174
  120. package/dist/commonjs/v3/otel/tracingSDK.test.js.map +0 -1
  121. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
  122. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js +0 -18
  123. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js.map +0 -1
  124. package/dist/commonjs/v3/realtimeStreams/manager.test.d.ts +0 -1
  125. package/dist/commonjs/v3/realtimeStreams/manager.test.js +0 -89
  126. package/dist/commonjs/v3/realtimeStreams/manager.test.js.map +0 -1
  127. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
  128. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js +0 -68
  129. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
  130. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
  131. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -674
  132. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
  133. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
  134. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -77
  135. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
  136. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
  137. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -293
  138. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
  139. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
  140. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -235
  141. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
  142. package/dist/commonjs/v3/schemas/api-type.test.d.ts +0 -1
  143. package/dist/commonjs/v3/schemas/api-type.test.js +0 -358
  144. package/dist/commonjs/v3/schemas/api-type.test.js.map +0 -1
  145. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
  146. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js +0 -79
  147. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js.map +0 -1
  148. package/dist/commonjs/v3/schemas/idempotencyKey.test.d.ts +0 -1
  149. package/dist/commonjs/v3/schemas/idempotencyKey.test.js +0 -157
  150. package/dist/commonjs/v3/schemas/idempotencyKey.test.js.map +0 -1
  151. package/dist/commonjs/v3/schemas/scheduleWindow.test.d.ts +0 -1
  152. package/dist/commonjs/v3/schemas/scheduleWindow.test.js +0 -52
  153. package/dist/commonjs/v3/schemas/scheduleWindow.test.js.map +0 -1
  154. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
  155. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js +0 -104
  156. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
  157. package/dist/commonjs/v3/serverOnly/shutdownManager.test.d.ts +0 -1
  158. package/dist/commonjs/v3/serverOnly/shutdownManager.test.js +0 -139
  159. package/dist/commonjs/v3/serverOnly/shutdownManager.test.js.map +0 -1
  160. package/dist/commonjs/v3/sessionStreams/manager.test.d.ts +0 -1
  161. package/dist/commonjs/v3/sessionStreams/manager.test.js +0 -375
  162. package/dist/commonjs/v3/sessionStreams/manager.test.js.map +0 -1
  163. package/dist/commonjs/v3/sessionStreams/router.test.d.ts +0 -1
  164. package/dist/commonjs/v3/sessionStreams/router.test.js +0 -463
  165. package/dist/commonjs/v3/sessionStreams/router.test.js.map +0 -1
  166. package/dist/commonjs/v3/taskContext/index.test.d.ts +0 -1
  167. package/dist/commonjs/v3/taskContext/index.test.js +0 -73
  168. package/dist/commonjs/v3/taskContext/index.test.js.map +0 -1
  169. package/dist/commonjs/v3/taskContext/otelProcessors.test.d.ts +0 -1
  170. package/dist/commonjs/v3/taskContext/otelProcessors.test.js +0 -109
  171. package/dist/commonjs/v3/taskContext/otelProcessors.test.js.map +0 -1
  172. package/dist/commonjs/v3/telnetLogServer.test.d.ts +0 -1
  173. package/dist/commonjs/v3/telnetLogServer.test.js +0 -144
  174. package/dist/commonjs/v3/telnetLogServer.test.js.map +0 -1
  175. package/dist/commonjs/v3/utils/reconnectBackoff.test.d.ts +0 -1
  176. package/dist/commonjs/v3/utils/reconnectBackoff.test.js +0 -76
  177. package/dist/commonjs/v3/utils/reconnectBackoff.test.js.map +0 -1
  178. package/dist/commonjs/v3/workloadDeploymentToken.test.d.ts +0 -1
  179. package/dist/commonjs/v3/workloadDeploymentToken.test.js +0 -110
  180. package/dist/commonjs/v3/workloadDeploymentToken.test.js.map +0 -1
  181. package/dist/esm/v3/apiClient/bulkActions.test.d.ts +0 -1
  182. package/dist/esm/v3/apiClient/bulkActions.test.js +0 -149
  183. package/dist/esm/v3/apiClient/bulkActions.test.js.map +0 -1
  184. package/dist/esm/v3/apiClient/runStream.test.d.ts +0 -1
  185. package/dist/esm/v3/apiClient/runStream.test.js +0 -544
  186. package/dist/esm/v3/apiClient/runStream.test.js.map +0 -1
  187. package/dist/esm/v3/apiClient/streamBatchItems.test.d.ts +0 -1
  188. package/dist/esm/v3/apiClient/streamBatchItems.test.js +0 -406
  189. package/dist/esm/v3/apiClient/streamBatchItems.test.js.map +0 -1
  190. package/dist/esm/v3/apiKeys.test.d.ts +0 -1
  191. package/dist/esm/v3/apiKeys.test.js +0 -17
  192. package/dist/esm/v3/apiKeys.test.js.map +0 -1
  193. package/dist/esm/v3/apps/exec.test.d.ts +0 -1
  194. package/dist/esm/v3/apps/exec.test.js +0 -21
  195. package/dist/esm/v3/apps/exec.test.js.map +0 -1
  196. package/dist/esm/v3/build/flags.test.d.ts +0 -1
  197. package/dist/esm/v3/build/flags.test.js +0 -48
  198. package/dist/esm/v3/build/flags.test.js.map +0 -1
  199. package/dist/esm/v3/build/runtime.test.d.ts +0 -1
  200. package/dist/esm/v3/build/runtime.test.js +0 -42
  201. package/dist/esm/v3/build/runtime.test.js.map +0 -1
  202. package/dist/esm/v3/errors.test.d.ts +0 -1
  203. package/dist/esm/v3/errors.test.js +0 -34
  204. package/dist/esm/v3/errors.test.js.map +0 -1
  205. package/dist/esm/v3/externalDeploymentId.test.d.ts +0 -1
  206. package/dist/esm/v3/externalDeploymentId.test.js +0 -171
  207. package/dist/esm/v3/externalDeploymentId.test.js.map +0 -1
  208. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
  209. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -42
  210. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
  211. package/dist/esm/v3/idempotencyKeys.test.d.ts +0 -1
  212. package/dist/esm/v3/idempotencyKeys.test.js +0 -190
  213. package/dist/esm/v3/idempotencyKeys.test.js.map +0 -1
  214. package/dist/esm/v3/isomorphic/friendlyId.test.d.ts +0 -1
  215. package/dist/esm/v3/isomorphic/friendlyId.test.js +0 -495
  216. package/dist/esm/v3/isomorphic/friendlyId.test.js.map +0 -1
  217. package/dist/esm/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
  218. package/dist/esm/v3/isomorphic/runOpsResidency.test.js +0 -139
  219. package/dist/esm/v3/isomorphic/runOpsResidency.test.js.map +0 -1
  220. package/dist/esm/v3/isomorphic/waitpointMint.test.d.ts +0 -1
  221. package/dist/esm/v3/isomorphic/waitpointMint.test.js +0 -95
  222. package/dist/esm/v3/isomorphic/waitpointMint.test.js.map +0 -1
  223. package/dist/esm/v3/machines/max-old-space.test.d.ts +0 -1
  224. package/dist/esm/v3/machines/max-old-space.test.js +0 -42
  225. package/dist/esm/v3/machines/max-old-space.test.js.map +0 -1
  226. package/dist/esm/v3/otel/tracingSDK.test.d.ts +0 -1
  227. package/dist/esm/v3/otel/tracingSDK.test.js +0 -172
  228. package/dist/esm/v3/otel/tracingSDK.test.js.map +0 -1
  229. package/dist/esm/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
  230. package/dist/esm/v3/otel/tracingSDKShutdown.test.js +0 -16
  231. package/dist/esm/v3/otel/tracingSDKShutdown.test.js.map +0 -1
  232. package/dist/esm/v3/realtimeStreams/manager.test.d.ts +0 -1
  233. package/dist/esm/v3/realtimeStreams/manager.test.js +0 -87
  234. package/dist/esm/v3/realtimeStreams/manager.test.js.map +0 -1
  235. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
  236. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js +0 -66
  237. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
  238. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
  239. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -672
  240. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
  241. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
  242. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -75
  243. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
  244. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
  245. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -291
  246. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
  247. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
  248. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -233
  249. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
  250. package/dist/esm/v3/schemas/api-type.test.d.ts +0 -1
  251. package/dist/esm/v3/schemas/api-type.test.js +0 -356
  252. package/dist/esm/v3/schemas/api-type.test.js.map +0 -1
  253. package/dist/esm/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
  254. package/dist/esm/v3/schemas/batchItemNDJSON.test.js +0 -77
  255. package/dist/esm/v3/schemas/batchItemNDJSON.test.js.map +0 -1
  256. package/dist/esm/v3/schemas/idempotencyKey.test.d.ts +0 -1
  257. package/dist/esm/v3/schemas/idempotencyKey.test.js +0 -155
  258. package/dist/esm/v3/schemas/idempotencyKey.test.js.map +0 -1
  259. package/dist/esm/v3/schemas/scheduleWindow.test.d.ts +0 -1
  260. package/dist/esm/v3/schemas/scheduleWindow.test.js +0 -50
  261. package/dist/esm/v3/schemas/scheduleWindow.test.js.map +0 -1
  262. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
  263. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js +0 -102
  264. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
  265. package/dist/esm/v3/serverOnly/shutdownManager.test.d.ts +0 -1
  266. package/dist/esm/v3/serverOnly/shutdownManager.test.js +0 -137
  267. package/dist/esm/v3/serverOnly/shutdownManager.test.js.map +0 -1
  268. package/dist/esm/v3/sessionStreams/manager.test.d.ts +0 -1
  269. package/dist/esm/v3/sessionStreams/manager.test.js +0 -373
  270. package/dist/esm/v3/sessionStreams/manager.test.js.map +0 -1
  271. package/dist/esm/v3/sessionStreams/router.test.d.ts +0 -1
  272. package/dist/esm/v3/sessionStreams/router.test.js +0 -461
  273. package/dist/esm/v3/sessionStreams/router.test.js.map +0 -1
  274. package/dist/esm/v3/taskContext/index.test.d.ts +0 -1
  275. package/dist/esm/v3/taskContext/index.test.js +0 -71
  276. package/dist/esm/v3/taskContext/index.test.js.map +0 -1
  277. package/dist/esm/v3/taskContext/otelProcessors.test.d.ts +0 -1
  278. package/dist/esm/v3/taskContext/otelProcessors.test.js +0 -107
  279. package/dist/esm/v3/taskContext/otelProcessors.test.js.map +0 -1
  280. package/dist/esm/v3/telnetLogServer.test.d.ts +0 -1
  281. package/dist/esm/v3/telnetLogServer.test.js +0 -139
  282. package/dist/esm/v3/telnetLogServer.test.js.map +0 -1
  283. package/dist/esm/v3/utils/reconnectBackoff.test.d.ts +0 -1
  284. package/dist/esm/v3/utils/reconnectBackoff.test.js +0 -74
  285. package/dist/esm/v3/utils/reconnectBackoff.test.js.map +0 -1
  286. package/dist/esm/v3/workloadDeploymentToken.test.d.ts +0 -1
  287. package/dist/esm/v3/workloadDeploymentToken.test.js +0 -108
  288. package/dist/esm/v3/workloadDeploymentToken.test.js.map +0 -1
@@ -1,109 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const testcontainers_1 = require("@internal/testcontainers");
4
- const core_1 = require("@opentelemetry/core");
5
- const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http");
6
- const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
7
- const vitest_1 = require("vitest");
8
- const otelProcessors_js_1 = require("./otelProcessors.js");
9
- class RecordingMetricExporter {
10
- exported = [];
11
- export(metrics, resultCallback) {
12
- this.exported.push(metrics);
13
- resultCallback({ code: core_1.ExportResultCode.SUCCESS });
14
- }
15
- async forceFlush() { }
16
- async shutdown() { }
17
- }
18
- function gauge(name, values) {
19
- return {
20
- descriptor: {
21
- name,
22
- description: "",
23
- unit: "1",
24
- type: sdk_metrics_1.InstrumentType.OBSERVABLE_GAUGE,
25
- valueType: 1,
26
- },
27
- aggregationTemporality: sdk_metrics_1.AggregationTemporality.CUMULATIVE,
28
- dataPointType: sdk_metrics_1.DataPointType.GAUGE,
29
- dataPoints: values.map((value) => ({
30
- attributes: { "process.cpu.state": "user" },
31
- startTime: [1786481102, 584000000],
32
- endTime: [1786481102, 698000000],
33
- value,
34
- })),
35
- };
36
- }
37
- function resourceMetrics(metrics) {
38
- return {
39
- resource: { attributes: {} },
40
- scopeMetrics: [{ scope: { name: "@opentelemetry/host-metrics" }, metrics }],
41
- };
42
- }
43
- async function exportThrough(exporter, metrics) {
44
- exporter.export(metrics, () => { });
45
- await exporter.forceFlush();
46
- }
47
- function histogram(name, sums) {
48
- return {
49
- descriptor: {
50
- name,
51
- description: "",
52
- unit: "ms",
53
- type: sdk_metrics_1.InstrumentType.HISTOGRAM,
54
- valueType: 1,
55
- },
56
- aggregationTemporality: sdk_metrics_1.AggregationTemporality.DELTA,
57
- dataPointType: sdk_metrics_1.DataPointType.HISTOGRAM,
58
- dataPoints: sums.map((sum) => ({
59
- attributes: { "task.status": "completed" },
60
- startTime: [1786481102, 584000000],
61
- endTime: [1786481102, 698000000],
62
- value: {
63
- min: 0,
64
- max: 1,
65
- sum,
66
- count: 1,
67
- buckets: { boundaries: [0, 1], counts: [0, 1, 0] },
68
- },
69
- })),
70
- };
71
- }
72
- (0, vitest_1.describe)("BufferingMetricExporter", () => {
73
- (0, vitest_1.it)("forwards only the finite data points of a metric", async () => {
74
- const inner = new RecordingMetricExporter();
75
- const exporter = new otelProcessors_js_1.BufferingMetricExporter(inner, 30_000);
76
- await exportThrough(exporter, resourceMetrics([gauge("process.cpu.utilization", [NaN, 0.25])]));
77
- const forwarded = inner.exported[0].scopeMetrics[0].metrics[0];
78
- (0, vitest_1.expect)(forwarded.dataPoints.map((dp) => dp.value)).toEqual([0.25]);
79
- });
80
- (0, vitest_1.it)("drops infinite data points as well as NaN", async () => {
81
- const inner = new RecordingMetricExporter();
82
- const exporter = new otelProcessors_js_1.BufferingMetricExporter(inner, 30_000);
83
- await exportThrough(exporter, resourceMetrics([gauge("process.cpu.utilization", [Infinity, -Infinity, 0.5])]));
84
- const forwarded = inner.exported[0].scopeMetrics[0].metrics[0];
85
- (0, vitest_1.expect)(forwarded.dataPoints.map((dp) => dp.value)).toEqual([0.5]);
86
- });
87
- (0, vitest_1.it)("forwards only the histogram data points with a finite sum", async () => {
88
- const inner = new RecordingMetricExporter();
89
- const exporter = new otelProcessors_js_1.BufferingMetricExporter(inner, 30_000);
90
- await exportThrough(exporter, resourceMetrics([histogram("task.duration", [NaN, 5])]));
91
- const forwarded = inner.exported[0].scopeMetrics[0].metrics[0];
92
- (0, vitest_1.expect)(forwarded.dataPoints.map((dp) => dp.value.sum)).toEqual([5]);
93
- });
94
- (0, vitest_1.describe)("against a real otel collector", () => {
95
- let collector;
96
- (0, vitest_1.beforeAll)(async () => {
97
- collector = await new testcontainers_1.OtelCollectorContainer().start();
98
- }, 180_000);
99
- (0, vitest_1.afterAll)(async () => {
100
- await collector?.stop();
101
- });
102
- (0, vitest_1.it)("exports a batch containing a NaN gauge value without being rejected", async () => {
103
- const exporter = new otelProcessors_js_1.BufferingMetricExporter(new exporter_metrics_otlp_http_1.OTLPMetricExporter({ url: `${collector.getOtlpHttpUrl()}/v1/metrics` }), 30_000);
104
- exporter.export(resourceMetrics([gauge("process.cpu.utilization", [NaN, 0.25])]), () => { });
105
- await (0, vitest_1.expect)(exporter.forceFlush()).resolves.toBeUndefined();
106
- });
107
- });
108
- });
109
- //# sourceMappingURL=otelProcessors.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"otelProcessors.test.js","sourceRoot":"","sources":["../../../../src/v3/taskContext/otelProcessors.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,144 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_net_1 = __importDefault(require("node:net"));
7
- const vitest_1 = require("vitest");
8
- const telnetLogServer_js_1 = require("./telnetLogServer.js");
9
- const servers = [];
10
- (0, vitest_1.afterEach)(() => {
11
- while (servers.length) {
12
- servers.pop()?.close();
13
- }
14
- });
15
- /** Grab a port the OS just told us is free, then hand it to a TelnetLogServer. */
16
- async function startServerOnFreePort(name = "test") {
17
- const probe = node_net_1.default.createServer();
18
- const port = await listening(probe, 0);
19
- await new Promise((resolve) => probe.close(() => resolve()));
20
- // A banner lets clients deterministically wait until the server has registered them
21
- // (it's written in the connection handler), removing the connect/register race.
22
- const server = new telnetLogServer_js_1.TelnetLogServer({ port, name, banner: "ready" });
23
- servers.push(server);
24
- server.start();
25
- await delay(30);
26
- return { server, port };
27
- }
28
- /** Connects and resolves only once the first bytes (the banner) arrive — server-side socket is registered by then. */
29
- function connectAndCollect(port) {
30
- return new Promise((resolve, reject) => {
31
- let buffer = "";
32
- const socket = node_net_1.default.connect(port, "127.0.0.1");
33
- socket.setEncoding("utf8");
34
- socket.on("data", (chunk) => {
35
- const first = buffer === "";
36
- buffer += chunk;
37
- if (first) {
38
- resolve({ socket, lines: () => buffer });
39
- }
40
- });
41
- socket.on("error", reject);
42
- });
43
- }
44
- function listening(server, port, host = "127.0.0.1") {
45
- return new Promise((resolve) => {
46
- server.listen(port, host, () => {
47
- const address = server.address();
48
- resolve(typeof address === "object" && address ? address.port : port);
49
- });
50
- });
51
- }
52
- (0, vitest_1.describe)("stripAnsi", () => {
53
- (0, vitest_1.test)("removes color escape codes", () => {
54
- const colored = "2026-06-11 ERROR boom";
55
- (0, vitest_1.expect)((0, telnetLogServer_js_1.stripAnsi)(colored)).toBe("2026-06-11 ERROR boom");
56
- });
57
- });
58
- (0, vitest_1.describe)("formatLogLine", () => {
59
- (0, vitest_1.test)("formats a core Logger-shaped object (level/name)", () => {
60
- const line = (0, telnetLogServer_js_1.formatLogLine)({
61
- timestamp: new Date("2026-06-11T12:00:00.000Z"),
62
- name: "webapp",
63
- level: "info",
64
- message: "queue drained",
65
- count: 3,
66
- });
67
- (0, vitest_1.expect)(line).toBe("2026-06-11T12:00:00.000Z INFO [webapp] queue drained {count=3}");
68
- });
69
- (0, vitest_1.test)("formats a SimpleStructuredLogger-shaped object ($level/$name)", () => {
70
- const line = (0, telnetLogServer_js_1.formatLogLine)({
71
- timestamp: new Date("2026-06-11T12:00:00.000Z"),
72
- $name: "supervisor",
73
- $level: "warn",
74
- message: "retrying",
75
- attempt: 2,
76
- });
77
- (0, vitest_1.expect)(line).toBe("2026-06-11T12:00:00.000Z WARN [supervisor] retrying {attempt=2}");
78
- });
79
- (0, vitest_1.test)("omits empty name and extras", () => {
80
- const line = (0, telnetLogServer_js_1.formatLogLine)({
81
- timestamp: "2026-06-11T12:00:00.000Z",
82
- level: "log",
83
- message: "hello",
84
- });
85
- (0, vitest_1.expect)(line).toBe("2026-06-11T12:00:00.000Z LOG hello");
86
- });
87
- });
88
- (0, vitest_1.describe)("formatConsoleLine", () => {
89
- (0, vitest_1.test)("pretty-formats a JSON structured-log line", () => {
90
- const raw = JSON.stringify({
91
- timestamp: "2026-06-11T12:00:00.000Z",
92
- name: "sso-plugin",
93
- level: "info",
94
- message: "sso.webhook.connection.activated: connection marked active",
95
- connId: "conn_123",
96
- });
97
- (0, vitest_1.expect)((0, telnetLogServer_js_1.formatConsoleLine)(raw)).toBe("2026-06-11T12:00:00.000Z INFO [sso-plugin] sso.webhook.connection.activated: connection marked active {connId=conn_123}");
98
- });
99
- (0, vitest_1.test)("passes non-JSON console output through unchanged", () => {
100
- (0, vitest_1.expect)((0, telnetLogServer_js_1.formatConsoleLine)("GET /healthcheck 200 1.2 ms")).toBe("GET /healthcheck 200 1.2 ms");
101
- });
102
- (0, vitest_1.test)("passes JSON that isn't a structured log through unchanged", () => {
103
- const raw = JSON.stringify({ foo: "bar" });
104
- (0, vitest_1.expect)((0, telnetLogServer_js_1.formatConsoleLine)(raw)).toBe(raw);
105
- });
106
- });
107
- (0, vitest_1.describe)("TelnetLogServer", () => {
108
- (0, vitest_1.test)("broadcasts a line to a connected client", async () => {
109
- const { server, port } = await startServerOnFreePort();
110
- const client = await connectAndCollect(port);
111
- server.broadcast("first line");
112
- await delay(50);
113
- (0, vitest_1.expect)(client.lines()).toContain("first line\r\n");
114
- client.socket.destroy();
115
- });
116
- (0, vitest_1.test)("close() ends connected sockets", async () => {
117
- const { server, port } = await startServerOnFreePort();
118
- const client = await connectAndCollect(port);
119
- server.broadcast("alive");
120
- await delay(30);
121
- (0, vitest_1.expect)(client.lines()).toContain("alive\r\n");
122
- let closed = false;
123
- client.socket.on("close", () => {
124
- closed = true;
125
- });
126
- server.close();
127
- await delay(30);
128
- (0, vitest_1.expect)(closed).toBe(true);
129
- });
130
- (0, vitest_1.test)("EADDRINUSE does not throw", async () => {
131
- const blocker = node_net_1.default.createServer();
132
- const port = await listening(blocker, 0);
133
- const server = new telnetLogServer_js_1.TelnetLogServer({ port, name: "test" });
134
- servers.push(server);
135
- // Must not throw even though the port is taken.
136
- (0, vitest_1.expect)(() => server.start()).not.toThrow();
137
- await delay(30);
138
- blocker.close();
139
- });
140
- });
141
- function delay(ms) {
142
- return new Promise((resolve) => setTimeout(resolve, ms));
143
- }
144
- //# sourceMappingURL=telnetLogServer.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telnetLogServer.test.js","sourceRoot":"","sources":["../../../src/v3/telnetLogServer.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const reconnectBackoff_js_1 = require("./reconnectBackoff.js");
5
- (0, vitest_1.afterEach)(() => {
6
- vitest_1.vi.restoreAllMocks();
7
- });
8
- (0, vitest_1.describe)("computeReconnectDelayMs", () => {
9
- // Hold Math.random steady so we can assert on the deterministic base. The
10
- // jitter is added separately in the "jitter" test below.
11
- function withFixedRandom(value, fn) {
12
- const spy = vitest_1.vi.spyOn(Math, "random").mockReturnValue(value);
13
- try {
14
- fn();
15
- }
16
- finally {
17
- spy.mockRestore();
18
- }
19
- }
20
- (0, vitest_1.it)("base case — attempt 0 lands in [1000, 2000)", () => {
21
- withFixedRandom(0, () => {
22
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(0)).toBe(1000);
23
- });
24
- withFixedRandom(0.999, () => {
25
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(0)).toBeGreaterThanOrEqual(1000);
26
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(0)).toBeLessThan(2000);
27
- });
28
- });
29
- (0, vitest_1.it)("doubles per attempt up to the 30s cap", () => {
30
- withFixedRandom(0, () => {
31
- // 1s, 2s, 4s, 8s, 16s, then capped at 30s
32
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(0)).toBe(1_000);
33
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(1)).toBe(2_000);
34
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(2)).toBe(4_000);
35
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(3)).toBe(8_000);
36
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(4)).toBe(16_000);
37
- // 32s would exceed the cap — should clamp to 30s.
38
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(5)).toBe(reconnectBackoff_js_1.RECONNECT_BACKOFF_MAX_MS);
39
- // High attempt counts stay capped — protects against integer
40
- // overflow on 2 ** N for large N.
41
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(50)).toBe(reconnectBackoff_js_1.RECONNECT_BACKOFF_MAX_MS);
42
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(1_000)).toBe(reconnectBackoff_js_1.RECONNECT_BACKOFF_MAX_MS);
43
- });
44
- });
45
- (0, vitest_1.it)("never exceeds RECONNECT_BACKOFF_MAX_MS + 1000ms (cap + jitter ceiling)", () => {
46
- withFixedRandom(0.999, () => {
47
- for (let attempt = 0; attempt < 100; attempt++) {
48
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(attempt)).toBeLessThan(reconnectBackoff_js_1.RECONNECT_BACKOFF_MAX_MS + 1000);
49
- }
50
- });
51
- });
52
- (0, vitest_1.it)("adds 0–1000ms of jitter on top of the base", () => {
53
- // Compare same attempt with random=0 vs random=0.5 — the difference is
54
- // exactly the jitter.
55
- withFixedRandom(0, () => {
56
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(2)).toBe(4_000);
57
- });
58
- withFixedRandom(0.5, () => {
59
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(2)).toBe(4_500);
60
- });
61
- withFixedRandom(0.999, () => {
62
- const v = (0, reconnectBackoff_js_1.computeReconnectDelayMs)(2);
63
- (0, vitest_1.expect)(v).toBeGreaterThan(4_000);
64
- (0, vitest_1.expect)(v).toBeLessThan(5_000);
65
- });
66
- });
67
- (0, vitest_1.it)("clamps negative / non-integer attempts to 0 (no NaN, no negative delay)", () => {
68
- withFixedRandom(0, () => {
69
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(-1)).toBe(1_000);
70
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(-100)).toBe(1_000);
71
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(0.7)).toBe(1_000); // floored to 0
72
- (0, vitest_1.expect)((0, reconnectBackoff_js_1.computeReconnectDelayMs)(2.9)).toBe(4_000); // floored to 2
73
- });
74
- });
75
- });
76
- //# sourceMappingURL=reconnectBackoff.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconnectBackoff.test.js","sourceRoot":"","sources":["../../../../src/v3/utils/reconnectBackoff.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,110 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const jwt_js_1 = require("./jwt.js");
5
- const workloadDeploymentToken_js_1 = require("./workloadDeploymentToken.js");
6
- const SECRET = "test-workload-token-secret";
7
- const EXP = Math.floor(Date.UTC(2032, 0, 1) / 1000);
8
- const claims = {
9
- deployment: "deployment_abc123",
10
- deployment_version: "20260709.1",
11
- environment_id: "env_1",
12
- environment_type: "PRODUCTION",
13
- org_id: "org_1",
14
- project_id: "proj_1",
15
- };
16
- (0, vitest_1.describe)("workloadDeploymentToken", () => {
17
- (0, vitest_1.it)("mints a token that verifies and round-trips every claim", async () => {
18
- const token = await (0, workloadDeploymentToken_js_1.mintWorkloadDeploymentToken)(claims, SECRET, EXP);
19
- const result = await (0, workloadDeploymentToken_js_1.verifyWorkloadDeploymentToken)(token, SECRET);
20
- (0, vitest_1.expect)(result.ok).toBe(true);
21
- if (!result.ok)
22
- return;
23
- (0, vitest_1.expect)(result.claims.ver).toBe(workloadDeploymentToken_js_1.WORKLOAD_DEPLOYMENT_TOKEN_VERSION);
24
- (0, vitest_1.expect)(result.claims.deployment).toBe(claims.deployment);
25
- (0, vitest_1.expect)(result.claims.deployment_version).toBe(claims.deployment_version);
26
- (0, vitest_1.expect)(result.claims.environment_id).toBe(claims.environment_id);
27
- (0, vitest_1.expect)(result.claims.environment_type).toBe(claims.environment_type);
28
- (0, vitest_1.expect)(result.claims.org_id).toBe(claims.org_id);
29
- (0, vitest_1.expect)(result.claims.project_id).toBe(claims.project_id);
30
- });
31
- (0, vitest_1.it)("sets the caller-supplied absolute exp", async () => {
32
- const token = await (0, workloadDeploymentToken_js_1.mintWorkloadDeploymentToken)(claims, SECRET, EXP);
33
- const result = await (0, workloadDeploymentToken_js_1.verifyWorkloadDeploymentToken)(token, SECRET);
34
- (0, vitest_1.expect)(result.ok).toBe(true);
35
- if (!result.ok)
36
- return;
37
- (0, vitest_1.expect)(result.claims.exp).toBe(EXP);
38
- });
39
- (0, vitest_1.it)("mints byte-identical tokens for identical claims (deterministic, no iat)", async () => {
40
- const a = await (0, workloadDeploymentToken_js_1.mintWorkloadDeploymentToken)(claims, SECRET, EXP);
41
- const b = await (0, workloadDeploymentToken_js_1.mintWorkloadDeploymentToken)(claims, SECRET, EXP);
42
- (0, vitest_1.expect)(a).toBe(b);
43
- const result = await (0, workloadDeploymentToken_js_1.verifyWorkloadDeploymentToken)(a, SECRET);
44
- (0, vitest_1.expect)(result.ok).toBe(true);
45
- if (!result.ok)
46
- return;
47
- (0, vitest_1.expect)(result.claims.iat).toBeUndefined();
48
- });
49
- (0, vitest_1.it)("rejects a token signed with a different secret", async () => {
50
- const token = await (0, workloadDeploymentToken_js_1.mintWorkloadDeploymentToken)(claims, SECRET, EXP);
51
- const result = await (0, workloadDeploymentToken_js_1.verifyWorkloadDeploymentToken)(token, "wrong-secret");
52
- (0, vitest_1.expect)(result.ok).toBe(false);
53
- if (result.ok)
54
- return;
55
- (0, vitest_1.expect)(result.reason).toBe("invalid_signature");
56
- });
57
- (0, vitest_1.it)("rejects a tampered token", async () => {
58
- const token = await (0, workloadDeploymentToken_js_1.mintWorkloadDeploymentToken)(claims, SECRET, EXP);
59
- const [header, payload, signature] = token.split(".");
60
- const tampered = `${header}.${payload}x.${signature}`;
61
- const result = await (0, workloadDeploymentToken_js_1.verifyWorkloadDeploymentToken)(tampered, SECRET);
62
- (0, vitest_1.expect)(result.ok).toBe(false);
63
- });
64
- (0, vitest_1.it)("rejects a valid JWT that is missing required claims", async () => {
65
- // Signed with the right secret, but not a workload deployment token.
66
- const token = await (0, jwt_js_1.generateJWT)({
67
- secretKey: SECRET,
68
- payload: { foo: "bar" },
69
- expirationTime: "1825d",
70
- });
71
- const result = await (0, workloadDeploymentToken_js_1.verifyWorkloadDeploymentToken)(token, SECRET);
72
- (0, vitest_1.expect)(result.ok).toBe(false);
73
- if (result.ok)
74
- return;
75
- (0, vitest_1.expect)(result.reason).toBe("malformed_claims");
76
- });
77
- (0, vitest_1.describe)("looksLikeWorkloadDeploymentToken", () => {
78
- (0, vitest_1.it)("is true for a minted token", async () => {
79
- const token = await (0, workloadDeploymentToken_js_1.mintWorkloadDeploymentToken)(claims, SECRET, EXP);
80
- (0, vitest_1.expect)((0, workloadDeploymentToken_js_1.looksLikeWorkloadDeploymentToken)(token)).toBe(true);
81
- });
82
- (0, vitest_1.it)("is false for a legacy bare friendlyId", () => {
83
- (0, vitest_1.expect)((0, workloadDeploymentToken_js_1.looksLikeWorkloadDeploymentToken)("deployment_abc123")).toBe(false);
84
- });
85
- (0, vitest_1.it)("is false for empty and malformed values", () => {
86
- (0, vitest_1.expect)((0, workloadDeploymentToken_js_1.looksLikeWorkloadDeploymentToken)("")).toBe(false);
87
- (0, vitest_1.expect)((0, workloadDeploymentToken_js_1.looksLikeWorkloadDeploymentToken)("a.b")).toBe(false);
88
- (0, vitest_1.expect)((0, workloadDeploymentToken_js_1.looksLikeWorkloadDeploymentToken)("a..c")).toBe(false);
89
- });
90
- });
91
- (0, vitest_1.describe)("classifyDeploymentIdHeader", () => {
92
- (0, vitest_1.it)("classifies a minted token as jwt_valid and returns claims", async () => {
93
- const token = await (0, workloadDeploymentToken_js_1.mintWorkloadDeploymentToken)(claims, SECRET, EXP);
94
- const result = await (0, workloadDeploymentToken_js_1.classifyDeploymentIdHeader)(token, SECRET);
95
- (0, vitest_1.expect)(result.outcome).toBe("jwt_valid");
96
- (0, vitest_1.expect)(result.claims?.deployment).toBe(claims.deployment);
97
- });
98
- (0, vitest_1.it)("classifies a JWT with a bad signature as jwt_invalid", async () => {
99
- const token = await (0, workloadDeploymentToken_js_1.mintWorkloadDeploymentToken)(claims, SECRET, EXP);
100
- const result = await (0, workloadDeploymentToken_js_1.classifyDeploymentIdHeader)(token, "wrong-secret");
101
- (0, vitest_1.expect)(result.outcome).toBe("jwt_invalid");
102
- (0, vitest_1.expect)(result.claims).toBeUndefined();
103
- });
104
- (0, vitest_1.it)("classifies a bare friendlyId as legacy_bare", async () => {
105
- const result = await (0, workloadDeploymentToken_js_1.classifyDeploymentIdHeader)("deployment_abc123", SECRET);
106
- (0, vitest_1.expect)(result.outcome).toBe("legacy_bare");
107
- });
108
- });
109
- });
110
- //# sourceMappingURL=workloadDeploymentToken.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workloadDeploymentToken.test.js","sourceRoot":"","sources":["../../../src/v3/workloadDeploymentToken.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,149 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it } from "vitest";
2
- import { createServer } from "node:http";
3
- import { ApiClient } from "./index.js";
4
- describe("ApiClient bulk actions", () => {
5
- let server;
6
- let baseUrl;
7
- let receivedRequests = [];
8
- let requestHandler;
9
- beforeEach(async () => {
10
- receivedRequests = [];
11
- requestHandler = undefined;
12
- server = createServer((req, res) => {
13
- const chunks = [];
14
- req.on("data", (chunk) => chunks.push(chunk));
15
- req.on("end", async () => {
16
- const received = {
17
- method: req.method ?? "",
18
- url: req.url ?? "",
19
- headers: req.headers,
20
- body: Buffer.concat(chunks).toString(),
21
- };
22
- receivedRequests.push(received);
23
- try {
24
- if (requestHandler) {
25
- await requestHandler(received, res);
26
- }
27
- else {
28
- json(res, { error: "No handler" }, 500);
29
- }
30
- }
31
- catch (error) {
32
- json(res, { error: error instanceof Error ? error.message : String(error) }, 500);
33
- }
34
- });
35
- });
36
- await new Promise((resolve) => {
37
- server.listen(0, "127.0.0.1", () => {
38
- const address = server.address();
39
- baseUrl = `http://127.0.0.1:${address.port}`;
40
- resolve();
41
- });
42
- });
43
- });
44
- afterEach(async () => {
45
- await new Promise((resolve) => server.close(() => resolve()));
46
- });
47
- it("posts the exact create bulk action request body", async () => {
48
- requestHandler = (_request, response) => json(response, { id: "bulk_created" });
49
- const client = new ApiClient(baseUrl, "tr_test_key");
50
- const result = await client.createBulkAction({
51
- action: "replay",
52
- filter: { status: ["FAILED"], taskIdentifier: "my-task" },
53
- name: "Replay failures",
54
- targetRegion: "eu_1",
55
- });
56
- expect(result).toEqual({ id: "bulk_created" });
57
- expect(receivedRequests).toHaveLength(1);
58
- expect(receivedRequests[0]?.method).toBe("POST");
59
- expect(receivedRequests[0]?.url).toBe("/api/v1/bulk-actions");
60
- expect(receivedRequests[0]?.headers.authorization).toBe("Bearer tr_test_key");
61
- expect(JSON.parse(receivedRequests[0]?.body ?? "{}")).toEqual({
62
- action: "replay",
63
- filter: { status: ["FAILED"], taskIdentifier: "my-task" },
64
- name: "Replay failures",
65
- targetRegion: "eu_1",
66
- });
67
- });
68
- it("lists bulk actions with cursor pagination params and parses dates", async () => {
69
- const createdAt = "2026-07-01T10:00:00.000Z";
70
- const completedAt = "2026-07-01T10:05:00.000Z";
71
- requestHandler = (_request, response) => json(response, {
72
- data: [
73
- {
74
- id: "bulk_listed",
75
- name: "Cancel queued runs",
76
- type: "CANCEL",
77
- status: "COMPLETED",
78
- counts: { total: 3, success: 2, failure: 1 },
79
- createdAt,
80
- completedAt,
81
- },
82
- ],
83
- pagination: { next: "cursor_next", previous: "cursor_previous" },
84
- });
85
- const client = new ApiClient(baseUrl, "tr_test_key");
86
- const page = await client.listBulkActions({ limit: 2, after: "cursor_after" });
87
- expect(receivedRequests[0]?.method).toBe("GET");
88
- const url = new URL(receivedRequests[0]?.url ?? "", baseUrl);
89
- expect(url.pathname).toBe("/api/v1/bulk-actions");
90
- expect(url.searchParams.get("page[size]")).toBe("2");
91
- expect(url.searchParams.get("page[after]")).toBe("cursor_after");
92
- expect(page.pagination).toEqual({ next: "cursor_next", previous: "cursor_previous" });
93
- expect(page.data[0]?.createdAt).toEqual(new Date(createdAt));
94
- expect(page.data[0]?.completedAt).toEqual(new Date(completedAt));
95
- });
96
- it("auto-paginates bulk action lists", async () => {
97
- requestHandler = (request, response) => {
98
- const url = new URL(request.url, baseUrl);
99
- if (!url.searchParams.has("page[after]")) {
100
- return json(response, {
101
- data: [bulkActionObject("bulk_first")],
102
- pagination: { next: "cursor_next" },
103
- });
104
- }
105
- expect(url.searchParams.get("page[after]")).toBe("cursor_next");
106
- return json(response, {
107
- data: [bulkActionObject("bulk_second")],
108
- pagination: {},
109
- });
110
- };
111
- const client = new ApiClient(baseUrl, "tr_test_key");
112
- const ids = [];
113
- for await (const bulkAction of client.listBulkActions({ limit: 1 })) {
114
- ids.push(bulkAction.id);
115
- }
116
- expect(ids).toEqual(["bulk_first", "bulk_second"]);
117
- expect(receivedRequests).toHaveLength(2);
118
- });
119
- it("retrieves a bulk action by id", async () => {
120
- requestHandler = (_request, response) => json(response, bulkActionObject("bulk_retrieve"));
121
- const client = new ApiClient(baseUrl, "tr_test_key");
122
- const bulkAction = await client.retrieveBulkAction("bulk_retrieve");
123
- expect(receivedRequests[0]?.method).toBe("GET");
124
- expect(receivedRequests[0]?.url).toBe("/api/v1/bulk-actions/bulk_retrieve");
125
- expect(bulkAction.id).toBe("bulk_retrieve");
126
- });
127
- it("aborts a bulk action by id", async () => {
128
- requestHandler = (_request, response) => json(response, { id: "bulk_abort" });
129
- const client = new ApiClient(baseUrl, "tr_test_key");
130
- const result = await client.abortBulkAction("bulk_abort");
131
- expect(receivedRequests[0]?.method).toBe("POST");
132
- expect(receivedRequests[0]?.url).toBe("/api/v1/bulk-actions/bulk_abort/abort");
133
- expect(result).toEqual({ id: "bulk_abort" });
134
- });
135
- });
136
- function json(response, body, status = 200) {
137
- response.writeHead(status, { "content-type": "application/json" });
138
- response.end(JSON.stringify(body));
139
- }
140
- function bulkActionObject(id) {
141
- return {
142
- id,
143
- type: "REPLAY",
144
- status: "PENDING",
145
- counts: { total: 1, success: 0, failure: 0 },
146
- createdAt: "2026-07-01T10:00:00.000Z",
147
- };
148
- }
149
- //# sourceMappingURL=bulkActions.test.js.map