@zudojs/core 0.1.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +141 -7
  3. package/dist/application/application.d.ts +43 -2
  4. package/dist/application/application.js +111 -13
  5. package/dist/application/applicationContext.context.d.ts +27 -1
  6. package/dist/application/applicationContext.context.js +22 -2
  7. package/dist/application/createApplication.d.ts +78 -0
  8. package/dist/application/createApplication.js +109 -0
  9. package/dist/application/index.d.ts +2 -1
  10. package/dist/application/index.js +2 -1
  11. package/dist/configuration/configurationManager.manager.d.ts +42 -0
  12. package/dist/configuration/configurationManager.manager.js +104 -7
  13. package/dist/configuration/core/configuration.d.ts +60 -15
  14. package/dist/configuration/core/configuration.js +248 -51
  15. package/dist/configuration/core/configurationKey.key.d.ts +4 -2
  16. package/dist/configuration/core/configurationKey.key.js +2 -13
  17. package/dist/configuration/core/configurationPath.path.d.ts +17 -0
  18. package/dist/configuration/core/configurationPath.path.js +33 -0
  19. package/dist/configuration/core/index.d.ts +7 -1
  20. package/dist/configuration/core/index.js +1 -0
  21. package/dist/configuration/error/configurationError.error.d.ts +11 -0
  22. package/dist/configuration/error/configurationError.error.js +29 -1
  23. package/dist/configuration/error/configurationRedactor.redactor.d.ts +16 -0
  24. package/dist/configuration/error/configurationRedactor.redactor.js +83 -5
  25. package/dist/configuration/error/index.d.ts +2 -1
  26. package/dist/configuration/error/index.js +2 -1
  27. package/dist/configuration/index.d.ts +1 -1
  28. package/dist/configuration/loader/configurationLoader.loader.d.ts +47 -9
  29. package/dist/configuration/loader/configurationLoader.loader.js +107 -26
  30. package/dist/configuration/loader/index.d.ts +1 -1
  31. package/dist/configuration/loader/index.js +1 -1
  32. package/dist/configuration/registry/configurationProvider.provider.d.ts +26 -1
  33. package/dist/configuration/registry/configurationProvider.provider.js +33 -7
  34. package/dist/configuration/registry/configurationRegistry.registry.js +2 -1
  35. package/dist/configuration/schema/configurationSchema.schema.d.ts +0 -4
  36. package/dist/configuration/schema/configurationSchema.schema.js +11 -32
  37. package/dist/configuration/schema/configurationValidation.validator.d.ts +14 -2
  38. package/dist/configuration/schema/configurationValidation.validator.js +55 -7
  39. package/dist/configuration/schema/index.d.ts +1 -1
  40. package/dist/configuration/schema/index.js +1 -1
  41. package/dist/container/container.d.ts +51 -5
  42. package/dist/container/container.js +104 -33
  43. package/dist/container/index.d.ts +1 -1
  44. package/dist/container/index.js +1 -1
  45. package/dist/container/scope.d.ts +7 -6
  46. package/dist/context/core/contextAliases.deprecated.d.ts +32 -0
  47. package/dist/context/core/contextAliases.deprecated.js +6 -0
  48. package/dist/context/core/executionContext.context.d.ts +8 -0
  49. package/dist/context/core/executionContext.context.js +38 -15
  50. package/dist/context/core/index.d.ts +2 -2
  51. package/dist/context/core/index.js +2 -2
  52. package/dist/context/index.d.ts +20 -0
  53. package/dist/context/index.js +20 -0
  54. package/dist/context/provider/contextProvider.provider.d.ts +7 -4
  55. package/dist/context/provider/contextProvider.provider.js +9 -6
  56. package/dist/context/provider/contextStorage.storage.d.ts +47 -7
  57. package/dist/context/provider/contextStorage.storage.js +54 -12
  58. package/dist/context/provider/defaultContextStorage.storage.d.ts +18 -0
  59. package/dist/context/provider/defaultContextStorage.storage.js +20 -0
  60. package/dist/context/provider/index.d.ts +2 -1
  61. package/dist/context/provider/index.js +1 -0
  62. package/dist/errors/exceptions.d.ts +22 -0
  63. package/dist/errors/exceptions.js +38 -1
  64. package/dist/errors/frameworkError.error.d.ts +6 -9
  65. package/dist/errors/index.d.ts +1 -1
  66. package/dist/errors/index.js +1 -1
  67. package/dist/index.d.ts +4 -0
  68. package/dist/index.js +14 -0
  69. package/dist/lifecycle/core/index.d.ts +1 -1
  70. package/dist/lifecycle/core/index.js +1 -1
  71. package/dist/lifecycle/core/lifecycle.d.ts +47 -2
  72. package/dist/lifecycle/core/lifecycle.js +251 -85
  73. package/dist/lifecycle/core/lifecycleRegistry.registry.d.ts +8 -0
  74. package/dist/lifecycle/core/lifecycleRegistry.registry.js +20 -1
  75. package/dist/lifecycle/manager/lifecycleManager.manager.d.ts +21 -2
  76. package/dist/lifecycle/manager/lifecycleManager.manager.js +62 -99
  77. package/dist/lifecycle/scope/lifecycleScope.scope.d.ts +22 -1
  78. package/dist/lifecycle/scope/lifecycleScope.scope.js +85 -17
  79. package/dist/logging/console/consoleLogger.logger.d.ts +20 -1
  80. package/dist/logging/console/consoleLogger.logger.js +77 -11
  81. package/dist/logging/console/loggerFactory.factory.d.ts +6 -5
  82. package/dist/logging/console/loggerFactory.factory.js +1 -7
  83. package/dist/logging/core/index.d.ts +4 -3
  84. package/dist/logging/core/index.js +4 -3
  85. package/dist/logging/core/logEntry.entry.d.ts +41 -3
  86. package/dist/logging/core/logEntry.entry.js +125 -4
  87. package/dist/logging/core/logLevel.level.d.ts +18 -0
  88. package/dist/logging/core/logLevel.level.js +25 -1
  89. package/dist/logging/core/logRedaction.redaction.d.ts +38 -0
  90. package/dist/logging/core/logRedaction.redaction.js +19 -0
  91. package/dist/logging/core/logger.d.ts +14 -11
  92. package/dist/logging/core/logger.js +31 -6
  93. package/dist/logging/core/loggerContext.context.d.ts +12 -0
  94. package/dist/logging/core/loggerContext.context.js +19 -0
  95. package/dist/logging/core/loggerOptions.options.d.ts +17 -0
  96. package/dist/modules/index.d.ts +0 -1
  97. package/dist/modules/index.js +0 -6
  98. package/dist/modules/module.d.ts +7 -1
  99. package/dist/modules/moduleContext.context.d.ts +41 -7
  100. package/dist/modules/moduleContext.context.js +31 -8
  101. package/dist/modules/moduleDefinition.definition.d.ts +11 -7
  102. package/dist/modules/moduleDefinition.definition.js +41 -8
  103. package/dist/modules/moduleDependency/index.d.ts +2 -2
  104. package/dist/modules/moduleDependency/index.js +1 -1
  105. package/dist/modules/moduleDependency/moduleDependency.graph.d.ts +19 -2
  106. package/dist/modules/moduleDependency/moduleDependency.graph.js +122 -8
  107. package/dist/modules/moduleDependency/moduleDependency.ordering.d.ts +8 -0
  108. package/dist/modules/moduleDependency/moduleDependency.ordering.js +85 -57
  109. package/dist/modules/moduleDependency/moduleDependency.type.d.ts +28 -1
  110. package/dist/modules/moduleError/index.d.ts +1 -1
  111. package/dist/modules/moduleError/index.js +1 -1
  112. package/dist/modules/moduleError/moduleError.dependency.d.ts +11 -0
  113. package/dist/modules/moduleError/moduleError.dependency.js +15 -0
  114. package/dist/modules/moduleLifecycle/index.d.ts +5 -2
  115. package/dist/modules/moduleLifecycle/index.js +4 -1
  116. package/dist/modules/moduleLifecycle/moduleLifecycle.lifecycle.d.ts +73 -10
  117. package/dist/modules/moduleLifecycle/moduleLifecycle.lifecycle.js +204 -19
  118. package/dist/modules/moduleLifecycle/moduleLifecycle.stateMachine.d.ts +30 -5
  119. package/dist/modules/moduleLifecycle/moduleLifecycle.stateMachine.js +130 -10
  120. package/dist/modules/moduleLifecycle/moduleLifecycle.type.d.ts +78 -28
  121. package/dist/modules/moduleLifecycle/moduleLifecycle.type.js +15 -4
  122. package/dist/modules/moduleLoader/moduleLoader.loader.d.ts +39 -5
  123. package/dist/modules/moduleLoader/moduleLoader.loader.js +168 -59
  124. package/dist/modules/moduleLoader/moduleLoader.type.d.ts +4 -2
  125. package/dist/modules/moduleLoader/moduleLoader.type.js +10 -3
  126. package/dist/modules/moduleMetadata.metadata.js +15 -5
  127. package/dist/modules/moduleRegistry/index.d.ts +1 -1
  128. package/dist/modules/moduleRegistry/moduleRegistry.registry.d.ts +2 -2
  129. package/dist/modules/moduleRegistry/moduleRegistry.registry.js +38 -6
  130. package/dist/modules/moduleRegistry/moduleRegistry.type.d.ts +18 -1
  131. package/dist/runtime/index.d.ts +17 -15
  132. package/dist/runtime/index.js +14 -10
  133. package/dist/runtime/runtime.d.ts +135 -33
  134. package/dist/runtime/runtime.js +344 -114
  135. package/dist/runtime/runtimeBootstrap/index.d.ts +2 -1
  136. package/dist/runtime/runtimeBootstrap/index.js +1 -1
  137. package/dist/runtime/runtimeBootstrap/pipeline/index.d.ts +2 -2
  138. package/dist/runtime/runtimeBootstrap/pipeline/index.js +1 -2
  139. package/dist/runtime/runtimeBootstrap/pipeline/runtimeBootstrap.pipeline.d.ts +41 -15
  140. package/dist/runtime/runtimeBootstrap/pipeline/runtimeBootstrap.pipeline.js +111 -76
  141. package/dist/runtime/runtimeBootstrap/runtimeBootstrap.core.d.ts +7 -4
  142. package/dist/runtime/runtimeBootstrap/runtimeBootstrap.core.js +87 -59
  143. package/dist/runtime/runtimeBootstrap/runtimeBootstrap.type.d.ts +10 -4
  144. package/dist/runtime/runtimeContext/index.d.ts +3 -5
  145. package/dist/runtime/runtimeContext/index.js +2 -4
  146. package/dist/runtime/runtimeContext/runtimeContext.factory.d.ts +10 -4
  147. package/dist/runtime/runtimeContext/runtimeContext.factory.js +30 -7
  148. package/dist/runtime/runtimeContext/runtimeContext.type.d.ts +36 -47
  149. package/dist/runtime/runtimeEnvironment/detection/runtimeEnvironment.env.d.ts +5 -0
  150. package/dist/runtime/runtimeEnvironment/detection/runtimeEnvironment.env.js +6 -4
  151. package/dist/runtime/runtimeEnvironment/detection/runtimeEnvironment.os.d.ts +4 -0
  152. package/dist/runtime/runtimeEnvironment/detection/runtimeEnvironment.os.js +7 -9
  153. package/dist/runtime/runtimeEnvironment/index.d.ts +2 -2
  154. package/dist/runtime/runtimeEnvironment/index.js +1 -1
  155. package/dist/runtime/runtimeEnvironment/runtimeEnvironment.core.d.ts +20 -17
  156. package/dist/runtime/runtimeEnvironment/runtimeEnvironment.core.js +20 -13
  157. package/dist/runtime/runtimeEnvironment/runtimeEnvironment.type.d.ts +12 -1
  158. package/dist/runtime/runtimeError/index.d.ts +3 -3
  159. package/dist/runtime/runtimeError/index.js +1 -1
  160. package/dist/runtime/runtimeError/runtimeError.base.d.ts +15 -18
  161. package/dist/runtime/runtimeError/runtimeError.base.js +38 -36
  162. package/dist/runtime/runtimeError/runtimeError.lifecycle.d.ts +23 -8
  163. package/dist/runtime/runtimeError/runtimeError.lifecycle.js +31 -7
  164. package/dist/runtime/runtimeError/runtimeError.specialized.d.ts +1 -1
  165. package/dist/runtime/runtimeError/runtimeError.specialized.js +1 -1
  166. package/dist/runtime/runtimeError/runtimeError.type.d.ts +5 -9
  167. package/dist/runtime/runtimeLogger.d.ts +2 -2
  168. package/dist/runtime/runtimeLogger.js +3 -3
  169. package/dist/runtime/runtimeOptions/index.d.ts +1 -1
  170. package/dist/runtime/runtimeOptions/runtimeOptions.defaults.d.ts +1 -1
  171. package/dist/runtime/runtimeOptions/runtimeOptions.defaults.js +2 -0
  172. package/dist/runtime/runtimeOptions/runtimeOptions.resolver.js +13 -2
  173. package/dist/runtime/runtimeOptions/runtimeOptions.type.d.ts +45 -16
  174. package/dist/runtime/runtimeOptions/runtimeOptions.validation.js +0 -1
  175. package/dist/runtime/runtimeShutdown/index.d.ts +3 -2
  176. package/dist/runtime/runtimeShutdown/index.js +2 -2
  177. package/dist/runtime/runtimeShutdown/pipeline/index.d.ts +2 -1
  178. package/dist/runtime/runtimeShutdown/pipeline/index.js +1 -1
  179. package/dist/runtime/runtimeShutdown/pipeline/runtimeShutdown.pipeline.d.ts +37 -7
  180. package/dist/runtime/runtimeShutdown/pipeline/runtimeShutdown.pipeline.js +85 -51
  181. package/dist/runtime/runtimeShutdown/runtimeShutdown.core.d.ts +8 -16
  182. package/dist/runtime/runtimeShutdown/runtimeShutdown.core.js +85 -87
  183. package/dist/runtime/runtimeShutdown/runtimeShutdown.type.d.ts +9 -5
  184. package/dist/runtime/runtimeSignals/index.d.ts +8 -0
  185. package/dist/runtime/runtimeSignals/index.js +7 -0
  186. package/dist/runtime/runtimeSignals/runtimeSignals.d.ts +93 -0
  187. package/dist/runtime/runtimeSignals/runtimeSignals.js +149 -0
  188. package/dist/runtime/runtimeState.state.d.ts +32 -14
  189. package/dist/runtime/runtimeState.state.js +34 -27
  190. package/dist/runtime/runtimeTimeout.d.ts +40 -0
  191. package/dist/runtime/runtimeTimeout.js +42 -0
  192. package/package.json +25 -15
  193. package/dist/.tsbuildinfo +0 -1
  194. package/dist/application/application.d.ts.map +0 -1
  195. package/dist/application/application.js.map +0 -1
  196. package/dist/application/applicationContext.context.d.ts.map +0 -1
  197. package/dist/application/applicationContext.context.js.map +0 -1
  198. package/dist/application/applicationState.state.d.ts.map +0 -1
  199. package/dist/application/applicationState.state.js.map +0 -1
  200. package/dist/application/index.d.ts.map +0 -1
  201. package/dist/application/index.js.map +0 -1
  202. package/dist/configuration/configurationManager.manager.d.ts.map +0 -1
  203. package/dist/configuration/configurationManager.manager.js.map +0 -1
  204. package/dist/configuration/core/configuration.d.ts.map +0 -1
  205. package/dist/configuration/core/configuration.js.map +0 -1
  206. package/dist/configuration/core/configurationKey.key.d.ts.map +0 -1
  207. package/dist/configuration/core/configurationKey.key.js.map +0 -1
  208. package/dist/configuration/core/configurationSource.source.d.ts.map +0 -1
  209. package/dist/configuration/core/configurationSource.source.js.map +0 -1
  210. package/dist/configuration/core/index.d.ts.map +0 -1
  211. package/dist/configuration/core/index.js.map +0 -1
  212. package/dist/configuration/error/configurationError.error.d.ts.map +0 -1
  213. package/dist/configuration/error/configurationError.error.js.map +0 -1
  214. package/dist/configuration/error/configurationRedactor.redactor.d.ts.map +0 -1
  215. package/dist/configuration/error/configurationRedactor.redactor.js.map +0 -1
  216. package/dist/configuration/error/index.d.ts.map +0 -1
  217. package/dist/configuration/error/index.js.map +0 -1
  218. package/dist/configuration/events/configurationEvents.events.d.ts.map +0 -1
  219. package/dist/configuration/events/configurationEvents.events.js.map +0 -1
  220. package/dist/configuration/events/index.d.ts.map +0 -1
  221. package/dist/configuration/events/index.js.map +0 -1
  222. package/dist/configuration/index.d.ts.map +0 -1
  223. package/dist/configuration/index.js.map +0 -1
  224. package/dist/configuration/loader/configurationLoader.loader.d.ts.map +0 -1
  225. package/dist/configuration/loader/configurationLoader.loader.js.map +0 -1
  226. package/dist/configuration/loader/index.d.ts.map +0 -1
  227. package/dist/configuration/loader/index.js.map +0 -1
  228. package/dist/configuration/registry/configurationProvider.provider.d.ts.map +0 -1
  229. package/dist/configuration/registry/configurationProvider.provider.js.map +0 -1
  230. package/dist/configuration/registry/configurationRegistry.registry.d.ts.map +0 -1
  231. package/dist/configuration/registry/configurationRegistry.registry.js.map +0 -1
  232. package/dist/configuration/registry/index.d.ts.map +0 -1
  233. package/dist/configuration/registry/index.js.map +0 -1
  234. package/dist/configuration/schema/configurationSchema.schema.d.ts.map +0 -1
  235. package/dist/configuration/schema/configurationSchema.schema.js.map +0 -1
  236. package/dist/configuration/schema/configurationValidation.validator.d.ts.map +0 -1
  237. package/dist/configuration/schema/configurationValidation.validator.js.map +0 -1
  238. package/dist/configuration/schema/index.d.ts.map +0 -1
  239. package/dist/configuration/schema/index.js.map +0 -1
  240. package/dist/container/container.d.ts.map +0 -1
  241. package/dist/container/container.js.map +0 -1
  242. package/dist/container/index.d.ts.map +0 -1
  243. package/dist/container/index.js.map +0 -1
  244. package/dist/container/provider.d.ts.map +0 -1
  245. package/dist/container/provider.js.map +0 -1
  246. package/dist/container/scope.d.ts.map +0 -1
  247. package/dist/container/scope.js.map +0 -1
  248. package/dist/container/token.d.ts.map +0 -1
  249. package/dist/container/token.js.map +0 -1
  250. package/dist/context/core/context.d.ts +0 -95
  251. package/dist/context/core/context.d.ts.map +0 -1
  252. package/dist/context/core/context.js +0 -103
  253. package/dist/context/core/context.js.map +0 -1
  254. package/dist/context/core/contextKey.key.d.ts.map +0 -1
  255. package/dist/context/core/contextKey.key.js.map +0 -1
  256. package/dist/context/core/executionContext.context.d.ts.map +0 -1
  257. package/dist/context/core/executionContext.context.js.map +0 -1
  258. package/dist/context/core/index.d.ts.map +0 -1
  259. package/dist/context/core/index.js.map +0 -1
  260. package/dist/context/index.d.ts.map +0 -1
  261. package/dist/context/index.js.map +0 -1
  262. package/dist/context/provider/contextProvider.provider.d.ts.map +0 -1
  263. package/dist/context/provider/contextProvider.provider.js.map +0 -1
  264. package/dist/context/provider/contextStorage.storage.d.ts.map +0 -1
  265. package/dist/context/provider/contextStorage.storage.js.map +0 -1
  266. package/dist/context/provider/index.d.ts.map +0 -1
  267. package/dist/context/provider/index.js.map +0 -1
  268. package/dist/context/snapshot/contextSnapshot.snapshot.d.ts.map +0 -1
  269. package/dist/context/snapshot/contextSnapshot.snapshot.js.map +0 -1
  270. package/dist/context/snapshot/index.d.ts.map +0 -1
  271. package/dist/context/snapshot/index.js.map +0 -1
  272. package/dist/context/values/contextValues.values.d.ts.map +0 -1
  273. package/dist/context/values/contextValues.values.js.map +0 -1
  274. package/dist/context/values/index.d.ts.map +0 -1
  275. package/dist/context/values/index.js.map +0 -1
  276. package/dist/contracts/adapter.d.ts.map +0 -1
  277. package/dist/contracts/adapter.js.map +0 -1
  278. package/dist/contracts/disposable.d.ts.map +0 -1
  279. package/dist/contracts/disposable.js.map +0 -1
  280. package/dist/contracts/handler.d.ts.map +0 -1
  281. package/dist/contracts/handler.js.map +0 -1
  282. package/dist/contracts/index.d.ts.map +0 -1
  283. package/dist/contracts/index.js.map +0 -1
  284. package/dist/errors/errorCode.code.d.ts.map +0 -1
  285. package/dist/errors/errorCode.code.js.map +0 -1
  286. package/dist/errors/exceptions.d.ts.map +0 -1
  287. package/dist/errors/exceptions.js.map +0 -1
  288. package/dist/errors/frameworkError.error.d.ts.map +0 -1
  289. package/dist/errors/frameworkError.error.js.map +0 -1
  290. package/dist/errors/index.d.ts.map +0 -1
  291. package/dist/errors/index.js.map +0 -1
  292. package/dist/index.d.ts.map +0 -1
  293. package/dist/index.js.map +0 -1
  294. package/dist/lifecycle/core/index.d.ts.map +0 -1
  295. package/dist/lifecycle/core/index.js.map +0 -1
  296. package/dist/lifecycle/core/lifecycle.d.ts.map +0 -1
  297. package/dist/lifecycle/core/lifecycle.js.map +0 -1
  298. package/dist/lifecycle/core/lifecycleHook.hook.d.ts.map +0 -1
  299. package/dist/lifecycle/core/lifecycleHook.hook.js.map +0 -1
  300. package/dist/lifecycle/core/lifecycleRegistry.registry.d.ts.map +0 -1
  301. package/dist/lifecycle/core/lifecycleRegistry.registry.js.map +0 -1
  302. package/dist/lifecycle/core/lifecycleState.state.d.ts +0 -2
  303. package/dist/lifecycle/core/lifecycleState.state.d.ts.map +0 -1
  304. package/dist/lifecycle/core/lifecycleState.state.js +0 -2
  305. package/dist/lifecycle/core/lifecycleState.state.js.map +0 -1
  306. package/dist/lifecycle/index.d.ts.map +0 -1
  307. package/dist/lifecycle/index.js.map +0 -1
  308. package/dist/lifecycle/manager/index.d.ts.map +0 -1
  309. package/dist/lifecycle/manager/index.js.map +0 -1
  310. package/dist/lifecycle/manager/lifecycleManager.manager.d.ts.map +0 -1
  311. package/dist/lifecycle/manager/lifecycleManager.manager.js.map +0 -1
  312. package/dist/lifecycle/scope/index.d.ts.map +0 -1
  313. package/dist/lifecycle/scope/index.js.map +0 -1
  314. package/dist/lifecycle/scope/lifecycleScope.scope.d.ts.map +0 -1
  315. package/dist/lifecycle/scope/lifecycleScope.scope.js.map +0 -1
  316. package/dist/logging/console/consoleLogger.logger.d.ts.map +0 -1
  317. package/dist/logging/console/consoleLogger.logger.js.map +0 -1
  318. package/dist/logging/console/index.d.ts.map +0 -1
  319. package/dist/logging/console/index.js.map +0 -1
  320. package/dist/logging/console/loggerFactory.factory.d.ts.map +0 -1
  321. package/dist/logging/console/loggerFactory.factory.js.map +0 -1
  322. package/dist/logging/core/index.d.ts.map +0 -1
  323. package/dist/logging/core/index.js.map +0 -1
  324. package/dist/logging/core/logEntry.entry.d.ts.map +0 -1
  325. package/dist/logging/core/logEntry.entry.js.map +0 -1
  326. package/dist/logging/core/logLevel.level.d.ts.map +0 -1
  327. package/dist/logging/core/logLevel.level.js.map +0 -1
  328. package/dist/logging/core/logger.d.ts.map +0 -1
  329. package/dist/logging/core/logger.js.map +0 -1
  330. package/dist/logging/core/loggerContext.context.d.ts.map +0 -1
  331. package/dist/logging/core/loggerContext.context.js.map +0 -1
  332. package/dist/logging/core/loggerOptions.options.d.ts.map +0 -1
  333. package/dist/logging/core/loggerOptions.options.js.map +0 -1
  334. package/dist/logging/index.d.ts.map +0 -1
  335. package/dist/logging/index.js.map +0 -1
  336. package/dist/modules/index.d.ts.map +0 -1
  337. package/dist/modules/index.js.map +0 -1
  338. package/dist/modules/module.d.ts.map +0 -1
  339. package/dist/modules/module.js.map +0 -1
  340. package/dist/modules/moduleContext.context.d.ts.map +0 -1
  341. package/dist/modules/moduleContext.context.js.map +0 -1
  342. package/dist/modules/moduleDefinition.definition.d.ts.map +0 -1
  343. package/dist/modules/moduleDefinition.definition.js.map +0 -1
  344. package/dist/modules/moduleDependency/index.d.ts.map +0 -1
  345. package/dist/modules/moduleDependency/index.js.map +0 -1
  346. package/dist/modules/moduleDependency/moduleDependency.graph.d.ts.map +0 -1
  347. package/dist/modules/moduleDependency/moduleDependency.graph.js.map +0 -1
  348. package/dist/modules/moduleDependency/moduleDependency.ordering.d.ts.map +0 -1
  349. package/dist/modules/moduleDependency/moduleDependency.ordering.js.map +0 -1
  350. package/dist/modules/moduleDependency/moduleDependency.type.d.ts.map +0 -1
  351. package/dist/modules/moduleDependency/moduleDependency.type.js.map +0 -1
  352. package/dist/modules/moduleError/index.d.ts.map +0 -1
  353. package/dist/modules/moduleError/index.js.map +0 -1
  354. package/dist/modules/moduleError/moduleError.base.d.ts.map +0 -1
  355. package/dist/modules/moduleError/moduleError.base.js.map +0 -1
  356. package/dist/modules/moduleError/moduleError.dependency.d.ts.map +0 -1
  357. package/dist/modules/moduleError/moduleError.dependency.js.map +0 -1
  358. package/dist/modules/moduleError/moduleError.helpers.d.ts.map +0 -1
  359. package/dist/modules/moduleError/moduleError.helpers.js.map +0 -1
  360. package/dist/modules/moduleError/moduleError.lifecycle.d.ts.map +0 -1
  361. package/dist/modules/moduleError/moduleError.lifecycle.js.map +0 -1
  362. package/dist/modules/moduleError/moduleError.registration.d.ts.map +0 -1
  363. package/dist/modules/moduleError/moduleError.registration.js.map +0 -1
  364. package/dist/modules/moduleLifecycle/index.d.ts.map +0 -1
  365. package/dist/modules/moduleLifecycle/index.js.map +0 -1
  366. package/dist/modules/moduleLifecycle/moduleLifecycle.lifecycle.d.ts.map +0 -1
  367. package/dist/modules/moduleLifecycle/moduleLifecycle.lifecycle.js.map +0 -1
  368. package/dist/modules/moduleLifecycle/moduleLifecycle.stateMachine.d.ts.map +0 -1
  369. package/dist/modules/moduleLifecycle/moduleLifecycle.stateMachine.js.map +0 -1
  370. package/dist/modules/moduleLifecycle/moduleLifecycle.type.d.ts.map +0 -1
  371. package/dist/modules/moduleLifecycle/moduleLifecycle.type.js.map +0 -1
  372. package/dist/modules/moduleLoader/index.d.ts.map +0 -1
  373. package/dist/modules/moduleLoader/index.js.map +0 -1
  374. package/dist/modules/moduleLoader/moduleLoader.loader.d.ts.map +0 -1
  375. package/dist/modules/moduleLoader/moduleLoader.loader.js.map +0 -1
  376. package/dist/modules/moduleLoader/moduleLoader.type.d.ts.map +0 -1
  377. package/dist/modules/moduleLoader/moduleLoader.type.js.map +0 -1
  378. package/dist/modules/moduleMetadata.metadata.d.ts.map +0 -1
  379. package/dist/modules/moduleMetadata.metadata.js.map +0 -1
  380. package/dist/modules/moduleRegistry/index.d.ts.map +0 -1
  381. package/dist/modules/moduleRegistry/index.js.map +0 -1
  382. package/dist/modules/moduleRegistry/moduleRegistry.registry.d.ts.map +0 -1
  383. package/dist/modules/moduleRegistry/moduleRegistry.registry.js.map +0 -1
  384. package/dist/modules/moduleRegistry/moduleRegistry.type.d.ts.map +0 -1
  385. package/dist/modules/moduleRegistry/moduleRegistry.type.js.map +0 -1
  386. package/dist/runtime/index.d.ts.map +0 -1
  387. package/dist/runtime/index.js.map +0 -1
  388. package/dist/runtime/runtime.d.ts.map +0 -1
  389. package/dist/runtime/runtime.js.map +0 -1
  390. package/dist/runtime/runtimeBootstrap/index.d.ts.map +0 -1
  391. package/dist/runtime/runtimeBootstrap/index.js.map +0 -1
  392. package/dist/runtime/runtimeBootstrap/pipeline/index.d.ts.map +0 -1
  393. package/dist/runtime/runtimeBootstrap/pipeline/index.js.map +0 -1
  394. package/dist/runtime/runtimeBootstrap/pipeline/runtimeBootstrap.invoke.d.ts +0 -6
  395. package/dist/runtime/runtimeBootstrap/pipeline/runtimeBootstrap.invoke.d.ts.map +0 -1
  396. package/dist/runtime/runtimeBootstrap/pipeline/runtimeBootstrap.invoke.js +0 -27
  397. package/dist/runtime/runtimeBootstrap/pipeline/runtimeBootstrap.invoke.js.map +0 -1
  398. package/dist/runtime/runtimeBootstrap/pipeline/runtimeBootstrap.pipeline.d.ts.map +0 -1
  399. package/dist/runtime/runtimeBootstrap/pipeline/runtimeBootstrap.pipeline.js.map +0 -1
  400. package/dist/runtime/runtimeBootstrap/runtimeBootstrap.core.d.ts.map +0 -1
  401. package/dist/runtime/runtimeBootstrap/runtimeBootstrap.core.js.map +0 -1
  402. package/dist/runtime/runtimeBootstrap/runtimeBootstrap.type.d.ts.map +0 -1
  403. package/dist/runtime/runtimeBootstrap/runtimeBootstrap.type.js.map +0 -1
  404. package/dist/runtime/runtimeContext/index.d.ts.map +0 -1
  405. package/dist/runtime/runtimeContext/index.js.map +0 -1
  406. package/dist/runtime/runtimeContext/runtimeContext.core.d.ts +0 -38
  407. package/dist/runtime/runtimeContext/runtimeContext.core.d.ts.map +0 -1
  408. package/dist/runtime/runtimeContext/runtimeContext.core.js +0 -99
  409. package/dist/runtime/runtimeContext/runtimeContext.core.js.map +0 -1
  410. package/dist/runtime/runtimeContext/runtimeContext.factory.d.ts.map +0 -1
  411. package/dist/runtime/runtimeContext/runtimeContext.factory.js.map +0 -1
  412. package/dist/runtime/runtimeContext/runtimeContext.type.d.ts.map +0 -1
  413. package/dist/runtime/runtimeContext/runtimeContext.type.js.map +0 -1
  414. package/dist/runtime/runtimeEnvironment/detection/index.d.ts.map +0 -1
  415. package/dist/runtime/runtimeEnvironment/detection/index.js.map +0 -1
  416. package/dist/runtime/runtimeEnvironment/detection/runtimeEnvironment.detection.d.ts.map +0 -1
  417. package/dist/runtime/runtimeEnvironment/detection/runtimeEnvironment.detection.js.map +0 -1
  418. package/dist/runtime/runtimeEnvironment/detection/runtimeEnvironment.env.d.ts.map +0 -1
  419. package/dist/runtime/runtimeEnvironment/detection/runtimeEnvironment.env.js.map +0 -1
  420. package/dist/runtime/runtimeEnvironment/detection/runtimeEnvironment.os.d.ts.map +0 -1
  421. package/dist/runtime/runtimeEnvironment/detection/runtimeEnvironment.os.js.map +0 -1
  422. package/dist/runtime/runtimeEnvironment/index.d.ts.map +0 -1
  423. package/dist/runtime/runtimeEnvironment/index.js.map +0 -1
  424. package/dist/runtime/runtimeEnvironment/runtimeEnvironment.core.d.ts.map +0 -1
  425. package/dist/runtime/runtimeEnvironment/runtimeEnvironment.core.js.map +0 -1
  426. package/dist/runtime/runtimeEnvironment/runtimeEnvironment.type.d.ts.map +0 -1
  427. package/dist/runtime/runtimeEnvironment/runtimeEnvironment.type.js.map +0 -1
  428. package/dist/runtime/runtimeError/index.d.ts.map +0 -1
  429. package/dist/runtime/runtimeError/index.js.map +0 -1
  430. package/dist/runtime/runtimeError/runtimeError.base.d.ts.map +0 -1
  431. package/dist/runtime/runtimeError/runtimeError.base.js.map +0 -1
  432. package/dist/runtime/runtimeError/runtimeError.lifecycle.d.ts.map +0 -1
  433. package/dist/runtime/runtimeError/runtimeError.lifecycle.js.map +0 -1
  434. package/dist/runtime/runtimeError/runtimeError.specialized.d.ts.map +0 -1
  435. package/dist/runtime/runtimeError/runtimeError.specialized.js.map +0 -1
  436. package/dist/runtime/runtimeError/runtimeError.type.d.ts.map +0 -1
  437. package/dist/runtime/runtimeError/runtimeError.type.js.map +0 -1
  438. package/dist/runtime/runtimeLogger.d.ts.map +0 -1
  439. package/dist/runtime/runtimeLogger.js.map +0 -1
  440. package/dist/runtime/runtimeManager/index.d.ts +0 -12
  441. package/dist/runtime/runtimeManager/index.d.ts.map +0 -1
  442. package/dist/runtime/runtimeManager/index.js +0 -11
  443. package/dist/runtime/runtimeManager/index.js.map +0 -1
  444. package/dist/runtime/runtimeManager/runtimeManager.core.d.ts +0 -31
  445. package/dist/runtime/runtimeManager/runtimeManager.core.d.ts.map +0 -1
  446. package/dist/runtime/runtimeManager/runtimeManager.core.js +0 -136
  447. package/dist/runtime/runtimeManager/runtimeManager.core.js.map +0 -1
  448. package/dist/runtime/runtimeManager/runtimeManager.error.d.ts +0 -14
  449. package/dist/runtime/runtimeManager/runtimeManager.error.d.ts.map +0 -1
  450. package/dist/runtime/runtimeManager/runtimeManager.error.js +0 -21
  451. package/dist/runtime/runtimeManager/runtimeManager.error.js.map +0 -1
  452. package/dist/runtime/runtimeManager/runtimeManager.factory.d.ts +0 -7
  453. package/dist/runtime/runtimeManager/runtimeManager.factory.d.ts.map +0 -1
  454. package/dist/runtime/runtimeManager/runtimeManager.factory.js +0 -8
  455. package/dist/runtime/runtimeManager/runtimeManager.factory.js.map +0 -1
  456. package/dist/runtime/runtimeManager/runtimeManager.lifecycle.d.ts +0 -16
  457. package/dist/runtime/runtimeManager/runtimeManager.lifecycle.d.ts.map +0 -1
  458. package/dist/runtime/runtimeManager/runtimeManager.lifecycle.js +0 -49
  459. package/dist/runtime/runtimeManager/runtimeManager.lifecycle.js.map +0 -1
  460. package/dist/runtime/runtimeManager/runtimeManager.type.d.ts +0 -54
  461. package/dist/runtime/runtimeManager/runtimeManager.type.d.ts.map +0 -1
  462. package/dist/runtime/runtimeManager/runtimeManager.type.js +0 -2
  463. package/dist/runtime/runtimeManager/runtimeManager.type.js.map +0 -1
  464. package/dist/runtime/runtimeOptions/index.d.ts.map +0 -1
  465. package/dist/runtime/runtimeOptions/index.js.map +0 -1
  466. package/dist/runtime/runtimeOptions/runtimeOptions.defaults.d.ts.map +0 -1
  467. package/dist/runtime/runtimeOptions/runtimeOptions.defaults.js.map +0 -1
  468. package/dist/runtime/runtimeOptions/runtimeOptions.resolver.d.ts.map +0 -1
  469. package/dist/runtime/runtimeOptions/runtimeOptions.resolver.js.map +0 -1
  470. package/dist/runtime/runtimeOptions/runtimeOptions.type.d.ts.map +0 -1
  471. package/dist/runtime/runtimeOptions/runtimeOptions.type.js.map +0 -1
  472. package/dist/runtime/runtimeOptions/runtimeOptions.validation.d.ts.map +0 -1
  473. package/dist/runtime/runtimeOptions/runtimeOptions.validation.js.map +0 -1
  474. package/dist/runtime/runtimeShutdown/index.d.ts.map +0 -1
  475. package/dist/runtime/runtimeShutdown/index.js.map +0 -1
  476. package/dist/runtime/runtimeShutdown/pipeline/index.d.ts.map +0 -1
  477. package/dist/runtime/runtimeShutdown/pipeline/index.js.map +0 -1
  478. package/dist/runtime/runtimeShutdown/pipeline/runtimeShutdown.pipeline.d.ts.map +0 -1
  479. package/dist/runtime/runtimeShutdown/pipeline/runtimeShutdown.pipeline.js.map +0 -1
  480. package/dist/runtime/runtimeShutdown/runtimeShutdown.core.d.ts.map +0 -1
  481. package/dist/runtime/runtimeShutdown/runtimeShutdown.core.js.map +0 -1
  482. package/dist/runtime/runtimeShutdown/runtimeShutdown.type.d.ts.map +0 -1
  483. package/dist/runtime/runtimeShutdown/runtimeShutdown.type.js.map +0 -1
  484. package/dist/runtime/runtimeState.state.d.ts.map +0 -1
  485. package/dist/runtime/runtimeState.state.js.map +0 -1
