@endora-commerce/platform 0.100.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 (657) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -0
  3. package/dist/cli/dispatch.d.ts +146 -0
  4. package/dist/cli/dispatch.d.ts.map +1 -0
  5. package/dist/cli/dispatch.js +259 -0
  6. package/dist/cli/dispatch.js.map +1 -0
  7. package/dist/cli/index.d.ts +58 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +58 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/module-commands.d.ts +118 -0
  12. package/dist/cli/module-commands.d.ts.map +1 -0
  13. package/dist/cli/module-commands.js +120 -0
  14. package/dist/cli/module-commands.js.map +1 -0
  15. package/dist/commands/actor.d.ts +19 -0
  16. package/dist/commands/actor.d.ts.map +1 -0
  17. package/dist/commands/actor.js +45 -0
  18. package/dist/commands/actor.js.map +1 -0
  19. package/dist/commands/audit-from-context.d.ts +24 -0
  20. package/dist/commands/audit-from-context.d.ts.map +1 -0
  21. package/dist/commands/audit-from-context.js +28 -0
  22. package/dist/commands/audit-from-context.js.map +1 -0
  23. package/dist/commands/command-bus.d.ts +40 -0
  24. package/dist/commands/command-bus.d.ts.map +1 -0
  25. package/dist/commands/command-bus.js +46 -0
  26. package/dist/commands/command-bus.js.map +1 -0
  27. package/dist/commands/command.d.ts +76 -0
  28. package/dist/commands/command.d.ts.map +1 -0
  29. package/dist/commands/command.js +2 -0
  30. package/dist/commands/command.js.map +1 -0
  31. package/dist/commands/index.d.ts +65 -0
  32. package/dist/commands/index.d.ts.map +1 -0
  33. package/dist/commands/index.js +57 -0
  34. package/dist/commands/index.js.map +1 -0
  35. package/dist/commands/reversible.d.ts +66 -0
  36. package/dist/commands/reversible.d.ts.map +1 -0
  37. package/dist/commands/reversible.js +41 -0
  38. package/dist/commands/reversible.js.map +1 -0
  39. package/dist/composition/compose-app.d.ts +305 -0
  40. package/dist/composition/compose-app.d.ts.map +1 -0
  41. package/dist/composition/compose-app.js +939 -0
  42. package/dist/composition/compose-app.js.map +1 -0
  43. package/dist/composition/index.d.ts +92 -0
  44. package/dist/composition/index.d.ts.map +1 -0
  45. package/dist/composition/index.js +175 -0
  46. package/dist/composition/index.js.map +1 -0
  47. package/dist/composition/newsletter-token-secret.d.ts +19 -0
  48. package/dist/composition/newsletter-token-secret.d.ts.map +1 -0
  49. package/dist/composition/newsletter-token-secret.js +24 -0
  50. package/dist/composition/newsletter-token-secret.js.map +1 -0
  51. package/dist/composition/process-runs-workers.d.ts +17 -0
  52. package/dist/composition/process-runs-workers.d.ts.map +1 -0
  53. package/dist/composition/process-runs-workers.js +19 -0
  54. package/dist/composition/process-runs-workers.js.map +1 -0
  55. package/dist/db/baseline-migration-inventory.d.ts +15 -0
  56. package/dist/db/baseline-migration-inventory.d.ts.map +1 -0
  57. package/dist/db/baseline-migration-inventory.js +115 -0
  58. package/dist/db/baseline-migration-inventory.js.map +1 -0
  59. package/dist/db/configured-entities.d.ts +74 -0
  60. package/dist/db/configured-entities.d.ts.map +1 -0
  61. package/dist/db/configured-entities.js +20 -0
  62. package/dist/db/configured-entities.js.map +1 -0
  63. package/dist/db/configured-migrations.d.ts +199 -0
  64. package/dist/db/configured-migrations.d.ts.map +1 -0
  65. package/dist/db/configured-migrations.js +181 -0
  66. package/dist/db/configured-migrations.js.map +1 -0
  67. package/dist/db/index.d.ts +54 -0
  68. package/dist/db/index.d.ts.map +1 -0
  69. package/dist/db/index.js +54 -0
  70. package/dist/db/index.js.map +1 -0
  71. package/dist/db/migrate.d.ts +21 -0
  72. package/dist/db/migrate.d.ts.map +1 -0
  73. package/dist/db/migrate.js +48 -0
  74. package/dist/db/migrate.js.map +1 -0
  75. package/dist/db/migration-order.d.ts +159 -0
  76. package/dist/db/migration-order.d.ts.map +1 -0
  77. package/dist/db/migration-order.js +273 -0
  78. package/dist/db/migration-order.js.map +1 -0
  79. package/dist/db/mikro-orm.config.d.ts +51 -0
  80. package/dist/db/mikro-orm.config.d.ts.map +1 -0
  81. package/dist/db/mikro-orm.config.js +64 -0
  82. package/dist/db/mikro-orm.config.js.map +1 -0
  83. package/dist/db/orm.d.ts +40 -0
  84. package/dist/db/orm.d.ts.map +1 -0
  85. package/dist/db/orm.js +25 -0
  86. package/dist/db/orm.js.map +1 -0
  87. package/dist/db/platform-schema.d.ts +102 -0
  88. package/dist/db/platform-schema.d.ts.map +1 -0
  89. package/dist/db/platform-schema.js +79 -0
  90. package/dist/db/platform-schema.js.map +1 -0
  91. package/dist/db/pluralizing-naming-strategy.d.ts +16 -0
  92. package/dist/db/pluralizing-naming-strategy.d.ts.map +1 -0
  93. package/dist/db/pluralizing-naming-strategy.js +66 -0
  94. package/dist/db/pluralizing-naming-strategy.js.map +1 -0
  95. package/dist/demo/guard.d.ts +101 -0
  96. package/dist/demo/guard.d.ts.map +1 -0
  97. package/dist/demo/guard.js +168 -0
  98. package/dist/demo/guard.js.map +1 -0
  99. package/dist/demo/host-command.d.ts +133 -0
  100. package/dist/demo/host-command.d.ts.map +1 -0
  101. package/dist/demo/host-command.js +113 -0
  102. package/dist/demo/host-command.js.map +1 -0
  103. package/dist/demo/index.d.ts +82 -0
  104. package/dist/demo/index.d.ts.map +1 -0
  105. package/dist/demo/index.js +82 -0
  106. package/dist/demo/index.js.map +1 -0
  107. package/dist/demo/packages.d.ts +67 -0
  108. package/dist/demo/packages.d.ts.map +1 -0
  109. package/dist/demo/packages.js +132 -0
  110. package/dist/demo/packages.js.map +1 -0
  111. package/dist/demo/plan.d.ts +111 -0
  112. package/dist/demo/plan.d.ts.map +1 -0
  113. package/dist/demo/plan.js +74 -0
  114. package/dist/demo/plan.js.map +1 -0
  115. package/dist/demo/report.d.ts +17 -0
  116. package/dist/demo/report.d.ts.map +1 -0
  117. package/dist/demo/report.js +85 -0
  118. package/dist/demo/report.js.map +1 -0
  119. package/dist/demo/runner.d.ts +207 -0
  120. package/dist/demo/runner.d.ts.map +1 -0
  121. package/dist/demo/runner.js +169 -0
  122. package/dist/demo/runner.js.map +1 -0
  123. package/dist/demo/scope.d.ts +44 -0
  124. package/dist/demo/scope.d.ts.map +1 -0
  125. package/dist/demo/scope.js +44 -0
  126. package/dist/demo/scope.js.map +1 -0
  127. package/dist/env/index.d.ts +68 -0
  128. package/dist/env/index.d.ts.map +1 -0
  129. package/dist/env/index.js +427 -0
  130. package/dist/env/index.js.map +1 -0
  131. package/dist/events/bus.d.ts +29 -0
  132. package/dist/events/bus.d.ts.map +1 -0
  133. package/dist/events/bus.js +67 -0
  134. package/dist/events/bus.js.map +1 -0
  135. package/dist/events/index.d.ts +19 -0
  136. package/dist/events/index.d.ts.map +1 -0
  137. package/dist/events/index.js +19 -0
  138. package/dist/events/index.js.map +1 -0
  139. package/dist/http/cursor.d.ts +10 -0
  140. package/dist/http/cursor.d.ts.map +1 -0
  141. package/dist/http/cursor.js +20 -0
  142. package/dist/http/cursor.js.map +1 -0
  143. package/dist/http/error-envelope.d.ts +127 -0
  144. package/dist/http/error-envelope.d.ts.map +1 -0
  145. package/dist/http/error-envelope.js +402 -0
  146. package/dist/http/error-envelope.js.map +1 -0
  147. package/dist/http/health.d.ts +88 -0
  148. package/dist/http/health.d.ts.map +1 -0
  149. package/dist/http/health.js +77 -0
  150. package/dist/http/health.js.map +1 -0
  151. package/dist/http/index.d.ts +50 -0
  152. package/dist/http/index.d.ts.map +1 -0
  153. package/dist/http/index.js +50 -0
  154. package/dist/http/index.js.map +1 -0
  155. package/dist/http/interceptors/dispatch.d.ts +14 -0
  156. package/dist/http/interceptors/dispatch.d.ts.map +1 -0
  157. package/dist/http/interceptors/dispatch.js +113 -0
  158. package/dist/http/interceptors/dispatch.js.map +1 -0
  159. package/dist/http/interceptors/index.d.ts +6 -0
  160. package/dist/http/interceptors/index.d.ts.map +1 -0
  161. package/dist/http/interceptors/index.js +5 -0
  162. package/dist/http/interceptors/index.js.map +1 -0
  163. package/dist/http/interceptors/registry.d.ts +44 -0
  164. package/dist/http/interceptors/registry.d.ts.map +1 -0
  165. package/dist/http/interceptors/registry.js +123 -0
  166. package/dist/http/interceptors/registry.js.map +1 -0
  167. package/dist/http/interceptors/route-table.d.ts +33 -0
  168. package/dist/http/interceptors/route-table.d.ts.map +1 -0
  169. package/dist/http/interceptors/route-table.js +39 -0
  170. package/dist/http/interceptors/route-table.js.map +1 -0
  171. package/dist/http/interceptors/types.d.ts +101 -0
  172. package/dist/http/interceptors/types.d.ts.map +1 -0
  173. package/dist/http/interceptors/types.js +2 -0
  174. package/dist/http/interceptors/types.js.map +1 -0
  175. package/dist/http/interceptors/validation.d.ts +22 -0
  176. package/dist/http/interceptors/validation.d.ts.map +1 -0
  177. package/dist/http/interceptors/validation.js +39 -0
  178. package/dist/http/interceptors/validation.js.map +1 -0
  179. package/dist/http/logger.d.ts +9 -0
  180. package/dist/http/logger.d.ts.map +1 -0
  181. package/dist/http/logger.js +25 -0
  182. package/dist/http/logger.js.map +1 -0
  183. package/dist/http/openapi.d.ts +21 -0
  184. package/dist/http/openapi.d.ts.map +1 -0
  185. package/dist/http/openapi.js +114 -0
  186. package/dist/http/openapi.js.map +1 -0
  187. package/dist/http/product-audience.d.ts +78 -0
  188. package/dist/http/product-audience.d.ts.map +1 -0
  189. package/dist/http/product-audience.js +92 -0
  190. package/dist/http/product-audience.js.map +1 -0
  191. package/dist/http/request-actor.d.ts +82 -0
  192. package/dist/http/request-actor.d.ts.map +1 -0
  193. package/dist/http/request-actor.js +2 -0
  194. package/dist/http/request-actor.js.map +1 -0
  195. package/dist/http/server.d.ts +60 -0
  196. package/dist/http/server.d.ts.map +1 -0
  197. package/dist/http/server.js +117 -0
  198. package/dist/http/server.js.map +1 -0
  199. package/dist/http/storefront-revalidator.d.ts +29 -0
  200. package/dist/http/storefront-revalidator.d.ts.map +1 -0
  201. package/dist/http/storefront-revalidator.js +34 -0
  202. package/dist/http/storefront-revalidator.js.map +1 -0
  203. package/dist/http/test-actor-carrier.d.ts +28 -0
  204. package/dist/http/test-actor-carrier.d.ts.map +1 -0
  205. package/dist/http/test-actor-carrier.js +10 -0
  206. package/dist/http/test-actor-carrier.js.map +1 -0
  207. package/dist/http/trusted-proxy.d.ts +48 -0
  208. package/dist/http/trusted-proxy.d.ts.map +1 -0
  209. package/dist/http/trusted-proxy.js +136 -0
  210. package/dist/http/trusted-proxy.js.map +1 -0
  211. package/dist/kernel/audit/audit-log-entry.entity.d.ts +33 -0
  212. package/dist/kernel/audit/audit-log-entry.entity.d.ts.map +1 -0
  213. package/dist/kernel/audit/audit-log-entry.entity.js +102 -0
  214. package/dist/kernel/audit/audit-log-entry.entity.js.map +1 -0
  215. package/dist/kernel/audit/audit-log-service.d.ts +63 -0
  216. package/dist/kernel/audit/audit-log-service.d.ts.map +1 -0
  217. package/dist/kernel/audit/audit-log-service.js +107 -0
  218. package/dist/kernel/audit/audit-log-service.js.map +1 -0
  219. package/dist/kernel/cache/in-process-cache-registry.d.ts +93 -0
  220. package/dist/kernel/cache/in-process-cache-registry.d.ts.map +1 -0
  221. package/dist/kernel/cache/in-process-cache-registry.js +78 -0
  222. package/dist/kernel/cache/in-process-cache-registry.js.map +1 -0
  223. package/dist/kernel/cache/shared-drop-marks.d.ts +39 -0
  224. package/dist/kernel/cache/shared-drop-marks.d.ts.map +1 -0
  225. package/dist/kernel/cache/shared-drop-marks.js +68 -0
  226. package/dist/kernel/cache/shared-drop-marks.js.map +1 -0
  227. package/dist/kernel/compose.d.ts +234 -0
  228. package/dist/kernel/compose.d.ts.map +1 -0
  229. package/dist/kernel/compose.js +279 -0
  230. package/dist/kernel/compose.js.map +1 -0
  231. package/dist/kernel/container.d.ts +95 -0
  232. package/dist/kernel/container.d.ts.map +1 -0
  233. package/dist/kernel/container.js +90 -0
  234. package/dist/kernel/container.js.map +1 -0
  235. package/dist/kernel/contribution-sinks.d.ts +106 -0
  236. package/dist/kernel/contribution-sinks.d.ts.map +1 -0
  237. package/dist/kernel/contribution-sinks.js +153 -0
  238. package/dist/kernel/contribution-sinks.js.map +1 -0
  239. package/dist/kernel/crypto/password-hasher.d.ts +3 -0
  240. package/dist/kernel/crypto/password-hasher.d.ts.map +1 -0
  241. package/dist/kernel/crypto/password-hasher.js +44 -0
  242. package/dist/kernel/crypto/password-hasher.js.map +1 -0
  243. package/dist/kernel/i18n/error-envelope-options.d.ts +56 -0
  244. package/dist/kernel/i18n/error-envelope-options.d.ts.map +1 -0
  245. package/dist/kernel/i18n/error-envelope-options.js +46 -0
  246. package/dist/kernel/i18n/error-envelope-options.js.map +1 -0
  247. package/dist/kernel/i18n/error-translation.d.ts +144 -0
  248. package/dist/kernel/i18n/error-translation.d.ts.map +1 -0
  249. package/dist/kernel/i18n/error-translation.js +84 -0
  250. package/dist/kernel/i18n/error-translation.js.map +1 -0
  251. package/dist/kernel/i18n/request-language.d.ts +80 -0
  252. package/dist/kernel/i18n/request-language.d.ts.map +1 -0
  253. package/dist/kernel/i18n/request-language.js +168 -0
  254. package/dist/kernel/i18n/request-language.js.map +1 -0
  255. package/dist/kernel/index.d.ts +142 -0
  256. package/dist/kernel/index.d.ts.map +1 -0
  257. package/dist/kernel/index.js +160 -0
  258. package/dist/kernel/index.js.map +1 -0
  259. package/dist/kernel/lazy-port.d.ts +59 -0
  260. package/dist/kernel/lazy-port.d.ts.map +1 -0
  261. package/dist/kernel/lazy-port.js +78 -0
  262. package/dist/kernel/lazy-port.js.map +1 -0
  263. package/dist/kernel/lifecycle/activation-resolver.d.ts +63 -0
  264. package/dist/kernel/lifecycle/activation-resolver.d.ts.map +1 -0
  265. package/dist/kernel/lifecycle/activation-resolver.js +70 -0
  266. package/dist/kernel/lifecycle/activation-resolver.js.map +1 -0
  267. package/dist/kernel/lifecycle/capability-registry.d.ts +145 -0
  268. package/dist/kernel/lifecycle/capability-registry.d.ts.map +1 -0
  269. package/dist/kernel/lifecycle/capability-registry.js +170 -0
  270. package/dist/kernel/lifecycle/capability-registry.js.map +1 -0
  271. package/dist/kernel/lifecycle/effective-state.d.ts +126 -0
  272. package/dist/kernel/lifecycle/effective-state.d.ts.map +1 -0
  273. package/dist/kernel/lifecycle/effective-state.js +111 -0
  274. package/dist/kernel/lifecycle/effective-state.js.map +1 -0
  275. package/dist/kernel/lifecycle/module-registration.entity.d.ts +57 -0
  276. package/dist/kernel/lifecycle/module-registration.entity.d.ts.map +1 -0
  277. package/dist/kernel/lifecycle/module-registration.entity.js +111 -0
  278. package/dist/kernel/lifecycle/module-registration.entity.js.map +1 -0
  279. package/dist/kernel/lifecycle/plugin-helpers.d.ts +165 -0
  280. package/dist/kernel/lifecycle/plugin-helpers.d.ts.map +1 -0
  281. package/dist/kernel/lifecycle/plugin-helpers.js +395 -0
  282. package/dist/kernel/lifecycle/plugin-helpers.js.map +1 -0
  283. package/dist/kernel/lifecycle/registry-cache.d.ts +318 -0
  284. package/dist/kernel/lifecycle/registry-cache.d.ts.map +1 -0
  285. package/dist/kernel/lifecycle/registry-cache.js +509 -0
  286. package/dist/kernel/lifecycle/registry-cache.js.map +1 -0
  287. package/dist/kernel/lifecycle/required-modules.d.ts +137 -0
  288. package/dist/kernel/lifecycle/required-modules.d.ts.map +1 -0
  289. package/dist/kernel/lifecycle/required-modules.js +80 -0
  290. package/dist/kernel/lifecycle/required-modules.js.map +1 -0
  291. package/dist/kernel/lifecycle/unique-module-ids.d.ts +58 -0
  292. package/dist/kernel/lifecycle/unique-module-ids.d.ts.map +1 -0
  293. package/dist/kernel/lifecycle/unique-module-ids.js +82 -0
  294. package/dist/kernel/lifecycle/unique-module-ids.js.map +1 -0
  295. package/dist/kernel/logging.d.ts +116 -0
  296. package/dist/kernel/logging.d.ts.map +1 -0
  297. package/dist/kernel/logging.js +71 -0
  298. package/dist/kernel/logging.js.map +1 -0
  299. package/dist/kernel/module-context.d.ts +563 -0
  300. package/dist/kernel/module-context.d.ts.map +1 -0
  301. package/dist/kernel/module-context.js +670 -0
  302. package/dist/kernel/module-context.js.map +1 -0
  303. package/dist/kernel/ports/audit.d.ts +115 -0
  304. package/dist/kernel/ports/audit.d.ts.map +1 -0
  305. package/dist/kernel/ports/audit.js +2 -0
  306. package/dist/kernel/ports/audit.js.map +1 -0
  307. package/dist/kernel/ports/organizations.d.ts +56 -0
  308. package/dist/kernel/ports/organizations.d.ts.map +1 -0
  309. package/dist/kernel/ports/organizations.js +2 -0
  310. package/dist/kernel/ports/organizations.js.map +1 -0
  311. package/dist/kernel/ports/provide.d.ts +14 -0
  312. package/dist/kernel/ports/provide.d.ts.map +1 -0
  313. package/dist/kernel/ports/provide.js +50 -0
  314. package/dist/kernel/ports/provide.js.map +1 -0
  315. package/dist/kernel/ports/require-admin.d.ts +61 -0
  316. package/dist/kernel/ports/require-admin.d.ts.map +1 -0
  317. package/dist/kernel/ports/require-admin.js +2 -0
  318. package/dist/kernel/ports/require-admin.js.map +1 -0
  319. package/dist/kernel/ports/require-customer.d.ts +17 -0
  320. package/dist/kernel/ports/require-customer.d.ts.map +1 -0
  321. package/dist/kernel/ports/require-customer.js +2 -0
  322. package/dist/kernel/ports/require-customer.js.map +1 -0
  323. package/dist/kernel/ports/sales-channel.d.ts +84 -0
  324. package/dist/kernel/ports/sales-channel.d.ts.map +1 -0
  325. package/dist/kernel/ports/sales-channel.js +2 -0
  326. package/dist/kernel/ports/sales-channel.js.map +1 -0
  327. package/dist/kernel/ports/settings.d.ts +59 -0
  328. package/dist/kernel/ports/settings.d.ts.map +1 -0
  329. package/dist/kernel/ports/settings.js +2 -0
  330. package/dist/kernel/ports/settings.js.map +1 -0
  331. package/dist/kernel/public-api-base-url.d.ts +98 -0
  332. package/dist/kernel/public-api-base-url.d.ts.map +1 -0
  333. package/dist/kernel/public-api-base-url.js +144 -0
  334. package/dist/kernel/public-api-base-url.js.map +1 -0
  335. package/dist/kernel/request-scope-hook.d.ts +63 -0
  336. package/dist/kernel/request-scope-hook.d.ts.map +1 -0
  337. package/dist/kernel/request-scope-hook.js +67 -0
  338. package/dist/kernel/request-scope-hook.js.map +1 -0
  339. package/dist/kernel/sales-channels/channel-bridge-registry.d.ts +109 -0
  340. package/dist/kernel/sales-channels/channel-bridge-registry.d.ts.map +1 -0
  341. package/dist/kernel/sales-channels/channel-bridge-registry.js +75 -0
  342. package/dist/kernel/sales-channels/channel-bridge-registry.js.map +1 -0
  343. package/dist/kernel/sales-channels/compose.d.ts +69 -0
  344. package/dist/kernel/sales-channels/compose.d.ts.map +1 -0
  345. package/dist/kernel/sales-channels/compose.js +43 -0
  346. package/dist/kernel/sales-channels/compose.js.map +1 -0
  347. package/dist/kernel/sales-channels/default-channel-reconciler.d.ts +66 -0
  348. package/dist/kernel/sales-channels/default-channel-reconciler.d.ts.map +1 -0
  349. package/dist/kernel/sales-channels/default-channel-reconciler.js +91 -0
  350. package/dist/kernel/sales-channels/default-channel-reconciler.js.map +1 -0
  351. package/dist/kernel/sales-channels/no-system-default-channel.error.d.ts +28 -0
  352. package/dist/kernel/sales-channels/no-system-default-channel.error.d.ts.map +1 -0
  353. package/dist/kernel/sales-channels/no-system-default-channel.error.js +33 -0
  354. package/dist/kernel/sales-channels/no-system-default-channel.error.js.map +1 -0
  355. package/dist/kernel/sales-channels/request-channel-assortment.d.ts +72 -0
  356. package/dist/kernel/sales-channels/request-channel-assortment.d.ts.map +1 -0
  357. package/dist/kernel/sales-channels/request-channel-assortment.js +83 -0
  358. package/dist/kernel/sales-channels/request-channel-assortment.js.map +1 -0
  359. package/dist/kernel/sales-channels/sales-channel-membership.service.d.ts +157 -0
  360. package/dist/kernel/sales-channels/sales-channel-membership.service.d.ts.map +1 -0
  361. package/dist/kernel/sales-channels/sales-channel-membership.service.js +302 -0
  362. package/dist/kernel/sales-channels/sales-channel-membership.service.js.map +1 -0
  363. package/dist/kernel/sales-channels/sales-channel-resolver.middleware.d.ts +76 -0
  364. package/dist/kernel/sales-channels/sales-channel-resolver.middleware.d.ts.map +1 -0
  365. package/dist/kernel/sales-channels/sales-channel-resolver.middleware.js +184 -0
  366. package/dist/kernel/sales-channels/sales-channel-resolver.middleware.js.map +1 -0
  367. package/dist/kernel/sales-channels/sales-channel-resolver.service.d.ts +82 -0
  368. package/dist/kernel/sales-channels/sales-channel-resolver.service.d.ts.map +1 -0
  369. package/dist/kernel/sales-channels/sales-channel-resolver.service.js +126 -0
  370. package/dist/kernel/sales-channels/sales-channel-resolver.service.js.map +1 -0
  371. package/dist/kernel/sales-channels/sales-channel.entity.d.ts +50 -0
  372. package/dist/kernel/sales-channels/sales-channel.entity.d.ts.map +1 -0
  373. package/dist/kernel/sales-channels/sales-channel.entity.js +132 -0
  374. package/dist/kernel/sales-channels/sales-channel.entity.js.map +1 -0
  375. package/dist/kernel/sales-channels/sales-channels-cache.d.ts +170 -0
  376. package/dist/kernel/sales-channels/sales-channels-cache.d.ts.map +1 -0
  377. package/dist/kernel/sales-channels/sales-channels-cache.js +243 -0
  378. package/dist/kernel/sales-channels/sales-channels-cache.js.map +1 -0
  379. package/dist/kernel/scope.d.ts +153 -0
  380. package/dist/kernel/scope.d.ts.map +1 -0
  381. package/dist/kernel/scope.js +172 -0
  382. package/dist/kernel/scope.js.map +1 -0
  383. package/dist/kernel/settings/compose.d.ts +49 -0
  384. package/dist/kernel/settings/compose.d.ts.map +1 -0
  385. package/dist/kernel/settings/compose.js +21 -0
  386. package/dist/kernel/settings/compose.js.map +1 -0
  387. package/dist/kernel/settings/manifest-reconciler.d.ts +78 -0
  388. package/dist/kernel/settings/manifest-reconciler.d.ts.map +1 -0
  389. package/dist/kernel/settings/manifest-reconciler.js +343 -0
  390. package/dist/kernel/settings/manifest-reconciler.js.map +1 -0
  391. package/dist/kernel/settings/secret-value-codec.d.ts +52 -0
  392. package/dist/kernel/settings/secret-value-codec.d.ts.map +1 -0
  393. package/dist/kernel/settings/secret-value-codec.js +102 -0
  394. package/dist/kernel/settings/secret-value-codec.js.map +1 -0
  395. package/dist/kernel/settings/setting-group.entity.d.ts +25 -0
  396. package/dist/kernel/settings/setting-group.entity.d.ts.map +1 -0
  397. package/dist/kernel/settings/setting-group.entity.js +79 -0
  398. package/dist/kernel/settings/setting-group.entity.js.map +1 -0
  399. package/dist/kernel/settings/setting-value.entity.d.ts +23 -0
  400. package/dist/kernel/settings/setting-value.entity.d.ts.map +1 -0
  401. package/dist/kernel/settings/setting-value.entity.js +66 -0
  402. package/dist/kernel/settings/setting-value.entity.js.map +1 -0
  403. package/dist/kernel/settings/setting.entity.d.ts +56 -0
  404. package/dist/kernel/settings/setting.entity.d.ts.map +1 -0
  405. package/dist/kernel/settings/setting.entity.js +147 -0
  406. package/dist/kernel/settings/setting.entity.js.map +1 -0
  407. package/dist/kernel/settings/settings-cache.d.ts +158 -0
  408. package/dist/kernel/settings/settings-cache.d.ts.map +1 -0
  409. package/dist/kernel/settings/settings-cache.js +253 -0
  410. package/dist/kernel/settings/settings-cache.js.map +1 -0
  411. package/dist/kernel/settings/settings.service.d.ts +142 -0
  412. package/dist/kernel/settings/settings.service.d.ts.map +1 -0
  413. package/dist/kernel/settings/settings.service.js +294 -0
  414. package/dist/kernel/settings/settings.service.js.map +1 -0
  415. package/dist/lifecycle/backend.d.ts +51 -0
  416. package/dist/lifecycle/backend.d.ts.map +1 -0
  417. package/dist/lifecycle/backend.js +40 -0
  418. package/dist/lifecycle/backend.js.map +1 -0
  419. package/dist/lifecycle/commands/activation.commands.d.ts +97 -0
  420. package/dist/lifecycle/commands/activation.commands.d.ts.map +1 -0
  421. package/dist/lifecycle/commands/activation.commands.js +142 -0
  422. package/dist/lifecycle/commands/activation.commands.js.map +1 -0
  423. package/dist/lifecycle/commands/disable.d.ts +3 -0
  424. package/dist/lifecycle/commands/disable.d.ts.map +1 -0
  425. package/dist/lifecycle/commands/disable.js +126 -0
  426. package/dist/lifecycle/commands/disable.js.map +1 -0
  427. package/dist/lifecycle/commands/enable.d.ts +3 -0
  428. package/dist/lifecycle/commands/enable.d.ts.map +1 -0
  429. package/dist/lifecycle/commands/enable.js +102 -0
  430. package/dist/lifecycle/commands/enable.js.map +1 -0
  431. package/dist/lifecycle/commands/install.d.ts +3 -0
  432. package/dist/lifecycle/commands/install.d.ts.map +1 -0
  433. package/dist/lifecycle/commands/install.js +263 -0
  434. package/dist/lifecycle/commands/install.js.map +1 -0
  435. package/dist/lifecycle/commands/operator-entry.d.ts +104 -0
  436. package/dist/lifecycle/commands/operator-entry.d.ts.map +1 -0
  437. package/dist/lifecycle/commands/operator-entry.js +127 -0
  438. package/dist/lifecycle/commands/operator-entry.js.map +1 -0
  439. package/dist/lifecycle/commands/operator-runtime.d.ts +147 -0
  440. package/dist/lifecycle/commands/operator-runtime.d.ts.map +1 -0
  441. package/dist/lifecycle/commands/operator-runtime.js +40 -0
  442. package/dist/lifecycle/commands/operator-runtime.js.map +1 -0
  443. package/dist/lifecycle/commands/status.d.ts +3 -0
  444. package/dist/lifecycle/commands/status.d.ts.map +1 -0
  445. package/dist/lifecycle/commands/status.js +108 -0
  446. package/dist/lifecycle/commands/status.js.map +1 -0
  447. package/dist/lifecycle/commands/uninstall.d.ts +3 -0
  448. package/dist/lifecycle/commands/uninstall.d.ts.map +1 -0
  449. package/dist/lifecycle/commands/uninstall.js +223 -0
  450. package/dist/lifecycle/commands/uninstall.js.map +1 -0
  451. package/dist/lifecycle/divergence-declaration.d.ts +74 -0
  452. package/dist/lifecycle/divergence-declaration.d.ts.map +1 -0
  453. package/dist/lifecycle/divergence-declaration.js +92 -0
  454. package/dist/lifecycle/divergence-declaration.js.map +1 -0
  455. package/dist/lifecycle/i18n/en.json +4 -0
  456. package/dist/lifecycle/i18n/pl.json +4 -0
  457. package/dist/lifecycle/index.d.ts +110 -0
  458. package/dist/lifecycle/index.d.ts.map +1 -0
  459. package/dist/lifecycle/index.js +189 -0
  460. package/dist/lifecycle/index.js.map +1 -0
  461. package/dist/lifecycle/manifest-registry.d.ts +244 -0
  462. package/dist/lifecycle/manifest-registry.d.ts.map +1 -0
  463. package/dist/lifecycle/manifest-registry.js +223 -0
  464. package/dist/lifecycle/manifest-registry.js.map +1 -0
  465. package/dist/lifecycle/manifest.d.ts +166 -0
  466. package/dist/lifecycle/manifest.d.ts.map +1 -0
  467. package/dist/lifecycle/manifest.js +121 -0
  468. package/dist/lifecycle/manifest.js.map +1 -0
  469. package/dist/lifecycle/plugin.d.ts +56 -0
  470. package/dist/lifecycle/plugin.d.ts.map +1 -0
  471. package/dist/lifecycle/plugin.js +59 -0
  472. package/dist/lifecycle/plugin.js.map +1 -0
  473. package/dist/lifecycle/resident.d.ts +16 -0
  474. package/dist/lifecycle/resident.d.ts.map +1 -0
  475. package/dist/lifecycle/resident.js +59 -0
  476. package/dist/lifecycle/resident.js.map +1 -0
  477. package/dist/lifecycle/routes.admin.d.ts +57 -0
  478. package/dist/lifecycle/routes.admin.d.ts.map +1 -0
  479. package/dist/lifecycle/routes.admin.js +162 -0
  480. package/dist/lifecycle/routes.admin.js.map +1 -0
  481. package/dist/lifecycle/routes.storefront.d.ts +26 -0
  482. package/dist/lifecycle/routes.storefront.d.ts.map +1 -0
  483. package/dist/lifecycle/routes.storefront.js +36 -0
  484. package/dist/lifecycle/routes.storefront.js.map +1 -0
  485. package/dist/lifecycle/services/deactivation-ledger.d.ts +216 -0
  486. package/dist/lifecycle/services/deactivation-ledger.d.ts.map +1 -0
  487. package/dist/lifecycle/services/deactivation-ledger.js +171 -0
  488. package/dist/lifecycle/services/deactivation-ledger.js.map +1 -0
  489. package/dist/lifecycle/services/dep-graph.d.ts +119 -0
  490. package/dist/lifecycle/services/dep-graph.d.ts.map +1 -0
  491. package/dist/lifecycle/services/dep-graph.js +334 -0
  492. package/dist/lifecycle/services/dep-graph.js.map +1 -0
  493. package/dist/lifecycle/services/gating-graph.d.ts +164 -0
  494. package/dist/lifecycle/services/gating-graph.d.ts.map +1 -0
  495. package/dist/lifecycle/services/gating-graph.js +203 -0
  496. package/dist/lifecycle/services/gating-graph.js.map +1 -0
  497. package/dist/lifecycle/services/lock.d.ts +27 -0
  498. package/dist/lifecycle/services/lock.d.ts.map +1 -0
  499. package/dist/lifecycle/services/lock.js +82 -0
  500. package/dist/lifecycle/services/lock.js.map +1 -0
  501. package/dist/lifecycle/services/manifest-loader.d.ts +125 -0
  502. package/dist/lifecycle/services/manifest-loader.d.ts.map +1 -0
  503. package/dist/lifecycle/services/manifest-loader.js +210 -0
  504. package/dist/lifecycle/services/manifest-loader.js.map +1 -0
  505. package/dist/lifecycle/services/migration-ownership.d.ts +36 -0
  506. package/dist/lifecycle/services/migration-ownership.d.ts.map +1 -0
  507. package/dist/lifecycle/services/migration-ownership.js +15 -0
  508. package/dist/lifecycle/services/migration-ownership.js.map +1 -0
  509. package/dist/lifecycle/services/module-id-claims.d.ts +38 -0
  510. package/dist/lifecycle/services/module-id-claims.d.ts.map +1 -0
  511. package/dist/lifecycle/services/module-id-claims.js +123 -0
  512. package/dist/lifecycle/services/module-id-claims.js.map +1 -0
  513. package/dist/lifecycle/services/module-origin.d.ts +55 -0
  514. package/dist/lifecycle/services/module-origin.d.ts.map +1 -0
  515. package/dist/lifecycle/services/module-origin.js +47 -0
  516. package/dist/lifecycle/services/module-origin.js.map +1 -0
  517. package/dist/lifecycle/services/orchestrator.d.ts +235 -0
  518. package/dist/lifecycle/services/orchestrator.d.ts.map +1 -0
  519. package/dist/lifecycle/services/orchestrator.js +954 -0
  520. package/dist/lifecycle/services/orchestrator.js.map +1 -0
  521. package/dist/lifecycle/services/presence-load.d.ts +281 -0
  522. package/dist/lifecycle/services/presence-load.d.ts.map +1 -0
  523. package/dist/lifecycle/services/presence-load.js +437 -0
  524. package/dist/lifecycle/services/presence-load.js.map +1 -0
  525. package/dist/lifecycle/services/static-registry.d.ts +47 -0
  526. package/dist/lifecycle/services/static-registry.d.ts.map +1 -0
  527. package/dist/lifecycle/services/static-registry.js +41 -0
  528. package/dist/lifecycle/services/static-registry.js.map +1 -0
  529. package/dist/migrations/20260424T165847_core_foundation_init.d.ts +25 -0
  530. package/dist/migrations/20260424T165847_core_foundation_init.d.ts.map +1 -0
  531. package/dist/migrations/20260424T165847_core_foundation_init.js +238 -0
  532. package/dist/migrations/20260424T165847_core_foundation_init.js.map +1 -0
  533. package/dist/migrations/20260425T050720_core_commerce_init.d.ts +19 -0
  534. package/dist/migrations/20260425T050720_core_commerce_init.d.ts.map +1 -0
  535. package/dist/migrations/20260425T050720_core_commerce_init.js +200 -0
  536. package/dist/migrations/20260425T050720_core_commerce_init.js.map +1 -0
  537. package/dist/migrations/20260430T101450_core_settings_init.d.ts +25 -0
  538. package/dist/migrations/20260430T101450_core_settings_init.d.ts.map +1 -0
  539. package/dist/migrations/20260430T101450_core_settings_init.js +113 -0
  540. package/dist/migrations/20260430T101450_core_settings_init.js.map +1 -0
  541. package/dist/migrations/20260430T170044_core_sales_channels_promote.d.ts +67 -0
  542. package/dist/migrations/20260430T170044_core_sales_channels_promote.d.ts.map +1 -0
  543. package/dist/migrations/20260430T170044_core_sales_channels_promote.js +101 -0
  544. package/dist/migrations/20260430T170044_core_sales_channels_promote.js.map +1 -0
  545. package/dist/migrations/20260506T200657_core_module_lifecycle_init.d.ts +21 -0
  546. package/dist/migrations/20260506T200657_core_module_lifecycle_init.d.ts.map +1 -0
  547. package/dist/migrations/20260506T200657_core_module_lifecycle_init.js +41 -0
  548. package/dist/migrations/20260506T200657_core_module_lifecycle_init.js.map +1 -0
  549. package/dist/migrations/20260514T111329_core_settings_global_value.d.ts +30 -0
  550. package/dist/migrations/20260514T111329_core_settings_global_value.d.ts.map +1 -0
  551. package/dist/migrations/20260514T111329_core_settings_global_value.js +34 -0
  552. package/dist/migrations/20260514T111329_core_settings_global_value.js.map +1 -0
  553. package/dist/migrations/20260611T140411_core_settings_secret_value_type.d.ts +26 -0
  554. package/dist/migrations/20260611T140411_core_settings_secret_value_type.d.ts.map +1 -0
  555. package/dist/migrations/20260611T140411_core_settings_secret_value_type.js +63 -0
  556. package/dist/migrations/20260611T140411_core_settings_secret_value_type.js.map +1 -0
  557. package/dist/migrations/20260611T140419_core_settings_enum_options.d.ts +19 -0
  558. package/dist/migrations/20260611T140419_core_settings_enum_options.d.ts.map +1 -0
  559. package/dist/migrations/20260611T140419_core_settings_enum_options.js +23 -0
  560. package/dist/migrations/20260611T140419_core_settings_enum_options.js.map +1 -0
  561. package/dist/migrations/20260629T090100_core_settings_hidden_flag.d.ts +20 -0
  562. package/dist/migrations/20260629T090100_core_settings_hidden_flag.d.ts.map +1 -0
  563. package/dist/migrations/20260629T090100_core_settings_hidden_flag.js +24 -0
  564. package/dist/migrations/20260629T090100_core_settings_hidden_flag.js.map +1 -0
  565. package/dist/migrations/20260717T134752_core_tenant_scope_indexes.d.ts +27 -0
  566. package/dist/migrations/20260717T134752_core_tenant_scope_indexes.d.ts.map +1 -0
  567. package/dist/migrations/20260717T134752_core_tenant_scope_indexes.js +32 -0
  568. package/dist/migrations/20260717T134752_core_tenant_scope_indexes.js.map +1 -0
  569. package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.d.ts +24 -0
  570. package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.d.ts.map +1 -0
  571. package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.js +57 -0
  572. package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.js.map +1 -0
  573. package/dist/migrations/20260816T203339_core_retire_core_activation_settings.d.ts +39 -0
  574. package/dist/migrations/20260816T203339_core_retire_core_activation_settings.d.ts.map +1 -0
  575. package/dist/migrations/20260816T203339_core_retire_core_activation_settings.js +59 -0
  576. package/dist/migrations/20260816T203339_core_retire_core_activation_settings.js.map +1 -0
  577. package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.d.ts +34 -0
  578. package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.d.ts.map +1 -0
  579. package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.js +38 -0
  580. package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.js.map +1 -0
  581. package/dist/migrations/baseline-migrations.generated.d.ts +2 -0
  582. package/dist/migrations/baseline-migrations.generated.d.ts.map +1 -0
  583. package/dist/migrations/baseline-migrations.generated.js +136 -0
  584. package/dist/migrations/baseline-migrations.generated.js.map +1 -0
  585. package/dist/migrations/index.d.ts +62 -0
  586. package/dist/migrations/index.d.ts.map +1 -0
  587. package/dist/migrations/index.js +75 -0
  588. package/dist/migrations/index.js.map +1 -0
  589. package/dist/overlay/deployment-roots.d.ts +37 -0
  590. package/dist/overlay/deployment-roots.d.ts.map +1 -0
  591. package/dist/overlay/deployment-roots.js +90 -0
  592. package/dist/overlay/deployment-roots.js.map +1 -0
  593. package/dist/overlay/index.d.ts +62 -0
  594. package/dist/overlay/index.d.ts.map +1 -0
  595. package/dist/overlay/index.js +62 -0
  596. package/dist/overlay/index.js.map +1 -0
  597. package/dist/overlay/overlay-runtime.d.ts +173 -0
  598. package/dist/overlay/overlay-runtime.d.ts.map +1 -0
  599. package/dist/overlay/overlay-runtime.js +281 -0
  600. package/dist/overlay/overlay-runtime.js.map +1 -0
  601. package/dist/overlay/resolve-overlay.d.ts +41 -0
  602. package/dist/overlay/resolve-overlay.d.ts.map +1 -0
  603. package/dist/overlay/resolve-overlay.js +72 -0
  604. package/dist/overlay/resolve-overlay.js.map +1 -0
  605. package/dist/packages/index.d.ts +57 -0
  606. package/dist/packages/index.d.ts.map +1 -0
  607. package/dist/packages/index.js +57 -0
  608. package/dist/packages/index.js.map +1 -0
  609. package/dist/packages/installed-packages.d.ts +79 -0
  610. package/dist/packages/installed-packages.d.ts.map +1 -0
  611. package/dist/packages/installed-packages.js +312 -0
  612. package/dist/packages/installed-packages.js.map +1 -0
  613. package/dist/packages/package-entity-lookup.d.ts +120 -0
  614. package/dist/packages/package-entity-lookup.d.ts.map +1 -0
  615. package/dist/packages/package-entity-lookup.js +17 -0
  616. package/dist/packages/package-entity-lookup.js.map +1 -0
  617. package/dist/packages/package-runtime.d.ts +177 -0
  618. package/dist/packages/package-runtime.d.ts.map +1 -0
  619. package/dist/packages/package-runtime.js +386 -0
  620. package/dist/packages/package-runtime.js.map +1 -0
  621. package/dist/tenancy/derived-scope.d.ts +43 -0
  622. package/dist/tenancy/derived-scope.d.ts.map +1 -0
  623. package/dist/tenancy/derived-scope.js +76 -0
  624. package/dist/tenancy/derived-scope.js.map +1 -0
  625. package/dist/tenancy/escape-hatch.d.ts +30 -0
  626. package/dist/tenancy/escape-hatch.d.ts.map +1 -0
  627. package/dist/tenancy/escape-hatch.js +50 -0
  628. package/dist/tenancy/escape-hatch.js.map +1 -0
  629. package/dist/tenancy/filters.d.ts +87 -0
  630. package/dist/tenancy/filters.d.ts.map +1 -0
  631. package/dist/tenancy/filters.js +126 -0
  632. package/dist/tenancy/filters.js.map +1 -0
  633. package/dist/tenancy/index.d.ts +63 -0
  634. package/dist/tenancy/index.d.ts.map +1 -0
  635. package/dist/tenancy/index.js +61 -0
  636. package/dist/tenancy/index.js.map +1 -0
  637. package/dist/tenancy/org-scoped.decorator.d.ts +150 -0
  638. package/dist/tenancy/org-scoped.decorator.d.ts.map +1 -0
  639. package/dist/tenancy/org-scoped.decorator.js +339 -0
  640. package/dist/tenancy/org-scoped.decorator.js.map +1 -0
  641. package/dist/tenancy/org-write-guard.d.ts +106 -0
  642. package/dist/tenancy/org-write-guard.d.ts.map +1 -0
  643. package/dist/tenancy/org-write-guard.js +141 -0
  644. package/dist/tenancy/org-write-guard.js.map +1 -0
  645. package/dist/tenancy/resolve-tenant-context.d.ts +91 -0
  646. package/dist/tenancy/resolve-tenant-context.d.ts.map +1 -0
  647. package/dist/tenancy/resolve-tenant-context.js +85 -0
  648. package/dist/tenancy/resolve-tenant-context.js.map +1 -0
  649. package/dist/tenancy/scoped-em.d.ts +10 -0
  650. package/dist/tenancy/scoped-em.d.ts.map +1 -0
  651. package/dist/tenancy/scoped-em.js +11 -0
  652. package/dist/tenancy/scoped-em.js.map +1 -0
  653. package/dist/tenancy/tenant-context.d.ts +154 -0
  654. package/dist/tenancy/tenant-context.d.ts.map +1 -0
  655. package/dist/tenancy/tenant-context.js +109 -0
  656. package/dist/tenancy/tenant-context.js.map +1 -0
  657. package/package.json +123 -0
