@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
@@ -0,0 +1,109 @@
1
+ import { Application } from "./application.js";
2
+ import { ApplicationContext } from "./applicationContext.context.js";
3
+ import { Container } from "../container/container.js";
4
+ import { ConfigurationManager, ConfigurationManagerState, createConfigurationManager, } from "../configuration/configurationManager.manager.js";
5
+ import { ConsoleLogger } from "../logging/console/consoleLogger.logger.js";
6
+ import { Lifecycle } from "../lifecycle/core/lifecycle.js";
7
+ import { createModuleRegistry } from "../modules/moduleRegistry/moduleRegistry.registry.js";
8
+ import { createModuleLoader } from "../modules/moduleLoader/moduleLoader.loader.js";
9
+ import { createModuleLifecycleManager } from "../modules/moduleLifecycle/moduleLifecycle.lifecycle.js";
10
+ import { createRuntime } from "../runtime/runtime.js";
11
+ import { resolveRuntimeOptions } from "../runtime/runtimeOptions/runtimeOptions.resolver.js";
12
+ import { getDefaultContextStorage } from "../context/provider/defaultContextStorage.storage.js";
13
+ function isLogger(value) {
14
+ return (typeof value === "object" &&
15
+ value !== null &&
16
+ typeof value.info === "function" &&
17
+ typeof value.error === "function");
18
+ }
19
+ /**
20
+ * Wires the standard application graph — container, configuration,
21
+ * logger, module registry/loader/lifecycle, runtime, and application
22
+ * lifecycle — and returns an initialized Application. One
23
+ * ContextStorage is threaded through every piece, so the runtime's
24
+ * execution context is visible from module hooks, container
25
+ * factories, lifecycle participants, and log entries.
26
+ *
27
+ * The runtime is created through a factory, so the application can be
28
+ * restarted (stop() then start()) with a fresh runtime each time.
29
+ */
30
+ export async function createApplication(options = {}) {
31
+ const contextStorage = options.contextStorage ?? getDefaultContextStorage();
32
+ const logger = isLogger(options.logger)
33
+ ? options.logger
34
+ : new ConsoleLogger({ contextStorage, ...options.logger });
35
+ const configuration = options.configuration ?? createConfigurationManager();
36
+ if (configuration.getState() === ConfigurationManagerState.CREATED) {
37
+ await configuration.initialize();
38
+ }
39
+ const container = options.container ??
40
+ new Container({ currentScope: () => contextStorage.get() });
41
+ const moduleRegistry = options.moduleRegistry ?? createModuleRegistry();
42
+ if (options.modules && options.modules.length > 0) {
43
+ moduleRegistry.registerMany(options.modules);
44
+ }
45
+ const context = new ApplicationContext({
46
+ container,
47
+ /*
48
+ * An accessor rather than a snapshot: after
49
+ * `configuration.reload()` the application context must hand
50
+ * out the reloaded configuration, not the one captured here.
51
+ */
52
+ configuration: () => configuration.getConfiguration(),
53
+ modules: moduleRegistry,
54
+ logger,
55
+ contextStorage,
56
+ });
57
+ const runtimeOptions = options.runtime ?? {};
58
+ const resolved = resolveRuntimeOptions(runtimeOptions);
59
+ let previousLoader;
60
+ const createApplicationRuntime = () => {
61
+ /*
62
+ * A restart gets fresh module instances: the previous runtime has
63
+ * already stopped and destroyed them, so forget the instances and
64
+ * contexts before the new loader re-creates them.
65
+ */
66
+ if (previousLoader) {
67
+ for (const registration of moduleRegistry.getAll()) {
68
+ previousLoader.unload(registration.definition.id);
69
+ }
70
+ }
71
+ const moduleLoader = createModuleLoader(moduleRegistry, {
72
+ application: context,
73
+ configuration,
74
+ logger,
75
+ });
76
+ previousLoader = moduleLoader;
77
+ const moduleLifecycle = createModuleLifecycleManager(moduleRegistry, moduleLoader, {
78
+ continueOnInitializeError: resolved.startup.continueOnInitializeError,
79
+ continueOnStartError: resolved.startup.continueOnStartError,
80
+ continueOnStopError: resolved.shutdown.continueOnStopError,
81
+ continueOnDestroyError: resolved.shutdown.continueOnDestroyError,
82
+ contextStorage,
83
+ });
84
+ return createRuntime({
85
+ application: context,
86
+ configuration,
87
+ logger,
88
+ moduleRegistry,
89
+ moduleLoader,
90
+ moduleLifecycle,
91
+ signalTarget: options.signalTarget,
92
+ contextStorage,
93
+ }, runtimeOptions);
94
+ };
95
+ const lifecycle = new Lifecycle({ logger });
96
+ for (const participant of options.participants ?? []) {
97
+ lifecycle.register(participant);
98
+ }
99
+ const application = await Application.create({
100
+ context,
101
+ lifecycle,
102
+ runtime: createApplicationRuntime,
103
+ });
104
+ if (options.autoStart) {
105
+ await application.start();
106
+ }
107
+ return application;
108
+ }
109
+ //# sourceMappingURL=createApplication.js.map
@@ -2,9 +2,10 @@
2
2
  * Application bootstrap and context management.
