@bluelibs/runner 5.1.0 → 5.2.1

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 (314) hide show
  1. package/README.md +25 -15
  2. package/dist/browser/index.cjs +851 -478
  3. package/dist/browser/index.cjs.map +1 -1
  4. package/dist/browser/index.mjs +849 -478
  5. package/dist/browser/index.mjs.map +1 -1
  6. package/dist/edge/index.cjs +851 -478
  7. package/dist/edge/index.cjs.map +1 -1
  8. package/dist/edge/index.mjs +849 -478
  9. package/dist/edge/index.mjs.map +1 -1
  10. package/dist/node/node.cjs +1305 -583
  11. package/dist/node/node.cjs.map +1 -1
  12. package/dist/node/node.mjs +1299 -583
  13. package/dist/node/node.mjs.map +1 -1
  14. package/dist/types/define.d.ts +9 -0
  15. package/dist/types/definers/builders/asyncContext/fluent-builder.d.ts +6 -0
  16. package/dist/types/definers/builders/asyncContext/fluent-builder.interface.d.ts +9 -0
  17. package/dist/types/definers/builders/asyncContext/index.d.ts +10 -0
  18. package/dist/types/definers/builders/asyncContext/types.d.ts +13 -0
  19. package/dist/types/definers/builders/asyncContext/utils.d.ts +5 -0
  20. package/dist/types/definers/builders/asyncContext.d.ts +1 -0
  21. package/dist/types/definers/builders/core.d.ts +30 -0
  22. package/dist/types/definers/builders/error/fluent-builder.d.ts +7 -0
  23. package/dist/types/definers/builders/error/fluent-builder.interface.d.ts +10 -0
  24. package/dist/types/definers/builders/error/index.d.ts +11 -0
  25. package/dist/types/definers/builders/error/types.d.ts +14 -0
  26. package/dist/types/definers/builders/error/utils.d.ts +6 -0
  27. package/dist/types/definers/builders/error.d.ts +1 -0
  28. package/dist/types/definers/builders/event/fluent-builder.d.ts +7 -0
  29. package/dist/types/definers/builders/event/fluent-builder.interface.d.ts +18 -0
  30. package/dist/types/definers/builders/event/index.d.ts +10 -0
  31. package/dist/types/definers/builders/event/types.d.ts +8 -0
  32. package/dist/types/definers/builders/event/utils.d.ts +9 -0
  33. package/dist/types/definers/builders/event.d.ts +1 -0
  34. package/dist/types/definers/builders/hook/fluent-builder.d.ts +8 -0
  35. package/dist/types/definers/builders/hook/fluent-builder.interface.d.ts +27 -0
  36. package/dist/types/definers/builders/hook/index.d.ts +12 -0
  37. package/dist/types/definers/builders/hook/types.d.ts +14 -0
  38. package/dist/types/definers/builders/hook/utils.d.ts +14 -0
  39. package/dist/types/definers/builders/hook.d.ts +1 -0
  40. package/dist/types/definers/builders/middleware/index.d.ts +19 -0
  41. package/dist/types/definers/builders/middleware/resource.d.ts +7 -0
  42. package/dist/types/definers/builders/middleware/resource.interface.d.ts +18 -0
  43. package/dist/types/definers/builders/middleware/task.d.ts +7 -0
  44. package/dist/types/definers/builders/middleware/task.interface.d.ts +18 -0
  45. package/dist/types/definers/builders/middleware/types.d.ts +13 -0
  46. package/dist/types/definers/builders/middleware/utils.d.ts +18 -0
  47. package/dist/types/definers/builders/middleware.d.ts +1 -0
  48. package/dist/types/definers/builders/override/hook.d.ts +16 -0
  49. package/dist/types/definers/builders/override/index.d.ts +11 -0
  50. package/dist/types/definers/builders/override/resource-middleware.d.ts +3 -0
  51. package/dist/types/definers/builders/override/resource.d.ts +3 -0
  52. package/dist/types/definers/builders/override/task-middleware.d.ts +3 -0
  53. package/dist/types/definers/builders/override/task.d.ts +3 -0
  54. package/dist/types/definers/builders/resource/fluent-builder.d.ts +8 -0
  55. package/dist/types/definers/builders/resource/fluent-builder.interface.d.ts +42 -0
  56. package/dist/types/definers/builders/resource/index.d.ts +13 -0
  57. package/dist/types/definers/builders/resource/types.d.ts +37 -0
  58. package/dist/types/definers/builders/resource/utils.d.ts +26 -0
  59. package/dist/types/definers/builders/resource.d.ts +1 -0
  60. package/dist/types/definers/builders/tag/fluent-builder.d.ts +6 -0
  61. package/dist/types/definers/builders/tag/fluent-builder.interface.d.ts +8 -0
  62. package/dist/types/definers/builders/tag/index.d.ts +10 -0
  63. package/dist/types/definers/builders/tag/types.d.ts +12 -0
  64. package/dist/types/definers/builders/tag/utils.d.ts +5 -0
  65. package/dist/types/definers/builders/tag.d.ts +1 -0
  66. package/dist/types/definers/builders/task/fluent-builder.d.ts +8 -0
  67. package/dist/types/definers/builders/task/fluent-builder.interface.d.ts +33 -0
  68. package/dist/types/definers/builders/task/index.d.ts +21 -0
  69. package/dist/types/definers/builders/task/phantom-builder.d.ts +8 -0
  70. package/dist/types/definers/builders/task/phantom-builder.interface.d.ts +31 -0
  71. package/dist/types/definers/builders/task/types.d.ts +34 -0
  72. package/dist/types/definers/builders/task/utils.d.ts +14 -0
  73. package/dist/types/definers/builders/task.d.ts +1 -0
  74. package/dist/types/definers/builders/task.phantom.d.ts +1 -0
  75. package/dist/types/definers/builders/utils.d.ts +4 -0
  76. package/dist/types/definers/defineAsyncContext.d.ts +15 -0
  77. package/dist/types/definers/defineError.d.ts +27 -0
  78. package/dist/types/definers/defineEvent.d.ts +2 -0
  79. package/dist/types/definers/defineHook.d.ts +6 -0
  80. package/dist/types/definers/defineOverride.d.ts +12 -0
  81. package/dist/types/definers/defineResource.d.ts +2 -0
  82. package/dist/types/definers/defineResourceMiddleware.d.ts +2 -0
  83. package/dist/types/definers/defineTag.d.ts +12 -0
  84. package/dist/types/definers/defineTask.d.ts +18 -0
  85. package/dist/types/definers/defineTaskMiddleware.d.ts +2 -0
  86. package/dist/types/definers/middlewareConfig.d.ts +1 -0
  87. package/dist/types/definers/resourceFork.d.ts +13 -0
  88. package/dist/types/definers/tools.d.ts +53 -0
  89. package/dist/types/defs.d.ts +33 -0
  90. package/dist/types/errors.d.ts +75 -0
  91. package/dist/types/globals/debug.d.ts +10 -0
  92. package/dist/types/globals/globalEvents.d.ts +8 -0
  93. package/dist/types/globals/globalMiddleware.d.ts +97 -0
  94. package/dist/types/globals/globalResources.d.ts +64 -0
  95. package/dist/types/globals/globalTags.d.ts +12 -0
  96. package/dist/types/globals/middleware/cache.middleware.d.ts +36 -0
  97. package/dist/types/globals/middleware/circuitBreaker.middleware.d.ts +56 -0
  98. package/dist/types/globals/middleware/concurrency.middleware.d.ts +47 -0
  99. package/dist/types/globals/middleware/fallback.middleware.d.ts +23 -0
  100. package/dist/types/globals/middleware/rateLimit.middleware.d.ts +47 -0
  101. package/dist/types/globals/middleware/requireContext.middleware.d.ts +5 -0
  102. package/dist/types/globals/middleware/retry.middleware.d.ts +31 -0
  103. package/dist/types/globals/middleware/temporal.middleware.d.ts +48 -0
  104. package/dist/types/globals/middleware/timeout.middleware.d.ts +24 -0
  105. package/dist/types/globals/middleware/tunnel.middleware.d.ts +3 -0
  106. package/dist/types/globals/resources/debug/debug.resource.d.ts +7 -0
  107. package/dist/types/globals/resources/debug/debug.tag.d.ts +2 -0
  108. package/dist/types/globals/resources/debug/debugConfig.resource.d.ts +22 -0
  109. package/dist/types/globals/resources/debug/executionTracker.middleware.d.ts +50 -0
  110. package/dist/types/globals/resources/debug/globalEvent.hook.d.ts +27 -0
  111. package/dist/types/globals/resources/debug/hook.hook.d.ts +30 -0
  112. package/dist/types/globals/resources/debug/index.d.ts +6 -0
  113. package/dist/types/globals/resources/debug/middleware.hook.d.ts +30 -0
  114. package/dist/types/globals/resources/debug/types.d.ts +25 -0
  115. package/dist/types/globals/resources/debug/utils.d.ts +2 -0
  116. package/dist/types/globals/resources/httpClientFactory.resource.d.ts +28 -0
  117. package/dist/types/globals/resources/queue.resource.d.ts +10 -0
  118. package/dist/types/globals/resources/tunnel/error-utils.d.ts +1 -0
  119. package/dist/types/globals/resources/tunnel/plan.d.ts +19 -0
  120. package/dist/types/globals/resources/tunnel/protocol.d.ts +48 -0
  121. package/dist/types/globals/resources/tunnel/tunnel.policy.tag.d.ts +26 -0
  122. package/dist/types/globals/resources/tunnel/tunnel.tag.d.ts +2 -0
  123. package/dist/types/globals/resources/tunnel/types.d.ts +48 -0
  124. package/dist/types/globals/tunnels/index.d.ts +23 -0
  125. package/dist/types/globals/types.d.ts +15 -0
  126. package/dist/types/http-client.d.ts +26 -0
  127. package/dist/types/http-fetch-tunnel.resource.d.ts +11 -0
  128. package/dist/types/index.d.ts +44 -0
  129. package/dist/types/models/DependencyProcessor.d.ts +46 -0
  130. package/dist/types/models/EventManager.d.ts +115 -0
  131. package/dist/types/models/ExecutionJournal.d.ts +35 -0
  132. package/dist/types/models/LogPrinter.d.ts +56 -0
  133. package/dist/types/models/Logger.d.ts +85 -0
  134. package/dist/types/models/MiddlewareManager.d.ts +73 -0
  135. package/dist/types/models/OverrideManager.d.ts +13 -0
  136. package/dist/types/models/Queue.d.ts +40 -0
  137. package/dist/types/models/ResourceInitializer.d.ts +20 -0
  138. package/dist/types/models/RunResult.d.ts +41 -0
  139. package/dist/types/models/Semaphore.d.ts +80 -0
  140. package/dist/types/models/Store.d.ts +76 -0
  141. package/dist/types/models/StoreRegistry.d.ts +49 -0
  142. package/dist/types/models/StoreValidator.d.ts +8 -0
  143. package/dist/types/models/TaskRunner.d.ts +28 -0
  144. package/dist/types/models/UnhandledError.d.ts +11 -0
  145. package/dist/types/models/event/CycleContext.d.ts +9 -0
  146. package/dist/types/models/event/EmissionExecutor.d.ts +11 -0
  147. package/dist/types/models/event/InterceptorPipeline.d.ts +5 -0
  148. package/dist/types/models/event/ListenerRegistry.d.ts +31 -0
  149. package/dist/types/models/event/types.d.ts +50 -0
  150. package/dist/types/models/index.d.ts +13 -0
  151. package/dist/types/models/middleware/InterceptorRegistry.d.ts +56 -0
  152. package/dist/types/models/middleware/MiddlewareResolver.d.ts +31 -0
  153. package/dist/types/models/middleware/ResourceMiddlewareComposer.d.ts +34 -0
  154. package/dist/types/models/middleware/TaskMiddlewareComposer.d.ts +44 -0
  155. package/dist/types/models/middleware/ValidationHelper.d.ts +20 -0
  156. package/dist/types/models/middleware/index.d.ts +6 -0
  157. package/dist/types/models/middleware/types.d.ts +10 -0
  158. package/dist/types/models/utils/findCircularDependencies.d.ts +16 -0
  159. package/dist/types/models/utils/safeStringify.d.ts +3 -0
  160. package/dist/types/node/durable/bus/MemoryEventBus.d.ts +7 -0
  161. package/dist/types/node/durable/bus/NoopEventBus.d.ts +6 -0
  162. package/dist/types/node/durable/bus/RedisEventBus.d.ts +30 -0
  163. package/dist/types/node/durable/core/CronParser.d.ts +15 -0
  164. package/dist/types/node/durable/core/DurableContext.d.ts +64 -0
  165. package/dist/types/node/durable/core/DurableOperator.d.ts +47 -0
  166. package/dist/types/node/durable/core/DurableResource.d.ts +80 -0
  167. package/dist/types/node/durable/core/DurableService.d.ts +73 -0
  168. package/dist/types/node/durable/core/DurableWorker.d.ts +19 -0
  169. package/dist/types/node/durable/core/StepBuilder.d.ts +23 -0
  170. package/dist/types/node/durable/core/audit.d.ts +152 -0
  171. package/dist/types/node/durable/core/createRunnerDurableRuntime.d.ts +18 -0
  172. package/dist/types/node/durable/core/durable-context/DurableContext.audit.d.ts +14 -0
  173. package/dist/types/node/durable/core/durable-context/DurableContext.determinism.d.ts +13 -0
  174. package/dist/types/node/durable/core/durable-context/DurableContext.emit.d.ts +16 -0
  175. package/dist/types/node/durable/core/durable-context/DurableContext.sleep.d.ts +16 -0
  176. package/dist/types/node/durable/core/durable-context/DurableContext.steps.d.ts +25 -0
  177. package/dist/types/node/durable/core/durable-context/DurableContext.switch.d.ts +22 -0
  178. package/dist/types/node/durable/core/durable-context/DurableContext.waitForSignal.d.ts +23 -0
  179. package/dist/types/node/durable/core/flowShape.d.ts +50 -0
  180. package/dist/types/node/durable/core/ids.d.ts +11 -0
  181. package/dist/types/node/durable/core/index.d.ts +11 -0
  182. package/dist/types/node/durable/core/interfaces/bus.d.ts +13 -0
  183. package/dist/types/node/durable/core/interfaces/context.d.ts +105 -0
  184. package/dist/types/node/durable/core/interfaces/queue.d.ts +17 -0
  185. package/dist/types/node/durable/core/interfaces/service.d.ts +146 -0
  186. package/dist/types/node/durable/core/interfaces/store.d.ts +66 -0
  187. package/dist/types/node/durable/core/managers/AuditLogger.d.ts +29 -0
  188. package/dist/types/node/durable/core/managers/ExecutionManager.d.ts +48 -0
  189. package/dist/types/node/durable/core/managers/PollingManager.d.ts +48 -0
  190. package/dist/types/node/durable/core/managers/ScheduleManager.d.ts +33 -0
  191. package/dist/types/node/durable/core/managers/SignalHandler.d.ts +25 -0
  192. package/dist/types/node/durable/core/managers/TaskRegistry.d.ts +16 -0
  193. package/dist/types/node/durable/core/managers/WaitManager.d.ts +26 -0
  194. package/dist/types/node/durable/core/managers/index.d.ts +7 -0
  195. package/dist/types/node/durable/core/resource.d.ts +14 -0
  196. package/dist/types/node/durable/core/types.d.ts +84 -0
  197. package/dist/types/node/durable/core/utils.d.ts +28 -0
  198. package/dist/types/node/durable/dashboard/server.d.ts +20 -0
  199. package/dist/types/node/durable/emitters/runnerAuditEmitter.d.ts +6 -0
  200. package/dist/types/node/durable/events.d.ts +76 -0
  201. package/dist/types/node/durable/index.d.ts +34 -0
  202. package/dist/types/node/durable/optionalDeps/amqplib.d.ts +1 -0
  203. package/dist/types/node/durable/optionalDeps/ioredis.d.ts +1 -0
  204. package/dist/types/node/durable/queue/MemoryQueue.d.ts +12 -0
  205. package/dist/types/node/durable/queue/RabbitMQQueue.d.ts +30 -0
  206. package/dist/types/node/durable/resources/isolation.d.ts +15 -0
  207. package/dist/types/node/durable/resources/memoryDurableResource.d.ts +21 -0
  208. package/dist/types/node/durable/resources/redisDurableResource.d.ts +35 -0
  209. package/dist/types/node/durable/store/MemoryStore.d.ts +56 -0
  210. package/dist/types/node/durable/store/RedisStore.d.ts +89 -0
  211. package/dist/types/node/durable/test-utils.d.ts +29 -0
  212. package/dist/types/node/exposure/allowList.d.ts +3 -0
  213. package/dist/types/node/exposure/authenticator.d.ts +16 -0
  214. package/dist/types/node/exposure/cors.d.ts +4 -0
  215. package/dist/types/node/exposure/createNodeExposure.d.ts +2 -0
  216. package/dist/types/node/exposure/exposureServer.d.ts +18 -0
  217. package/dist/types/node/exposure/handlers/contextWrapper.d.ts +18 -0
  218. package/dist/types/node/exposure/handlers/errorHandlers.d.ts +23 -0
  219. package/dist/types/node/exposure/handlers/eventHandler.d.ts +20 -0
  220. package/dist/types/node/exposure/handlers/taskHandler.d.ts +24 -0
  221. package/dist/types/node/exposure/httpResponse.d.ts +10 -0
  222. package/dist/types/node/exposure/index.d.ts +3 -0
  223. package/dist/types/node/exposure/logging.d.ts +4 -0
  224. package/dist/types/node/exposure/multipart.d.ts +36 -0
  225. package/dist/types/node/exposure/requestBody.d.ts +11 -0
  226. package/dist/types/node/exposure/requestContext.d.ts +17 -0
  227. package/dist/types/node/exposure/requestHandlers.d.ts +29 -0
  228. package/dist/types/node/exposure/resource.d.ts +12 -0
  229. package/dist/types/node/exposure/resourceTypes.d.ts +73 -0
  230. package/dist/types/node/exposure/router.d.ts +17 -0
  231. package/dist/types/node/exposure/serverLifecycle.d.ts +13 -0
  232. package/dist/types/node/exposure/types.d.ts +45 -0
  233. package/dist/types/node/exposure/utils.d.ts +17 -0
  234. package/dist/types/node/files/createNodeFile.d.ts +9 -0
  235. package/dist/types/node/files/index.d.ts +4 -0
  236. package/dist/types/node/files/inputFile.model.d.ts +22 -0
  237. package/dist/types/node/files/inputFile.utils.d.ts +14 -0
  238. package/dist/types/node/http/http-mixed-client.d.ts +45 -0
  239. package/dist/types/node/http/http-mixed-client.factory.resource.d.ts +17 -0
  240. package/dist/types/node/http/http-smart-client.factory.resource.d.ts +16 -0
  241. package/dist/types/node/http/http-smart-client.model.d.ts +27 -0
  242. package/dist/types/node/http/index.d.ts +4 -0
  243. package/dist/types/node/index.d.ts +1 -0
  244. package/dist/types/node/node.d.ts +193 -0
  245. package/dist/types/node/platform/createFile.d.ts +9 -0
  246. package/dist/types/node/tunnel/allowlist.d.ts +7 -0
  247. package/dist/types/node/tunnel/index.d.ts +2 -0
  248. package/dist/types/node/upload/manifest.d.ts +23 -0
  249. package/dist/types/platform/adapters/browser.d.ts +14 -0
  250. package/dist/types/platform/adapters/edge.d.ts +5 -0
  251. package/dist/types/platform/adapters/node-als.d.ts +1 -0
  252. package/dist/types/platform/adapters/node.d.ts +15 -0
  253. package/dist/types/platform/adapters/universal-generic.d.ts +14 -0
  254. package/dist/types/platform/adapters/universal.d.ts +18 -0
  255. package/dist/types/platform/createFile.d.ts +10 -0
  256. package/dist/types/platform/createWebFile.d.ts +11 -0
  257. package/dist/types/platform/factory.d.ts +2 -0
  258. package/dist/types/platform/index.d.ts +27 -0
  259. package/dist/types/platform/types.d.ts +31 -0
  260. package/dist/types/processHooks.d.ts +2 -0
  261. package/dist/types/public-types.d.ts +13 -0
  262. package/dist/types/public.d.ts +210 -0
  263. package/dist/types/run.d.ts +14 -0
  264. package/dist/types/serializer/Serializer.d.ts +84 -0
  265. package/dist/types/serializer/binary-builtins.d.ts +5 -0
  266. package/dist/types/serializer/builtins.d.ts +47 -0
  267. package/dist/types/serializer/deserializer.d.ts +27 -0
  268. package/dist/types/serializer/error-url-builtins.d.ts +13 -0
  269. package/dist/types/serializer/graph-serializer.d.ts +27 -0
  270. package/dist/types/serializer/index.d.ts +6 -0
  271. package/dist/types/serializer/option-normalizers.d.ts +2 -0
  272. package/dist/types/serializer/regexp-validator.d.ts +34 -0
  273. package/dist/types/serializer/serialize-utils.d.ts +15 -0
  274. package/dist/types/serializer/special-values.d.ts +20 -0
  275. package/dist/types/serializer/tree-serializer.d.ts +20 -0
  276. package/dist/types/serializer/type-registry.d.ts +58 -0
  277. package/dist/types/serializer/types.d.ts +126 -0
  278. package/dist/types/serializer/validation.d.ts +34 -0
  279. package/dist/types/testing.d.ts +19 -0
  280. package/dist/types/tools/detectRunnerMode.d.ts +9 -0
  281. package/dist/types/tools/getCallerFile.d.ts +1 -0
  282. package/dist/types/tools/throws.d.ts +7 -0
  283. package/dist/types/tunnels/buildUniversalManifest.d.ts +24 -0
  284. package/dist/types/types/asyncContext.d.ts +41 -0
  285. package/dist/types/types/contracts.d.ts +62 -0
  286. package/dist/types/types/error.d.ts +39 -0
  287. package/dist/types/types/event.d.ts +79 -0
  288. package/dist/types/types/executionJournal.d.ts +29 -0
  289. package/dist/types/types/hook.d.ts +23 -0
  290. package/dist/types/types/inputFile.d.ts +34 -0
  291. package/dist/types/types/meta.d.ts +22 -0
  292. package/dist/types/types/resource.d.ts +133 -0
  293. package/dist/types/types/resourceMiddleware.d.ts +48 -0
  294. package/dist/types/types/runner.d.ts +68 -0
  295. package/dist/types/types/storeTypes.d.ts +46 -0
  296. package/dist/types/types/symbols.d.ts +34 -0
  297. package/dist/types/types/tag.d.ts +45 -0
  298. package/dist/types/types/task.d.ts +76 -0
  299. package/dist/types/types/taskMiddleware.d.ts +55 -0
  300. package/dist/types/types/utilities.d.ts +125 -0
  301. package/dist/universal/index.cjs +851 -476
  302. package/dist/universal/index.cjs.map +1 -1
  303. package/dist/universal/index.mjs +849 -476
  304. package/dist/universal/index.mjs.map +1 -1
  305. package/package.json +15 -14
  306. package/readmes/AI.md +30 -9
  307. package/dist/browser/index.d.mts +0 -2919
  308. package/dist/browser/index.d.ts +0 -2919
  309. package/dist/edge/index.d.mts +0 -2919
  310. package/dist/edge/index.d.ts +0 -2919
  311. package/dist/node/node.d.mts +0 -4622
  312. package/dist/node/node.d.ts +0 -4622
  313. package/dist/universal/index.d.mts +0 -2919
  314. package/dist/universal/index.d.ts +0 -2919