@@ -0,0 +1,171 @@
1
+ /** `<moduleId>:<name>`, the key every lookup in this file uses. */
2
+ function keyOf(moduleId, name) {
3
+ return `${moduleId}:${name}`;
4
+ }
5
+ /**
6
+ * Assign an outcome to every cross-module edge, and report the ones that get
7
+ * none.
8
+ *
9
+ * Rule order is load-bearing and reads top to bottom as "what could make this
10
+ * edge lie to an operator?": a capture survives every other answer the edge
11
+ * might have had, because it is about *when* the name is read rather than what
12
+ * it answers; a gated port resolved too early takes the platform down rather
13
+ * than the request; only then do the declarations and the gate get to speak.
14
+ */
15
+ export function buildDeactivationLedger(input) {
16
+ const entries = [];
17
+ const unassigned = [];
18
+ let excluded = 0;
19
+ const degrades = new Map();
20
+ // Beside it rather than merged into it: the two declarations produce
21
+ // different outcomes and the operator's row says different things. A
22
+ // `refuses-without` entry with no sentence is refused by the schema and
23
+ // reported by `check-port-dependencies.ts`; it is classified here anyway, so
24
+ // that a declaration this file cannot render still cannot silently become
25
+ // some *other* classification.
26
+ const refuses = new Map();
27
+ for (const edge of input.nonBinding) {
28
+ if (edge.kind === 'degrades-without' && edge.whenAbsent !== null) {
29
+ degrades.set(keyOf(edge.moduleId, edge.name), edge.whenAbsent);
30
+ }
31
+ if (edge.kind === 'refuses-without') {
32
+ refuses.set(keyOf(edge.moduleId, edge.name), edge.whenAbsent);
33
+ }
34
+ }
35
+ /** One group per (dependent, owner, name); a name read from six files is one edge. */
36
+ const groups = new Map();
37
+ const acknowledged = new Set(input.acknowledged.map((edge) => keyOf(edge.moduleId, edge.name)));
38
+ for (const read of input.reads) {
39
+ if (read.moduleId === read.dependsOn)
40
+ continue;
41
+ if (input.neverAbsentOwners.has(read.dependsOn) &&
42
+ !acknowledged.has(keyOf(read.moduleId, read.name))) {
43
+ continue;
44
+ }
45
+ if (input.excludedNames.has(read.name)) {
46
+ excluded += 1;
47
+ continue;
48
+ }
49
+ const key = `${read.moduleId}:${read.dependsOn}:${read.name}`;
50
+ const group = groups.get(key) ?? { read, sites: new Set(), captured: false };
51
+ group.sites.add(read.site);
52
+ group.captured = group.captured || read.captured;
53
+ groups.set(key, group);
54
+ }
55
+ const classified = new Set();
56
+ for (const { read, sites, captured } of groups.values()) {
57
+ classified.add(`${read.moduleId}:${read.dependsOn}`);
58
+ const declared = degrades.get(keyOf(read.moduleId, read.name));
59
+ const edge = { moduleId: read.moduleId, dependsOn: read.dependsOn, name: read.name };
60
+ if (captured) {
61
+ unassigned.push({
62
+ ...edge,
63
+ shape: 'captured-registration',
64
+ detail: `read once at construction, so it keeps answering after \`${read.dependsOn}\` ` +
65
+ `is switched off`,
66
+ });
67
+ continue;
68
+ }
69
+ if (read.gated && [...sites].some((site) => site !== 'call')) {
70
+ unassigned.push({
71
+ ...edge,
72
+ shape: 'gated-port-before-first-request',
73
+ detail: `a gate with a real "no" answer is asked at ${[...sites].sort().join(', ')}`,
74
+ });
75
+ continue;
76
+ }
77
+ if (declared !== undefined) {
78
+ entries.push({ ...edge, outcome: 'degrades', whenAbsent: declared });
79
+ continue;
80
+ }
81
+ // Before the bare gate below, and the order is what the kind buys: the
82
+ // outcome is the same either way, so the only difference this branch makes
83
+ // is that the operator's row carries the dependent's own sentence instead
84
+ // of the platform's translated default.
85
+ const refusal = refuses.get(keyOf(read.moduleId, read.name));
86
+ if (refusal !== undefined) {
87
+ entries.push({ ...edge, outcome: 'fails-closed', whenAbsent: refusal });
88
+ continue;
89
+ }
90
+ if (read.gated) {
91
+ entries.push({ ...edge, outcome: 'fails-closed', whenAbsent: null });
92
+ continue;
93
+ }
94
+ const policy = input.contributionPolicies[keyOf(read.dependsOn, read.name)];
95
+ if (policy === undefined) {
96
+ unassigned.push({
97
+ ...edge,
98
+ shape: 'registry-without-policy',
99
+ detail: `\`${read.dependsOn}\` states nothing about what an absent owner's entry does`,
100
+ });
101
+ continue;
102
+ }
103
+ // A push happens once, from a boot hook, and reads nothing back; a host
104
+ // that honours an absent owner's entry answers the same to everybody. Both
105
+ // are "nothing happens". A *read* under a skip policy is not: the caller
106
+ // gets nothing back, which is the seam failing closed at enumeration.
107
+ const pushOnly = [...sites].every((site) => site === 'boot');
108
+ entries.push({
109
+ ...edge,
110
+ outcome: policy === 'honour' || pushOnly ? 'contributes' : 'fails-closed',
111
+ whenAbsent: null,
112
+ });
113
+ }
114
+ // Whatever a manifest declares and no container read backs. Deactivation
115
+ // drops no tables, so a foreign key into the owner's schema stays valid and
116
+ // nothing stops — which is also where a declaration backed by nothing at all
117
+ // lands, and that is a separate finding with its own owner.
118
+ for (const [moduleId, dependencies] of input.declaredDependencies) {
119
+ for (const dependsOn of dependencies) {
120
+ if (dependsOn === moduleId)
121
+ continue;
122
+ if (input.neverAbsentOwners.has(dependsOn))
123
+ continue;
124
+ if (classified.has(`${moduleId}:${dependsOn}`))
125
+ continue;
126
+ entries.push({ moduleId, dependsOn, name: null, outcome: 'schema-only', whenAbsent: null });
127
+ }
128
+ }
129
+ return { entries, unassigned, excluded };
130
+ }
131
+ /**
132
+ * The rows an operator is shown before switching `moduleId` off, and the rows
133
+ * the refusal carries when they have not acknowledged them.
134
+ *
135
+ * One row per dependent, whatever the number of edges between the two: an
136
+ * operator is choosing about modules, not about registrations. Where a
137
+ * dependent both pulls and contributes, **the pull decides** — a contribution
138
+ * costs nothing and saying so beside a capability that stops would be a
139
+ * consequence list that reads as reassurance.
140
+ *
141
+ * **The sentence follows the effect that wins**, and it has to, now that
142
+ * `fails-closed` can carry one. A dependent that degrades on one edge and
143
+ * refuses on another gets `unavailable`, and pairing that word with the
144
+ * degrade's *"keeps working with less"* sentence would be a row that
145
+ * contradicts itself in six words. A declared sentence is still kept when the
146
+ * winning effect has none of its own, because it is then the only specific
147
+ * thing the platform knows about that dependent.
148
+ */
149
+ export function deactivationConsequencesFor(entries, moduleId, isPresent) {
150
+ const rows = new Map();
151
+ for (const entry of entries) {
152
+ if (entry.dependsOn !== moduleId)
153
+ continue;
154
+ if (entry.outcome !== 'fails-closed' && entry.outcome !== 'degrades')
155
+ continue;
156
+ if (!isPresent(entry.moduleId))
157
+ continue;
158
+ const existing = rows.get(entry.moduleId);
159
+ const effect = entry.outcome === 'degrades' ? 'degraded' : 'unavailable';
160
+ const winning = existing?.effect === 'unavailable' || effect === 'unavailable' ? 'unavailable' : 'degraded';
161
+ rows.set(entry.moduleId, {
162
+ moduleId: entry.moduleId,
163
+ effect: winning,
164
+ description: effect === winning
165
+ ? (entry.whenAbsent ?? existing?.description ?? null)
166
+ : (existing?.description ?? entry.whenAbsent ?? null),
167
+ });
168
+ }
169
+ return [...rows.values()].sort((a, b) => a.moduleId.localeCompare(b.moduleId));
170
+ }
171
+ //# sourceMappingURL=deactivation-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deactivation-ledger.js","sourceRoot":"","sources":["../../../src/lifecycle/services/deactivation-ledger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ import type { ModuleManifest } from '@endora-commerce/contracts';
2
+ /**
3
+ * Dependency graph derived from a snapshot of every loaded manifest.
4
+ *
5
+ * Built once at boot and rebuilt on every state-changing lifecycle
6
+ * operation. Pure in-memory; no I/O. The orchestrator drives every
7
+ * lifecycle command through this graph for validation.
8
+ */
9
+ export declare class ModuleDepGraph {
10
+ /** moduleId → set of ids it directly depends on. */
11
+ private readonly forward;
12
+ /** moduleId → set of ids that directly depend on it. */
13
+ private readonly reverse;
14
+ /** Full manifest set, for callers that want metadata, not just edges. */
15
+ private readonly manifests;
16
+ constructor(manifests: Iterable<ModuleManifest>);
17
+ has(id: string): boolean;
18
+ manifest(id: string): ModuleManifest | undefined;
19
+ ids(): string[];
20
+ /**
21
+ * Detect a cycle. Returns a representative cycle (path of ids) when
22
+ * the graph is cyclic, `null` when it is a DAG. Uses iterative DFS so
23
+ * graphs with thousands of nodes don't blow the stack.
24
+ */
25
+ hasCycle(): {
26
+ cycle: string[];
27
+ } | null;
28
+ /**
29
+ * Topological order (dependency-first). Throws if the graph contains a
30
+ * cycle — callers should call `hasCycle()` first when they want to
31
+ * surface a friendly error.
32
+ */
33
+ topologicalOrder(): string[];
34
+ /**
35
+ * Reverse topological order (dependents first). Useful for cascade
36
+ * disable / hard-uninstall ordering.
37
+ */
38
+ reverseTopologicalOrder(): string[];
39
+ /** Direct dependents of `id` (one-hop reverse edges). */
40
+ dependentsOf(id: string): string[];
41
+ /** Transitive closure of dependents (all who reach `id` through reverse edges). */
42
+ transitiveDependentsOf(id: string): string[];
43
+ /** Direct deps of `id` not present in `installed`. */
44
+ unresolvedDependenciesOf(id: string, installed: ReadonlySet<string>): string[];
45
+ }
46
+ /**
47
+ * Strongly connected components of a directed graph (Tarjan), iterative so a
48
+ * large graph cannot blow the stack.
49
+ *
50
+ * **The platform owns this walk because two of its readers must not be able to
51
+ * disagree about what a cycle is** (feature 080, D-160.11). It was
52
+ * `backend/src/db/migration-order.ts`'s private helper, which made the
53
+ * orchestrator's install refusal — *"with this module, [a, b] depend on each
54
+ * other in a loop"* — a reach out of the platform into the host application,
55
+ * for a pure graph walk. The host still reads it: `migration-order.ts` builds
56
+ * the ordering graph's condensation from exactly this function, so the member
57
+ * list an operator reads in a refused install is the member list the migration
58
+ * order reports, by construction and not by two implementations agreeing.
59
+ *
60
+ * `neighboursOf` is the caller's, so an edge into a node the caller did not
61
+ * declare is the caller's decision to skip or to keep.
62
+ */
63
+ export declare function stronglyConnectedComponents(nodes: readonly string[], neighboursOf: (id: string) => readonly string[]): string[][];
64
+ /**
65
+ * A stable topological sort of a condensation — Kahn's algorithm, the ready set
66
+ * drained by the smallest module id in the component.
67
+ *
68
+ * **The platform owns this walk for the reason it owns
69
+ * {@link stronglyConnectedComponents}** (D-160.11), and feature 113 is what made
70
+ * the reason bite: the migration order and the demo runner both order modules by
71
+ * the manifest `dependencies` graph, and `contracts/module-demo-data-layer.md`
72
+ * §4.1 says the runner *"MUST NOT maintain an order of its own"*. Two
73
+ * implementations of one order are two answers waiting to disagree — and they
74
+ * would disagree silently, because nothing compares a demo run's order to a
75
+ * migration run's.
76
+ *
77
+ * It was `backend/src/db/migration-order.ts`' private `sortComponents`, moved
78
+ * here unchanged. The `first` parameter is that file's `'core'` rule made a
79
+ * parameter rather than a constant: `'core'` declares nothing and nothing
80
+ * declares it, so it is always ready at the start, and saying "it goes first"
81
+ * beats relying on an accident of alphabetical ordering. A caller with no such
82
+ * node passes nothing and gets the plain smallest-id-first drain.
83
+ *
84
+ * It always succeeds: the condensation is acyclic, so the ready set cannot
85
+ * empty early and there is no unresolvable order.
86
+ *
87
+ * `neighboursOf` is the caller's, exactly as above, and an edge into a node no
88
+ * component holds is skipped — the caller decided what its graph contains.
89
+ */
90
+ export declare function sortComponentsTopologically(components: readonly string[][], neighboursOf: (id: string) => readonly string[], first?: string): string[][];
91
+ /**
92
+ * The modules of a dependency map, dependencies before dependents, ties broken
93
+ * by module id.
94
+ *
95
+ * The one order two readers share: the migration order builds it through the
96
+ * two functions above with its own `'core'` node, and the demo runner takes it
97
+ * whole (feature 113, §4.1). A dependency **cycle** is not an error here — its
98
+ * members come out as one contiguous block in id order, and reporting it is the
99
+ * caller's ({@link moduleDependencyCycles}), for the reason feature 081 gives: a
100
+ * manifest can arrive from an installed package, and one stranger's declaration
101
+ * must not stop a shop's own work.
102
+ *
103
+ * An edge naming a module the map does not hold is skipped, which is §4.4's
104
+ * *"an entry naming a module that is not installed orders nothing"*.
105
+ */
106
+ export declare function orderModulesByDependencies(moduleDependencies: ReadonlyMap<string, readonly string[]>): string[];
107
+ /**
108
+ * Every dependency cycle in a module dependency map — one strongly connected
109
+ * component of more than one module per entry, members sorted.
110
+ *
111
+ * The one derivation behind three reactions (feature 081, FR-012): a red unit
112
+ * test for a cycle in this repository's own manifests, a `warn` at boot for one
113
+ * on a running platform, and the orchestrator refusing an install whose arrival
114
+ * closes a loop. An edge naming a module the map does not hold is skipped — a
115
+ * *migration* claiming such a module is refused by the ordering's own step 1,
116
+ * and a dependency on a module that is not there is not a cycle.
117
+ */
118
+ export declare function moduleDependencyCycles(moduleDependencies: ReadonlyMap<string, readonly string[]>): string[][];
119
+ //# sourceMappingURL=dep-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dep-graph.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/services/dep-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,oDAAoD;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,wDAAwD;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;gBAEnD,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC;IAc/C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIhD,GAAG,IAAI,MAAM,EAAE;IAIf;;;;OAIG;IACH,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI;IA+CtC;;;;OAIG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAkC5B;;;OAGG;IACH,uBAAuB,IAAI,MAAM,EAAE;IAInC,yDAAyD;IACzD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAIlC,mFAAmF;IACnF,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAY5C,sDAAsD;IACtD,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;CAO/E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,GAC9C,MAAM,EAAE,EAAE,CAsDZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,EAC/B,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,EAC/C,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,EAAE,EAAE,CAuCZ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GACzD,MAAM,EAAE,CAMV;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GACzD,MAAM,EAAE,EAAE,CAOZ"}
@@ -0,0 +1,334 @@
1
+ /**
2
+ * Dependency graph derived from a snapshot of every loaded manifest.
3
+ *
4
+ * Built once at boot and rebuilt on every state-changing lifecycle
5
+ * operation. Pure in-memory; no I/O. The orchestrator drives every
6
+ * lifecycle command through this graph for validation.
7
+ */
8
+ export class ModuleDepGraph {
9
+ /** moduleId → set of ids it directly depends on. */
10
+ forward = new Map();
11
+ /** moduleId → set of ids that directly depend on it. */
12
+ reverse = new Map();
13
+ /** Full manifest set, for callers that want metadata, not just edges. */
14
+ manifests = new Map();
15
+ constructor(manifests) {
16
+ for (const m of manifests) {
17
+ this.manifests.set(m.id, m);
18
+ this.forward.set(m.id, new Set(m.dependencies));
19
+ if (!this.reverse.has(m.id))
20
+ this.reverse.set(m.id, new Set());
21
+ }
22
+ for (const [id, deps] of this.forward) {
23
+ for (const dep of deps) {
24
+ if (!this.reverse.has(dep))
25
+ this.reverse.set(dep, new Set());
26
+ this.reverse.get(dep).add(id);
27
+ }
28
+ }
29
+ }
30
+ has(id) {
31
+ return this.manifests.has(id);
32
+ }
33
+ manifest(id) {
34
+ return this.manifests.get(id);
35
+ }
36
+ ids() {
37
+ return [...this.manifests.keys()].sort();
38
+ }
39
+ /**
40
+ * Detect a cycle. Returns a representative cycle (path of ids) when
41
+ * the graph is cyclic, `null` when it is a DAG. Uses iterative DFS so
42
+ * graphs with thousands of nodes don't blow the stack.
43
+ */
44
+ hasCycle() {
45
+ const color = new Map();
46
+ for (const id of this.manifests.keys())
47
+ color.set(id, 0);
48
+ for (const start of this.manifests.keys()) {
49
+ if (color.get(start) !== 0)
50
+ continue;
51
+ const stack = [
52
+ { id: start, iter: (this.forward.get(start) ?? new Set()).values() },
53
+ ];
54
+ const path = [start];
55
+ color.set(start, 1);
56
+ while (stack.length > 0) {
57
+ const top = stack[stack.length - 1];
58
+ const next = top.iter.next();
59
+ if (next.done) {
60
+ color.set(top.id, 2);
61
+ path.pop();
62
+ stack.pop();
63
+ continue;
64
+ }
65
+ const child = next.value;
66
+ if (!this.manifests.has(child)) {
67
+ // Dependency points to a non-existent module — caller handles
68
+ // (different validation step); skip for cycle detection.
69
+ continue;
70
+ }
71
+ const c = color.get(child);
72
+ if (c === 1) {
73
+ // Found a back-edge → cycle. Slice `path` from `child` to top.
74
+ const startIdx = path.indexOf(child);
75
+ return { cycle: [...path.slice(startIdx), child] };
76
+ }
77
+ if (c === 0) {
78
+ color.set(child, 1);
79
+ path.push(child);
80
+ stack.push({
81
+ id: child,
82
+ iter: (this.forward.get(child) ?? new Set()).values(),
83
+ });
84
+ }
85
+ }
86
+ }
87
+ return null;
88
+ }
89
+ /**
90
+ * Topological order (dependency-first). Throws if the graph contains a
91
+ * cycle — callers should call `hasCycle()` first when they want to
92
+ * surface a friendly error.
93
+ */
94
+ topologicalOrder() {
95
+ const cycle = this.hasCycle();
96
+ if (cycle) {
97
+ throw new Error(`[dep-graph] cannot topologically sort: cycle detected ` +
98
+ `[${cycle.cycle.join(' → ')}]`);
99
+ }
100
+ // Kahn's algorithm: indegree[X] = number of X's unmet deps. Start
101
+ // from nodes with no deps (indegree 0); each pop removes that node
102
+ // from the dependents' indegree counts. Result is dependency-first.
103
+ const indegree = new Map();
104
+ for (const id of this.manifests.keys()) {
105
+ indegree.set(id, this.forward.get(id)?.size ?? 0);
106
+ }
107
+ const queue = [];
108
+ for (const [id, deg] of indegree)
109
+ if (deg === 0)
110
+ queue.push(id);
111
+ queue.sort();
112
+ const out = [];
113
+ while (queue.length > 0) {
114
+ const id = queue.shift();
115
+ out.push(id);
116
+ for (const dependent of this.reverse.get(id) ?? []) {
117
+ const next = (indegree.get(dependent) ?? 0) - 1;
118
+ indegree.set(dependent, next);
119
+ if (next === 0) {
120
+ queue.push(dependent);
121
+ queue.sort();
122
+ }
123
+ }
124
+ }
125
+ return out;
126
+ }
127
+ /**
128
+ * Reverse topological order (dependents first). Useful for cascade
129
+ * disable / hard-uninstall ordering.
130
+ */
131
+ reverseTopologicalOrder() {
132
+ return this.topologicalOrder().slice().reverse();
133
+ }
134
+ /** Direct dependents of `id` (one-hop reverse edges). */
135
+ dependentsOf(id) {
136
+ return [...(this.reverse.get(id) ?? new Set())].sort();
137
+ }
138
+ /** Transitive closure of dependents (all who reach `id` through reverse edges). */
139
+ transitiveDependentsOf(id) {
140
+ const seen = new Set();
141
+ const stack = [...(this.reverse.get(id) ?? [])];
142
+ while (stack.length > 0) {
143
+ const cur = stack.pop();
144
+ if (seen.has(cur))
145
+ continue;
146
+ seen.add(cur);
147
+ for (const next of this.reverse.get(cur) ?? [])
148
+ stack.push(next);
149
+ }
150
+ return [...seen].sort();
151
+ }
152
+ /** Direct deps of `id` not present in `installed`. */
153
+ unresolvedDependenciesOf(id, installed) {
154
+ const out = [];
155
+ for (const dep of this.forward.get(id) ?? []) {
156
+ if (!installed.has(dep))
157
+ out.push(dep);
158
+ }
159
+ return out.sort();
160
+ }
161
+ }
162
+ /**
163
+ * Strongly connected components of a directed graph (Tarjan), iterative so a
164
+ * large graph cannot blow the stack.
165
+ *
166
+ * **The platform owns this walk because two of its readers must not be able to
167
+ * disagree about what a cycle is** (feature 080, D-160.11). It was
168
+ * `backend/src/db/migration-order.ts`'s private helper, which made the
169
+ * orchestrator's install refusal — *"with this module, [a, b] depend on each
170
+ * other in a loop"* — a reach out of the platform into the host application,
171
+ * for a pure graph walk. The host still reads it: `migration-order.ts` builds
172
+ * the ordering graph's condensation from exactly this function, so the member
173
+ * list an operator reads in a refused install is the member list the migration
174
+ * order reports, by construction and not by two implementations agreeing.
175
+ *
176
+ * `neighboursOf` is the caller's, so an edge into a node the caller did not
177
+ * declare is the caller's decision to skip or to keep.
178
+ */
179
+ export function stronglyConnectedComponents(nodes, neighboursOf) {
180
+ const index = new Map();
181
+ const lowLink = new Map();
182
+ const onStack = new Set();
183
+ const stack = [];
184
+ const components = [];
185
+ let counter = 0;
186
+ const discover = (id) => {
187
+ index.set(id, counter);
188
+ lowLink.set(id, counter);
189
+ counter += 1;
190
+ stack.push(id);
191
+ onStack.add(id);
192
+ };
193
+ for (const root of nodes) {
194
+ if (index.has(root))
195
+ continue;
196
+ discover(root);
197
+ // `edge` is how far through the node's neighbour list the walk has got.
198
+ const work = [{ id: root, edge: 0 }];
199
+ while (work.length > 0) {
200
+ const frame = work[work.length - 1];
201
+ const neighbours = neighboursOf(frame.id);
202
+ if (frame.edge < neighbours.length) {
203
+ const next = neighbours[frame.edge];
204
+ frame.edge += 1;
205
+ if (!index.has(next)) {
206
+ discover(next);
207
+ work.push({ id: next, edge: 0 });
208
+ }
209
+ else if (onStack.has(next)) {
210
+ lowLink.set(frame.id, Math.min(lowLink.get(frame.id), index.get(next)));
211
+ }
212
+ continue;
213
+ }
214
+ work.pop();
215
+ if (lowLink.get(frame.id) === index.get(frame.id)) {
216
+ const component = [];
217
+ for (;;) {
218
+ const member = stack.pop();
219
+ onStack.delete(member);
220
+ component.push(member);
221
+ if (member === frame.id)
222
+ break;
223
+ }
224
+ components.push(component.sort());
225
+ }
226
+ const parent = work[work.length - 1];
227
+ if (parent)
228
+ lowLink.set(parent.id, Math.min(lowLink.get(parent.id), lowLink.get(frame.id)));
229
+ }
230
+ }
231
+ return components;
232
+ }
233
+ /**
234
+ * A stable topological sort of a condensation — Kahn's algorithm, the ready set
235
+ * drained by the smallest module id in the component.
236
+ *
237
+ * **The platform owns this walk for the reason it owns
238
+ * {@link stronglyConnectedComponents}** (D-160.11), and feature 113 is what made
239
+ * the reason bite: the migration order and the demo runner both order modules by
240
+ * the manifest `dependencies` graph, and `contracts/module-demo-data-layer.md`
241
+ * §4.1 says the runner *"MUST NOT maintain an order of its own"*. Two
242
+ * implementations of one order are two answers waiting to disagree — and they
243
+ * would disagree silently, because nothing compares a demo run's order to a
244
+ * migration run's.
245
+ *
246
+ * It was `backend/src/db/migration-order.ts`' private `sortComponents`, moved
247
+ * here unchanged. The `first` parameter is that file's `'core'` rule made a
248
+ * parameter rather than a constant: `'core'` declares nothing and nothing
249
+ * declares it, so it is always ready at the start, and saying "it goes first"
250
+ * beats relying on an accident of alphabetical ordering. A caller with no such
251
+ * node passes nothing and gets the plain smallest-id-first drain.
252
+ *
253
+ * It always succeeds: the condensation is acyclic, so the ready set cannot
254
+ * empty early and there is no unresolvable order.
255
+ *
256
+ * `neighboursOf` is the caller's, exactly as above, and an edge into a node no
257
+ * component holds is skipped — the caller decided what its graph contains.
258
+ */
259
+ export function sortComponentsTopologically(components, neighboursOf, first) {
260
+ const componentOf = new Map();
261
+ components.forEach((members, position) => {
262
+ for (const member of members)
263
+ componentOf.set(member, position);
264
+ });
265
+ const successors = components.map(() => []);
266
+ const indegree = components.map(() => 0);
267
+ components.forEach((members, position) => {
268
+ for (const member of members) {
269
+ for (const dependency of neighboursOf(member)) {
270
+ // The edge means "mine follow theirs", so the dependency's component is
271
+ // emitted first: the arrow in the sort points at us. A repeated edge is
272
+ // counted twice on both sides and cancels out.
273
+ const target = componentOf.get(dependency);
274
+ if (target === undefined || target === position)
275
+ continue;
276
+ successors[target].push(position);
277
+ indegree[position] += 1;
278
+ }
279
+ }
280
+ });
281
+ const firstComponent = first === undefined ? undefined : componentOf.get(first);
282
+ const sortKey = (position) => position === firstComponent ? '' : components[position][0];
283
+ const ready = components.map((_, position) => position).filter((p) => indegree[p] === 0);
284
+ const ordered = [];
285
+ while (ready.length > 0) {
286
+ ready.sort((left, right) => (sortKey(left) < sortKey(right) ? -1 : 1));
287
+ const next = ready.shift();
288
+ ordered.push(components[next]);
289
+ for (const successor of successors[next]) {
290
+ indegree[successor] -= 1;
291
+ if (indegree[successor] === 0)
292
+ ready.push(successor);
293
+ }
294
+ }
295
+ return ordered;
296
+ }
297
+ /**
298
+ * The modules of a dependency map, dependencies before dependents, ties broken
299
+ * by module id.
300
+ *
301
+ * The one order two readers share: the migration order builds it through the
302
+ * two functions above with its own `'core'` node, and the demo runner takes it
303
+ * whole (feature 113, §4.1). A dependency **cycle** is not an error here — its
304
+ * members come out as one contiguous block in id order, and reporting it is the
305
+ * caller's ({@link moduleDependencyCycles}), for the reason feature 081 gives: a
306
+ * manifest can arrive from an installed package, and one stranger's declaration
307
+ * must not stop a shop's own work.
308
+ *
309
+ * An edge naming a module the map does not hold is skipped, which is §4.4's
310
+ * *"an entry naming a module that is not installed orders nothing"*.
311
+ */
312
+ export function orderModulesByDependencies(moduleDependencies) {
313
+ const nodes = [...moduleDependencies.keys()];
314
+ const neighboursOf = (id) => (moduleDependencies.get(id) ?? []).filter((dependency) => moduleDependencies.has(dependency));
315
+ const components = stronglyConnectedComponents(nodes, neighboursOf);
316
+ return sortComponentsTopologically(components, neighboursOf).flat();
317
+ }
318
+ /**
319
+ * Every dependency cycle in a module dependency map — one strongly connected
320
+ * component of more than one module per entry, members sorted.
321
+ *
322
+ * The one derivation behind three reactions (feature 081, FR-012): a red unit
323
+ * test for a cycle in this repository's own manifests, a `warn` at boot for one
324
+ * on a running platform, and the orchestrator refusing an install whose arrival
325
+ * closes a loop. An edge naming a module the map does not hold is skipped — a
326
+ * *migration* claiming such a module is refused by the ordering's own step 1,
327
+ * and a dependency on a module that is not there is not a cycle.
328
+ */
329
+ export function moduleDependencyCycles(moduleDependencies) {
330
+ const nodes = [...moduleDependencies.keys()];
331
+ const neighboursOf = (id) => (moduleDependencies.get(id) ?? []).filter((dependency) => moduleDependencies.has(dependency));
332
+ return stronglyConnectedComponents(nodes, neighboursOf).filter((members) => members.length > 1);
333
+ }
334
+ //# sourceMappingURL=dep-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dep-graph.js","sourceRoot":"","sources":["../../../src/lifecycle/services/dep-graph.ts"],"names":[],"mappings":"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"}