@@ -1,179 +1,409 @@
1
- import { RuntimeError as BaseRuntimeError, RuntimeStateError as BaseRuntimeStateError, } from "@zudojs/errors";
2
- /** Error thrown for invalid runtime operations. */
3
- export class RuntimeStateError extends BaseRuntimeStateError {
4
- constructor(message) {
5
- super(message);
6
- }
7
- }
8
- /** Error thrown when runtime startup/shutdown fails. */
9
- export class RuntimeError extends BaseRuntimeError {
10
- moduleIds;
11
- constructor(message, moduleIds = []) {
12
- super(message, { phase: "runtime" });
13
- this.moduleIds = Object.freeze([...moduleIds]);
14
- }
15
- }
1
+ import { getDefaultContextStorage } from "../context/provider/defaultContextStorage.storage.js";
2
+ import { RuntimeState, assertRuntimeTransition, createRuntimeStateSnapshot, isRuntimeTerminal, } from "./runtimeState.state.js";
3
+ import { createRuntimeExecutionContext, createRuntimeIdentity, } from "./runtimeContext/index.js";
4
+ import { createRuntimeEnvironment } from "./runtimeEnvironment/index.js";
5
+ import { resolveRuntimeOptions } from "./runtimeOptions/index.js";
6
+ import { DefaultRuntimeBootstrap } from "./runtimeBootstrap/runtimeBootstrap.core.js";
7
+ import { DefaultRuntimeShutdown } from "./runtimeShutdown/runtimeShutdown.core.js";
8
+ import { RuntimeSignalManager } from "./runtimeSignals/runtimeSignals.js";
9
+ import { InvalidRuntimeStateError } from "./runtimeError/runtimeError.lifecycle.js";
10
+ import { RuntimeNotReadyError } from "./runtimeError/runtimeError.specialized.js";
11
+ import { RuntimeTimeoutError } from "./runtimeError/runtimeError.specialized.js";
16
12
  /**
17
13
  * Default runtime implementation.
18
- * Orchestrates Application, Configuration, Logger, ModuleRegistry,
19
- * ModuleLoader, ModuleLifecycleManager.
14
+ *
15
+ * Owns the runtime state machine and identity, and orchestrates the
16
+ * bootstrap and shutdown services, the module subsystem, and process
17
+ * signal handling.
20
18
  */
