@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
@@ -198,88 +198,227 @@ var symbolAsyncContext = Symbol.for(
198
198
  "runner.asyncContext"
199
199
  );
200
200
 
201
- // src/platform/adapters/node-als.ts
202
- async function loadAsyncLocalStorageClass() {
203
- const mod = __require("async_hooks");
204
- return mod.AsyncLocalStorage;
201
+ // src/tools/getCallerFile.ts
202
+ function isNodeInline() {
203
+ return typeof process !== "undefined" && typeof process?.versions?.node === "string";
205
204
  }
206
- __name(loadAsyncLocalStorageClass, "loadAsyncLocalStorageClass");
207
-
208
- // src/platform/adapters/node.ts
209
- var NodePlatformAdapter = class {
210
- constructor() {
211
- this.id = "node";
212
- this.setTimeout = globalThis.setTimeout;
213
- this.clearTimeout = globalThis.clearTimeout;
214
- }
215
- static {
216
- __name(this, "NodePlatformAdapter");
217
- }
218
- async init() {
219
- this.alsClass = await loadAsyncLocalStorageClass();
220
- }
221
- onUncaughtException(handler) {
222
- const h = /* @__PURE__ */ __name((error2) => handler(error2), "h");
223
- process.on("uncaughtException", h);
224
- return () => process.off("uncaughtException", h);
225
- }
226
- onUnhandledRejection(handler) {
227
- const h = /* @__PURE__ */ __name((reason) => handler(reason), "h");
228
- process.on("unhandledRejection", h);
229
- return () => process.off("unhandledRejection", h);
230
- }
231
- onShutdownSignal(handler) {
232
- process.on("SIGINT", handler);
233
- process.on("SIGTERM", handler);
234
- return () => {
235
- process.off("SIGINT", handler);
236
- process.off("SIGTERM", handler);
237
- };
238
- }
239
- exit(code) {
240
- process.exit(code);
241
- }
242
- getEnv(key) {
243
- return process.env[key];
244
- }
245
- hasAsyncLocalStorage() {
246
- return true;
205
+ __name(isNodeInline, "isNodeInline");
206
+ function getCallerFile() {
207
+ const originalPrepare = Error.prepareStackTrace;
208
+ try {
209
+ if (isNodeInline()) {
210
+ const err = new Error();
211
+ Error.prepareStackTrace = (_err, stack2) => stack2;
212
+ const stack = err.stack;
213
+ stack.shift();
214
+ stack.shift();
215
+ const candidate = stack.shift();
216
+ const file = candidate?.getFileName?.();
217
+ return file;
218
+ }
219
+ return "unknown";
220
+ } finally {
221
+ Error.prepareStackTrace = originalPrepare;
247
222
  }
248
- createAsyncLocalStorage() {
249
- let instance;
250
- const ensure = /* @__PURE__ */ __name(() => {
251
- if (!this.alsClass) {
252
- let als;
253
- const forceNoop = typeof process !== "undefined" && !!process.env?.RUNNER_FORCE_NOOP_ALS;
254
- if (!forceNoop) {
255
- try {
256
- const mod = __require("async_hooks");
257
- als = mod?.AsyncLocalStorage;
258
- } catch (_) {
259
- als = void 0;
260
- }
261
- }
262
- this.alsClass = als || class NoopAsyncLocalStorage {
263
- static {
264
- __name(this, "NoopAsyncLocalStorage");
265
- }
266
- getStore() {
267
- return void 0;
268
- }
269
- run(_store, callback) {
270
- return callback();
271
- }
272
- };
223
+ }
224
+ __name(getCallerFile, "getCallerFile");
225
+
226
+ // src/defs.ts
227
+ var defs_exports = {};
228
+ __export(defs_exports, {
229
+ CONTRACT: () => CONTRACT,
230
+ HookDependencyState: () => HookDependencyState,
231
+ RunnerMode: () => RunnerMode,
232
+ isOneOf: () => isOneOf,
233
+ onAnyOf: () => onAnyOf,
234
+ symbolAsyncContext: () => symbolAsyncContext,
235
+ symbolError: () => symbolError,
236
+ symbolEvent: () => symbolEvent,
237
+ symbolFilePath: () => symbolFilePath,
238
+ symbolHook: () => symbolHook,
239
+ symbolMiddleware: () => symbolMiddleware,
240
+ symbolMiddlewareConfigured: () => symbolMiddlewareConfigured,
241
+ symbolOptionalDependency: () => symbolOptionalDependency,
242
+ symbolPhantomTask: () => symbolPhantomTask,
243
+ symbolResource: () => symbolResource,
244
+ symbolResourceForkedFrom: () => symbolResourceForkedFrom,
245
+ symbolResourceMiddleware: () => symbolResourceMiddleware,
246
+ symbolResourceWithConfig: () => symbolResourceWithConfig,
247
+ symbolTag: () => symbolTag,
248
+ symbolTagConfigured: () => symbolTagConfigured,
249
+ symbolTask: () => symbolTask,
250
+ symbolTaskMiddleware: () => symbolTaskMiddleware,
251
+ symbolTunneledBy: () => symbolTunneledBy
252
+ });
253
+
254
+ // src/types/event.ts
255
+ function onAnyOf(...defs) {
256
+ return defs;
257
+ }
258
+ __name(onAnyOf, "onAnyOf");
259
+ function isOneOf(emission, defs) {
260
+ return defs.some((d) => d.id === emission.id);
261
+ }
262
+ __name(isOneOf, "isOneOf");
263
+
264
+ // src/types/runner.ts
265
+ var RunnerMode = /* @__PURE__ */ ((RunnerMode2) => {
266
+ RunnerMode2["TEST"] = "test";
267
+ RunnerMode2["DEV"] = "dev";
268
+ RunnerMode2["PROD"] = "prod";
269
+ return RunnerMode2;
270
+ })(RunnerMode || {});
271
+
272
+ // src/types/contracts.ts
273
+ var CONTRACT = Symbol.for("runner.contract");
274
+
275
+ // src/types/storeTypes.ts
276
+ var HookDependencyState = /* @__PURE__ */ ((HookDependencyState2) => {
277
+ HookDependencyState2["Pending"] = "pending";
278
+ HookDependencyState2["Computing"] = "computing";
279
+ HookDependencyState2["Ready"] = "ready";
280
+ return HookDependencyState2;
281
+ })(HookDependencyState || {});
282
+
283
+ // src/definers/tools.ts
284
+ function isTask(definition) {
285
+ return definition && definition[symbolTask];
286
+ }
287
+ __name(isTask, "isTask");
288
+ function isResource(definition) {
289
+ return definition && definition[symbolResource];
290
+ }
291
+ __name(isResource, "isResource");
292
+ function isResourceWithConfig(definition) {
293
+ return definition && definition[symbolResourceWithConfig];
294
+ }
295
+ __name(isResourceWithConfig, "isResourceWithConfig");
296
+ function isEvent(definition) {
297
+ return definition && definition[symbolEvent];
298
+ }
299
+ __name(isEvent, "isEvent");
300
+ function isHook(definition) {
301
+ return definition && definition[symbolHook];
302
+ }
303
+ __name(isHook, "isHook");
304
+ function isTaskMiddleware(definition) {
305
+ return definition && definition[symbolTaskMiddleware];
306
+ }
307
+ __name(isTaskMiddleware, "isTaskMiddleware");
308
+ function isResourceMiddleware(definition) {
309
+ return definition && definition[symbolResourceMiddleware];
310
+ }
311
+ __name(isResourceMiddleware, "isResourceMiddleware");
312
+ function isTag(definition) {
313
+ return definition && definition[symbolTag];
314
+ }
315
+ __name(isTag, "isTag");
316
+ function isOptional(definition) {
317
+ return definition && definition[symbolOptionalDependency];
318
+ }
319
+ __name(isOptional, "isOptional");
320
+ function isError(definition) {
321
+ return Boolean(definition && definition[symbolError]);
322
+ }
323
+ __name(isError, "isError");
324
+ function isAsyncContext(definition) {
325
+ return Boolean(definition && definition[symbolAsyncContext]);
326
+ }
327
+ __name(isAsyncContext, "isAsyncContext");
328
+
329
+ // src/tools/throws.ts
330
+ function invalidThrowsEntryError(owner, item) {
331
+ const got = item === null ? "null" : Array.isArray(item) ? "array" : typeof item === "object" ? "object" : typeof item;
332
+ return new Error(
333
+ `Invalid throws entry for ${owner.kind} ${owner.id}: expected error id string or Error helper, got ${got}`
334
+ );
335
+ }
336
+ __name(invalidThrowsEntryError, "invalidThrowsEntryError");
337
+ function toErrorIdList(owner, list) {
338
+ const ids = [];
339
+ const seen = /* @__PURE__ */ new Set();
340
+ for (const item of list) {
341
+ let id2;
342
+ if (typeof item === "string") {
343
+ if (item.trim().length === 0) {
344
+ throw invalidThrowsEntryError(owner, item);
273
345
  }
274
- return instance ??= new this.alsClass();
275
- }, "ensure");
276
- return {
277
- getStore: /* @__PURE__ */ __name(() => ensure().getStore(), "getStore"),
278
- run: /* @__PURE__ */ __name((store2, callback) => ensure().run(store2, callback), "run")
279
- };
346
+ id2 = item;
347
+ } else if (isError(item)) {
348
+ id2 = item.id;
349
+ if (typeof id2 !== "string" || id2.trim().length === 0) {
350
+ throw invalidThrowsEntryError(owner, item);
351
+ }
352
+ } else {
353
+ throw invalidThrowsEntryError(owner, item);
354
+ }
355
+ if (seen.has(id2)) continue;
356
+ seen.add(id2);
357
+ ids.push(id2);
280
358
  }
359
+ return ids;
360
+ }
361
+ __name(toErrorIdList, "toErrorIdList");
362
+ function normalizeThrows(owner, throwsList) {
363
+ if (throwsList === void 0) return void 0;
364
+ return toErrorIdList(owner, throwsList);
365
+ }
366
+ __name(normalizeThrows, "normalizeThrows");
367
+
368
+ // src/definers/defineTask.ts
369
+ function defineTask(taskConfig) {
370
+ const filePath = getCallerFile();
371
+ const id2 = taskConfig.id;
372
+ return {
373
+ [symbolTask]: true,
374
+ [symbolFilePath]: filePath,
375
+ id: id2,
376
+ dependencies: taskConfig.dependencies || {},
377
+ middleware: taskConfig.middleware || [],
378
+ run: taskConfig.run,
379
+ inputSchema: taskConfig.inputSchema,
380
+ resultSchema: taskConfig.resultSchema,
381
+ meta: taskConfig.meta || {},
382
+ tags: taskConfig.tags || [],
383
+ throws: normalizeThrows({ kind: "task", id: id2 }, taskConfig.throws),
384
+ // autorun,
385
+ optional() {
386
+ return {
387
+ inner: this,
388
+ [symbolOptionalDependency]: true
389
+ };
390
+ }
391
+ };
392
+ }
393
+ __name(defineTask, "defineTask");
394
+ defineTask.phantom = (taskConfig) => {
395
+ const taskDef = defineTask({
396
+ ...taskConfig,
397
+ run: /* @__PURE__ */ __name(async (_input) => {
398
+ return void 0;
399
+ }, "run")
400
+ });
401
+ taskDef[symbolPhantomTask] = true;
402
+ return taskDef;
281
403
  };
282
404
 
405
+ // src/definers/defineHook.ts
406
+ function defineHook(hookDef) {
407
+ const filePath = getCallerFile();
408
+ return {
409
+ [symbolHook]: true,
410
+ [symbolFilePath]: filePath,
411
+ id: hookDef.id,
412
+ dependencies: hookDef.dependencies || {},
413
+ on: hookDef.on,
414
+ order: hookDef.order,
415
+ run: hookDef.run,
416
+ meta: hookDef.meta || {},
417
+ tags: hookDef.tags || []
418
+ };
419
+ }
420
+ __name(defineHook, "defineHook");
421
+
283
422
  // src/errors.ts
284
423
  var errors_exports = {};
285
424
  __export(errors_exports, {
@@ -321,9 +460,10 @@ var RunnerError = class extends Error {
321
460
  var _a;
322
461
  _a = symbolError;
323
462
  var ErrorHelper = class {
324
- constructor(definition) {
463
+ constructor(definition, filePath) {
325
464
  this.definition = definition;
326
465
  this[_a] = true;
466
+ this[symbolFilePath] = filePath;
327
467
  }
328
468
  static {
329
469
  __name(this, "ErrorHelper");
@@ -346,11 +486,15 @@ var ErrorHelper = class {
346
486
  };
347
487
  }
348
488
  };
349
- function defineError(definition) {
489
+ function defineError(definition, filePath) {
350
490
  if (!definition.format) {
351
491
  definition.format = (data) => `${JSON.stringify(data)}`;
352
492
  }
353
- return new ErrorHelper(definition);
493
+ const resolvedFilePath = filePath ?? getCallerFile();
494
+ return new ErrorHelper(
495
+ definition,
496
+ resolvedFilePath
497
+ );
354
498
  }
355
499
  __name(defineError, "defineError");
356
500
 
@@ -388,14 +532,17 @@ function makeErrorBuilder(state) {
388
532
  return makeErrorBuilder(next);
389
533
  },
390
534
  build() {
391
- return defineError({
392
- id: state.id,
393
- serialize: state.serialize,
394
- parse: state.parse,
395
- dataSchema: state.dataSchema,
396
- format: state.format,
397
- meta: state.meta
398
- });
535
+ return defineError(
536
+ {
537
+ id: state.id,
538
+ serialize: state.serialize,
539
+ parse: state.parse,
540
+ dataSchema: state.dataSchema,
541
+ format: state.format,
542
+ meta: state.meta
543
+ },
544
+ state.filePath
545
+ );
399
546
  }
400
547
  };
401
548
  return builder;
@@ -404,8 +551,10 @@ __name(makeErrorBuilder, "makeErrorBuilder");
404
551
 
405
552
  // src/definers/builders/error/index.ts
406
553
  function errorBuilder(id2) {
554
+ const filePath = getCallerFile();
407
555
  const initial = Object.freeze({
408
556
  id: id2,
557
+ filePath,
409
558
  serialize: void 0,
410
559
  parse: void 0,
411
560
  dataSchema: void 0,
@@ -416,103 +565,87 @@ function errorBuilder(id2) {
416
565
  __name(errorBuilder, "errorBuilder");
417
566
  var error = errorBuilder;
418
567
 
419
- // src/errors.ts
420
- var duplicateRegistrationError = error("runner.errors.duplicateRegistration").format(
421
- ({ 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.`
422
- ).build();
423
- var dependencyNotFoundError = error("runner.errors.dependencyNotFound").format(
424
- ({ key }) => `Dependency ${key.toString()} not found. Did you forget to register it through a resource?`
425
- ).build();
426
- var unknownItemTypeError = error(
427
- "runner.errors.unknownItemType"
428
- ).format(
429
- ({ item }) => `Unknown item type: ${String(
430
- item
431
- )}. Please ensure you are not using different versions of '@bluelibs/runner'`
432
- ).build();
433
- var contextError = error(
434
- "runner.errors.context"
435
- ).format(({ details }) => details ?? "Context error").build();
436
- var circularDependenciesError = error("runner.errors.circularDependencies").format(({ cycles }) => {
437
- const cycleDetails = cycles.map((cycle) => ` \u2022 ${cycle}`).join("\n");
438
- const hasMiddleware = cycles.some((cycle) => cycle.includes("middleware"));
439
- let guidance = "\n\nTo resolve circular dependencies:";
440
- guidance += "\n \u2022 Consider refactoring to reduce coupling between components";
441
- guidance += "\n \u2022 Extract shared dependencies into separate resources";
442
- if (hasMiddleware) {
443
- guidance += "\n \u2022 For middleware: you can filter out tasks/resources using everywhere(fn)";
444
- guidance += "\n \u2022 Consider using events for communication instead of direct dependencies";
445
- }
446
- return `Circular dependencies detected:
447
- ${cycleDetails}${guidance}`;
448
- }).build();
449
- var eventNotFoundError = error(
450
- "runner.errors.eventNotFound"
451
- ).format(
452
- ({ id: id2 }) => `Event "${id2.toString()}" not found. Did you forget to register it?`
453
- ).build();
454
- var resourceNotFoundError = error(
455
- "runner.errors.resourceNotFound"
456
- ).format(
457
- ({ id: id2 }) => `Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
458
- ).build();
459
- var middlewareNotRegisteredError = error("runner.errors.middlewareNotRegistered").format(
460
- ({ type, source, middlewareId }) => `Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
461
- ).build();
462
- var tagNotFoundError = error(
463
- "runner.errors.tagNotFound"
464
- ).format(
465
- ({ id: id2 }) => `Tag "${id2}" not registered. Did you forget to register it inside a resource?`
466
- ).build();
467
- var lockedError = error(
468
- "runner.errors.locked"
469
- ).format(
470
- ({ what }) => `Cannot modify the ${what.toString()} when it is locked.`
471
- ).build();
472
- var storeAlreadyInitializedError = error(
473
- "runner.errors.storeAlreadyInitialized"
474
- ).format(() => "Store already initialized. Cannot reinitialize.").build();
475
- var validationError = error("runner.errors.validation").format(({ subject, id: id2, originalError }) => {
476
- const errorMessage = originalError instanceof Error ? originalError.message : String(originalError);
477
- return `${subject} validation failed for ${id2.toString()}: ${errorMessage}`;
478
- }).build();
479
- var eventCycleError = error("runner.errors.eventCycle").format(({ path }) => {
480
- const chain = path.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
481
- return `Event emission cycle detected:
482
- ${chain}
483
-
484
- Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags.`;
485
- }).build();
486
- var eventEmissionCycleError = error("runner.errors.eventEmissionCycle").format(({ cycles }) => {
487
- const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
488
- return `Event emission cycles detected between hooks and events:
489
- ${list}
490
-
491
- This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags.`;
492
- }).build();
493
- var platformUnsupportedFunctionError = error("runner.errors.platformUnsupportedFunction").format(
494
- ({ functionName }) => `Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
495
- ).build();
496
- var cancellationError = error(
497
- "runner.errors.cancellation"
498
- ).format(({ reason }) => reason || "Operation cancelled").build();
499
- var tunnelOwnershipConflictError = error("runner.errors.tunnelOwnershipConflict").format(
500
- ({ 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.`
501
- ).build();
502
- var phantomTaskNotRoutedError = error("runner.errors.phantomTaskNotRouted").format(
503
- ({ 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).`
504
- ).build();
505
- var taskNotRegisteredError = error("runner.errors.taskNotRegistered").format(
506
- ({ taskId }) => `Task "${taskId}" is not registered in the Store. This is an internal error\u2014ensure the task is registered before execution.`
507
- ).build();
508
- var builderIncompleteError = error("runner.errors.builderIncomplete").format(({ type, builderId, missingFields }) => {
509
- const typeLabel = type === "hook" ? "Hook" : type === "task-middleware" ? "Task middleware" : "Resource middleware";
510
- return `${typeLabel} "${builderId}" is incomplete. Missing required: ${missingFields.join(", ")}. Call ${missingFields.map((f) => `.${f}()`).join(" and ")} before .build().`;
511
- }).build();
512
- function isCancellationError(err) {
513
- return cancellationError.is(err);
568
+ // src/platform/adapters/node-als.ts
569
+ async function loadAsyncLocalStorageClass() {
570
+ const mod = __require("async_hooks");
571
+ return mod.AsyncLocalStorage;
514
572
  }
515
- __name(isCancellationError, "isCancellationError");
573
+ __name(loadAsyncLocalStorageClass, "loadAsyncLocalStorageClass");
574
+
575
+ // src/platform/adapters/node.ts
576
+ var NodePlatformAdapter = class {
577
+ constructor() {
578
+ this.id = "node";
579
+ this.setTimeout = globalThis.setTimeout;
580
+ this.clearTimeout = globalThis.clearTimeout;
581
+ }
582
+ static {
583
+ __name(this, "NodePlatformAdapter");
584
+ }
585
+ async init() {
586
+ this.alsClass = await loadAsyncLocalStorageClass();
587
+ }
588
+ onUncaughtException(handler) {
589
+ const h = /* @__PURE__ */ __name((error2) => handler(error2), "h");
590
+ process.on("uncaughtException", h);
591
+ return () => process.off("uncaughtException", h);
592
+ }
593
+ onUnhandledRejection(handler) {
594
+ const h = /* @__PURE__ */ __name((reason) => handler(reason), "h");
595
+ process.on("unhandledRejection", h);
596
+ return () => process.off("unhandledRejection", h);
597
+ }
598
+ onShutdownSignal(handler) {
599
+ process.on("SIGINT", handler);
600
+ process.on("SIGTERM", handler);
601
+ return () => {
602
+ process.off("SIGINT", handler);
603
+ process.off("SIGTERM", handler);
604
+ };
605
+ }
606
+ exit(code) {
607
+ process.exit(code);
608
+ }
609
+ getEnv(key) {
610
+ return process.env[key];
611
+ }
612
+ hasAsyncLocalStorage() {
613
+ return true;
614
+ }
615
+ createAsyncLocalStorage() {
616
+ let instance;
617
+ const ensure = /* @__PURE__ */ __name(() => {
618
+ if (!this.alsClass) {
619
+ let als;
620
+ const forceNoop = typeof process !== "undefined" && !!process.env?.RUNNER_FORCE_NOOP_ALS;
621
+ if (!forceNoop) {
622
+ try {
623
+ const mod = __require("async_hooks");
624
+ als = mod?.AsyncLocalStorage;
625
+ } catch (_) {
626
+ als = void 0;
627
+ }
628
+ }
629
+ this.alsClass = als || class NoopAsyncLocalStorage {
630
+ static {
631
+ __name(this, "NoopAsyncLocalStorage");
632
+ }
633
+ getStore() {
634
+ return void 0;
635
+ }
636
+ run(_store, callback) {
637
+ return callback();
638
+ }
639
+ };
640
+ }
641
+ return instance ??= new this.alsClass();
642
+ }, "ensure");
643
+ return {
644
+ getStore: /* @__PURE__ */ __name(() => ensure().getStore(), "getStore"),
645
+ run: /* @__PURE__ */ __name((store2, callback) => ensure().run(store2, callback), "run")
646
+ };
647
+ }
648
+ };
516
649
 
517
650
  // src/platform/adapters/browser.ts
518
651
  var BrowserPlatformAdapter = class {
@@ -805,14 +938,11 @@ function setPlatform(adapter) {
805
938
  adapter.id;
806
939
  }
807
940
  __name(setPlatform, "setPlatform");
808
- function isNode() {
809
- return detectEnvironment() === "node";
810
- }
811
- __name(isNode, "isNode");
812
941
  var PlatformAdapter = class {
942
+ static {
943
+ __name(this, "PlatformAdapter");
944
+ }
813
945
  constructor(env) {
814
- this.setTimeout = globalThis.setTimeout;
815
- this.clearTimeout = globalThis.clearTimeout;
816
946
  const kind = env ?? detectEnvironment();
817
947
  this.env = kind;
818
948
  switch (kind) {
@@ -832,9 +962,8 @@ var PlatformAdapter = class {
832
962
  this.inner = new UniversalPlatformAdapter();
833
963
  }
834
964
  this.id = this.inner.id;
835
- }
836
- static {
837
- __name(this, "PlatformAdapter");
965
+ this.setTimeout = this.inner.setTimeout;
966
+ this.clearTimeout = this.inner.clearTimeout;
838
967
  }
839
968
  async init() {
840
969
  return this.inner.init();
@@ -862,209 +991,103 @@ var PlatformAdapter = class {
862
991
  }
863
992
  };
864
993
 
865
- // src/tools/getCallerFile.ts
866
- function getCallerFile() {
867
- const originalPrepare = Error.prepareStackTrace;
868
- try {
869
- if (isNode()) {
870
- const err = new Error();
871
- Error.prepareStackTrace = (_err, stack2) => stack2;
872
- const stack = err.stack;
873
- stack.shift();
874
- stack.shift();
875
- const candidate = stack.shift();
876
- const file = candidate?.getFileName?.();
877
- return file;
878
- }
879
- return "unknown";
880
- } finally {
881
- Error.prepareStackTrace = originalPrepare;
882
- }
883
- }
884
- __name(getCallerFile, "getCallerFile");
885
-
886
- // src/defs.ts
887
- var defs_exports = {};
888
- __export(defs_exports, {
889
- RunnerMode: () => RunnerMode,
890
- isOneOf: () => isOneOf,
891
- onAnyOf: () => onAnyOf,
892
- symbolAsyncContext: () => symbolAsyncContext,
893
- symbolError: () => symbolError,
894
- symbolEvent: () => symbolEvent,
895
- symbolFilePath: () => symbolFilePath,
896
- symbolHook: () => symbolHook,
897
- symbolMiddleware: () => symbolMiddleware,
898
- symbolMiddlewareConfigured: () => symbolMiddlewareConfigured,
899
- symbolOptionalDependency: () => symbolOptionalDependency,
900
- symbolPhantomTask: () => symbolPhantomTask,
901
- symbolResource: () => symbolResource,
902
- symbolResourceForkedFrom: () => symbolResourceForkedFrom,
903
- symbolResourceMiddleware: () => symbolResourceMiddleware,
904
- symbolResourceWithConfig: () => symbolResourceWithConfig,
905
- symbolTag: () => symbolTag,
906
- symbolTagConfigured: () => symbolTagConfigured,
907
- symbolTask: () => symbolTask,
908
- symbolTaskMiddleware: () => symbolTaskMiddleware,
909
- symbolTunneledBy: () => symbolTunneledBy
910
- });
911
-
912
- // src/types/event.ts
913
- function onAnyOf(...defs) {
914
- return defs;
915
- }
916
- __name(onAnyOf, "onAnyOf");
917
- function isOneOf(emission, defs) {
918
- return defs.some((d) => d.id === emission.id);
919
- }
920
- __name(isOneOf, "isOneOf");
921
-
922
- // src/types/runner.ts
923
- var RunnerMode = /* @__PURE__ */ ((RunnerMode2) => {
924
- RunnerMode2["TEST"] = "test";
925
- RunnerMode2["DEV"] = "dev";
926
- RunnerMode2["PROD"] = "prod";
927
- return RunnerMode2;
928
- })(RunnerMode || {});
929
-
930
- // src/definers/tools.ts
931
- function isTask(definition) {
932
- return definition && definition[symbolTask];
933
- }
934
- __name(isTask, "isTask");
935
- function isResource(definition) {
936
- return definition && definition[symbolResource];
937
- }
938
- __name(isResource, "isResource");
939
- function isResourceWithConfig(definition) {
940
- return definition && definition[symbolResourceWithConfig];
941
- }
942
- __name(isResourceWithConfig, "isResourceWithConfig");
943
- function isEvent(definition) {
944
- return definition && definition[symbolEvent];
945
- }
946
- __name(isEvent, "isEvent");
947
- function isHook(definition) {
948
- return definition && definition[symbolHook];
949
- }
950
- __name(isHook, "isHook");
951
- function isTaskMiddleware(definition) {
952
- return definition && definition[symbolTaskMiddleware];
953
- }
954
- __name(isTaskMiddleware, "isTaskMiddleware");
955
- function isResourceMiddleware(definition) {
956
- return definition && definition[symbolResourceMiddleware];
957
- }
958
- __name(isResourceMiddleware, "isResourceMiddleware");
959
- function isTag(definition) {
960
- return definition && definition[symbolTag];
961
- }
962
- __name(isTag, "isTag");
963
- function isOptional(definition) {
964
- return definition && definition[symbolOptionalDependency];
965
- }
966
- __name(isOptional, "isOptional");
967
- function isError(definition) {
968
- return Boolean(definition && definition[symbolError]);
969
- }
970
- __name(isError, "isError");
971
- function isAsyncContext(definition) {
972
- return Boolean(definition && definition[symbolAsyncContext]);
973
- }
974
- __name(isAsyncContext, "isAsyncContext");
975
-
976
- // src/tools/throws.ts
977
- function invalidThrowsEntryError(owner, item) {
978
- const got = item === null ? "null" : Array.isArray(item) ? "array" : typeof item === "object" ? "object" : typeof item;
979
- return new Error(
980
- `Invalid throws entry for ${owner.kind} ${owner.id}: expected error id string or Error helper, got ${got}`
981
- );
982
- }
983
- __name(invalidThrowsEntryError, "invalidThrowsEntryError");
984
- function toErrorIdList(owner, list) {
985
- const ids = [];
986
- const seen = /* @__PURE__ */ new Set();
987
- for (const item of list) {
988
- let id2;
989
- if (typeof item === "string") {
990
- if (item.trim().length === 0) {
991
- throw invalidThrowsEntryError(owner, item);
992
- }
993
- id2 = item;
994
- } else if (isError(item)) {
995
- id2 = item.id;
996
- if (typeof id2 !== "string" || id2.trim().length === 0) {
997
- throw invalidThrowsEntryError(owner, item);
998
- }
999
- } else {
1000
- throw invalidThrowsEntryError(owner, item);
1001
- }
1002
- if (seen.has(id2)) continue;
1003
- seen.add(id2);
1004
- ids.push(id2);
994
+ // src/errors.ts
995
+ var duplicateRegistrationError = error("runner.errors.duplicateRegistration").format(
996
+ ({ 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.`
997
+ ).build();
998
+ var dependencyNotFoundError = error("runner.errors.dependencyNotFound").format(
999
+ ({ key }) => `Dependency ${key.toString()} not found. Did you forget to register it through a resource?`
1000
+ ).build();
1001
+ var unknownItemTypeError = error(
1002
+ "runner.errors.unknownItemType"
1003
+ ).format(
1004
+ ({ item }) => `Unknown item type: ${String(
1005
+ item
1006
+ )}. Please ensure you are not using different versions of '@bluelibs/runner'`
1007
+ ).build();
1008
+ var contextError = error(
1009
+ "runner.errors.context"
1010
+ ).format(({ details }) => details ?? "Context error").build();
1011
+ var circularDependenciesError = error("runner.errors.circularDependencies").format(({ cycles }) => {
1012
+ const cycleDetails = cycles.map((cycle) => ` \u2022 ${cycle}`).join("\n");
1013
+ const hasMiddleware = cycles.some((cycle) => cycle.includes("middleware"));
1014
+ let guidance = "\n\nTo resolve circular dependencies:";
1015
+ guidance += "\n \u2022 Consider refactoring to reduce coupling between components";
1016
+ guidance += "\n \u2022 Extract shared dependencies into separate resources";
1017
+ if (hasMiddleware) {
1018
+ guidance += "\n \u2022 For middleware: you can filter out tasks/resources using everywhere(fn)";
1019
+ guidance += "\n \u2022 Consider using events for communication instead of direct dependencies";
1005
1020
  }
1006
- return ids;
1007
- }
1008
- __name(toErrorIdList, "toErrorIdList");
1009
- function normalizeThrows(owner, throwsList) {
1010
- if (throwsList === void 0) return void 0;
1011
- return toErrorIdList(owner, throwsList);
1012
- }
1013
- __name(normalizeThrows, "normalizeThrows");
1021
+ return `Circular dependencies detected:
1022
+ ${cycleDetails}${guidance}`;
1023
+ }).build();
1024
+ var eventNotFoundError = error(
1025
+ "runner.errors.eventNotFound"
1026
+ ).format(
1027
+ ({ id: id2 }) => `Event "${id2.toString()}" not found. Did you forget to register it?`
1028
+ ).build();
1029
+ var resourceNotFoundError = error(
1030
+ "runner.errors.resourceNotFound"
1031
+ ).format(
1032
+ ({ id: id2 }) => `Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
1033
+ ).build();
1034
+ var middlewareNotRegisteredError = error("runner.errors.middlewareNotRegistered").format(
1035
+ ({ type, source, middlewareId }) => `Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
1036
+ ).build();
1037
+ var tagNotFoundError = error(
1038
+ "runner.errors.tagNotFound"
1039
+ ).format(
1040
+ ({ id: id2 }) => `Tag "${id2}" not registered. Did you forget to register it inside a resource?`
1041
+ ).build();
1042
+ var lockedError = error(
1043
+ "runner.errors.locked"
1044
+ ).format(
1045
+ ({ what }) => `Cannot modify the ${what.toString()} when it is locked.`
1046
+ ).build();
1047
+ var storeAlreadyInitializedError = error(
1048
+ "runner.errors.storeAlreadyInitialized"
1049
+ ).format(() => "Store already initialized. Cannot reinitialize.").build();
1050
+ var validationError = error("runner.errors.validation").format(({ subject, id: id2, originalError }) => {
1051
+ const errorMessage = originalError instanceof Error ? originalError.message : String(originalError);
1052
+ return `${subject} validation failed for ${id2.toString()}: ${errorMessage}`;
1053
+ }).build();
1054
+ var eventCycleError = error("runner.errors.eventCycle").format(({ path }) => {
1055
+ const chain = path.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
1056
+ return `Event emission cycle detected:
1057
+ ${chain}
1014
1058
 
1015
- // src/definers/defineTask.ts
1016
- function defineTask(taskConfig) {
1017
- const filePath = getCallerFile();
1018
- const id2 = taskConfig.id;
1019
- return {
1020
- [symbolTask]: true,
1021
- [symbolFilePath]: filePath,
1022
- id: id2,
1023
- dependencies: taskConfig.dependencies || {},
1024
- middleware: taskConfig.middleware || [],
1025
- run: taskConfig.run,
1026
- inputSchema: taskConfig.inputSchema,
1027
- resultSchema: taskConfig.resultSchema,
1028
- meta: taskConfig.meta || {},
1029
- tags: taskConfig.tags || [],
1030
- throws: normalizeThrows({ kind: "task", id: id2 }, taskConfig.throws),
1031
- // autorun,
1032
- optional() {
1033
- return {
1034
- inner: this,
1035
- [symbolOptionalDependency]: true
1036
- };
1037
- }
1038
- };
1039
- }
1040
- __name(defineTask, "defineTask");
1041
- defineTask.phantom = (taskConfig) => {
1042
- const taskDef = defineTask({
1043
- ...taskConfig,
1044
- run: /* @__PURE__ */ __name(async (_input) => {
1045
- return void 0;
1046
- }, "run")
1047
- });
1048
- taskDef[symbolPhantomTask] = true;
1049
- return taskDef;
1050
- };
1059
+ Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags.`;
1060
+ }).build();
1061
+ var eventEmissionCycleError = error("runner.errors.eventEmissionCycle").format(({ cycles }) => {
1062
+ const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
1063
+ return `Event emission cycles detected between hooks and events:
1064
+ ${list}
1051
1065
 
1052
- // src/definers/defineHook.ts
1053
- function defineHook(hookDef) {
1054
- const filePath = getCallerFile();
1055
- return {
1056
- [symbolHook]: true,
1057
- [symbolFilePath]: filePath,
1058
- id: hookDef.id,
1059
- dependencies: hookDef.dependencies || {},
1060
- on: hookDef.on,
1061
- order: hookDef.order,
1062
- run: hookDef.run,
1063
- meta: hookDef.meta || {},
1064
- tags: hookDef.tags || []
1065
- };
1066
+ This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags.`;
1067
+ }).build();
1068
+ var platformUnsupportedFunctionError = error("runner.errors.platformUnsupportedFunction").format(
1069
+ ({ functionName }) => `Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
1070
+ ).build();
1071
+ var cancellationError = error(
1072
+ "runner.errors.cancellation"
1073
+ ).format(({ reason }) => reason || "Operation cancelled").build();
1074
+ var tunnelOwnershipConflictError = error("runner.errors.tunnelOwnershipConflict").format(
1075
+ ({ 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.`
1076
+ ).build();
1077
+ var phantomTaskNotRoutedError = error("runner.errors.phantomTaskNotRouted").format(
1078
+ ({ 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).`
1079
+ ).build();
1080
+ var taskNotRegisteredError = error("runner.errors.taskNotRegistered").format(
1081
+ ({ taskId }) => `Task "${taskId}" is not registered in the Store. This is an internal error\u2014ensure the task is registered before execution.`
1082
+ ).build();
1083
+ var builderIncompleteError = error("runner.errors.builderIncomplete").format(({ type, builderId, missingFields }) => {
1084
+ const typeLabel = type === "hook" ? "Hook" : type === "task-middleware" ? "Task middleware" : "Resource middleware";
1085
+ return `${typeLabel} "${builderId}" is incomplete. Missing required: ${missingFields.join(", ")}. Call ${missingFields.map((f) => `.${f}()`).join(" and ")} before .build().`;
1086
+ }).build();
1087
+ function isCancellationError(err) {
1088
+ return cancellationError.is(err);
1066
1089
  }
1067
- __name(defineHook, "defineHook");
1090
+ __name(isCancellationError, "isCancellationError");
1068
1091
 
1069
1092
  // src/definers/resourceFork.ts
1070
1093
  function resolveReId(forkId, options) {
@@ -1439,7 +1462,7 @@ function defineOverride(base, patch) {
1439
1462
  ...patch,
1440
1463
  id: base.id
1441
1464
  };
1442
- if (base.on !== void 0) {
1465
+ if ("on" in base && base.on !== void 0) {
1443
1466
  overridden.on = base.on;
1444
1467
  }
1445
1468
  return overridden;
@@ -1559,6 +1582,309 @@ var SymbolPolicy = /* @__PURE__ */ ((SymbolPolicy2) => {
1559
1582
  SymbolPolicy2["Disabled"] = "Disabled";
1560
1583
  return SymbolPolicy2;
1561
1584
  })(SymbolPolicy || {});
1585
+ var SymbolPolicyErrorMessage = /* @__PURE__ */ ((SymbolPolicyErrorMessage2) => {
1586
+ SymbolPolicyErrorMessage2["GlobalSymbolsNotAllowed"] = "Global symbols are not allowed";
1587
+ SymbolPolicyErrorMessage2["SymbolsNotAllowed"] = "Symbols are not allowed";
1588
+ SymbolPolicyErrorMessage2["UnsupportedSymbolPolicy"] = "Unsupported symbol policy";
1589
+ return SymbolPolicyErrorMessage2;
1590
+ })(SymbolPolicyErrorMessage || {});
1591
+
1592
+ // src/serializer/binary-builtins.ts
1593
+ var INVALID_PAYLOAD_MESSAGE_PREFIX = "Invalid";
1594
+ var typedArrayTypeIds = [
1595
+ "Int8Array",
1596
+ "Uint8Array",
1597
+ "Uint8ClampedArray",
1598
+ "Int16Array",
1599
+ "Uint16Array",
1600
+ "Int32Array",
1601
+ "Uint32Array",
1602
+ "Float32Array",
1603
+ "Float64Array",
1604
+ "BigInt64Array",
1605
+ "BigUint64Array"
1606
+ ];
1607
+ var getTypedArrayConstructor = /* @__PURE__ */ __name((typeId) => {
1608
+ const value = globalThis[typeId];
1609
+ if (typeof value !== "function") {
1610
+ return null;
1611
+ }
1612
+ return value;
1613
+ }, "getTypedArrayConstructor");
1614
+ var getRuntimeBufferConstructor = /* @__PURE__ */ __name(() => {
1615
+ const value = globalThis.Buffer;
1616
+ if (typeof value !== "function") {
1617
+ return null;
1618
+ }
1619
+ const valueRecord = value;
1620
+ if (typeof valueRecord.from !== "function" || typeof valueRecord.isBuffer !== "function") {
1621
+ return null;
1622
+ }
1623
+ return value;
1624
+ }, "getRuntimeBufferConstructor");
1625
+ var isNodeBuffer = /* @__PURE__ */ __name((value) => {
1626
+ const runtimeBufferConstructor = getRuntimeBufferConstructor();
1627
+ if (!runtimeBufferConstructor) {
1628
+ return false;
1629
+ }
1630
+ return runtimeBufferConstructor.isBuffer(value);
1631
+ }, "isNodeBuffer");
1632
+ var assertBytePayload = /* @__PURE__ */ __name((payload, typeId) => {
1633
+ if (!Array.isArray(payload)) {
1634
+ throw new Error(`${INVALID_PAYLOAD_MESSAGE_PREFIX} ${typeId} payload`);
1635
+ }
1636
+ const bytes = new Array(payload.length);
1637
+ for (let index = 0; index < payload.length; index += 1) {
1638
+ const byteValue = payload[index];
1639
+ if (typeof byteValue !== "number" || !Number.isInteger(byteValue) || byteValue < 0 || byteValue > 255) {
1640
+ throw new Error(`${INVALID_PAYLOAD_MESSAGE_PREFIX} ${typeId} payload`);
1641
+ }
1642
+ bytes[index] = byteValue;
1643
+ }
1644
+ return bytes;
1645
+ }, "assertBytePayload");
1646
+ var toBytePayload = /* @__PURE__ */ __name((value) => Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength)), "toBytePayload");
1647
+ var bytesToArrayBuffer = /* @__PURE__ */ __name((payload, typeId) => {
1648
+ const bytes = assertBytePayload(payload, typeId);
1649
+ return Uint8Array.from(bytes).buffer;
1650
+ }, "bytesToArrayBuffer");
1651
+ var deserializeTypedArray = /* @__PURE__ */ __name((typeId, payload) => {
1652
+ const typedArrayConstructor = getTypedArrayConstructor(typeId);
1653
+ if (!typedArrayConstructor) {
1654
+ throw new Error(`${typeId} is not available in this runtime`);
1655
+ }
1656
+ const bytes = assertBytePayload(payload, typeId);
1657
+ const bytesPerElement = typedArrayConstructor.BYTES_PER_ELEMENT;
1658
+ if (bytes.length % bytesPerElement !== 0) {
1659
+ throw new Error(`${INVALID_PAYLOAD_MESSAGE_PREFIX} ${typeId} payload`);
1660
+ }
1661
+ const arrayBuffer = Uint8Array.from(bytes).buffer;
1662
+ return new typedArrayConstructor(arrayBuffer);
1663
+ }, "deserializeTypedArray");
1664
+ var createTypedArrayType = /* @__PURE__ */ __name((typeId) => ({
1665
+ id: typeId,
1666
+ is: /* @__PURE__ */ __name((value) => {
1667
+ const typedArrayConstructor = getTypedArrayConstructor(typeId);
1668
+ if (!typedArrayConstructor) {
1669
+ return false;
1670
+ }
1671
+ if (!(value instanceof typedArrayConstructor)) {
1672
+ return false;
1673
+ }
1674
+ if (typeId === "Uint8Array" && isNodeBuffer(value)) {
1675
+ return false;
1676
+ }
1677
+ return true;
1678
+ }, "is"),
1679
+ serialize: /* @__PURE__ */ __name((value) => toBytePayload(value), "serialize"),
1680
+ deserialize: /* @__PURE__ */ __name((payload) => deserializeTypedArray(typeId, payload), "deserialize"),
1681
+ strategy: "value"
1682
+ }), "createTypedArrayType");
1683
+ var ArrayBufferType = {
1684
+ id: "ArrayBuffer",
1685
+ is: /* @__PURE__ */ __name((value) => value instanceof ArrayBuffer, "is"),
1686
+ serialize: /* @__PURE__ */ __name((value) => Array.from(new Uint8Array(value)), "serialize"),
1687
+ deserialize: /* @__PURE__ */ __name((payload) => bytesToArrayBuffer(payload, "ArrayBuffer"), "deserialize"),
1688
+ strategy: "value"
1689
+ };
1690
+ var DataViewType = {
1691
+ id: "DataView",
1692
+ is: /* @__PURE__ */ __name((value) => value instanceof DataView, "is"),
1693
+ serialize: /* @__PURE__ */ __name((value) => toBytePayload(value), "serialize"),
1694
+ deserialize: /* @__PURE__ */ __name((payload) => new DataView(bytesToArrayBuffer(payload, "DataView")), "deserialize"),
1695
+ strategy: "value"
1696
+ };
1697
+ var BufferType = {
1698
+ id: "Buffer",
1699
+ is: /* @__PURE__ */ __name((value) => isNodeBuffer(value), "is"),
1700
+ serialize: /* @__PURE__ */ __name((value) => toBytePayload(value), "serialize"),
1701
+ deserialize: /* @__PURE__ */ __name((payload) => {
1702
+ const bytes = assertBytePayload(payload, "Buffer");
1703
+ const runtimeBufferConstructor = getRuntimeBufferConstructor();
1704
+ if (runtimeBufferConstructor) {
1705
+ return runtimeBufferConstructor.from(bytes);
1706
+ }
1707
+ return Uint8Array.from(bytes);
1708
+ }, "deserialize"),
1709
+ strategy: "value"
1710
+ };
1711
+ var typedArrayTypes = typedArrayTypeIds.map(
1712
+ (typeId) => createTypedArrayType(typeId)
1713
+ );
1714
+ var binaryBuiltInTypes = [
1715
+ ArrayBufferType,
1716
+ DataViewType,
1717
+ BufferType,
1718
+ ...typedArrayTypes
1719
+ ];
1720
+
1721
+ // src/serializer/error-url-builtins.ts
1722
+ var hasOwn = Object.prototype.hasOwnProperty;
1723
+ var errorReservedPropertyNames = /* @__PURE__ */ new Set([
1724
+ "name",
1725
+ "message",
1726
+ "stack",
1727
+ "cause"
1728
+ ]);
1729
+ var isRecord = /* @__PURE__ */ __name((value) => typeof value === "object" && value !== null && !Array.isArray(value), "isRecord");
1730
+ var isUnsafePropertyName = /* @__PURE__ */ __name((propertyName) => propertyName === "__proto__" || propertyName === "constructor" || propertyName === "prototype", "isUnsafePropertyName");
1731
+ var collectErrorCustomFields = /* @__PURE__ */ __name((error2) => {
1732
+ const customFields = {};
1733
+ for (const propertyName of Object.getOwnPropertyNames(error2)) {
1734
+ if (errorReservedPropertyNames.has(propertyName)) {
1735
+ continue;
1736
+ }
1737
+ if (isUnsafePropertyName(propertyName)) {
1738
+ continue;
1739
+ }
1740
+ const descriptor = Object.getOwnPropertyDescriptor(error2, propertyName);
1741
+ if (!descriptor || !("value" in descriptor)) {
1742
+ continue;
1743
+ }
1744
+ customFields[propertyName] = descriptor.value;
1745
+ }
1746
+ return customFields;
1747
+ }, "collectErrorCustomFields");
1748
+ var assertSerializedErrorPayload = /* @__PURE__ */ __name((value) => {
1749
+ if (!isRecord(value)) {
1750
+ throw new Error("Invalid Error payload");
1751
+ }
1752
+ const { name, message, stack, customFields } = value;
1753
+ if (typeof name !== "string" || typeof message !== "string") {
1754
+ throw new Error("Invalid Error payload");
1755
+ }
1756
+ if (stack !== void 0 && typeof stack !== "string") {
1757
+ throw new Error("Invalid Error payload");
1758
+ }
1759
+ if (customFields !== void 0 && !isRecord(customFields)) {
1760
+ throw new Error("Invalid Error payload");
1761
+ }
1762
+ const normalizedCustomFields = {};
1763
+ const customFieldEntries = Object.entries(customFields ?? {});
1764
+ for (const [propertyName, propertyValue] of customFieldEntries) {
1765
+ if (isUnsafePropertyName(propertyName)) {
1766
+ continue;
1767
+ }
1768
+ normalizedCustomFields[propertyName] = propertyValue;
1769
+ }
1770
+ return {
1771
+ name,
1772
+ message,
1773
+ stack,
1774
+ hasCause: hasOwn.call(value, "cause"),
1775
+ cause: value.cause,
1776
+ customFields: normalizedCustomFields
1777
+ };
1778
+ }, "assertSerializedErrorPayload");
1779
+ var getUrlConstructor = /* @__PURE__ */ __name(() => {
1780
+ const value = globalThis.URL;
1781
+ if (typeof value !== "function") {
1782
+ return null;
1783
+ }
1784
+ return value;
1785
+ }, "getUrlConstructor");
1786
+ var getUrlSearchParamsConstructor = /* @__PURE__ */ __name(() => {
1787
+ const value = globalThis.URLSearchParams;
1788
+ if (typeof value !== "function") {
1789
+ return null;
1790
+ }
1791
+ return value;
1792
+ }, "getUrlSearchParamsConstructor");
1793
+ var ErrorType = {
1794
+ id: "Error",
1795
+ is: /* @__PURE__ */ __name((value) => value instanceof Error, "is"),
1796
+ serialize: /* @__PURE__ */ __name((error2) => {
1797
+ const serializedErrorPayload = {
1798
+ name: error2.name,
1799
+ message: error2.message,
1800
+ customFields: collectErrorCustomFields(error2)
1801
+ };
1802
+ if (typeof error2.stack === "string") {
1803
+ serializedErrorPayload.stack = error2.stack;
1804
+ }
1805
+ if (hasOwn.call(error2, "cause")) {
1806
+ serializedErrorPayload.cause = error2.cause;
1807
+ }
1808
+ return serializedErrorPayload;
1809
+ }, "serialize"),
1810
+ deserialize: /* @__PURE__ */ __name((payload) => {
1811
+ const { name, message, stack, hasCause, cause, customFields } = assertSerializedErrorPayload(payload);
1812
+ const restoredError = new Error(message);
1813
+ restoredError.name = name;
1814
+ if (stack !== void 0) {
1815
+ Object.defineProperty(restoredError, "stack", {
1816
+ value: stack,
1817
+ writable: true,
1818
+ configurable: true,
1819
+ enumerable: false
1820
+ });
1821
+ }
1822
+ if (hasCause) {
1823
+ Object.defineProperty(restoredError, "cause", {
1824
+ value: cause,
1825
+ writable: true,
1826
+ configurable: true,
1827
+ enumerable: false
1828
+ });
1829
+ }
1830
+ for (const [propertyName, propertyValue] of Object.entries(customFields)) {
1831
+ if (errorReservedPropertyNames.has(propertyName)) {
1832
+ continue;
1833
+ }
1834
+ restoredError[propertyName] = propertyValue;
1835
+ }
1836
+ return restoredError;
1837
+ }, "deserialize")
1838
+ };
1839
+ var URLType = {
1840
+ id: "URL",
1841
+ is: /* @__PURE__ */ __name((value) => {
1842
+ const runtimeUrlConstructor = getUrlConstructor();
1843
+ if (!runtimeUrlConstructor) {
1844
+ return false;
1845
+ }
1846
+ return value instanceof runtimeUrlConstructor;
1847
+ }, "is"),
1848
+ serialize: /* @__PURE__ */ __name((value) => value.href, "serialize"),
1849
+ deserialize: /* @__PURE__ */ __name((payload) => {
1850
+ if (typeof payload !== "string") {
1851
+ throw new Error("Invalid URL payload");
1852
+ }
1853
+ const runtimeUrlConstructor = getUrlConstructor();
1854
+ if (!runtimeUrlConstructor) {
1855
+ throw new Error("URL is not available in this runtime");
1856
+ }
1857
+ return new runtimeUrlConstructor(payload);
1858
+ }, "deserialize"),
1859
+ strategy: "value"
1860
+ };
1861
+ var URLSearchParamsType = {
1862
+ id: "URLSearchParams",
1863
+ is: /* @__PURE__ */ __name((value) => {
1864
+ const runtimeUrlSearchParamsConstructor = getUrlSearchParamsConstructor();
1865
+ if (!runtimeUrlSearchParamsConstructor) {
1866
+ return false;
1867
+ }
1868
+ return value instanceof runtimeUrlSearchParamsConstructor;
1869
+ }, "is"),
1870
+ serialize: /* @__PURE__ */ __name((value) => value.toString(), "serialize"),
1871
+ deserialize: /* @__PURE__ */ __name((payload) => {
1872
+ if (typeof payload !== "string") {
1873
+ throw new Error("Invalid URLSearchParams payload");
1874
+ }
1875
+ const runtimeUrlSearchParamsConstructor = getUrlSearchParamsConstructor();
1876
+ if (!runtimeUrlSearchParamsConstructor) {
1877
+ throw new Error("URLSearchParams is not available in this runtime");
1878
+ }
1879
+ return new runtimeUrlSearchParamsConstructor(payload);
1880
+ }, "deserialize"),
1881
+ strategy: "value"
1882
+ };
1883
+ var errorAndUrlBuiltInTypes = [
1884
+ ErrorType,
1885
+ URLType,
1886
+ URLSearchParamsType
1887
+ ];
1562
1888
 
1563
1889
  // src/serializer/special-values.ts
1564
1890
  var serializeUndefined = /* @__PURE__ */ __name(() => ({
@@ -1764,7 +2090,9 @@ var builtInTypes = [
1764
2090
  UndefinedType,
1765
2091
  NonFiniteNumberType,
1766
2092
  BigIntType,
1767
- SymbolType
2093
+ SymbolType,
2094
+ ...errorAndUrlBuiltInTypes,
2095
+ ...binaryBuiltInTypes
1768
2096
  ];
1769
2097
 
1770
2098
  // src/serializer/type-registry.ts
@@ -2255,7 +2583,7 @@ var serializeTreeValue = /* @__PURE__ */ __name((value, context, depth, options)
2255
2583
  }, "serializeTreeValue");
2256
2584
 
2257
2585
  // src/serializer/deserializer.ts
2258
- var hasOwn = Object.prototype.hasOwnProperty;
2586
+ var hasOwn2 = Object.prototype.hasOwnProperty;
2259
2587
  var copyOwnProperties = /* @__PURE__ */ __name((target, source, unsafeKeys) => {
2260
2588
  const descriptors = Object.getOwnPropertyDescriptors(source);
2261
2589
  for (const key of Object.keys(descriptors)) {
@@ -2336,7 +2664,7 @@ var deserializeValue = /* @__PURE__ */ __name((value, context, depth, options) =
2336
2664
  const obj = {};
2337
2665
  const source = value;
2338
2666
  for (const key in source) {
2339
- if (!hasOwn.call(source, key)) {
2667
+ if (!hasOwn2.call(source, key)) {
2340
2668
  continue;
2341
2669
  }
2342
2670
  if (isUnsafeKey(key, options.unsafeKeys)) {
@@ -2381,7 +2709,7 @@ var resolveReference = /* @__PURE__ */ __name((id2, context, depth, options) =>
2381
2709
  context.resolved.set(id2, target);
2382
2710
  const source = node.value;
2383
2711
  for (const key in source) {
2384
- if (!hasOwn.call(source, key)) {
2712
+ if (!hasOwn2.call(source, key)) {
2385
2713
  continue;
2386
2714
  }
2387
2715
  if (isUnsafeKey(key, options.unsafeKeys)) {
@@ -2453,7 +2781,7 @@ var mergePlaceholder = /* @__PURE__ */ __name((placeholder, result, unsafeKeys)
2453
2781
  const target = placeholder;
2454
2782
  const source = result;
2455
2783
  for (const key in source) {
2456
- if (!hasOwn.call(source, key)) {
2784
+ if (!hasOwn2.call(source, key)) {
2457
2785
  continue;
2458
2786
  }
2459
2787
  if (isUnsafeKey(key, unsafeKeys)) {
@@ -2486,7 +2814,7 @@ var deserializeLegacy = /* @__PURE__ */ __name((value, depth, options) => {
2486
2814
  const obj = {};
2487
2815
  const source = value;
2488
2816
  for (const key in source) {
2489
- if (!hasOwn.call(source, key)) {
2817
+ if (!hasOwn2.call(source, key)) {
2490
2818
  continue;
2491
2819
  }
2492
2820
  if (isUnsafeKey(key, options.unsafeKeys)) {
@@ -2497,6 +2825,26 @@ var deserializeLegacy = /* @__PURE__ */ __name((value, depth, options) => {
2497
2825
  return obj;
2498
2826
  }, "deserializeLegacy");
2499
2827
 
2828
+ // src/serializer/option-normalizers.ts
2829
+ var normalizeMaxDepth = /* @__PURE__ */ __name((value, fallback) => {
2830
+ if (value === Number.POSITIVE_INFINITY) {
2831
+ return Number.POSITIVE_INFINITY;
2832
+ }
2833
+ if (typeof value === "number" && Number.isFinite(value) && value >= 0) {
2834
+ return Math.floor(value);
2835
+ }
2836
+ return fallback;
2837
+ }, "normalizeMaxDepth");
2838
+ var normalizeMaxRegExpPatternLength = /* @__PURE__ */ __name((value, fallback) => {
2839
+ if (value === Number.POSITIVE_INFINITY) {
2840
+ return Number.POSITIVE_INFINITY;
2841
+ }
2842
+ if (typeof value === "number" && Number.isFinite(value) && value > 0) {
2843
+ return Math.floor(value);
2844
+ }
2845
+ return fallback;
2846
+ }, "normalizeMaxRegExpPatternLength");
2847
+
2500
2848
  // src/serializer/Serializer.ts
2501
2849
  var GRAPH_VERSION = 1;
2502
2850
  var DEFAULT_MAX_DEPTH = 1e3;
@@ -2532,10 +2880,11 @@ var Serializer = class {
2532
2880
  return check(pattern, index);
2533
2881
  }, "isBoundedQuantifier");
2534
2882
  this.indent = options.pretty ? 2 : void 0;
2535
- const maxDepth = options.maxDepth;
2536
- this.maxDepth = typeof maxDepth === "number" && Number.isFinite(maxDepth) && maxDepth >= 0 ? Math.floor(maxDepth) : DEFAULT_MAX_DEPTH;
2537
- const maxPatternLength = options.maxRegExpPatternLength;
2538
- 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;
2883
+ this.maxDepth = normalizeMaxDepth(options.maxDepth, DEFAULT_MAX_DEPTH);
2884
+ this.maxRegExpPatternLength = normalizeMaxRegExpPatternLength(
2885
+ options.maxRegExpPatternLength,
2886
+ DEFAULT_MAX_REGEXP_PATTERN_LENGTH
2887
+ );
2539
2888
  this.allowUnsafeRegExp = options.allowUnsafeRegExp ?? false;
2540
2889
  this.unsafeKeys = DEFAULT_UNSAFE_KEYS;
2541
2890
  this.typeRegistry = new TypeRegistry({
@@ -2670,13 +3019,6 @@ var Serializer = class {
2670
3019
  }
2671
3020
  };
2672
3021
 
2673
- // src/serializer/index.ts
2674
- var defaultSerializer = new Serializer();
2675
- function getDefaultSerializer() {
2676
- return defaultSerializer;
2677
- }
2678
- __name(getDefaultSerializer, "getDefaultSerializer");
2679
-
2680
3022
  // src/definers/defineAsyncContext.ts
2681
3023
  var platform = getPlatform();
2682
3024
  var storage = platform.createAsyncLocalStorage();
@@ -2684,13 +3026,14 @@ function getCurrentStore() {
2684
3026
  return storage.getStore();
2685
3027
  }
2686
3028
  __name(getCurrentStore, "getCurrentStore");
2687
- function defineAsyncContext(def) {
3029
+ function defineAsyncContext(def, filePath) {
2688
3030
  if (!platform.hasAsyncLocalStorage()) {
2689
3031
  platformUnsupportedFunctionError.throw({
2690
3032
  functionName: `createAsyncLocalStorage: Cannot create context ${def.id}: no async storage available in this environment`
2691
3033
  });
2692
3034
  }
2693
3035
  const ctxId = def.id;
3036
+ const resolvedFilePath = filePath ?? getCallerFile();
2694
3037
  const use = /* @__PURE__ */ __name(() => {
2695
3038
  const store2 = getCurrentStore();
2696
3039
  if (!store2 || !store2.has(ctxId)) {
@@ -2707,10 +3050,11 @@ function defineAsyncContext(def) {
2707
3050
  map.set(ctxId, value);
2708
3051
  return storage.run(map, fn);
2709
3052
  }, "provide");
2710
- const serializer2 = getDefaultSerializer();
3053
+ const serializer2 = new Serializer();
2711
3054
  const api = {
2712
3055
  id: ctxId,
2713
3056
  [symbolAsyncContext]: true,
3057
+ [symbolFilePath]: resolvedFilePath,
2714
3058
  use,
2715
3059
  /* istanbul ignore next */
2716
3060
  provide(value, fn) {
@@ -3362,12 +3706,12 @@ var EventManager = class {
3362
3706
  data,
3363
3707
  timestamp: /* @__PURE__ */ new Date(),
3364
3708
  source,
3365
- meta: eventDefinition.meta || {},
3709
+ meta: { ...eventDefinition.meta || {} },
3366
3710
  stopPropagation: /* @__PURE__ */ __name(() => {
3367
3711
  propagationStopped = true;
3368
3712
  }, "stopPropagation"),
3369
3713
  isPropagationStopped: /* @__PURE__ */ __name(() => propagationStopped, "isPropagationStopped"),
3370
- tags: eventDefinition.tags
3714
+ tags: [...eventDefinition.tags]
3371
3715
  };
3372
3716
  const baseEmit = /* @__PURE__ */ __name(async (eventToEmit) => {
3373
3717
  if (allListeners.length === 0) {
@@ -3393,10 +3737,14 @@ var EventManager = class {
3393
3737
  if (!interceptor) {
3394
3738
  return baseEmit(eventToEmit);
3395
3739
  }
3396
- return interceptor(
3397
- (nextEvent) => runInterceptor(index + 1, nextEvent),
3398
- eventToEmit
3399
- );
3740
+ return interceptor((nextEvent) => {
3741
+ this.assertPropagationMethodsUnchanged(
3742
+ eventDefinition.id,
3743
+ eventToEmit,
3744
+ nextEvent
3745
+ );
3746
+ return runInterceptor(index + 1, nextEvent);
3747
+ }, eventToEmit);
3400
3748
  }, "runInterceptor");
3401
3749
  await runInterceptor(0, event2);
3402
3750
  return deepestEvent;
@@ -3507,21 +3855,24 @@ var EventManager = class {
3507
3855
  lockedError.throw({ what: "EventManager" });
3508
3856
  }
3509
3857
  }
3510
- /**
3511
- * Clears all listeners and interceptors.
3512
- * Call this to release references and free memory.
3513
- */
3514
- clear() {
3515
- this.registry.clear();
3516
- this.emissionInterceptors.length = 0;
3517
- this.hookInterceptors.length = 0;
3858
+ assertPropagationMethodsUnchanged(eventId, currentEvent, nextEvent) {
3859
+ if (nextEvent.stopPropagation !== currentEvent.stopPropagation || nextEvent.isPropagationStopped !== currentEvent.isPropagationStopped) {
3860
+ validationError.throw({
3861
+ subject: "Event interceptor",
3862
+ id: eventId,
3863
+ originalError: new Error(
3864
+ "Interceptors cannot override stopPropagation/isPropagationStopped"
3865
+ )
3866
+ });
3867
+ }
3518
3868
  }
3519
3869
  /**
3520
3870
  * Disposes the EventManager, releasing all listeners and interceptors.
3521
- * Alias for clear() following the IResource disposal pattern.
3522
3871
  */
3523
3872
  dispose() {
3524
- this.clear();
3873
+ this.registry.clear();
3874
+ this.emissionInterceptors.length = 0;
3875
+ this.hookInterceptors.length = 0;
3525
3876
  }
3526
3877
  /**
3527
3878
  * Retrieves cached merged listeners for an event, or creates them if not cached.
@@ -5039,7 +5390,7 @@ var TaskRunner = class {
5039
5390
  __name(this, "TaskRunner");
5040
5391
  }
5041
5392
  /**
5042
- * 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.
5393
+ * 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.
5043
5394
  * This function can throw only if any of the event listeners or run function throws
5044
5395
  * @param task the task to be run
5045
5396
  * @param input the input to be passed to the task
@@ -5068,8 +5419,6 @@ var TaskRunner = class {
5068
5419
  /**
5069
5420
  * Creates the function with the chain of middleware.
5070
5421
  * @param task
5071
- * @param input
5072
- * @param taskDependencies
5073
5422
  * @returns
5074
5423
  */
5075
5424
  createRunnerWithMiddleware(task2) {
@@ -5089,7 +5438,7 @@ var ResourceInitializer = class {
5089
5438
  __name(this, "ResourceInitializer");
5090
5439
  }
5091
5440
  /**
5092
- * 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.
5441
+ * 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.
5093
5442
  * This function can throw only if any of the event listeners or run function throws
5094
5443
  */
5095
5444
  async initializeResource(resource2, config, dependencies) {
@@ -5579,23 +5928,28 @@ var DependencyProcessor = class {
5579
5928
  middleware.computedDependencies = computedDependencies;
5580
5929
  middleware.isInitialized = true;
5581
5930
  }
5582
- for (const resource2 of this.store.resources.values()) {
5583
- await this.processResourceDependencies(resource2);
5584
- }
5585
- for (const task2 of this.store.tasks.values()) {
5586
- await this.computeTaskDependencies(task2);
5587
- }
5588
5931
  for (const hookStoreElement of this.store.hooks.values()) {
5589
5932
  const hook2 = hookStoreElement.hook;
5590
5933
  const deps = hook2.dependencies;
5934
+ hookStoreElement.dependencyState = "computing" /* Computing */;
5591
5935
  hookStoreElement.computedDependencies = await this.extractDependencies(
5592
5936
  deps,
5593
5937
  hook2.id
5594
5938
  );
5939
+ hookStoreElement.dependencyState = "ready" /* Ready */;
5940
+ }
5941
+ for (const resource2 of this.store.resources.values()) {
5942
+ await this.processResourceDependencies(resource2);
5943
+ }
5944
+ for (const task2 of this.store.tasks.values()) {
5945
+ await this.computeTaskDependencies(task2);
5595
5946
  }
5596
5947
  await this.initializeUninitializedResources();
5597
5948
  }
5598
5949
  async computeTaskDependencies(task2) {
5950
+ if (task2.isInitialized) {
5951
+ return;
5952
+ }
5599
5953
  const deps = task2.task.dependencies;
5600
5954
  task2.computedDependencies = await this.extractDependencies(
5601
5955
  deps,
@@ -5727,6 +6081,9 @@ var DependencyProcessor = class {
5727
6081
  if (receivedEvent.source === hook2.id) {
5728
6082
  return;
5729
6083
  }
6084
+ if (hookStoreElement.dependencyState !== "ready" /* Ready */) {
6085
+ return;
6086
+ }
5730
6087
  return this.eventManager.executeHookWithInterceptors(
5731
6088
  hook2,
5732
6089
  receivedEvent,
@@ -5843,7 +6200,7 @@ var DependencyProcessor = class {
5843
6200
  }
5844
6201
  const st = storeTask;
5845
6202
  if (!st.isInitialized) {
5846
- const dependencies = object.dependencies;
6203
+ const dependencies = st.task.dependencies;
5847
6204
  st.computedDependencies = await this.extractDependencies(
5848
6205
  dependencies,
5849
6206
  st.task.id
@@ -5869,14 +6226,19 @@ var DependencyProcessor = class {
5869
6226
  wrapped = this.wrapResourceDependencies(depMap, raw);
5870
6227
  sr.computedDependencies = wrapped;
5871
6228
  }
5872
- const { value, context } = await this.resourceInitializer.initializeResource(
5873
- resource2,
5874
- config,
5875
- wrapped
5876
- );
5877
- sr.context = context;
5878
- sr.value = value;
5879
- sr.isInitialized = true;
6229
+ try {
6230
+ const { value, context } = await this.resourceInitializer.initializeResource(
6231
+ resource2,
6232
+ config,
6233
+ wrapped
6234
+ );
6235
+ sr.context = context;
6236
+ sr.value = value;
6237
+ sr.isInitialized = true;
6238
+ this.store.recordResourceInitialized(resource2.id);
6239
+ } catch (error2) {
6240
+ this.rethrowResourceInitError(resource2.id, error2);
6241
+ }
5880
6242
  }
5881
6243
  return sr.value;
5882
6244
  }
@@ -6079,7 +6441,8 @@ var StoreRegistry = class {
6079
6441
  const hook2 = this.getFreshValue(item, this.hooks, "hook", overrideMode);
6080
6442
  this.hooks.set(hook2.id, {
6081
6443
  hook: hook2,
6082
- computedDependencies: {}
6444
+ computedDependencies: {},
6445
+ dependencyState: "pending" /* Pending */
6083
6446
  });
6084
6447
  }
6085
6448
  storeTaskMiddleware(item, storingMode = "normal") {
@@ -6134,7 +6497,10 @@ var StoreRegistry = class {
6134
6497
  return prepared;
6135
6498
  }
6136
6499
  computeRegistrationDeeply(element, config) {
6137
- const items = typeof element.register === "function" ? element.register(config) : element.register;
6500
+ let items = typeof element.register === "function" ? element.register(config) : element.register;
6501
+ if (!items) {
6502
+ items = [];
6503
+ }
6138
6504
  element.register = items;
6139
6505
  for (const item of items) {
6140
6506
  this.storeGenericItem(item);
@@ -6672,25 +7038,27 @@ var InterceptorRegistry = class {
6672
7038
  * Gets all global task interceptors
6673
7039
  */
6674
7040
  getGlobalTaskInterceptors() {
6675
- return this.taskInterceptors;
7041
+ return Object.freeze([...this.taskInterceptors]);
6676
7042
  }
6677
7043
  /**
6678
7044
  * Gets all global resource interceptors
6679
7045
  */
6680
7046
  getGlobalResourceInterceptors() {
6681
- return this.resourceInterceptors;
7047
+ return Object.freeze([...this.resourceInterceptors]);
6682
7048
  }
6683
7049
  /**
6684
7050
  * Gets interceptors for a specific task middleware
6685
7051
  */
6686
7052
  getTaskMiddlewareInterceptors(middlewareId) {
6687
- return this.perTaskMiddleware.get(middlewareId) || [];
7053
+ const interceptors = this.perTaskMiddleware.get(middlewareId) ?? [];
7054
+ return Object.freeze([...interceptors]);
6688
7055
  }
6689
7056
  /**
6690
7057
  * Gets interceptors for a specific resource middleware
6691
7058
  */
6692
7059
  getResourceMiddlewareInterceptors(middlewareId) {
6693
- return this.perResourceMiddleware.get(middlewareId) || [];
7060
+ const interceptors = this.perResourceMiddleware.get(middlewareId) ?? [];
7061
+ return Object.freeze([...interceptors]);
6694
7062
  }
6695
7063
  };
6696
7064
 
@@ -7169,10 +7537,8 @@ var ResourceMiddlewareComposer = class {
7169
7537
 
7170
7538
  // src/models/MiddlewareManager.ts
7171
7539
  var MiddlewareManager = class {
7172
- constructor(store2, eventManager, logger) {
7540
+ constructor(store2, _eventManager, _logger) {
7173
7541
  this.store = store2;
7174
- this.eventManager = eventManager;
7175
- this.logger = logger;
7176
7542
  this.interceptorRegistry = new InterceptorRegistry();
7177
7543
  this.middlewareResolver = new MiddlewareResolver(store2);
7178
7544
  this.taskComposer = new TaskMiddlewareComposer(
@@ -7213,14 +7579,6 @@ var MiddlewareManager = class {
7213
7579
  lock() {
7214
7580
  this.interceptorRegistry.lock();
7215
7581
  }
7216
- /**
7217
- * Adds an interceptor for task or resource middleware execution
7218
- * Interceptors are executed in the order they are added, with the ability to
7219
- * modify, log, or prevent middleware execution
7220
- *
7221
- * @param kind - The type of middleware to intercept ("task" or "resource")
7222
- * @param interceptor - The interceptor function to add
7223
- */
7224
7582
  intercept(kind, interceptor) {
7225
7583
  if (kind === "task") {
7226
7584
  this.interceptorRegistry.addGlobalTaskInterceptor(
@@ -7232,13 +7590,6 @@ var MiddlewareManager = class {
7232
7590
  );
7233
7591
  }
7234
7592
  }
7235
- /**
7236
- * Adds an interceptor for a specific middleware instance with better type safety
7237
- * This method automatically determines the type and provides type-safe access
7238
- *
7239
- * @param middleware - The middleware instance to intercept
7240
- * @param interceptor - The interceptor function with proper typing
7241
- */
7242
7593
  interceptMiddleware(middleware, interceptor) {
7243
7594
  if (isTaskMiddleware(middleware)) {
7244
7595
  this.interceptorRegistry.addTaskMiddlewareInterceptor(
@@ -7377,12 +7728,17 @@ var Store = class {
7377
7728
  }
7378
7729
  }
7379
7730
  registerGlobalComponents() {
7731
+ if (!this.taskRunner) {
7732
+ throw new Error(
7733
+ "TaskRunner is not set. Call store.setTaskRunner() before initializeStore()."
7734
+ );
7735
+ }
7380
7736
  const builtInResourcesMap = /* @__PURE__ */ new Map();
7381
7737
  builtInResourcesMap.set(globalResources.store, this);
7382
7738
  builtInResourcesMap.set(globalResources.eventManager, this.eventManager);
7383
7739
  builtInResourcesMap.set(globalResources.logger, this.logger);
7384
7740
  builtInResourcesMap.set(globalResources.taskRunner, this.taskRunner);
7385
- builtInResourcesMap.set(globalResources.serializer, getDefaultSerializer());
7741
+ builtInResourcesMap.set(globalResources.serializer, new Serializer());
7386
7742
  builtInResourcesMap.set(
7387
7743
  globalResources.middlewareManager,
7388
7744
  this.middlewareManager
@@ -7442,8 +7798,11 @@ var Store = class {
7442
7798
  setTaskRunner(taskRunner) {
7443
7799
  this.taskRunner = taskRunner;
7444
7800
  }
7445
- setupRootResource(root, config) {
7446
- root.dependencies = typeof root.dependencies === "function" ? root.dependencies(config) : root.dependencies;
7801
+ setupRootResource(rootDefinition, config) {
7802
+ const root = {
7803
+ ...rootDefinition,
7804
+ dependencies: typeof rootDefinition.dependencies === "function" ? rootDefinition.dependencies(config) : rootDefinition.dependencies
7805
+ };
7447
7806
  this.root = {
7448
7807
  resource: root,
7449
7808
  computedDependencies: {},
@@ -7996,6 +8355,18 @@ var RunResult = class {
7996
8355
  }
7997
8356
  return this.store.resources.get(resourceId).value;
7998
8357
  }, "getResourceValue");
8358
+ /**
8359
+ * Get the config of a resource from the run result.
8360
+ * @param resource - The resource to get the config of.
8361
+ * @returns The config passed for the resource.
8362
+ */
8363
+ this.getResourceConfig = /* @__PURE__ */ __name((resource2) => {
8364
+ const resourceId = typeof resource2 === "string" ? resource2 : resource2.id;
8365
+ if (!this.store.resources.has(resourceId)) {
8366
+ throw new Error(`Resource "${resourceId}" not found.`);
8367
+ }
8368
+ return this.store.resources.get(resourceId).config;
8369
+ }, "getResourceConfig");
7999
8370
  this.dispose = /* @__PURE__ */ __name(() => {
8000
8371
  return this.disposeFn();
8001
8372
  }, "dispose");
@@ -9176,7 +9547,7 @@ function makeAsyncContextBuilder(state) {
9176
9547
  configSchema: state.configSchema,
9177
9548
  meta: state.meta
9178
9549
  };
9179
- return defineAsyncContext(def);
9550
+ return defineAsyncContext(def, state.filePath);
9180
9551
  }
9181
9552
  };
9182
9553
  return builder;
@@ -9185,8 +9556,10 @@ __name(makeAsyncContextBuilder, "makeAsyncContextBuilder");
9185
9556
 
9186
9557
  // src/definers/builders/asyncContext/index.ts
9187
9558
  function asyncContextBuilder(id2) {
9559
+ const filePath = getCallerFile();
9188
9560
  const initial = Object.freeze({
9189
9561
  id: id2,
9562
+ filePath,
9190
9563
  serialize: void 0,
9191
9564
  parse: void 0,
9192
9565
  configSchema: void 0,
@@ -9659,7 +10032,7 @@ function override(base) {
9659
10032
  }
9660
10033
  __name(override, "override");
9661
10034
 
9662
- // src/index.ts
10035
+ // src/public.ts
9663
10036
  var globals = {
9664
10037
  events: globalEvents,
9665
10038
  resources: globalResources,
@@ -9687,6 +10060,7 @@ var r = Object.freeze({
9687
10060
  exports.DependencyProcessor = DependencyProcessor;
9688
10061
  exports.Errors = errors_exports;
9689
10062
  exports.EventManager = EventManager;
10063
+ exports.LogPrinter = LogPrinter;
9690
10064
  exports.Logger = Logger;
9691
10065
  exports.MiddlewareManager = MiddlewareManager;
9692
10066
  exports.PlatformAdapter = PlatformAdapter;
@@ -9696,6 +10070,8 @@ exports.RunResult = RunResult;
9696
10070
  exports.Semaphore = Semaphore;
9697
10071
  exports.Serializer = Serializer;
9698
10072
  exports.Store = Store;
10073
+ exports.SymbolPolicy = SymbolPolicy;
10074
+ exports.SymbolPolicyErrorMessage = SymbolPolicyErrorMessage;
9699
10075
  exports.TaskRunner = TaskRunner;
9700
10076
  exports.allFalse = allFalse;
9701
10077
  exports.asyncContext = defineAsyncContext;
@@ -9710,7 +10086,6 @@ exports.debugLevels = debugLevels;
9710
10086
  exports.definitions = defs_exports;
9711
10087
  exports.event = defineEvent;
9712
10088
  exports.getConfig = getConfig;
9713
- exports.getDefaultSerializer = getDefaultSerializer;
9714
10089
  exports.globals = globals;
9715
10090
  exports.hook = defineHook;
9716
10091
  exports.journal = journal;