@@ -196,88 +196,227 @@ var symbolAsyncContext = Symbol.for(
196
196
  "runner.asyncContext"
197
197
  );
198
198
 
199
- // src/platform/adapters/node-als.ts
200
- async function loadAsyncLocalStorageClass() {
201
- const mod = __require("async_hooks");
202
- return mod.AsyncLocalStorage;
199
+ // src/tools/getCallerFile.ts
200
+ function isNodeInline() {
201
+ return typeof process !== "undefined" && typeof process?.versions?.node === "string";
203
202
  }
204
- __name(loadAsyncLocalStorageClass, "loadAsyncLocalStorageClass");
205
-
206
- // src/platform/adapters/node.ts
207
- var NodePlatformAdapter = class {
208
- constructor() {
209
- this.id = "node";
210
- this.setTimeout = globalThis.setTimeout;
211
- this.clearTimeout = globalThis.clearTimeout;
212
- }
213
- static {
214
- __name(this, "NodePlatformAdapter");
215
- }
216
- async init() {
217
- this.alsClass = await loadAsyncLocalStorageClass();
218
- }
219
- onUncaughtException(handler) {
220
- const h = /* @__PURE__ */ __name((error2) => handler(error2), "h");
221
- process.on("uncaughtException", h);
222
- return () => process.off("uncaughtException", h);
223
- }
224
- onUnhandledRejection(handler) {
225
- const h = /* @__PURE__ */ __name((reason) => handler(reason), "h");
226
- process.on("unhandledRejection", h);
227
- return () => process.off("unhandledRejection", h);
228
- }
229
- onShutdownSignal(handler) {
230
- process.on("SIGINT", handler);
231
- process.on("SIGTERM", handler);
232
- return () => {
233
- process.off("SIGINT", handler);
234
- process.off("SIGTERM", handler);
235
- };
236
- }
237
- exit(code) {
238
- process.exit(code);
239
- }
240
- getEnv(key) {
241
- return process.env[key];
242
- }
243
- hasAsyncLocalStorage() {
244
- return true;
203
+ __name(isNodeInline, "isNodeInline");
204
+ function getCallerFile() {
205
+ const originalPrepare = Error.prepareStackTrace;
206
+ try {
207
+ if (isNodeInline()) {
208
+ const err = new Error();
209
+ Error.prepareStackTrace = (_err, stack2) => stack2;
210
+ const stack = err.stack;
211
+ stack.shift();
212
+ stack.shift();
213
+ const candidate = stack.shift();
214
+ const file = candidate?.getFileName?.();
215
+ return file;
216
+ }
217
+ return "unknown";
218
+ } finally {
219
+ Error.prepareStackTrace = originalPrepare;
245
220
  }
246
- createAsyncLocalStorage() {
247
- let instance;
248
- const ensure = /* @__PURE__ */ __name(() => {
249
- if (!this.alsClass) {
250
- let als;
251
- const forceNoop = typeof process !== "undefined" && !!process.env?.RUNNER_FORCE_NOOP_ALS;
252
- if (!forceNoop) {
253
- try {
254
- const mod = __require("async_hooks");
255
- als = mod?.AsyncLocalStorage;
256
- } catch (_) {
257
- als = void 0;
258
- }
259
- }
260
- this.alsClass = als || class NoopAsyncLocalStorage {
261
- static {
262
- __name(this, "NoopAsyncLocalStorage");
263
- }
264
- getStore() {
265
- return void 0;
266
- }
267
- run(_store, callback) {
268
- return callback();
269
- }
270
- };
221
+ }
222
+ __name(getCallerFile, "getCallerFile");
223
+
224
+ // src/defs.ts
225
+ var defs_exports = {};
226
+ __export(defs_exports, {
227
+ CONTRACT: () => CONTRACT,
228
+ HookDependencyState: () => HookDependencyState,
229
+ RunnerMode: () => RunnerMode,
230
+ isOneOf: () => isOneOf,
231
+ onAnyOf: () => onAnyOf,
232
+ symbolAsyncContext: () => symbolAsyncContext,
233
+ symbolError: () => symbolError,
234
+ symbolEvent: () => symbolEvent,
235
+ symbolFilePath: () => symbolFilePath,
236
+ symbolHook: () => symbolHook,
237
+ symbolMiddleware: () => symbolMiddleware,
238
+ symbolMiddlewareConfigured: () => symbolMiddlewareConfigured,
239
+ symbolOptionalDependency: () => symbolOptionalDependency,
240
+ symbolPhantomTask: () => symbolPhantomTask,
241
+ symbolResource: () => symbolResource,
242
+ symbolResourceForkedFrom: () => symbolResourceForkedFrom,
243
+ symbolResourceMiddleware: () => symbolResourceMiddleware,
244
+ symbolResourceWithConfig: () => symbolResourceWithConfig,
245
+ symbolTag: () => symbolTag,
246
+ symbolTagConfigured: () => symbolTagConfigured,
247
+ symbolTask: () => symbolTask,
248
+ symbolTaskMiddleware: () => symbolTaskMiddleware,
249
+ symbolTunneledBy: () => symbolTunneledBy
250
+ });
251
+
252
+ // src/types/event.ts
253
+ function onAnyOf(...defs) {
254
+ return defs;
255
+ }
256
+ __name(onAnyOf, "onAnyOf");
257
+ function isOneOf(emission, defs) {
258
+ return defs.some((d) => d.id === emission.id);
259
+ }
260
+ __name(isOneOf, "isOneOf");
261
+
262
+ // src/types/runner.ts
263
+ var RunnerMode = /* @__PURE__ */ ((RunnerMode2) => {
264
+ RunnerMode2["TEST"] = "test";
265
+ RunnerMode2["DEV"] = "dev";
266
+ RunnerMode2["PROD"] = "prod";
267
+ return RunnerMode2;
268
+ })(RunnerMode || {});
269
+
270
+ // src/types/contracts.ts
271
+ var CONTRACT = Symbol.for("runner.contract");
272
+
273
+ // src/types/storeTypes.ts
274
+ var HookDependencyState = /* @__PURE__ */ ((HookDependencyState2) => {
275
+ HookDependencyState2["Pending"] = "pending";
276
+ HookDependencyState2["Computing"] = "computing";
277
+ HookDependencyState2["Ready"] = "ready";
278
+ return HookDependencyState2;
279
+ })(HookDependencyState || {});
280
+
281
+ // src/definers/tools.ts
282
+ function isTask(definition) {
283
+ return definition && definition[symbolTask];
284
+ }
285
+ __name(isTask, "isTask");
286
+ function isResource(definition) {
287
+ return definition && definition[symbolResource];
288
+ }
289
+ __name(isResource, "isResource");
290
+ function isResourceWithConfig(definition) {
291
+ return definition && definition[symbolResourceWithConfig];
292
+ }
293
+ __name(isResourceWithConfig, "isResourceWithConfig");
294
+ function isEvent(definition) {
295
+ return definition && definition[symbolEvent];
296
+ }
297
+ __name(isEvent, "isEvent");
298
+ function isHook(definition) {
299
+ return definition && definition[symbolHook];
300
+ }
301
+ __name(isHook, "isHook");
302
+ function isTaskMiddleware(definition) {
303
+ return definition && definition[symbolTaskMiddleware];
304
+ }
305
+ __name(isTaskMiddleware, "isTaskMiddleware");
306
+ function isResourceMiddleware(definition) {
307
+ return definition && definition[symbolResourceMiddleware];
308
+ }
309
+ __name(isResourceMiddleware, "isResourceMiddleware");
310
+ function isTag(definition) {
311
+ return definition && definition[symbolTag];
312
+ }
313
+ __name(isTag, "isTag");
314
+ function isOptional(definition) {
315
+ return definition && definition[symbolOptionalDependency];
316
+ }
317
+ __name(isOptional, "isOptional");
318
+ function isError(definition) {
319
+ return Boolean(definition && definition[symbolError]);
320
+ }
321
+ __name(isError, "isError");
322
+ function isAsyncContext(definition) {
323
+ return Boolean(definition && definition[symbolAsyncContext]);
324
+ }
325
+ __name(isAsyncContext, "isAsyncContext");
326
+
327
+ // src/tools/throws.ts
328
+ function invalidThrowsEntryError(owner, item) {
329
+ const got = item === null ? "null" : Array.isArray(item) ? "array" : typeof item === "object" ? "object" : typeof item;
330
+ return new Error(
331
+ `Invalid throws entry for ${owner.kind} ${owner.id}: expected error id string or Error helper, got ${got}`
332
+ );
333
+ }
334
+ __name(invalidThrowsEntryError, "invalidThrowsEntryError");
335
+ function toErrorIdList(owner, list) {
336
+ const ids = [];
337
+ const seen = /* @__PURE__ */ new Set();
338
+ for (const item of list) {
339
+ let id2;
340
+ if (typeof item === "string") {
341
+ if (item.trim().length === 0) {
342
+ throw invalidThrowsEntryError(owner, item);
271
343
  }
272
- return instance ??= new this.alsClass();
273
- }, "ensure");
274
- return {
275
- getStore: /* @__PURE__ */ __name(() => ensure().getStore(), "getStore"),
276
- run: /* @__PURE__ */ __name((store2, callback) => ensure().run(store2, callback), "run")
277
- };
344
+ id2 = item;
345
+ } else if (isError(item)) {
346
+ id2 = item.id;
347
+ if (typeof id2 !== "string" || id2.trim().length === 0) {
348
+ throw invalidThrowsEntryError(owner, item);
349
+ }
350
+ } else {
351
+ throw invalidThrowsEntryError(owner, item);
352
+ }
353
+ if (seen.has(id2)) continue;
354
+ seen.add(id2);
355
+ ids.push(id2);
278
356
  }
357
+ return ids;
358
+ }
359
+ __name(toErrorIdList, "toErrorIdList");
360
+ function normalizeThrows(owner, throwsList) {
361
+ if (throwsList === void 0) return void 0;
362
+ return toErrorIdList(owner, throwsList);
363
+ }
364
+ __name(normalizeThrows, "normalizeThrows");
365
+
366
+ // src/definers/defineTask.ts
367
+ function defineTask(taskConfig) {
368
+ const filePath = getCallerFile();
369
+ const id2 = taskConfig.id;
370
+ return {
371
+ [symbolTask]: true,
372
+ [symbolFilePath]: filePath,
373
+ id: id2,
374
+ dependencies: taskConfig.dependencies || {},
375
+ middleware: taskConfig.middleware || [],
376
+ run: taskConfig.run,
377
+ inputSchema: taskConfig.inputSchema,
378
+ resultSchema: taskConfig.resultSchema,
379
+ meta: taskConfig.meta || {},
380
+ tags: taskConfig.tags || [],
381
+ throws: normalizeThrows({ kind: "task", id: id2 }, taskConfig.throws),
382
+ // autorun,
383
+ optional() {
384
+ return {
385
+ inner: this,
386
+ [symbolOptionalDependency]: true
387
+ };
388
+ }
389
+ };
390
+ }
391
+ __name(defineTask, "defineTask");
392
+ defineTask.phantom = (taskConfig) => {
393
+ const taskDef = defineTask({
394
+ ...taskConfig,
395
+ run: /* @__PURE__ */ __name(async (_input) => {
396
+ return void 0;
397
+ }, "run")
398
+ });
399
+ taskDef[symbolPhantomTask] = true;
400
+ return taskDef;
279
401
  };
280
402
 
403
+ // src/definers/defineHook.ts
404
+ function defineHook(hookDef) {
405
+ const filePath = getCallerFile();
406
+ return {
407
+ [symbolHook]: true,
408
+ [symbolFilePath]: filePath,
409
+ id: hookDef.id,
410
+ dependencies: hookDef.dependencies || {},
411
+ on: hookDef.on,
412
+ order: hookDef.order,
413
+ run: hookDef.run,
414
+ meta: hookDef.meta || {},
415
+ tags: hookDef.tags || []
416
+ };
417
+ }
418
+ __name(defineHook, "defineHook");
419
+
281
420
  // src/errors.ts
282
421
  var errors_exports = {};
283
422
  __export(errors_exports, {
@@ -319,9 +458,10 @@ var RunnerError = class extends Error {
319
458
  var _a;
320
459
  _a = symbolError;
321
460
  var ErrorHelper = class {
322
- constructor(definition) {
461
+ constructor(definition, filePath) {
323
462
  this.definition = definition;
324
463
  this[_a] = true;
464
+ this[symbolFilePath] = filePath;
325
465
  }
326
466
  static {
327
467
  __name(this, "ErrorHelper");
@@ -344,11 +484,15 @@ var ErrorHelper = class {
344
484
  };
345
485
  }
346
486
  };
347
- function defineError(definition) {
487
+ function defineError(definition, filePath) {
348
488
  if (!definition.format) {
349
489
  definition.format = (data) => `${JSON.stringify(data)}`;
350
490
  }
351
- return new ErrorHelper(definition);
491
+ const resolvedFilePath = filePath ?? getCallerFile();
492
+ return new ErrorHelper(
493
+ definition,
494
+ resolvedFilePath
495
+ );
352
496
  }
353
497
  __name(defineError, "defineError");
354
498
 
@@ -386,14 +530,17 @@ function makeErrorBuilder(state) {
386
530
  return makeErrorBuilder(next);
387
531
  },
388
532
  build() {
389
- return defineError({
390
- id: state.id,
391
- serialize: state.serialize,
392
- parse: state.parse,
393
- dataSchema: state.dataSchema,
394
- format: state.format,
395
- meta: state.meta
396
- });
533
+ return defineError(
534
+ {
535
+ id: state.id,
536
+ serialize: state.serialize,
537
+ parse: state.parse,
538
+ dataSchema: state.dataSchema,
539
+ format: state.format,
540
+ meta: state.meta
541
+ },
542
+ state.filePath
543
+ );
397
544
  }
398
545
  };
399
546
  return builder;
@@ -402,8 +549,10 @@ __name(makeErrorBuilder, "makeErrorBuilder");
402
549
 
403
550
  // src/definers/builders/error/index.ts
404
551
  function errorBuilder(id2) {
552
+ const filePath = getCallerFile();
405
553
  const initial = Object.freeze({
406
554
  id: id2,
555
+ filePath,
407
556
  serialize: void 0,
408
557
  parse: void 0,
409
558
  dataSchema: void 0,
@@ -414,103 +563,87 @@ function errorBuilder(id2) {
414
563
  __name(errorBuilder, "errorBuilder");
415
564
  var error = errorBuilder;
416
565
 
417
- // src/errors.ts
418
- var duplicateRegistrationError = error("runner.errors.duplicateRegistration").format(
419
- ({ type, id: id2 }) => `${type} "${id2.toString()}" already registered. You might have used the same 'id' in two different components or you may have registered the same element twice.`
420
- ).build();
421
- var dependencyNotFoundError = error("runner.errors.dependencyNotFound").format(
422
- ({ key }) => `Dependency ${key.toString()} not found. Did you forget to register it through a resource?`
423
- ).build();
424
- var unknownItemTypeError = error(
425
- "runner.errors.unknownItemType"
426
- ).format(
427
- ({ item }) => `Unknown item type: ${String(
428
- item
429
- )}. Please ensure you are not using different versions of '@bluelibs/runner'`
430
- ).build();
431
- var contextError = error(
432
- "runner.errors.context"
433
- ).format(({ details }) => details ?? "Context error").build();
434
- var circularDependenciesError = error("runner.errors.circularDependencies").format(({ cycles }) => {
435
- const cycleDetails = cycles.map((cycle) => ` \u2022 ${cycle}`).join("\n");
436
- const hasMiddleware = cycles.some((cycle) => cycle.includes("middleware"));
437
- let guidance = "\n\nTo resolve circular dependencies:";
438
- guidance += "\n \u2022 Consider refactoring to reduce coupling between components";
439
- guidance += "\n \u2022 Extract shared dependencies into separate resources";
440
- if (hasMiddleware) {
441
- guidance += "\n \u2022 For middleware: you can filter out tasks/resources using everywhere(fn)";
442
- guidance += "\n \u2022 Consider using events for communication instead of direct dependencies";
443
- }
444
- return `Circular dependencies detected:
445
- ${cycleDetails}${guidance}`;
446
- }).build();
447
- var eventNotFoundError = error(
448
- "runner.errors.eventNotFound"
449
- ).format(
450
- ({ id: id2 }) => `Event "${id2.toString()}" not found. Did you forget to register it?`
451
- ).build();
452
- var resourceNotFoundError = error(
453
- "runner.errors.resourceNotFound"
454
- ).format(
455
- ({ id: id2 }) => `Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
456
- ).build();
457
- var middlewareNotRegisteredError = error("runner.errors.middlewareNotRegistered").format(
458
- ({ type, source, middlewareId }) => `Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
459
- ).build();
460
- var tagNotFoundError = error(
461
- "runner.errors.tagNotFound"
462
- ).format(
463
- ({ id: id2 }) => `Tag "${id2}" not registered. Did you forget to register it inside a resource?`
464
- ).build();
465
- var lockedError = error(
466
- "runner.errors.locked"
467
- ).format(
468
- ({ what }) => `Cannot modify the ${what.toString()} when it is locked.`
469
- ).build();
470
- var storeAlreadyInitializedError = error(
471
- "runner.errors.storeAlreadyInitialized"
472
- ).format(() => "Store already initialized. Cannot reinitialize.").build();
473
- var validationError = error("runner.errors.validation").format(({ subject, id: id2, originalError }) => {
474
- const errorMessage = originalError instanceof Error ? originalError.message : String(originalError);
475
- return `${subject} validation failed for ${id2.toString()}: ${errorMessage}`;
476
- }).build();
477
- var eventCycleError = error("runner.errors.eventCycle").format(({ path }) => {
478
- const chain = path.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
479
- return `Event emission cycle detected:
480
- ${chain}
481
-
482
- Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags.`;
483
- }).build();
484
- var eventEmissionCycleError = error("runner.errors.eventEmissionCycle").format(({ cycles }) => {
485
- const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
486
- return `Event emission cycles detected between hooks and events:
487
- ${list}
488
-
489
- This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags.`;
490
- }).build();
491
- var platformUnsupportedFunctionError = error("runner.errors.platformUnsupportedFunction").format(
492
- ({ functionName }) => `Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
493
- ).build();
494
- var cancellationError = error(
495
- "runner.errors.cancellation"
496
- ).format(({ reason }) => reason || "Operation cancelled").build();
497
- var tunnelOwnershipConflictError = error("runner.errors.tunnelOwnershipConflict").format(
498
- ({ taskId, currentOwnerId, attemptedOwnerId }) => `Task "${taskId}" is already tunneled by resource "${currentOwnerId}". Resource "${attemptedOwnerId}" cannot tunnel it again. Ensure each task is owned by a single tunnel client.`
499
- ).build();
500
- var phantomTaskNotRoutedError = error("runner.errors.phantomTaskNotRouted").format(
501
- ({ taskId }) => `Phantom task "${taskId}" is not routed through any tunnel. Ensure a tunnel client selects this task id (or avoid calling the phantom task directly).`
502
- ).build();
503
- var taskNotRegisteredError = error("runner.errors.taskNotRegistered").format(
504
- ({ taskId }) => `Task "${taskId}" is not registered in the Store. This is an internal error\u2014ensure the task is registered before execution.`
505
- ).build();
506
- var builderIncompleteError = error("runner.errors.builderIncomplete").format(({ type, builderId, missingFields }) => {
507
- const typeLabel = type === "hook" ? "Hook" : type === "task-middleware" ? "Task middleware" : "Resource middleware";
508
- return `${typeLabel} "${builderId}" is incomplete. Missing required: ${missingFields.join(", ")}. Call ${missingFields.map((f) => `.${f}()`).join(" and ")} before .build().`;
509
- }).build();
510
- function isCancellationError(err) {
511
- return cancellationError.is(err);
566
+ // src/platform/adapters/node-als.ts
567
+ async function loadAsyncLocalStorageClass() {
568
+ const mod = __require("async_hooks");
569
+ return mod.AsyncLocalStorage;
512
570
  }
513
- __name(isCancellationError, "isCancellationError");
571
+ __name(loadAsyncLocalStorageClass, "loadAsyncLocalStorageClass");
572
+
573
+ // src/platform/adapters/node.ts
574
+ var NodePlatformAdapter = class {
575
+ constructor() {
576
+ this.id = "node";
577
+ this.setTimeout = globalThis.setTimeout;
578
+ this.clearTimeout = globalThis.clearTimeout;
579
+ }
580
+ static {
581
+ __name(this, "NodePlatformAdapter");
582
+ }
583
+ async init() {
584
+ this.alsClass = await loadAsyncLocalStorageClass();
585
+ }
586
+ onUncaughtException(handler) {
587
+ const h = /* @__PURE__ */ __name((error2) => handler(error2), "h");
588
+ process.on("uncaughtException", h);
589
+ return () => process.off("uncaughtException", h);
590
+ }
591
+ onUnhandledRejection(handler) {
592
+ const h = /* @__PURE__ */ __name((reason) => handler(reason), "h");
593
+ process.on("unhandledRejection", h);
594
+ return () => process.off("unhandledRejection", h);
595
+ }
596
+ onShutdownSignal(handler) {
597
+ process.on("SIGINT", handler);
598
+ process.on("SIGTERM", handler);
599
+ return () => {
600
+ process.off("SIGINT", handler);
601
+ process.off("SIGTERM", handler);
602
+ };
603
+ }
604
+ exit(code) {
605
+ process.exit(code);
606
+ }
607
+ getEnv(key) {
608
+ return process.env[key];
609
+ }
610
+ hasAsyncLocalStorage() {
611
+ return true;
612
+ }
613
+ createAsyncLocalStorage() {
614
+ let instance;
615
+ const ensure = /* @__PURE__ */ __name(() => {
616
+ if (!this.alsClass) {
617
+ let als;
618
+ const forceNoop = typeof process !== "undefined" && !!process.env?.RUNNER_FORCE_NOOP_ALS;
619
+ if (!forceNoop) {
620
+ try {
621
+ const mod = __require("async_hooks");
622
+ als = mod?.AsyncLocalStorage;
623
+ } catch (_) {
624
+ als = void 0;
625
+ }
626
+ }
627
+ this.alsClass = als || class NoopAsyncLocalStorage {
628
+ static {
629
+ __name(this, "NoopAsyncLocalStorage");
630
+ }
631
+ getStore() {
632
+ return void 0;
633
+ }
634
+ run(_store, callback) {
635
+ return callback();
636
+ }
637
+ };
638
+ }
639
+ return instance ??= new this.alsClass();
640
+ }, "ensure");
641
+ return {
642
+ getStore: /* @__PURE__ */ __name(() => ensure().getStore(), "getStore"),
643
+ run: /* @__PURE__ */ __name((store2, callback) => ensure().run(store2, callback), "run")
644
+ };
645
+ }
646
+ };
514
647
 
515
648
  // src/platform/adapters/browser.ts
516
649
  var BrowserPlatformAdapter = class {
@@ -803,14 +936,11 @@ function setPlatform(adapter) {
803
936
  adapter.id;
804
937
  }
805
938
  __name(setPlatform, "setPlatform");
806
- function isNode() {
807
- return detectEnvironment() === "node";
808
- }
809
- __name(isNode, "isNode");
810
939
  var PlatformAdapter = class {
940
+ static {
941
+ __name(this, "PlatformAdapter");
942
+ }
811
943
  constructor(env) {
812
- this.setTimeout = globalThis.setTimeout;
813
- this.clearTimeout = globalThis.clearTimeout;
814
944
  const kind = env ?? detectEnvironment();
815
945
  this.env = kind;
816
946
  switch (kind) {
@@ -830,9 +960,8 @@ var PlatformAdapter = class {
830
960
  this.inner = new UniversalPlatformAdapter();
831
961
  }
832
962
  this.id = this.inner.id;
833
- }
834
- static {
835
- __name(this, "PlatformAdapter");
963
+ this.setTimeout = this.inner.setTimeout;
964
+ this.clearTimeout = this.inner.clearTimeout;
836
965
  }
837
966
  async init() {
838
967
  return this.inner.init();
@@ -860,209 +989,103 @@ var PlatformAdapter = class {
860
989
  }
861
990
  };
862
991
 
863
- // src/tools/getCallerFile.ts
864
- function getCallerFile() {
865
- const originalPrepare = Error.prepareStackTrace;
866
- try {
867
- if (isNode()) {
868
- const err = new Error();
869
- Error.prepareStackTrace = (_err, stack2) => stack2;
870
- const stack = err.stack;
871
- stack.shift();
872
- stack.shift();
873
- const candidate = stack.shift();
874
- const file = candidate?.getFileName?.();
875
- return file;
876
- }
877
- return "unknown";
878
- } finally {
879
- Error.prepareStackTrace = originalPrepare;
880
- }
881
- }
882
- __name(getCallerFile, "getCallerFile");
883
-
884
- // src/defs.ts
885
- var defs_exports = {};
886
- __export(defs_exports, {
887
- RunnerMode: () => RunnerMode,
888
- isOneOf: () => isOneOf,
889
- onAnyOf: () => onAnyOf,
890
- symbolAsyncContext: () => symbolAsyncContext,
891
- symbolError: () => symbolError,
892
- symbolEvent: () => symbolEvent,
893
- symbolFilePath: () => symbolFilePath,
894
- symbolHook: () => symbolHook,
895
- symbolMiddleware: () => symbolMiddleware,
896
- symbolMiddlewareConfigured: () => symbolMiddlewareConfigured,
897
- symbolOptionalDependency: () => symbolOptionalDependency,
898
- symbolPhantomTask: () => symbolPhantomTask,
899
- symbolResource: () => symbolResource,
900
- symbolResourceForkedFrom: () => symbolResourceForkedFrom,
901
- symbolResourceMiddleware: () => symbolResourceMiddleware,
902
- symbolResourceWithConfig: () => symbolResourceWithConfig,
903
- symbolTag: () => symbolTag,
904
- symbolTagConfigured: () => symbolTagConfigured,
905
- symbolTask: () => symbolTask,
906
- symbolTaskMiddleware: () => symbolTaskMiddleware,
907
- symbolTunneledBy: () => symbolTunneledBy
908
- });
909
-
910
- // src/types/event.ts
911
- function onAnyOf(...defs) {
912
- return defs;
913
- }
914
- __name(onAnyOf, "onAnyOf");
915
- function isOneOf(emission, defs) {
916
- return defs.some((d) => d.id === emission.id);
917
- }
918
- __name(isOneOf, "isOneOf");
919
-
920
- // src/types/runner.ts
921
- var RunnerMode = /* @__PURE__ */ ((RunnerMode2) => {
922
- RunnerMode2["TEST"] = "test";
923
- RunnerMode2["DEV"] = "dev";
924
- RunnerMode2["PROD"] = "prod";
925
- return RunnerMode2;
926
- })(RunnerMode || {});
927
-
928
- // src/definers/tools.ts
929
- function isTask(definition) {
930
- return definition && definition[symbolTask];
931
- }
932
- __name(isTask, "isTask");
933
- function isResource(definition) {
934
- return definition && definition[symbolResource];
935
- }
936
- __name(isResource, "isResource");
937
- function isResourceWithConfig(definition) {
938
- return definition && definition[symbolResourceWithConfig];
939
- }
940
- __name(isResourceWithConfig, "isResourceWithConfig");
941
- function isEvent(definition) {
942
- return definition && definition[symbolEvent];
943
- }
944
- __name(isEvent, "isEvent");
945
- function isHook(definition) {
946
- return definition && definition[symbolHook];
947
- }
948
- __name(isHook, "isHook");
949
- function isTaskMiddleware(definition) {
950
- return definition && definition[symbolTaskMiddleware];
951
- }
952
- __name(isTaskMiddleware, "isTaskMiddleware");
953
- function isResourceMiddleware(definition) {
954
- return definition && definition[symbolResourceMiddleware];
955
- }
956
- __name(isResourceMiddleware, "isResourceMiddleware");
957
- function isTag(definition) {
958
- return definition && definition[symbolTag];
959
- }
960
- __name(isTag, "isTag");
961
- function isOptional(definition) {
962
- return definition && definition[symbolOptionalDependency];
963
- }
964
- __name(isOptional, "isOptional");
965
- function isError(definition) {
966
- return Boolean(definition && definition[symbolError]);
967
- }
968
- __name(isError, "isError");
969
- function isAsyncContext(definition) {
970
- return Boolean(definition && definition[symbolAsyncContext]);
971
- }
972
- __name(isAsyncContext, "isAsyncContext");
973
-
974
- // src/tools/throws.ts
975
- function invalidThrowsEntryError(owner, item) {
976
- const got = item === null ? "null" : Array.isArray(item) ? "array" : typeof item === "object" ? "object" : typeof item;
977
- return new Error(
978
- `Invalid throws entry for ${owner.kind} ${owner.id}: expected error id string or Error helper, got ${got}`
979
- );
980
- }
981
- __name(invalidThrowsEntryError, "invalidThrowsEntryError");
982
- function toErrorIdList(owner, list) {
983
- const ids = [];
984
- const seen = /* @__PURE__ */ new Set();
985
- for (const item of list) {
986
- let id2;
987
- if (typeof item === "string") {
988
- if (item.trim().length === 0) {
989
- throw invalidThrowsEntryError(owner, item);
990
- }
991
- id2 = item;
992
- } else if (isError(item)) {
993
- id2 = item.id;
994
- if (typeof id2 !== "string" || id2.trim().length === 0) {
995
- throw invalidThrowsEntryError(owner, item);
996
- }
997
- } else {
998
- throw invalidThrowsEntryError(owner, item);
999
- }
1000
- if (seen.has(id2)) continue;
1001
- seen.add(id2);
1002
- ids.push(id2);
992
+ // src/errors.ts
993
+ var duplicateRegistrationError = error("runner.errors.duplicateRegistration").format(
994
+ ({ type, id: id2 }) => `${type} "${id2.toString()}" already registered. You might have used the same 'id' in two different components or you may have registered the same element twice.`
995
+ ).build();
996
+ var dependencyNotFoundError = error("runner.errors.dependencyNotFound").format(
997
+ ({ key }) => `Dependency ${key.toString()} not found. Did you forget to register it through a resource?`
998
+ ).build();
999
+ var unknownItemTypeError = error(
1000
+ "runner.errors.unknownItemType"
1001
+ ).format(
1002
+ ({ item }) => `Unknown item type: ${String(
1003
+ item
1004
+ )}. Please ensure you are not using different versions of '@bluelibs/runner'`
1005
+ ).build();
1006
+ var contextError = error(
1007
+ "runner.errors.context"
1008
+ ).format(({ details }) => details ?? "Context error").build();
1009
+ var circularDependenciesError = error("runner.errors.circularDependencies").format(({ cycles }) => {
1010
+ const cycleDetails = cycles.map((cycle) => ` \u2022 ${cycle}`).join("\n");
1011
+ const hasMiddleware = cycles.some((cycle) => cycle.includes("middleware"));
1012
+ let guidance = "\n\nTo resolve circular dependencies:";
1013
+ guidance += "\n \u2022 Consider refactoring to reduce coupling between components";
1014
+ guidance += "\n \u2022 Extract shared dependencies into separate resources";
1015
+ if (hasMiddleware) {
1016
+ guidance += "\n \u2022 For middleware: you can filter out tasks/resources using everywhere(fn)";
1017
+ guidance += "\n \u2022 Consider using events for communication instead of direct dependencies";
1003
1018
  }
1004
- return ids;
1005
- }
1006
- __name(toErrorIdList, "toErrorIdList");
1007
- function normalizeThrows(owner, throwsList) {
1008
- if (throwsList === void 0) return void 0;
1009
- return toErrorIdList(owner, throwsList);
1010
- }
1011
- __name(normalizeThrows, "normalizeThrows");
1019
+ return `Circular dependencies detected:
1020
+ ${cycleDetails}${guidance}`;
1021
+ }).build();
1022
+ var eventNotFoundError = error(
1023
+ "runner.errors.eventNotFound"
1024
+ ).format(
1025
+ ({ id: id2 }) => `Event "${id2.toString()}" not found. Did you forget to register it?`
1026
+ ).build();
1027
+ var resourceNotFoundError = error(
1028
+ "runner.errors.resourceNotFound"
1029
+ ).format(
1030
+ ({ id: id2 }) => `Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
1031
+ ).build();
1032
+ var middlewareNotRegisteredError = error("runner.errors.middlewareNotRegistered").format(
1033
+ ({ type, source, middlewareId }) => `Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
1034
+ ).build();
1035
+ var tagNotFoundError = error(
1036
+ "runner.errors.tagNotFound"
1037
+ ).format(
1038
+ ({ id: id2 }) => `Tag "${id2}" not registered. Did you forget to register it inside a resource?`
1039
+ ).build();
1040
+ var lockedError = error(
1041
+ "runner.errors.locked"
1042
+ ).format(
1043
+ ({ what }) => `Cannot modify the ${what.toString()} when it is locked.`
1044
+ ).build();
1045
+ var storeAlreadyInitializedError = error(
1046
+ "runner.errors.storeAlreadyInitialized"
1047
+ ).format(() => "Store already initialized. Cannot reinitialize.").build();
1048
+ var validationError = error("runner.errors.validation").format(({ subject, id: id2, originalError }) => {
1049
+ const errorMessage = originalError instanceof Error ? originalError.message : String(originalError);
1050
+ return `${subject} validation failed for ${id2.toString()}: ${errorMessage}`;
1051
+ }).build();
1052
+ var eventCycleError = error("runner.errors.eventCycle").format(({ path }) => {
1053
+ const chain = path.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
1054
+ return `Event emission cycle detected:
1055
+ ${chain}
1012
1056
 
1013
- // src/definers/defineTask.ts
1014
- function defineTask(taskConfig) {
1015
- const filePath = getCallerFile();
1016
- const id2 = taskConfig.id;
1017
- return {
1018
- [symbolTask]: true,
1019
- [symbolFilePath]: filePath,
1020
- id: id2,
1021
- dependencies: taskConfig.dependencies || {},
1022
- middleware: taskConfig.middleware || [],
1023
- run: taskConfig.run,
1024
- inputSchema: taskConfig.inputSchema,
1025
- resultSchema: taskConfig.resultSchema,
1026
- meta: taskConfig.meta || {},
1027
- tags: taskConfig.tags || [],
1028
- throws: normalizeThrows({ kind: "task", id: id2 }, taskConfig.throws),
1029
- // autorun,
1030
- optional() {
1031
- return {
1032
- inner: this,
1033
- [symbolOptionalDependency]: true
1034
- };
1035
- }
1036
- };
1037
- }
1038
- __name(defineTask, "defineTask");
1039
- defineTask.phantom = (taskConfig) => {
1040
- const taskDef = defineTask({
1041
- ...taskConfig,
1042
- run: /* @__PURE__ */ __name(async (_input) => {
1043
- return void 0;
1044
- }, "run")
1045
- });
1046
- taskDef[symbolPhantomTask] = true;
1047
- return taskDef;
1048
- };
1057
+ Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags.`;
1058
+ }).build();
1059
+ var eventEmissionCycleError = error("runner.errors.eventEmissionCycle").format(({ cycles }) => {
1060
+ const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
1061
+ return `Event emission cycles detected between hooks and events:
1062
+ ${list}
1049
1063
 
1050
- // src/definers/defineHook.ts
1051
- function defineHook(hookDef) {
1052
- const filePath = getCallerFile();
1053
- return {
1054
- [symbolHook]: true,
1055
- [symbolFilePath]: filePath,
1056
- id: hookDef.id,
1057
- dependencies: hookDef.dependencies || {},
1058
- on: hookDef.on,
1059
- order: hookDef.order,
1060
- run: hookDef.run,
1061
- meta: hookDef.meta || {},
1062
- tags: hookDef.tags || []
1063
- };
1064
+ This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags.`;
1065
+ }).build();
1066
+ var platformUnsupportedFunctionError = error("runner.errors.platformUnsupportedFunction").format(
1067
+ ({ functionName }) => `Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
1068
+ ).build();
1069
+ var cancellationError = error(
1070
+ "runner.errors.cancellation"
1071
+ ).format(({ reason }) => reason || "Operation cancelled").build();
1072
+ var tunnelOwnershipConflictError = error("runner.errors.tunnelOwnershipConflict").format(
1073
+ ({ taskId, currentOwnerId, attemptedOwnerId }) => `Task "${taskId}" is already tunneled by resource "${currentOwnerId}". Resource "${attemptedOwnerId}" cannot tunnel it again. Ensure each task is owned by a single tunnel client.`
1074
+ ).build();
1075
+ var phantomTaskNotRoutedError = error("runner.errors.phantomTaskNotRouted").format(
1076
+ ({ taskId }) => `Phantom task "${taskId}" is not routed through any tunnel. Ensure a tunnel client selects this task id (or avoid calling the phantom task directly).`
1077
+ ).build();
1078
+ var taskNotRegisteredError = error("runner.errors.taskNotRegistered").format(
1079
+ ({ taskId }) => `Task "${taskId}" is not registered in the Store. This is an internal error\u2014ensure the task is registered before execution.`
1080
+ ).build();
1081
+ var builderIncompleteError = error("runner.errors.builderIncomplete").format(({ type, builderId, missingFields }) => {
1082
+ const typeLabel = type === "hook" ? "Hook" : type === "task-middleware" ? "Task middleware" : "Resource middleware";
1083
+ return `${typeLabel} "${builderId}" is incomplete. Missing required: ${missingFields.join(", ")}. Call ${missingFields.map((f) => `.${f}()`).join(" and ")} before .build().`;
1084
+ }).build();
1085
+ function isCancellationError(err) {
1086
+ return cancellationError.is(err);
1064
1087
  }
1065
- __name(defineHook, "defineHook");
1088
+ __name(isCancellationError, "isCancellationError");
1066
1089
 
1067
1090
  // src/definers/resourceFork.ts
1068
1091
  function resolveReId(forkId, options) {
@@ -1437,7 +1460,7 @@ function defineOverride(base, patch) {
1437
1460
  ...patch,
1438
1461
  id: base.id
1439
1462
  };
1440
- if (base.on !== void 0) {
1463
+ if ("on" in base && base.on !== void 0) {
1441
1464
  overridden.on = base.on;
1442
1465
  }
1443
1466
  return overridden;
@@ -1557,6 +1580,309 @@ var SymbolPolicy = /* @__PURE__ */ ((SymbolPolicy2) => {
1557
1580
  SymbolPolicy2["Disabled"] = "Disabled";
1558
1581
  return SymbolPolicy2;
1559
1582
  })(SymbolPolicy || {});
1583
+ var SymbolPolicyErrorMessage = /* @__PURE__ */ ((SymbolPolicyErrorMessage2) => {
1584
+ SymbolPolicyErrorMessage2["GlobalSymbolsNotAllowed"] = "Global symbols are not allowed";
1585
+ SymbolPolicyErrorMessage2["SymbolsNotAllowed"] = "Symbols are not allowed";
1586
+ SymbolPolicyErrorMessage2["UnsupportedSymbolPolicy"] = "Unsupported symbol policy";
1587
+ return SymbolPolicyErrorMessage2;
1588
+ })(SymbolPolicyErrorMessage || {});
1589
+
1590
+ // src/serializer/binary-builtins.ts
1591
+ var INVALID_PAYLOAD_MESSAGE_PREFIX = "Invalid";
1592
+ var typedArrayTypeIds = [
1593
+ "Int8Array",
1594
+ "Uint8Array",
1595
+ "Uint8ClampedArray",
1596
+ "Int16Array",
1597
+ "Uint16Array",
1598
+ "Int32Array",
1599
+ "Uint32Array",
1600
+ "Float32Array",
1601
+ "Float64Array",
1602
+ "BigInt64Array",
1603
+ "BigUint64Array"
1604
+ ];
1605
+ var getTypedArrayConstructor = /* @__PURE__ */ __name((typeId) => {
1606
+ const value = globalThis[typeId];
1607
+ if (typeof value !== "function") {
1608
+ return null;
1609
+ }
1610
+ return value;
1611
+ }, "getTypedArrayConstructor");
1612
+ var getRuntimeBufferConstructor = /* @__PURE__ */ __name(() => {
1613
+ const value = globalThis.Buffer;
1614
+ if (typeof value !== "function") {
1615
+ return null;
1616
+ }
1617
+ const valueRecord = value;
1618
+ if (typeof valueRecord.from !== "function" || typeof valueRecord.isBuffer !== "function") {
1619
+ return null;
1620
+ }
1621
+ return value;
1622
+ }, "getRuntimeBufferConstructor");
1623
+ var isNodeBuffer = /* @__PURE__ */ __name((value) => {
1624
+ const runtimeBufferConstructor = getRuntimeBufferConstructor();
1625
+ if (!runtimeBufferConstructor) {
1626
+ return false;
1627
+ }
1628
+ return runtimeBufferConstructor.isBuffer(value);
1629
+ }, "isNodeBuffer");
1630
+ var assertBytePayload = /* @__PURE__ */ __name((payload, typeId) => {
1631
+ if (!Array.isArray(payload)) {
1632
+ throw new Error(`${INVALID_PAYLOAD_MESSAGE_PREFIX} ${typeId} payload`);
1633
+ }
1634
+ const bytes = new Array(payload.length);
1635
+ for (let index = 0; index < payload.length; index += 1) {
1636
+ const byteValue = payload[index];
1637
+ if (typeof byteValue !== "number" || !Number.isInteger(byteValue) || byteValue < 0 || byteValue > 255) {
1638
+ throw new Error(`${INVALID_PAYLOAD_MESSAGE_PREFIX} ${typeId} payload`);
1639
+ }
1640
+ bytes[index] = byteValue;
1641
+ }
1642
+ return bytes;
1643
+ }, "assertBytePayload");
1644
+ var toBytePayload = /* @__PURE__ */ __name((value) => Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength)), "toBytePayload");
1645
+ var bytesToArrayBuffer = /* @__PURE__ */ __name((payload, typeId) => {
1646
+ const bytes = assertBytePayload(payload, typeId);
1647
+ return Uint8Array.from(bytes).buffer;
1648
+ }, "bytesToArrayBuffer");
1649
+ var deserializeTypedArray = /* @__PURE__ */ __name((typeId, payload) => {
1650
+ const typedArrayConstructor = getTypedArrayConstructor(typeId);
1651
+ if (!typedArrayConstructor) {
1652
+ throw new Error(`${typeId} is not available in this runtime`);
1653
+ }
1654
+ const bytes = assertBytePayload(payload, typeId);
1655
+ const bytesPerElement = typedArrayConstructor.BYTES_PER_ELEMENT;
1656
+ if (bytes.length % bytesPerElement !== 0) {
1657
+ throw new Error(`${INVALID_PAYLOAD_MESSAGE_PREFIX} ${typeId} payload`);
1658
+ }
1659
+ const arrayBuffer = Uint8Array.from(bytes).buffer;
1660
+ return new typedArrayConstructor(arrayBuffer);
1661
+ }, "deserializeTypedArray");
1662
+ var createTypedArrayType = /* @__PURE__ */ __name((typeId) => ({
1663
+ id: typeId,
1664
+ is: /* @__PURE__ */ __name((value) => {
1665
+ const typedArrayConstructor = getTypedArrayConstructor(typeId);
1666
+ if (!typedArrayConstructor) {
1667
+ return false;
1668
+ }
1669
+ if (!(value instanceof typedArrayConstructor)) {
1670
+ return false;
1671
+ }
1672
+ if (typeId === "Uint8Array" && isNodeBuffer(value)) {
1673
+ return false;
1674
+ }
1675
+ return true;
1676
+ }, "is"),
1677
+ serialize: /* @__PURE__ */ __name((value) => toBytePayload(value), "serialize"),
1678
+ deserialize: /* @__PURE__ */ __name((payload) => deserializeTypedArray(typeId, payload), "deserialize"),
1679
+ strategy: "value"
1680
+ }), "createTypedArrayType");
1681
+ var ArrayBufferType = {
1682
+ id: "ArrayBuffer",
1683
+ is: /* @__PURE__ */ __name((value) => value instanceof ArrayBuffer, "is"),
1684
+ serialize: /* @__PURE__ */ __name((value) => Array.from(new Uint8Array(value)), "serialize"),
1685
+ deserialize: /* @__PURE__ */ __name((payload) => bytesToArrayBuffer(payload, "ArrayBuffer"), "deserialize"),
1686
+ strategy: "value"
1687
+ };
1688
+ var DataViewType = {
1689
+ id: "DataView",
1690
+ is: /* @__PURE__ */ __name((value) => value instanceof DataView, "is"),
1691
+ serialize: /* @__PURE__ */ __name((value) => toBytePayload(value), "serialize"),
1692
+ deserialize: /* @__PURE__ */ __name((payload) => new DataView(bytesToArrayBuffer(payload, "DataView")), "deserialize"),
1693
+ strategy: "value"
1694
+ };
1695
+ var BufferType = {
1696
+ id: "Buffer",
1697
+ is: /* @__PURE__ */ __name((value) => isNodeBuffer(value), "is"),
1698
+ serialize: /* @__PURE__ */ __name((value) => toBytePayload(value), "serialize"),
1699
+ deserialize: /* @__PURE__ */ __name((payload) => {
1700
+ const bytes = assertBytePayload(payload, "Buffer");
1701
+ const runtimeBufferConstructor = getRuntimeBufferConstructor();
1702
+ if (runtimeBufferConstructor) {
1703
+ return runtimeBufferConstructor.from(bytes);
1704
+ }
1705
+ return Uint8Array.from(bytes);
1706
+ }, "deserialize"),
1707
+ strategy: "value"
1708
+ };
1709
+ var typedArrayTypes = typedArrayTypeIds.map(
1710
+ (typeId) => createTypedArrayType(typeId)
1711
+ );
1712
+ var binaryBuiltInTypes = [
1713
+ ArrayBufferType,
1714
+ DataViewType,
1715
+ BufferType,
1716
+ ...typedArrayTypes
1717
+ ];
1718
+
1719
+ // src/serializer/error-url-builtins.ts
1720
+ var hasOwn = Object.prototype.hasOwnProperty;
1721
+ var errorReservedPropertyNames = /* @__PURE__ */ new Set([
1722
+ "name",
1723
+ "message",
1724
+ "stack",
1725
+ "cause"
1726
+ ]);
1727
+ var isRecord = /* @__PURE__ */ __name((value) => typeof value === "object" && value !== null && !Array.isArray(value), "isRecord");
1728
+ var isUnsafePropertyName = /* @__PURE__ */ __name((propertyName) => propertyName === "__proto__" || propertyName === "constructor" || propertyName === "prototype", "isUnsafePropertyName");
1729
+ var collectErrorCustomFields = /* @__PURE__ */ __name((error2) => {
1730
+ const customFields = {};
1731
+ for (const propertyName of Object.getOwnPropertyNames(error2)) {
1732
+ if (errorReservedPropertyNames.has(propertyName)) {
1733
+ continue;
1734
+ }
1735
+ if (isUnsafePropertyName(propertyName)) {
1736
+ continue;
1737
+ }
1738
+ const descriptor = Object.getOwnPropertyDescriptor(error2, propertyName);
1739
+ if (!descriptor || !("value" in descriptor)) {
1740
+ continue;
1741
+ }
1742
+ customFields[propertyName] = descriptor.value;
1743
+ }
1744
+ return customFields;
1745
+ }, "collectErrorCustomFields");
1746
+ var assertSerializedErrorPayload = /* @__PURE__ */ __name((value) => {
1747
+ if (!isRecord(value)) {
1748
+ throw new Error("Invalid Error payload");
1749
+ }
1750
+ const { name, message, stack, customFields } = value;
1751
+ if (typeof name !== "string" || typeof message !== "string") {
1752
+ throw new Error("Invalid Error payload");
1753
+ }
1754
+ if (stack !== void 0 && typeof stack !== "string") {
1755
+ throw new Error("Invalid Error payload");
1756
+ }
1757
+ if (customFields !== void 0 && !isRecord(customFields)) {
1758
+ throw new Error("Invalid Error payload");
1759
+ }
1760
+ const normalizedCustomFields = {};
1761
+ const customFieldEntries = Object.entries(customFields ?? {});
1762
+ for (const [propertyName, propertyValue] of customFieldEntries) {
1763
+ if (isUnsafePropertyName(propertyName)) {
1764
+ continue;
1765
+ }
1766
+ normalizedCustomFields[propertyName] = propertyValue;
1767
+ }
1768
+ return {
1769
+ name,
1770
+ message,
1771
+ stack,
1772
+ hasCause: hasOwn.call(value, "cause"),
1773
+ cause: value.cause,
1774
+ customFields: normalizedCustomFields
1775
+ };
1776
+ }, "assertSerializedErrorPayload");
1777
+ var getUrlConstructor = /* @__PURE__ */ __name(() => {
1778
+ const value = globalThis.URL;
1779
+ if (typeof value !== "function") {
1780
+ return null;
1781
+ }
1782
+ return value;
1783
+ }, "getUrlConstructor");
1784
+ var getUrlSearchParamsConstructor = /* @__PURE__ */ __name(() => {
1785
+ const value = globalThis.URLSearchParams;
1786
+ if (typeof value !== "function") {
1787
+ return null;
1788
+ }
1789
+ return value;
1790
+ }, "getUrlSearchParamsConstructor");
1791
+ var ErrorType = {
1792
+ id: "Error",
1793
+ is: /* @__PURE__ */ __name((value) => value instanceof Error, "is"),
1794
+ serialize: /* @__PURE__ */ __name((error2) => {
1795
+ const serializedErrorPayload = {
1796
+ name: error2.name,
1797
+ message: error2.message,
1798
+ customFields: collectErrorCustomFields(error2)
1799
+ };
1800
+ if (typeof error2.stack === "string") {
1801
+ serializedErrorPayload.stack = error2.stack;
1802
+ }
1803
+ if (hasOwn.call(error2, "cause")) {
1804
+ serializedErrorPayload.cause = error2.cause;
1805
+ }
1806
+ return serializedErrorPayload;
1807
+ }, "serialize"),
1808
+ deserialize: /* @__PURE__ */ __name((payload) => {
1809
+ const { name, message, stack, hasCause, cause, customFields } = assertSerializedErrorPayload(payload);
1810
+ const restoredError = new Error(message);
1811
+ restoredError.name = name;
1812
+ if (stack !== void 0) {
1813
+ Object.defineProperty(restoredError, "stack", {
1814
+ value: stack,
1815
+ writable: true,
1816
+ configurable: true,
1817
+ enumerable: false
1818
+ });
1819
+ }
1820
+ if (hasCause) {
1821
+ Object.defineProperty(restoredError, "cause", {
1822
+ value: cause,
1823
+ writable: true,
1824
+ configurable: true,
1825
+ enumerable: false
1826
+ });
1827
+ }
1828
+ for (const [propertyName, propertyValue] of Object.entries(customFields)) {
1829
+ if (errorReservedPropertyNames.has(propertyName)) {
1830
+ continue;
1831
+ }
1832
+ restoredError[propertyName] = propertyValue;
1833
+ }
1834
+ return restoredError;
1835
+ }, "deserialize")
1836
+ };
1837
+ var URLType = {
1838
+ id: "URL",
1839
+ is: /* @__PURE__ */ __name((value) => {
1840
+ const runtimeUrlConstructor = getUrlConstructor();
1841
+ if (!runtimeUrlConstructor) {
1842
+ return false;
1843
+ }
1844
+ return value instanceof runtimeUrlConstructor;
1845
+ }, "is"),
1846
+ serialize: /* @__PURE__ */ __name((value) => value.href, "serialize"),
1847
+ deserialize: /* @__PURE__ */ __name((payload) => {
1848
+ if (typeof payload !== "string") {
1849
+ throw new Error("Invalid URL payload");
1850
+ }
1851
+ const runtimeUrlConstructor = getUrlConstructor();
1852
+ if (!runtimeUrlConstructor) {
1853
+ throw new Error("URL is not available in this runtime");
1854
+ }
1855
+ return new runtimeUrlConstructor(payload);
1856
+ }, "deserialize"),
1857
+ strategy: "value"
1858
+ };
1859
+ var URLSearchParamsType = {
1860
+ id: "URLSearchParams",
1861
+ is: /* @__PURE__ */ __name((value) => {
1862
+ const runtimeUrlSearchParamsConstructor = getUrlSearchParamsConstructor();
1863
+ if (!runtimeUrlSearchParamsConstructor) {
1864
+ return false;
1865
+ }
1866
+ return value instanceof runtimeUrlSearchParamsConstructor;
1867
+ }, "is"),
1868
+ serialize: /* @__PURE__ */ __name((value) => value.toString(), "serialize"),
1869
+ deserialize: /* @__PURE__ */ __name((payload) => {
1870
+ if (typeof payload !== "string") {
1871
+ throw new Error("Invalid URLSearchParams payload");
1872
+ }
1873
+ const runtimeUrlSearchParamsConstructor = getUrlSearchParamsConstructor();
1874
+ if (!runtimeUrlSearchParamsConstructor) {
1875
+ throw new Error("URLSearchParams is not available in this runtime");
1876
+ }
1877
+ return new runtimeUrlSearchParamsConstructor(payload);
1878
+ }, "deserialize"),
1879
+ strategy: "value"
1880
+ };
1881
+ var errorAndUrlBuiltInTypes = [
1882
+ ErrorType,
1883
+ URLType,
1884
+ URLSearchParamsType
1885
+ ];
1560
1886
 
1561
1887
  // src/serializer/special-values.ts
1562
1888
  var serializeUndefined = /* @__PURE__ */ __name(() => ({
@@ -1762,7 +2088,9 @@ var builtInTypes = [
1762
2088
  UndefinedType,
1763
2089
  NonFiniteNumberType,
1764
2090
  BigIntType,
1765
- SymbolType
2091
+ SymbolType,
2092
+ ...errorAndUrlBuiltInTypes,
2093
+ ...binaryBuiltInTypes
1766
2094
  ];
1767
2095
 
1768
2096
  // src/serializer/type-registry.ts
@@ -2253,7 +2581,7 @@ var serializeTreeValue = /* @__PURE__ */ __name((value, context, depth, options)
2253
2581
  }, "serializeTreeValue");
2254
2582
 
2255
2583
  // src/serializer/deserializer.ts
2256
- var hasOwn = Object.prototype.hasOwnProperty;
2584
+ var hasOwn2 = Object.prototype.hasOwnProperty;
2257
2585
  var copyOwnProperties = /* @__PURE__ */ __name((target, source, unsafeKeys) => {
2258
2586
  const descriptors = Object.getOwnPropertyDescriptors(source);
2259
2587
  for (const key of Object.keys(descriptors)) {
@@ -2334,7 +2662,7 @@ var deserializeValue = /* @__PURE__ */ __name((value, context, depth, options) =
2334
2662
  const obj = {};
2335
2663
  const source = value;
2336
2664
  for (const key in source) {
2337
- if (!hasOwn.call(source, key)) {
2665
+ if (!hasOwn2.call(source, key)) {
2338
2666
  continue;
2339
2667
  }
2340
2668
  if (isUnsafeKey(key, options.unsafeKeys)) {
@@ -2379,7 +2707,7 @@ var resolveReference = /* @__PURE__ */ __name((id2, context, depth, options) =>
2379
2707
  context.resolved.set(id2, target);
2380
2708
  const source = node.value;
2381
2709
  for (const key in source) {
2382
- if (!hasOwn.call(source, key)) {
2710
+ if (!hasOwn2.call(source, key)) {
2383
2711
  continue;
2384
2712
  }
2385
2713
  if (isUnsafeKey(key, options.unsafeKeys)) {
@@ -2451,7 +2779,7 @@ var mergePlaceholder = /* @__PURE__ */ __name((placeholder, result, unsafeKeys)
2451
2779
  const target = placeholder;
2452
2780
  const source = result;
2453
2781
  for (const key in source) {
2454
- if (!hasOwn.call(source, key)) {
2782
+ if (!hasOwn2.call(source, key)) {
2455
2783
  continue;
2456
2784
  }
2457
2785
  if (isUnsafeKey(key, unsafeKeys)) {
@@ -2484,7 +2812,7 @@ var deserializeLegacy = /* @__PURE__ */ __name((value, depth, options) => {
2484
2812
  const obj = {};
2485
2813
  const source = value;
2486
2814
  for (const key in source) {
2487
- if (!hasOwn.call(source, key)) {
2815
+ if (!hasOwn2.call(source, key)) {
2488
2816
  continue;
2489
2817
  }
2490
2818
  if (isUnsafeKey(key, options.unsafeKeys)) {
@@ -2495,6 +2823,26 @@ var deserializeLegacy = /* @__PURE__ */ __name((value, depth, options) => {
2495
2823
  return obj;
2496
2824
  }, "deserializeLegacy");
2497
2825
 
2826
+ // src/serializer/option-normalizers.ts
2827
+ var normalizeMaxDepth = /* @__PURE__ */ __name((value, fallback) => {
2828
+ if (value === Number.POSITIVE_INFINITY) {
2829
+ return Number.POSITIVE_INFINITY;
2830
+ }
2831
+ if (typeof value === "number" && Number.isFinite(value) && value >= 0) {
2832
+ return Math.floor(value);
2833
+ }
2834
+ return fallback;
2835
+ }, "normalizeMaxDepth");
2836
+ var normalizeMaxRegExpPatternLength = /* @__PURE__ */ __name((value, fallback) => {
2837
+ if (value === Number.POSITIVE_INFINITY) {
2838
+ return Number.POSITIVE_INFINITY;
2839
+ }
2840
+ if (typeof value === "number" && Number.isFinite(value) && value > 0) {
2841
+ return Math.floor(value);
2842
+ }
2843
+ return fallback;
2844
+ }, "normalizeMaxRegExpPatternLength");
2845
+
2498
2846
  // src/serializer/Serializer.ts
2499
2847
  var GRAPH_VERSION = 1;
2500
2848
  var DEFAULT_MAX_DEPTH = 1e3;
@@ -2530,10 +2878,11 @@ var Serializer = class {
2530
2878
  return check(pattern, index);
2531
2879
  }, "isBoundedQuantifier");
2532
2880
  this.indent = options.pretty ? 2 : void 0;
2533
- const maxDepth = options.maxDepth;
2534
- this.maxDepth = typeof maxDepth === "number" && Number.isFinite(maxDepth) && maxDepth >= 0 ? Math.floor(maxDepth) : DEFAULT_MAX_DEPTH;
2535
- const maxPatternLength = options.maxRegExpPatternLength;
2536
- this.maxRegExpPatternLength = maxPatternLength === Number.POSITIVE_INFINITY ? Number.POSITIVE_INFINITY : typeof maxPatternLength === "number" && Number.isFinite(maxPatternLength) && maxPatternLength > 0 ? Math.floor(maxPatternLength) : DEFAULT_MAX_REGEXP_PATTERN_LENGTH;
2881
+ this.maxDepth = normalizeMaxDepth(options.maxDepth, DEFAULT_MAX_DEPTH);
2882
+ this.maxRegExpPatternLength = normalizeMaxRegExpPatternLength(
2883
+ options.maxRegExpPatternLength,
2884
+ DEFAULT_MAX_REGEXP_PATTERN_LENGTH
2885
+ );
2537
2886
  this.allowUnsafeRegExp = options.allowUnsafeRegExp ?? false;
2538
2887
  this.unsafeKeys = DEFAULT_UNSAFE_KEYS;
2539
2888
  this.typeRegistry = new TypeRegistry({
@@ -2668,13 +3017,6 @@ var Serializer = class {
2668
3017
  }
2669
3018
  };
2670
3019
 
2671
- // src/serializer/index.ts
2672
- var defaultSerializer = new Serializer();
2673
- function getDefaultSerializer() {
2674
- return defaultSerializer;
2675
- }
2676
- __name(getDefaultSerializer, "getDefaultSerializer");
2677
-
2678
3020
  // src/definers/defineAsyncContext.ts
2679
3021
  var platform = getPlatform();
2680
3022
  var storage = platform.createAsyncLocalStorage();
@@ -2682,13 +3024,14 @@ function getCurrentStore() {
2682
3024
  return storage.getStore();
2683
3025
  }
2684
3026
  __name(getCurrentStore, "getCurrentStore");
2685
- function defineAsyncContext(def) {
3027
+ function defineAsyncContext(def, filePath) {
2686
3028
  if (!platform.hasAsyncLocalStorage()) {
2687
3029
  platformUnsupportedFunctionError.throw({
2688
3030
  functionName: `createAsyncLocalStorage: Cannot create context ${def.id}: no async storage available in this environment`
2689
3031
  });
2690
3032
  }
2691
3033
  const ctxId = def.id;
3034
+ const resolvedFilePath = filePath ?? getCallerFile();
2692
3035
  const use = /* @__PURE__ */ __name(() => {
2693
3036
  const store2 = getCurrentStore();
2694
3037
  if (!store2 || !store2.has(ctxId)) {
@@ -2705,10 +3048,11 @@ function defineAsyncContext(def) {
2705
3048
  map.set(ctxId, value);
2706
3049
  return storage.run(map, fn);
2707
3050
  }, "provide");
2708
- const serializer2 = getDefaultSerializer();
3051
+ const serializer2 = new Serializer();
2709
3052
  const api = {
2710
3053
  id: ctxId,
2711
3054
  [symbolAsyncContext]: true,
3055
+ [symbolFilePath]: resolvedFilePath,
2712
3056
  use,
2713
3057
  /* istanbul ignore next */
2714
3058
  provide(value, fn) {
@@ -3360,12 +3704,12 @@ var EventManager = class {
3360
3704
  data,
3361
3705
  timestamp: /* @__PURE__ */ new Date(),
3362
3706
  source,
3363
- meta: eventDefinition.meta || {},
3707
+ meta: { ...eventDefinition.meta || {} },
3364
3708
  stopPropagation: /* @__PURE__ */ __name(() => {
3365
3709
  propagationStopped = true;
3366
3710
  }, "stopPropagation"),
3367
3711
  isPropagationStopped: /* @__PURE__ */ __name(() => propagationStopped, "isPropagationStopped"),
3368
- tags: eventDefinition.tags
3712
+ tags: [...eventDefinition.tags]
3369
3713
  };
3370
3714
  const baseEmit = /* @__PURE__ */ __name(async (eventToEmit) => {
3371
3715
  if (allListeners.length === 0) {
@@ -3391,10 +3735,14 @@ var EventManager = class {
3391
3735
  if (!interceptor) {
3392
3736
  return baseEmit(eventToEmit);
3393
3737
  }
3394
- return interceptor(
3395
- (nextEvent) => runInterceptor(index + 1, nextEvent),
3396
- eventToEmit
3397
- );
3738
+ return interceptor((nextEvent) => {
3739
+ this.assertPropagationMethodsUnchanged(
3740
+ eventDefinition.id,
3741
+ eventToEmit,
3742
+ nextEvent
3743
+ );
3744
+ return runInterceptor(index + 1, nextEvent);
3745
+ }, eventToEmit);
3398
3746
  }, "runInterceptor");
3399
3747
  await runInterceptor(0, event2);
3400
3748
  return deepestEvent;
@@ -3505,21 +3853,24 @@ var EventManager = class {
3505
3853
  lockedError.throw({ what: "EventManager" });
3506
3854
  }
3507
3855
  }
3508
- /**
3509
- * Clears all listeners and interceptors.
3510
- * Call this to release references and free memory.
3511
- */
3512
- clear() {
3513
- this.registry.clear();
3514
- this.emissionInterceptors.length = 0;
3515
- this.hookInterceptors.length = 0;
3856
+ assertPropagationMethodsUnchanged(eventId, currentEvent, nextEvent) {
3857
+ if (nextEvent.stopPropagation !== currentEvent.stopPropagation || nextEvent.isPropagationStopped !== currentEvent.isPropagationStopped) {
3858
+ validationError.throw({
3859
+ subject: "Event interceptor",
3860
+ id: eventId,
3861
+ originalError: new Error(
3862
+ "Interceptors cannot override stopPropagation/isPropagationStopped"
3863
+ )
3864
+ });
3865
+ }
3516
3866
  }
3517
3867
  /**
3518
3868
  * Disposes the EventManager, releasing all listeners and interceptors.
3519
- * Alias for clear() following the IResource disposal pattern.
3520
3869
  */
3521
3870
  dispose() {
3522
- this.clear();
3871
+ this.registry.clear();
3872
+ this.emissionInterceptors.length = 0;
3873
+ this.hookInterceptors.length = 0;
3523
3874
  }
3524
3875
  /**
3525
3876
  * Retrieves cached merged listeners for an event, or creates them if not cached.
@@ -5037,7 +5388,7 @@ var TaskRunner = class {
5037
5388
  __name(this, "TaskRunner");
5038
5389
  }
5039
5390
  /**
5040
- * Begins the execution of an task. These are registered tasks and all sanity checks have been performed at this stage to ensure consistency of the object.
5391
+ * Begins the execution of a task. These are registered tasks and all sanity checks have been performed at this stage to ensure consistency of the object.
5041
5392
  * This function can throw only if any of the event listeners or run function throws
5042
5393
  * @param task the task to be run
5043
5394
  * @param input the input to be passed to the task
@@ -5066,8 +5417,6 @@ var TaskRunner = class {
5066
5417
  /**
5067
5418
  * Creates the function with the chain of middleware.
5068
5419
  * @param task
5069
- * @param input
5070
- * @param taskDependencies
5071
5420
  * @returns
5072
5421
  */
5073
5422
  createRunnerWithMiddleware(task2) {
@@ -5087,7 +5436,7 @@ var ResourceInitializer = class {
5087
5436
  __name(this, "ResourceInitializer");
5088
5437
  }
5089
5438
  /**
5090
- * Begins the execution of an task. These are registered tasks and all sanity checks have been performed at this stage to ensure consistency of the object.
5439
+ * Begins the execution of a task. These are registered tasks and all sanity checks have been performed at this stage to ensure consistency of the object.
5091
5440
  * This function can throw only if any of the event listeners or run function throws
5092
5441
  */
5093
5442
  async initializeResource(resource2, config, dependencies) {
@@ -5577,23 +5926,28 @@ var DependencyProcessor = class {
5577
5926
  middleware.computedDependencies = computedDependencies;
5578
5927
  middleware.isInitialized = true;
5579
5928
  }
5580
- for (const resource2 of this.store.resources.values()) {
5581
- await this.processResourceDependencies(resource2);
5582
- }
5583
- for (const task2 of this.store.tasks.values()) {
5584
- await this.computeTaskDependencies(task2);
5585
- }
5586
5929
  for (const hookStoreElement of this.store.hooks.values()) {
5587
5930
  const hook2 = hookStoreElement.hook;
5588
5931
  const deps = hook2.dependencies;
5932
+ hookStoreElement.dependencyState = "computing" /* Computing */;
5589
5933
  hookStoreElement.computedDependencies = await this.extractDependencies(
5590
5934
  deps,
5591
5935
  hook2.id
5592
5936
  );
5937
+ hookStoreElement.dependencyState = "ready" /* Ready */;
5938
+ }
5939
+ for (const resource2 of this.store.resources.values()) {
5940
+ await this.processResourceDependencies(resource2);
5941
+ }
5942
+ for (const task2 of this.store.tasks.values()) {
5943
+ await this.computeTaskDependencies(task2);
5593
5944
  }
5594
5945
  await this.initializeUninitializedResources();
5595
5946
  }
5596
5947
  async computeTaskDependencies(task2) {
5948
+ if (task2.isInitialized) {
5949
+ return;
5950
+ }
5597
5951
  const deps = task2.task.dependencies;
5598
5952
  task2.computedDependencies = await this.extractDependencies(
5599
5953
  deps,
@@ -5725,6 +6079,9 @@ var DependencyProcessor = class {
5725
6079
  if (receivedEvent.source === hook2.id) {
5726
6080
  return;
5727
6081
  }
6082
+ if (hookStoreElement.dependencyState !== "ready" /* Ready */) {
6083
+ return;
6084
+ }
5728
6085
  return this.eventManager.executeHookWithInterceptors(
5729
6086
  hook2,
5730
6087
  receivedEvent,
@@ -5841,7 +6198,7 @@ var DependencyProcessor = class {
5841
6198
  }
5842
6199
  const st = storeTask;
5843
6200
  if (!st.isInitialized) {
5844
- const dependencies = object.dependencies;
6201
+ const dependencies = st.task.dependencies;
5845
6202
  st.computedDependencies = await this.extractDependencies(
5846
6203
  dependencies,
5847
6204
  st.task.id
@@ -5867,14 +6224,19 @@ var DependencyProcessor = class {
5867
6224
  wrapped = this.wrapResourceDependencies(depMap, raw);
5868
6225
  sr.computedDependencies = wrapped;
5869
6226
  }
5870
- const { value, context } = await this.resourceInitializer.initializeResource(
5871
- resource2,
5872
- config,
5873
- wrapped
5874
- );
5875
- sr.context = context;
5876
- sr.value = value;
5877
- sr.isInitialized = true;
6227
+ try {
6228
+ const { value, context } = await this.resourceInitializer.initializeResource(
6229
+ resource2,
6230
+ config,
6231
+ wrapped
6232
+ );
6233
+ sr.context = context;
6234
+ sr.value = value;
6235
+ sr.isInitialized = true;
6236
+ this.store.recordResourceInitialized(resource2.id);
6237
+ } catch (error2) {
6238
+ this.rethrowResourceInitError(resource2.id, error2);
6239
+ }
5878
6240
  }
5879
6241
  return sr.value;
5880
6242
  }
@@ -6077,7 +6439,8 @@ var StoreRegistry = class {
6077
6439
  const hook2 = this.getFreshValue(item, this.hooks, "hook", overrideMode);
6078
6440
  this.hooks.set(hook2.id, {
6079
6441
  hook: hook2,
6080
- computedDependencies: {}
6442
+ computedDependencies: {},
6443
+ dependencyState: "pending" /* Pending */
6081
6444
  });
6082
6445
  }
6083
6446
  storeTaskMiddleware(item, storingMode = "normal") {
@@ -6132,7 +6495,10 @@ var StoreRegistry = class {
6132
6495
  return prepared;
6133
6496
  }
6134
6497
  computeRegistrationDeeply(element, config) {
6135
- const items = typeof element.register === "function" ? element.register(config) : element.register;
6498
+ let items = typeof element.register === "function" ? element.register(config) : element.register;
6499
+ if (!items) {
6500
+ items = [];
6501
+ }
6136
6502
  element.register = items;
6137
6503
  for (const item of items) {
6138
6504
  this.storeGenericItem(item);
@@ -6670,25 +7036,27 @@ var InterceptorRegistry = class {
6670
7036
  * Gets all global task interceptors
6671
7037
  */
6672
7038
  getGlobalTaskInterceptors() {
6673
- return this.taskInterceptors;
7039
+ return Object.freeze([...this.taskInterceptors]);
6674
7040
  }
6675
7041
  /**
6676
7042
  * Gets all global resource interceptors
6677
7043
  */
6678
7044
  getGlobalResourceInterceptors() {
6679
- return this.resourceInterceptors;
7045
+ return Object.freeze([...this.resourceInterceptors]);
6680
7046
  }
6681
7047
  /**
6682
7048
  * Gets interceptors for a specific task middleware
6683
7049
  */
6684
7050
  getTaskMiddlewareInterceptors(middlewareId) {
6685
- return this.perTaskMiddleware.get(middlewareId) || [];
7051
+ const interceptors = this.perTaskMiddleware.get(middlewareId) ?? [];
7052
+ return Object.freeze([...interceptors]);
6686
7053
  }
6687
7054
  /**
6688
7055
  * Gets interceptors for a specific resource middleware
6689
7056
  */
6690
7057
  getResourceMiddlewareInterceptors(middlewareId) {
6691
- return this.perResourceMiddleware.get(middlewareId) || [];
7058
+ const interceptors = this.perResourceMiddleware.get(middlewareId) ?? [];
7059
+ return Object.freeze([...interceptors]);
6692
7060
  }
6693
7061
  };
6694
7062
 
@@ -7167,10 +7535,8 @@ var ResourceMiddlewareComposer = class {
7167
7535
 
7168
7536
  // src/models/MiddlewareManager.ts
7169
7537
  var MiddlewareManager = class {
7170
- constructor(store2, eventManager, logger) {
7538
+ constructor(store2, _eventManager, _logger) {
7171
7539
  this.store = store2;
7172
- this.eventManager = eventManager;
7173
- this.logger = logger;
7174
7540
  this.interceptorRegistry = new InterceptorRegistry();
7175
7541
  this.middlewareResolver = new MiddlewareResolver(store2);
7176
7542
  this.taskComposer = new TaskMiddlewareComposer(
@@ -7211,14 +7577,6 @@ var MiddlewareManager = class {
7211
7577
  lock() {
7212
7578
  this.interceptorRegistry.lock();
7213
7579
  }
7214
- /**
7215
- * Adds an interceptor for task or resource middleware execution
7216
- * Interceptors are executed in the order they are added, with the ability to
7217
- * modify, log, or prevent middleware execution
7218
- *
7219
- * @param kind - The type of middleware to intercept ("task" or "resource")
7220
- * @param interceptor - The interceptor function to add
7221
- */
7222
7580
  intercept(kind, interceptor) {
7223
7581
  if (kind === "task") {
7224
7582
  this.interceptorRegistry.addGlobalTaskInterceptor(
@@ -7230,13 +7588,6 @@ var MiddlewareManager = class {
7230
7588
  );
7231
7589
  }
7232
7590
  }
7233
- /**
7234
- * Adds an interceptor for a specific middleware instance with better type safety
7235
- * This method automatically determines the type and provides type-safe access
7236
- *
7237
- * @param middleware - The middleware instance to intercept
7238
- * @param interceptor - The interceptor function with proper typing
7239
- */
7240
7591
  interceptMiddleware(middleware, interceptor) {
7241
7592
  if (isTaskMiddleware(middleware)) {
7242
7593
  this.interceptorRegistry.addTaskMiddlewareInterceptor(
@@ -7375,12 +7726,17 @@ var Store = class {
7375
7726
  }
7376
7727
  }
7377
7728
  registerGlobalComponents() {
7729
+ if (!this.taskRunner) {
7730
+ throw new Error(
7731
+ "TaskRunner is not set. Call store.setTaskRunner() before initializeStore()."
7732
+ );
7733
+ }
7378
7734
  const builtInResourcesMap = /* @__PURE__ */ new Map();
7379
7735
  builtInResourcesMap.set(globalResources.store, this);
7380
7736
  builtInResourcesMap.set(globalResources.eventManager, this.eventManager);
7381
7737
  builtInResourcesMap.set(globalResources.logger, this.logger);
7382
7738
  builtInResourcesMap.set(globalResources.taskRunner, this.taskRunner);
7383
- builtInResourcesMap.set(globalResources.serializer, getDefaultSerializer());
7739
+ builtInResourcesMap.set(globalResources.serializer, new Serializer());
7384
7740
  builtInResourcesMap.set(
7385
7741
  globalResources.middlewareManager,
7386
7742
  this.middlewareManager
@@ -7440,8 +7796,11 @@ var Store = class {
7440
7796
  setTaskRunner(taskRunner) {
7441
7797
  this.taskRunner = taskRunner;
7442
7798
  }
7443
- setupRootResource(root, config) {
7444
- root.dependencies = typeof root.dependencies === "function" ? root.dependencies(config) : root.dependencies;
7799
+ setupRootResource(rootDefinition, config) {
7800
+ const root = {
7801
+ ...rootDefinition,
7802
+ dependencies: typeof rootDefinition.dependencies === "function" ? rootDefinition.dependencies(config) : rootDefinition.dependencies
7803
+ };
7445
7804
  this.root = {
7446
7805
  resource: root,
7447
7806
  computedDependencies: {},
@@ -7994,6 +8353,18 @@ var RunResult = class {
7994
8353
  }
7995
8354
  return this.store.resources.get(resourceId).value;
7996
8355
  }, "getResourceValue");
8356
+ /**
8357
+ * Get the config of a resource from the run result.
8358
+ * @param resource - The resource to get the config of.
8359
+ * @returns The config passed for the resource.
8360
+ */
8361
+ this.getResourceConfig = /* @__PURE__ */ __name((resource2) => {
8362
+ const resourceId = typeof resource2 === "string" ? resource2 : resource2.id;
8363
+ if (!this.store.resources.has(resourceId)) {
8364
+ throw new Error(`Resource "${resourceId}" not found.`);
8365
+ }
8366
+ return this.store.resources.get(resourceId).config;
8367
+ }, "getResourceConfig");
7997
8368
  this.dispose = /* @__PURE__ */ __name(() => {
7998
8369
  return this.disposeFn();
7999
8370
  }, "dispose");
@@ -9174,7 +9545,7 @@ function makeAsyncContextBuilder(state) {
9174
9545
  configSchema: state.configSchema,
9175
9546
  meta: state.meta
9176
9547
  };
9177
- return defineAsyncContext(def);
9548
+ return defineAsyncContext(def, state.filePath);
9178
9549
  }
9179
9550
  };
9180
9551
  return builder;
@@ -9183,8 +9554,10 @@ __name(makeAsyncContextBuilder, "makeAsyncContextBuilder");
9183
9554
 
9184
9555
  // src/definers/builders/asyncContext/index.ts
9185
9556
  function asyncContextBuilder(id2) {
9557
+ const filePath = getCallerFile();
9186
9558
  const initial = Object.freeze({
9187
9559
  id: id2,
9560
+ filePath,
9188
9561
  serialize: void 0,
9189
9562
  parse: void 0,
9190
9563
  configSchema: void 0,
@@ -9657,7 +10030,7 @@ function override(base) {
9657
10030
  }
9658
10031
  __name(override, "override");
9659
10032
 
9660
- // src/index.ts
10033
+ // src/public.ts
9661
10034
  var globals = {
9662
10035
  events: globalEvents,
9663
10036
  resources: globalResources,
@@ -9682,6 +10055,6 @@ var r = Object.freeze({
9682
10055
  })
9683
10056
  });
9684
10057
 
9685
- export { DependencyProcessor, errors_exports as Errors, EventManager, Logger, MiddlewareManager, PlatformAdapter, Queue, ResourceInitializer, RunResult, Semaphore, Serializer, Store, TaskRunner, allFalse, defineAsyncContext as asyncContext, bindProcessErrorHandler, createContext2 as createContext, createDefaultUnhandledError, createExposureFetch, createHttpClient, createTestResource, debug, debugLevels, defs_exports as definitions, defineEvent as event, getConfig, getDefaultSerializer, globals, defineHook as hook, journal, levelNormal, levelVerbose, normalizeError, defineOverride as override, r, defineResource as resource, defineResourceMiddleware as resourceMiddleware, run, safeReportUnhandledError, setPlatform, defineTag as tag, defineTask as task, defineTaskMiddleware as taskMiddleware };
10058
+ export { DependencyProcessor, errors_exports as Errors, EventManager, LogPrinter, Logger, MiddlewareManager, PlatformAdapter, Queue, ResourceInitializer, RunResult, Semaphore, Serializer, Store, SymbolPolicy, SymbolPolicyErrorMessage, TaskRunner, allFalse, defineAsyncContext as asyncContext, bindProcessErrorHandler, createContext2 as createContext, createDefaultUnhandledError, createExposureFetch, createHttpClient, createTestResource, debug, debugLevels, defs_exports as definitions, defineEvent as event, getConfig, globals, defineHook as hook, journal, levelNormal, levelVerbose, normalizeError, defineOverride as override, r, defineResource as resource, defineResourceMiddleware as resourceMiddleware, run, safeReportUnhandledError, setPlatform, defineTag as tag, defineTask as task, defineTaskMiddleware as taskMiddleware };
9686
10059
  //# sourceMappingURL=index.mjs.map
9687
10060
  //# sourceMappingURL=index.mjs.map