21
19
  export class DefaultRuntime {
22
- _state = "created";
23
- startedAt;
24
- stoppedAt;
25
- failedAt;
26
- error;
27
- startPromise;
28
- stopPromise;
29
- application;
30
- configuration;
31
- logger;
32
- moduleRegistry;
33
- moduleLoader;
34
- moduleLifecycle;
35
- constructor(dependencies) {
36
- this.application = dependencies.application;
37
- this.configuration = dependencies.configuration;
38
- this.logger = dependencies.logger;
39
- this.moduleRegistry = dependencies.moduleRegistry;
40
- this.moduleLoader = dependencies.moduleLoader;
41
- this.moduleLifecycle = dependencies.moduleLifecycle;
20
+ _options;
21
+ _identity;
22
+ _context;
23
+ _contextStorage;
24
+ _environment;
25
+ _bootstrap;
26
+ _shutdown;
27
+ _signals;
28
+ _application;
29
+ _configuration;
30
+ _logger;
31
+ _moduleRegistry;
32
+ _moduleLoader;
33
+ _moduleLifecycle;
34
+ _state = RuntimeState.CREATED;
35
+ _timing;
36
+ _error;
37
+ _startPromise;
38
+ _stopPromise;
39
+ _unwound = false;
40
+ constructor(dependencies, options = {}) {
41
+ this._options = resolveRuntimeOptions(options);
42
+ this._application = dependencies.application;
43
+ this._configuration = dependencies.configuration;
44
+ this._logger = dependencies.logger;
45
+ this._moduleRegistry = dependencies.moduleRegistry;
46
+ this._moduleLoader = dependencies.moduleLoader;
47
+ this._moduleLifecycle = dependencies.moduleLifecycle;
48
+ this._identity = createRuntimeIdentity({
49
+ name: this._options.name,
50
+ mode: this._options.mode,
51
+ role: this._options.role,
52
+ });
53
+ this._timing = Object.freeze({ createdAt: this._identity.createdAt });
54
+ this._contextStorage =
55
+ dependencies.contextStorage ?? getDefaultContextStorage();
56
+ this._environment =
57
+ dependencies.environment ??
58
+ createRuntimeEnvironment({
59
+ mode: this._options.mode,
60
+ role: this._options.role,
61
+ variables: this._options.environment.variables,
62
+ isCI: this._options.environment.isCI,
63
+ isContainer: this._options.environment.isContainer,
64
+ });
65
+ this._context = createRuntimeExecutionContext(this._identity, this._options.metadata);
66
+ this._bootstrap =
67
+ dependencies.bootstrap ??
68
+ new DefaultRuntimeBootstrap({
69
+ identity: this._identity,
70
+ environment: this._environment,
71
+ moduleLoader: this._moduleLoader,
72
+ moduleRegistry: this._moduleRegistry,
73
+ moduleLifecycle: this._moduleLifecycle,
74
+ logger: this._logger,
75
+ }, this._options);
76
+ this._shutdown =
77
+ dependencies.shutdown ??
78
+ new DefaultRuntimeShutdown({
79
+ identity: this._identity,
80
+ environment: this._environment,
81
+ moduleRegistry: this._moduleRegistry,
82
+ moduleLifecycle: this._moduleLifecycle,
83
+ logger: this._logger,
84
+ }, this._options);
85
+ this._signals = new RuntimeSignalManager({
86
+ signals: this._options.signals,
87
+ target: dependencies.signalTarget,
88
+ logger: this._logger,
89
+ });
42
90
  }
43
91
  get state() {
44
92
  return this._state;
45
93
  }
94
+ get context() {
95
+ return this._context;
96
+ }
97
+ get contextStorage() {
98
+ return this._contextStorage;
99
+ }
100
+ get timing() {
101
+ return this._timing;
102
+ }
103
+ get environment() {
104
+ return this._environment;
105
+ }
106
+ get identity() {
107
+ return this._identity;
108
+ }
109
+ get options() {
110
+ return this._options;
111
+ }
112
+ get ready() {
113
+ return this._state === RuntimeState.READY;
114
+ }
115
+ get stopped() {
116
+ return this._state === RuntimeState.STOPPED;
117
+ }
118
+ get failed() {
119
+ return this._state === RuntimeState.FAILED;
120
+ }
121
+ get signalHandlersRegistered() {
122
+ return this._signals.registered;
123
+ }
46
124
  async start() {
47
- if (this._state === "ready")
125
+ if (this._state === RuntimeState.READY)
48
126
  return;
49
- if (this.startPromise)
50
- return this.startPromise;
51
- if (this._state === "stopping")
52
- throw new RuntimeStateError("Cannot start the runtime while it is stopping.");
53
- if (this._state === "stopped")
54
- throw new RuntimeStateError("A stopped runtime cannot be started again.");
55
- if (this._state === "failed")
56
- throw new RuntimeStateError("A failed runtime cannot be restarted.");
57
- this.startPromise = this.performStart();
127
+ if (this._startPromise)
128
+ return this._startPromise;
129
+ if (this._state !== RuntimeState.CREATED) {
130
+ throw new InvalidRuntimeStateError(this._state === RuntimeState.STOPPING
131
+ ? "Cannot start the runtime while it is stopping."
132
+ : this._state === RuntimeState.STOPPED
133
+ ? "A stopped runtime cannot be started again."
134
+ : "A failed runtime cannot be started again.", this.errorContext({ operation: "start", state: this._state }));
135
+ }
136
+ this._startPromise = this.inContext(() => this.performStart());
58
137
  try {
59
- await this.startPromise;
138
+ await this._startPromise;
60
139
  }
61
140
  finally {
62
- this.startPromise = undefined;
141
+ this._startPromise = undefined;
63
142
  }
64
143
  }
65
144
  async stop() {
66
- if (this._state === "stopped")
145
+ if (this._state === RuntimeState.STOPPED)
67
146
  return;
68
- if (this.stopPromise)
69
- return this.stopPromise;
70
- if (this._state === "created") {
71
- this._state = "stopped";
72
- this.stoppedAt = new Date();
147
+ if (this._stopPromise)
148
+ return this._stopPromise;
149
+ if (this._state === RuntimeState.BOOTSTRAPPING && this._startPromise) {
150
+ // A stop requested mid-bootstrap waits for bootstrap to settle,
151
+ // then unwinds whatever it produced.
152
+ await this._startPromise.catch(() => undefined);
153
+ return this.stop();
154
+ }
155
+ if (this._state === RuntimeState.CREATED) {
156
+ this.transitionTo(RuntimeState.STOPPED, "Runtime stopped before start.");
73
157
  return;
74
158
  }
75
- if (this._state === "bootstrapping")
76
- throw new RuntimeStateError("Cannot stop the runtime while it is bootstrapping.");
77
- if (this._state === "stopping")
159
+ this._stopPromise = this.inContext(() => this._state === RuntimeState.FAILED ? this.unwind() : this.performStop());
160
+ try {
161
+ await this._stopPromise;
162
+ }
163
+ finally {
164
+ this._stopPromise = undefined;
165
+ }
166
+ }
167
+ fail(error) {
168
+ if (isRuntimeTerminal(this._state))
78
169
  return;
79
- this.stopPromise = this.performStop();
170
+ this._error = error;
171
+ this.transitionTo(RuntimeState.FAILED, "Runtime marked as failed.");
172
+ this._signals.unregister();
173
+ }
174
+ async dispose() {
80
175
  try {
81
- await this.stopPromise;
176
+ await this.stop();
82
177
  }
83
178
  finally {
84
- this.stopPromise = undefined;
179
+ this._signals.unregister();
85
180
  }
86
181
  }
87
182
  async performStart() {
88
- this._state = "bootstrapping";
89
- this.error = undefined;
183
+ this.transitionTo(RuntimeState.BOOTSTRAPPING, "Runtime startup initiated.");
184
+ this._error = undefined;
185
+ this._signals.register({
186
+ onSignal: (signal) => this.handleSignal(signal),
187
+ onUncaughtException: (error) => this.handleFatal("uncaughtException", error),
188
+ onUnhandledRejection: (reason) => this.handleFatal("unhandledRejection", reason),
189
+ });
90
190
  try {
91
- this.logger.info("Starting application runtime.");
92
- await this.moduleLoader.loadAll();
93
- const initialization = await this.moduleLifecycle.initialize();
94
- if (initialization.failed.length > 0)
95
- throw new RuntimeError("One or more modules failed during initialization.", initialization.failed);
96
- const startup = await this.moduleLifecycle.start();
97
- if (startup.failed.length > 0)
98
- throw new RuntimeError("One or more modules failed during startup.", startup.failed);
99
- this.startedAt = new Date();
100
- this._state = "ready";
101
- this.logger.info("Application runtime is ready.");
191
+ const result = await this._bootstrap.bootstrap();
192
+ if (this._state !== RuntimeState.BOOTSTRAPPING) {
193
+ // fail() was called while bootstrapping: unwind what started.
194
+ await this.unwind();
195
+ throw new InvalidRuntimeStateError("Runtime was marked failed during bootstrap.", this.errorContext({ operation: "start", state: this._state }));
196
+ }
197
+ if (!result.success) {
198
+ this._logger.warn("Runtime became ready with module errors (continueOn*Error).", this.logContext({ errors: result.errors.length }));
199
+ }
200
+ this.transitionTo(RuntimeState.READY, "Runtime startup completed.");
102
201
  }
103
202
  catch (error) {
104
- this.error = error;
105
- this.failedAt = new Date();
106
- this._state = "failed";
107
- this.logger.error("Application runtime failed to start.", { error });
108
- try {
109
- await this.moduleLifecycle.stopApplication();
110
- }
111
- catch (cleanupError) {
112
- this.logger.error("Runtime startup cleanup failed.", {
113
- error: cleanupError,
114
- });
203
+ this.fail(error);
204
+ this._logger.error("Runtime failed to start.", error, this.logContext());
205
+ // The module subsystem has already rolled back when the module
206
+ // lifecycle manager threw; a timed-out bootstrap is still
207
+ // running and must not be unwound concurrently.
208
+ if (!(error instanceof RuntimeTimeoutError)) {
209
+ await this.unwind();
115
210
  }
116
211
  throw error;
117
212
  }
118
213
  }
119
214
  async performStop() {
120
- this._state = "stopping";
215
+ this.transitionTo(RuntimeState.STOPPING, "Runtime shutdown initiated.");
121
216
  try {
122
- this.logger.info("Stopping application runtime.");
123
- await this.moduleLifecycle.stopApplication();
124
- this.stoppedAt = new Date();
125
- this._state = "stopped";
126
- this.logger.info("Application runtime stopped.");
217
+ await this.runShutdown();
218
+ // fail() may have been called while stopping; stay FAILED.
219
+ if (this._state === RuntimeState.STOPPING) {
220
+ this.transitionTo(RuntimeState.STOPPED, "Runtime shutdown completed.");
221
+ }
222
+ else {
223
+ this.recordTiming({ stoppedAt: new Date() });
224
+ }
127
225
  }
128
226
  catch (error) {
129
- this.error = error;
130
- this.failedAt = new Date();
131
- this._state = "failed";
132
- this.logger.error("Application runtime failed to stop cleanly.", {
133
- error,
134
- });
227
+ this.fail(error);
228
+ this._logger.error("Runtime failed to stop cleanly.", error, this.logContext());
135
229
  throw error;
136
230
  }
231
+ finally {
232
+ this._signals.unregister();
233
+ }
234
+ }
235
+ /**
236
+ * Best-effort module unwinding used after a failure. Errors are
237
+ * logged and swallowed; the runtime stays FAILED.
238
+ */
239
+ async unwind() {
240
+ if (this._unwound)
241
+ return;
242
+ try {
243
+ await this.runShutdown();
244
+ }
245
+ catch (error) {
246
+ this._logger.error("Runtime cleanup after failure reported errors.", error, this.logContext());
247
+ }
248
+ finally {
249
+ this.recordTiming({ stoppedAt: this._timing.stoppedAt ?? new Date() });
250
+ }
251
+ }
252
+ /**
253
+ * Runs an operation inside the runtime's execution context so that
254
+ * module hooks, container factories, and loggers reached from it
255
+ * observe the context through `contextStorage`.
256
+ */
257
+ inContext(operation) {
258
+ return this._contextStorage.run(this._context, operation);
259
+ }
260
+ async runShutdown() {
261
+ if (this._unwound)
262
+ return;
263
+ this._unwound = true;
264
+ const result = await this._shutdown.shutdown();
265
+ if (!result.success) {
266
+ this._logger.warn("Runtime shutdown completed with module errors (continueOn*Error).", this.logContext({ errors: result.errors.length }));
267
+ }
268
+ }
269
+ /*
270
+ * Process-level callbacks run in whatever async context was active
271
+ * when the listener was registered, so the handlers re-establish
272
+ * the runtime context explicitly.
273
+ */
274
+ handleSignal(signal) {
275
+ return this.inContext(async () => {
276
+ this._logger.info(`Stopping runtime after ${signal}.`, this.logContext({ signal }));
277
+ try {
278
+ await this.stop();
279
+ }
280
+ catch (error) {
281
+ this._logger.error(`Runtime shutdown after ${signal} failed.`, error, this.logContext({ signal }));
282
+ }
283
+ });
284
+ }
285
+ handleFatal(event, error) {
286
+ return this.inContext(async () => {
287
+ this._logger.fatal(`Runtime received ${event}; marking runtime failed and stopping.`, error, this.logContext({ event }));
288
+ if (this._state === RuntimeState.BOOTSTRAPPING && this._startPromise) {
289
+ await this._startPromise.catch(() => undefined);
290
+ }
291
+ this.fail(error);
292
+ try {
293
+ await this.stop();
294
+ }
295
+ catch (stopError) {
296
+ this._logger.error(`Runtime shutdown after ${event} failed.`, stopError, this.logContext({ event }));
297
+ }
298
+ });
299
+ }
300
+ transitionTo(next, reason) {
301
+ const current = this._state;
302
+ assertRuntimeTransition(current, next);
303
+ this._state = next;
304
+ this.recordTimingForState(next);
305
+ try {
306
+ this._logger.debug(`Runtime state changed from "${current}" to "${next}".`, this.logContext({ from: current, to: next, reason }));
307
+ }
308
+ catch {
309
+ /* Logging must never prevent a lifecycle transition. */
310
+ }
311
+ }
312
+ recordTimingForState(state) {
313
+ const now = new Date();
314
+ const t = this._timing;
315
+ switch (state) {
316
+ case RuntimeState.BOOTSTRAPPING:
317
+ this.recordTiming({ startupStartedAt: t.startupStartedAt ?? now });
318
+ break;
319
+ case RuntimeState.READY:
320
+ this.recordTiming({ readyAt: t.readyAt ?? now });
321
+ break;
322
+ case RuntimeState.STOPPING:
323
+ this.recordTiming({ shutdownStartedAt: t.shutdownStartedAt ?? now });
324
+ break;
325
+ case RuntimeState.STOPPED:
326
+ this.recordTiming({ stoppedAt: t.stoppedAt ?? now });
327
+ break;
328
+ case RuntimeState.FAILED:
329
+ this.recordTiming({ failedAt: t.failedAt ?? now });
330
+ break;
331
+ default:
332
+ break;
333
+ }
334
+ }
335
+ recordTiming(update) {
336
+ this._timing = Object.freeze({ ...this._timing, ...update });
337
+ }
338
+ logContext(extra = {}) {
339
+ return {
340
+ runtimeId: this._identity.id,
341
+ runtimeName: this._identity.name,
342
+ ...extra,
343
+ };
344
+ }
345
+ errorContext(extra) {
346
+ return {
347
+ ...extra,
348
+ runtimeId: this._identity.id,
349
+ runtimeName: this._identity.name,
350
+ };
137
351
  }
138
352
  getStatus() {
139
353
  return Object.freeze({
140
354
  state: this._state,
141
- startedAt: this.startedAt,
142
- stoppedAt: this.stoppedAt,
143
- failedAt: this.failedAt,
144
- error: this.error,
355
+ startedAt: this._timing.readyAt,
356
+ stoppedAt: this._timing.stoppedAt,
357
+ failedAt: this._timing.failedAt,
358
+ timing: this._timing,
359
+ error: this._error,
360
+ bootstrap: this._bootstrap.getLastResult(),
361
+ shutdown: this._shutdown.getLastResult(),
145
362
  });
146
363
  }
364
+ getStateSnapshot() {
365
+ return createRuntimeStateSnapshot(this._state);
366
+ }
367
+ getUptime() {
368
+ return Date.now() - this._identity.createdAt.getTime();
369
+ }
147
370
  getApplicationContext() {
148
- return this.application;
371
+ return this._application;
149
372
  }
150
373
  getConfiguration() {
151
- return this.configuration;
374
+ return this._configuration;
152
375
  }
153
376
  getLogger() {
154
- return this.logger;
377
+ return this._logger;
155
378
  }
156
379
  getModuleRegistry() {
157
- return this.moduleRegistry;
380
+ return this._moduleRegistry;
158
381
  }
159
382
  getModuleLoader() {
160
- return this.moduleLoader;
383
+ return this._moduleLoader;
161
384
  }
162
385
  getModuleLifecycle() {
163
- return this.moduleLifecycle;
386
+ return this._moduleLifecycle;
164
387
  }
165
388
  getModule(moduleId) {
166
- return this.moduleRegistry.get(moduleId)?.instance;
389
+ return this._moduleRegistry.get(moduleId)?.instance;
167
390
  }
168
391
  requireModule(moduleId) {
169
- const module = this.getModule(moduleId);
170
- if (!module)
171
- throw new RuntimeError(`Module "${moduleId}" is not loaded.`, [moduleId]);
392
+ // Throws the module subsystem's ModuleNotFoundError when unknown.
393
+ const module = this._moduleRegistry.require(moduleId).instance;
394
+ if (!module) {
395
+ throw new RuntimeNotReadyError(`Module "${moduleId}" is registered but not loaded.`, this.errorContext({
396
+ moduleName: moduleId,
397
+ metadata: { state: this._state },
398
+ }));
399
+ }
172
400
  return module;
173
401
  }
174
402
  }
175
- /** Creates a runtime. */
176
- export function createRuntime(dependencies) {
177
- return new DefaultRuntime(dependencies);
403
+ /**
404
+ * Creates a runtime.
405
+ */
406
+ export function createRuntime(dependencies, options = {}) {
407
+ return new DefaultRuntime(dependencies, options);
178
408
  }
179
409
  //# sourceMappingURL=runtime.js.map
@@ -5,6 +5,7 @@
5
5
  * and starting runtime modules.
6
6
  */
7
7
  export { DefaultRuntimeBootstrap } from "./runtimeBootstrap.core.js";
8
- export { RuntimeBootstrapError, withTimeout, createBootstrapResult, executeBootstrapPipeline, } from "./pipeline/index.js";
8
+ export { executeBootstrapPipeline, createBootstrapPipelineState, createBootstrapResult, } from "./pipeline/index.js";
9
+ export type { BootstrapCounters, BootstrapPipelineServices, BootstrapPipelineState, } from "./pipeline/index.js";
9
10
  export type { RuntimeBootstrapDependencies, RuntimeBootstrapOptions, RuntimeBootstrapPhase, RuntimeBootstrapErrorInfo, RuntimeBootstrapResult, RuntimeBootstrap, ResolvedBootstrapOptions, } from "./runtimeBootstrap.type.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -5,5 +5,5 @@
5
5
  * and starting runtime modules.
6
6
  */
7
7
  export { DefaultRuntimeBootstrap } from "./runtimeBootstrap.core.js";
8
- export { RuntimeBootstrapError, withTimeout, createBootstrapResult, executeBootstrapPipeline, } from "./pipeline/index.js";
8
+ export { executeBootstrapPipeline, createBootstrapPipelineState, createBootstrapResult, } from "./pipeline/index.js";
9
9
  //# sourceMappingURL=index.js.map
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * Module loading, initialization, and startup stages.
5
5
  */
6
- export { RuntimeBootstrapError, executeBootstrapPipeline, withTimeout, createBootstrapResult, } from "./runtimeBootstrap.pipeline.js";
7
- export { invokeModuleLoader, invokeInitializeModules, invokeStartModules, } from "./runtimeBootstrap.invoke.js";
6
+ export { executeBootstrapPipeline, createBootstrapPipelineState, createBootstrapResult, } from "./runtimeBootstrap.pipeline.js";
7
+ export type { BootstrapCounters, BootstrapLogFn, BootstrapPipelineServices, BootstrapPipelineState, } from "./runtimeBootstrap.pipeline.js";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -3,6 +3,5 @@
3
3
  *
4
4
  * Module loading, initialization, and startup stages.
5
5
  */
6
- export { RuntimeBootstrapError, executeBootstrapPipeline, withTimeout, createBootstrapResult, } from "./runtimeBootstrap.pipeline.js";
7
- export { invokeModuleLoader, invokeInitializeModules, invokeStartModules, } from "./runtimeBootstrap.invoke.js";
6
+ export { executeBootstrapPipeline, createBootstrapPipelineState, createBootstrapResult, } from "./runtimeBootstrap.pipeline.js";
8
7
  //# sourceMappingURL=index.js.map
@@ -1,19 +1,45 @@
1
1
  import type { ModuleLoader } from "../../../modules/moduleLoader/index.js";
2
2
  import type { ModuleLifecycleManager } from "../../../modules/moduleLifecycle/index.js";
3
- import type { RuntimeBootstrapPhase, RuntimeBootstrapErrorInfo, ResolvedBootstrapOptions } from "../runtimeBootstrap.type.js";
4
- export type RuntimeBootstrapErrorCode = "BOOTSTRAP_ALREADY_RUNNING" | "BOOTSTRAP_ALREADY_COMPLETED" | "BOOTSTRAP_FAILED" | "BOOTSTRAP_TIMEOUT" | "BOOTSTRAP_MODULE_ERRORS" | "BOOTSTRAP_RESET_WHILE_RUNNING" | "MODULE_LOAD_FAILED" | "MODULE_INITIALIZATION_FAILED" | "MODULE_START_FAILED" | "MODULE_LOADER_METHOD_NOT_FOUND" | "MODULE_INITIALIZE_METHOD_NOT_FOUND" | "MODULE_START_METHOD_NOT_FOUND";
5
- import { RuntimeBootstrapError as BaseRuntimeBootstrapError } from "@zudojs/errors";
6
- export declare class RuntimeBootstrapError extends BaseRuntimeBootstrapError {
7
- readonly bootstrapCode: RuntimeBootstrapErrorCode;
8
- constructor(message: string, code: RuntimeBootstrapErrorCode, cause?: unknown);
3
+ import type { RuntimeBootstrapPhase, RuntimeBootstrapErrorInfo, RuntimeBootstrapResult, ResolvedBootstrapOptions } from "../runtimeBootstrap.type.js";
4
+ export type BootstrapLogFn = (level: "debug" | "info" | "warn" | "error", message: string, metadata?: Record<string, unknown>) => void;
5
+ /**
6
+ * Module counts produced by the bootstrap pipeline.
7
+ */
8
+ export interface BootstrapCounters {
9
+ loadedModules: number;
10
+ initializedModules: number;
11
+ startedModules: number;
9
12
  }
10
- type LogFn = (level: "debug" | "info" | "warn" | "error", message: string, metadata?: Record<string, unknown>) => void;
11
- export declare function executeBootstrapPipeline(options: ResolvedBootstrapOptions, errors: RuntimeBootstrapErrorInfo[], counters: {
12
- incrementLoaded(): void;
13
- incrementInitialized(): void;
14
- incrementStarted(): void;
15
- }, moduleLoader: ModuleLoader, moduleLifecycle: ModuleLifecycleManager, setPhase: (phase: RuntimeBootstrapPhase) => void, log: LogFn): Promise<void>;
16
- export declare function withTimeout(operation: Promise<void>, timeoutMs: number): Promise<void>;
17
- export declare function createBootstrapResult(success: boolean, phase: RuntimeBootstrapPhase, loadedModules: number, initializedModules: number, startedModules: number, errors: readonly RuntimeBootstrapErrorInfo[], startedAt: Date, completedAt: Date): import("../runtimeBootstrap.type.js").RuntimeBootstrapResult;
18
- export {};
13
+ /**
14
+ * Services the bootstrap pipeline drives.
15
+ */
16
+ export interface BootstrapPipelineServices {
17
+ readonly moduleLoader: ModuleLoader;
18
+ readonly moduleLifecycle: ModuleLifecycleManager;
19
+ /** Identity attached to every error the pipeline raises. */
20
+ readonly runtimeId?: string;
21
+ readonly runtimeName?: string;
22
+ }
23
+ /**
24
+ * Mutable pipeline state shared with the caller so that counts and
25
+ * recorded errors survive a thrown failure.
26
+ */
27
+ export interface BootstrapPipelineState {
28
+ readonly counters: BootstrapCounters;
29
+ readonly errors: RuntimeBootstrapErrorInfo[];
30
+ }
31
+ export declare function createBootstrapPipelineState(): BootstrapPipelineState;
32
+ /**
33
+ * Executes the load → initialize → start pipeline.
34
+ *
35
+ * - Module-level failures reported by the ModuleLifecycleManager are
36
+ * recorded once per module (with `moduleName`).
37
+ * - When the phase's continueOn*Error flag is false the pipeline
38
+ * throws; the thrown error is NOT pushed to `errors` here — the
39
+ * caller records it exactly once.
40
+ * - Once `signal` is aborted (timeout) the pipeline stops publishing
41
+ * phase changes so an abandoned run cannot mutate the owner.
42
+ */
43
+ export declare function executeBootstrapPipeline(options: ResolvedBootstrapOptions, services: BootstrapPipelineServices, state: BootstrapPipelineState, signal: AbortSignal, setPhase: (phase: RuntimeBootstrapPhase) => void, log: BootstrapLogFn): Promise<void>;
44
+ export declare function createBootstrapResult(success: boolean, phase: RuntimeBootstrapPhase, counters: BootstrapCounters, errors: readonly RuntimeBootstrapErrorInfo[], startedAt: Date, completedAt: Date): RuntimeBootstrapResult;
19
45
  //# sourceMappingURL=runtimeBootstrap.pipeline.d.ts.map