3
3
  *
4
4
  * Provides the main Application class, its context,
5
- * and application state types.
5
+ * application state types, and the createApplication factory.
6
6
  */
7
7
  export * from "./application.js";
8
8
  export * from "./applicationContext.context.js";
9
9
  export * from "./applicationState.state.js";
10
+ export * from "./createApplication.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -2,9 +2,10 @@
2
2
  * Application bootstrap and context management.
3
3
  *
4
4
  * Provides the main Application class, its context,
5
- * and application state types.
5
+ * application state types, and the createApplication factory.
6
6
  */
7
7
  export * from "./application.js";
8
8
  export * from "./applicationContext.context.js";
9
9
  export * from "./applicationState.state.js";
10
+ export * from "./createApplication.js";
10
11
  //# sourceMappingURL=index.js.map
@@ -7,6 +7,7 @@ import { ConfigurationSchemaRegistry } from "./schema/configurationSchema.schema
7
7
  import type { ConfigurationValidationOptions, ConfigurationValidationReport } from "./schema/configurationValidation.validator.js";
8
8
  import { ConfigurationRedactor } from "./error/configurationRedactor.redactor.js";
9
9
  import type { ConfigurationRedactorOptions, RedactedConfiguration } from "./error/configurationRedactor.redactor.js";
10
+ import type { ConfigurationEventListener, ConfigurationEventTypeValue } from "./events/configurationEvents.events.js";
10
11
  /** Lifecycle state of the configuration manager. */
11
12
  export declare enum ConfigurationManagerState {
12
13
  CREATED = "created",
@@ -32,6 +33,12 @@ export interface ConfigurationManagerResult {
32
33
  readonly load: ConfigurationLoadResult;
33
34
  readonly validation: ConfigurationValidationReport;
34
35
  }
36
+ /**
37
+ * Event type accepted when subscribing to the manager.
38
+ *
39
+ * "*" subscribes to every configuration lifecycle event.
40
+ */
41
+ export type ConfigurationEventSubscription = ConfigurationEventTypeValue | "*";
35
42
  /** Coordinates the complete configuration lifecycle. */
36
43
  export declare class ConfigurationManager {
37
44
  private readonly loader;
@@ -40,17 +47,51 @@ export declare class ConfigurationManager {
40
47
  private readonly schemas;
41
48
  private readonly redactor;
42
49
  private readonly validationOptions;
50
+ private readonly listeners;
51
+ private readonly listenerErrors;
43
52
  private configuration;
44
53
  private loadResult;
45
54
  private validationReport;
55
+ private missingSetConfigurationWarned;
56
+ private inFlightReload;
46
57
  private stateValue;
47
58
  constructor(options?: ConfigurationManagerOptions);
59
+ /**
60
+ * Subscribes to configuration lifecycle events.
61
+ *
62
+ * Pass "*" to receive every event. Returns an unsubscribe
63
+ * function.
64
+ */
65
+ on(type: ConfigurationEventSubscription, listener: ConfigurationEventListener): () => void;
66
+ /** Removes a previously registered event listener. */
67
+ off(type: ConfigurationEventSubscription, listener: ConfigurationEventListener): boolean;
68
+ /**
69
+ * Returns errors thrown by event listeners.
70
+ *
71
+ * Listener failures never interrupt configuration loading;
72
+ * they are collected here for diagnostics.
73
+ */
74
+ getListenerErrors(): readonly unknown[];
48
75
  initialize(): Promise<ConfigurationManagerResult>;
76
+ /**
77
+ * Reloads configuration from the registered sources.
78
+ *
79
+ * Overlapping calls are serialised: a reload requested while one
80
+ * is already in progress shares that in-flight reload instead of
81
+ * failing with InvalidStateError. A manager that is not ready yet
82
+ * is initialized instead.
83
+ */
49
84
  reload(): Promise<ConfigurationManagerResult>;
85
+ private performReload;
50
86
  getConfiguration(): Configuration;
51
87
  getProvider(): ConfigurationProvider;
52
88
  getRegistry(): ConfigurationRegistry;
53
89
  getSchemaRegistry(): ConfigurationSchemaRegistry;
90
+ /**
91
+ * Returns the active configuration scoped to a section
92
+ * registered with the manager's registry.
93
+ */
94
+ getSection(name: string): Configuration;
54
95
  getLoader(): ConfigurationLoader;
55
96
  getRedactor(): ConfigurationRedactor;
56
97
  getState(): ConfigurationManagerState;
@@ -61,6 +102,7 @@ export declare class ConfigurationManager {
61
102
  get<T = unknown>(path: string): T | undefined;
62
103
  require<T = unknown>(path: string): T;
63
104
  private providerConfiguration;
105
+ private emit;
64
106
  private ensureReady;
65
107
  }
66
108
  /** Creates a ConfigurationManager. */
@@ -2,10 +2,12 @@ import { Configuration } from "./core/configuration.js";
2
2
  import { ConfigurationLoader } from "./loader/configurationLoader.loader.js";
3
3
  import { DefaultConfigurationProvider } from "./registry/configurationProvider.provider.js";
4
4
  import { ConfigurationRegistry } from "./registry/configurationRegistry.registry.js";
5
+ import { InvalidStateError } from "../errors/exceptions.js";
5
6
  import { ConfigurationSchemaRegistry } from "./schema/configurationSchema.schema.js";
6
- import { validateConfiguration } from "./schema/configurationValidation.validator.js";
7
+ import { applyConfigurationSchemaDefaults, validateConfiguration, } from "./schema/configurationValidation.validator.js";
7
8
  import { ConfigurationValidationError } from "./schema/configurationValidation.validator.js";
8
9
  import { ConfigurationRedactor } from "./error/configurationRedactor.redactor.js";
10
+ import { createConfigurationFailedEvent, createConfigurationInitializingEvent, createConfigurationLoadedEvent, createConfigurationReadyEvent, createConfigurationReloadedEvent, createConfigurationReloadingEvent, createConfigurationValidatedEvent, } from "./events/configurationEvents.events.js";
9
11
  /** Lifecycle state of the configuration manager. */
10
12
  export var ConfigurationManagerState;
11
13
  (function (ConfigurationManagerState) {
@@ -23,9 +25,13 @@ export class ConfigurationManager {
23
25
  schemas;
24
26
  redactor;
25
27
  validationOptions;
28
+ listeners = new Map();
29
+ listenerErrors = [];
26
30
  configuration;
27
31
  loadResult;
28
32
  validationReport;
33
+ missingSetConfigurationWarned = false;
34
+ inFlightReload;
29
35
  stateValue = ConfigurationManagerState.CREATED;
30
36
  constructor(options = {}) {
31
37
  this.loader =
@@ -37,23 +43,56 @@ export class ConfigurationManager {
37
43
  options.redactor ?? new ConfigurationRedactor(options.redactorOptions);
38
44
  this.validationOptions = options.validationOptions ?? {};
39
45
  }
46
+ /**
47
+ * Subscribes to configuration lifecycle events.
48
+ *
49
+ * Pass "*" to receive every event. Returns an unsubscribe
50
+ * function.
51
+ */
52
+ on(type, listener) {
53
+ let listeners = this.listeners.get(type);
54
+ if (!listeners) {
55
+ listeners = new Set();
56
+ this.listeners.set(type, listeners);
57
+ }
58
+ listeners.add(listener);
59
+ return () => this.off(type, listener);
60
+ }
61
+ /** Removes a previously registered event listener. */
62
+ off(type, listener) {
63
+ return this.listeners.get(type)?.delete(listener) ?? false;
64
+ }
65
+ /**
66
+ * Returns errors thrown by event listeners.
67
+ *
68
+ * Listener failures never interrupt configuration loading;
69
+ * they are collected here for diagnostics.
70
+ */
71
+ getListenerErrors() {
72
+ return [...this.listenerErrors];
73
+ }
40
74
  async initialize() {
41
75
  if (this.stateValue === ConfigurationManagerState.LOADING)
42
- throw new Error("Configuration initialization is already in progress.");
76
+ throw new InvalidStateError("Configuration initialization is already in progress.", { state: this.stateValue });
43
77
  this.stateValue = ConfigurationManagerState.LOADING;
78
+ this.emit(createConfigurationInitializingEvent(this.stateValue));
44
79
  try {
45
- const loadResult = await this.loader.load();
80
+ const loadResult = await this.loader.load(this.registry.getSources());
46
81
  this.loadResult = loadResult;
47
82
  this.configuration = loadResult.configuration;
48
83
  this.stateValue = ConfigurationManagerState.LOADED;
84
+ this.emit(createConfigurationLoadedEvent(this.stateValue, loadResult));
49
85
  const validation = await validateConfiguration(this.configuration, this.schemas, this.validationOptions);
50
86
  this.validationReport = validation;
51
87
  if (!validation.valid) {
52
88
  this.stateValue = ConfigurationManagerState.FAILED;
53
89
  throw new ConfigurationValidationError(validation.issues, validation.schemaCount, validation.invalidSchemaCount);
54
90
  }
91
+ this.configuration = applyConfigurationSchemaDefaults(this.configuration, this.schemas);
92
+ this.emit(createConfigurationValidatedEvent(this.stateValue, this.configuration, validation));
55
93
  this.providerConfiguration(this.configuration);
56
94
  this.stateValue = ConfigurationManagerState.READY;
95
+ this.emit(createConfigurationReadyEvent(this.stateValue, this.configuration, validation));
57
96
  return {
58
97
  configuration: this.configuration,
59
98
  load: loadResult,
@@ -62,19 +101,38 @@ export class ConfigurationManager {
62
101
  }
63
102
  catch (error) {
64
103
  this.stateValue = ConfigurationManagerState.FAILED;
104
+ this.emit(createConfigurationFailedEvent(this.stateValue, error));
65
105
  throw error;
66
106
  }
67
107
  }
108
+ /**
109
+ * Reloads configuration from the registered sources.
110
+ *
111
+ * Overlapping calls are serialised: a reload requested while one
112
+ * is already in progress shares that in-flight reload instead of
113
+ * failing with InvalidStateError. A manager that is not ready yet
114
+ * is initialized instead.
115
+ */
68
116
  async reload() {
117
+ if (this.inFlightReload)
118
+ return this.inFlightReload;
69
119
  if (this.stateValue !== ConfigurationManagerState.READY)
70
120
  return this.initialize();
121
+ const reload = this.performReload().finally(() => {
122
+ this.inFlightReload = undefined;
123
+ });
124
+ this.inFlightReload = reload;
125
+ return reload;
126
+ }
127
+ async performReload() {
71
128
  const previousConfiguration = this.configuration;
72
129
  const previousLoadResult = this.loadResult;
73
130
  const previousValidation = this.validationReport;
74
131
  this.stateValue = ConfigurationManagerState.LOADING;
132
+ this.emit(createConfigurationReloadingEvent(this.stateValue, previousConfiguration));
75
133
  try {
76
- const loadResult = await this.loader.load();
77
- const configuration = loadResult.configuration;
134
+ const loadResult = await this.loader.load(this.registry.getSources());
135
+ let configuration = loadResult.configuration;
78
136
  const validation = await validateConfiguration(configuration, this.schemas, this.validationOptions);
79
137
  if (!validation.valid) {
80
138
  this.configuration = previousConfiguration;
@@ -83,11 +141,13 @@ export class ConfigurationManager {
83
141
  this.stateValue = ConfigurationManagerState.READY;
84
142
  throw new ConfigurationValidationError(validation.issues, validation.schemaCount, validation.invalidSchemaCount);
85
143
  }
144
+ configuration = applyConfigurationSchemaDefaults(configuration, this.schemas);
86
145
  this.configuration = configuration;
87
146
  this.loadResult = loadResult;
88
147
  this.validationReport = validation;
89
148
  this.providerConfiguration(configuration);
90
149
  this.stateValue = ConfigurationManagerState.READY;
150
+ this.emit(createConfigurationReloadedEvent(this.stateValue, previousConfiguration, configuration, loadResult, validation));
91
151
  return { configuration, load: loadResult, validation };
92
152
  }
93
153
  catch (error) {
@@ -96,6 +156,7 @@ export class ConfigurationManager {
96
156
  this.stateValue = previousConfiguration
97
157
  ? ConfigurationManagerState.READY
98
158
  : ConfigurationManagerState.FAILED;
159
+ this.emit(createConfigurationFailedEvent(this.stateValue, error, previousConfiguration));
99
160
  throw error;
100
161
  }
101
162
  }
@@ -112,6 +173,14 @@ export class ConfigurationManager {
112
173
  getSchemaRegistry() {
113
174
  return this.schemas;
114
175
  }
176
+ /**
177
+ * Returns the active configuration scoped to a section
178
+ * registered with the manager's registry.
179
+ */
180
+ getSection(name) {
181
+ this.ensureReady();
182
+ return this.registry.getConfigurationSection(this.configuration, name);
183
+ }
115
184
  getLoader() {
116
185
  return this.loader;
117
186
  }
@@ -136,18 +205,46 @@ export class ConfigurationManager {
136
205
  : undefined;
137
206
  }
138
207
  get(path) {
208
+ this.ensureReady();
139
209
  return this.getProvider().get(path);
140
210
  }
141
211
  require(path) {
212
+ this.ensureReady();
142
213
  return this.getProvider().require(path);
143
214
  }
144
215
  providerConfiguration(configuration) {
145
- if (this.provider instanceof DefaultConfigurationProvider)
216
+ if (typeof this.provider.setConfiguration === "function") {
146
217
  this.provider.setConfiguration(configuration);
218
+ return;
219
+ }
220
+ if (!this.missingSetConfigurationWarned) {
221
+ this.missingSetConfigurationWarned = true;
222
+ console.warn("ConfigurationManager: the configured ConfigurationProvider does not implement setConfiguration(); loaded configuration will not be pushed into the provider.");
223
+ }
224
+ }
225
+ emit(event) {
226
+ const listeners = [
227
+ ...(this.listeners.get(event.type) ?? []),
228
+ ...(this.listeners.get("*") ?? []),
229
+ ];
230
+ for (const listener of listeners) {
231
+ try {
232
+ const result = listener(event);
233
+ if (result instanceof Promise) {
234
+ void result.catch((error) => {
235
+ this.listenerErrors.push(error);
236
+ });
237
+ }
238
+ }
239
+ catch (error) {
240
+ /* Listener failures must never break configuration loading. */
241
+ this.listenerErrors.push(error);
242
+ }
243
+ }
147
244
  }
148
245
  ensureReady() {
149
246
  if (this.stateValue !== ConfigurationManagerState.READY)
150
- throw new Error(`Configuration is not ready. Current state: ${this.stateValue}.`);
247
+ throw new InvalidStateError(`Configuration is not ready. Current state: ${this.stateValue}.`, { state: this.stateValue });
151
248
  }
152
249
  }
153
250
  /** Creates a ConfigurationManager. */
@@ -1,34 +1,58 @@
1
- /** Represents a configuration source. */
2
- export type ConfigurationSource = "default" | "environment" | "file" | "secret" | "remote" | "runtime" | "custom";
1
+ import type { ConfigurationSourceType } from "./configurationSource.source.js";
2
+ import type { ConfigurationKey } from "./configurationKey.key.js";
3
3
  /** Configuration value types supported by the core configuration system. */
4
4
  export type ConfigurationValue = string | number | boolean | null | undefined | ConfigurationValue[] | {
5
5
  readonly [key: string]: ConfigurationValue;
6
6
  };
7
+ /**
8
+ * Source attribution for a configuration entry.
9
+ *
10
+ * "mixed" is reported when the values under a path originate
11
+ * from more than one source type.
12
+ */
13
+ export type ConfigurationEntrySource = ConfigurationSourceType | "mixed";
7
14
  /** Options used to create a Configuration instance. */
8
15
  export interface ConfigurationOptions {
9
16
  readonly values?: Record<string, ConfigurationValue>;
10
- readonly source?: ConfigurationSource;
17
+ readonly source?: ConfigurationSourceType;
11
18
  readonly namespace?: string;
12
- }
13
- /** Typed configuration key. */
14
- export interface ConfigurationKey<T> {
15
- readonly path: string;
16
- readonly id: symbol;
19
+ /**
20
+ * Per-path source attribution.
21
+ *
22
+ * Used internally when deriving configurations so entry-level
23
+ * source information survives `with()`, `merge()`, and `scope()`.
24
+ */
25
+ readonly sources?: ReadonlyMap<string, ConfigurationSourceType>;
17
26
  }
18
27
  /** Represents a configuration entry. */
19
28
  export interface ConfigurationEntry<T = ConfigurationValue> {
20
29
  readonly path: string;
21
30
  readonly value: T;
22
- readonly source: ConfigurationSource;
31
+ readonly source: ConfigurationEntrySource;
23
32
  }
24
- /** Immutable configuration container. */
33
+ /**
34
+ * Immutable configuration container.
35
+ *
36
+ * The values tree is deep-frozen at construction, so accessors can
37
+ * safely hand out internal references. Callers should treat any
38
+ * object passed into the constructor (or `with()`) as owned by the
39
+ * configuration afterwards: it becomes frozen.
40
+ */
25
41
  export declare class Configuration {
26
42
  private readonly values;
27
43
  private readonly source;
28
44
  private readonly namespace?;
45
+ private readonly pathSources;
29
46
  constructor(options?: ConfigurationOptions);
30
47
  getNamespace(): string | undefined;
31
- getSource(): ConfigurationSource;
48
+ /**
49
+ * Returns the source of a configuration path, or of the whole
50
+ * configuration when no path is supplied.
51
+ *
52
+ * When entries originate from multiple source types, "mixed"
53
+ * is returned.
54
+ */
55
+ getSource(path?: string): ConfigurationEntrySource;
32
56
  get<T = ConfigurationValue>(path: string): T | undefined;
33
57
  require<T = ConfigurationValue>(path: string): T;
34
58
  getByKey<T>(key: ConfigurationKey<T>): T | undefined;
@@ -37,17 +61,38 @@ export declare class Configuration {
37
61
  getBoolean(path: string, defaultValue?: boolean): boolean | undefined;
38
62
  getNumber(path: string, defaultValue?: number): number | undefined;
39
63
  getString(path: string, defaultValue?: string): string | undefined;
40
- createKey<T>(path: string): ConfigurationKey<T>;
41
64
  scope(namespace: string): Configuration;
42
65
  entries(): readonly ConfigurationEntry[];
43
- toObject(): Readonly<Record<string, ConfigurationValue>>;
66
+ /**
67
+ * Returns a deep copy of the complete values tree.
68
+ *
69
+ * The copy is unfrozen and independent of the configuration, so
70
+ * callers may mutate it freely without affecting this instance
71
+ * or anything derived from it.
72
+ */
73
+ toObject(): Record<string, ConfigurationValue>;
74
+ /**
75
+ * Deeply merges another configuration on top of this one.
76
+ *
77
+ * Objects are merged recursively, arrays and primitives are
78
+ * replaced. Per-path source attribution from both configurations
79
+ * is preserved; the other configuration wins on conflicts.
80
+ */
44
81
  merge(other: Configuration): Configuration;
45
- with<T extends ConfigurationValue>(path: string, value: T, source?: ConfigurationSource): Configuration;
82
+ with<T extends ConfigurationValue>(path: string, value: T, source?: ConfigurationSourceType): Configuration;
46
83
  without(path: string): Configuration;
47
84
  private normalizePath;
85
+ private hasSourceRecordFor;
86
+ private resolveAncestorSource;
87
+ private resolvePathSource;
88
+ private deepMergeValues;
48
89
  private setNestedValue;
90
+ /**
91
+ * Removes a nested value by shallow-cloning only the objects
92
+ * along the path, mirroring the strategy used by setNestedValue.
93
+ */
49
94
  private deleteNestedValue;
50
95
  }
51
- /** Creates an empty Configuration instance. */
96
+ /** Creates a Configuration instance. */
52
97
  export declare function createConfiguration(options?: ConfigurationOptions): Configuration;
53
98
  //# sourceMappingURL=configuration.d.ts.map