@endora-commerce/mod-organizations 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 (288) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -0
  3. package/dist/admin/components/OrganizationSalesRepsTab.d.ts +27 -0
  4. package/dist/admin/components/OrganizationSalesRepsTab.d.ts.map +1 -0
  5. package/dist/admin/components/OrganizationSalesRepsTab.js +170 -0
  6. package/dist/admin/components/OrganizationSalesRepsTab.js.map +1 -0
  7. package/dist/admin/index.d.ts +30 -0
  8. package/dist/admin/index.d.ts.map +1 -0
  9. package/dist/admin/index.js +59 -0
  10. package/dist/admin/index.js.map +1 -0
  11. package/dist/admin/pages/OrganizationDetail.d.ts +9 -0
  12. package/dist/admin/pages/OrganizationDetail.d.ts.map +1 -0
  13. package/dist/admin/pages/OrganizationDetail.js +247 -0
  14. package/dist/admin/pages/OrganizationDetail.js.map +1 -0
  15. package/dist/admin/pages/OrganizationsList.d.ts +9 -0
  16. package/dist/admin/pages/OrganizationsList.d.ts.map +1 -0
  17. package/dist/admin/pages/OrganizationsList.js +73 -0
  18. package/dist/admin/pages/OrganizationsList.js.map +1 -0
  19. package/dist/admin/panels/ApplicablePriceListsPanel.d.ts +12 -0
  20. package/dist/admin/panels/ApplicablePriceListsPanel.d.ts.map +1 -0
  21. package/dist/admin/panels/ApplicablePriceListsPanel.js +49 -0
  22. package/dist/admin/panels/ApplicablePriceListsPanel.js.map +1 -0
  23. package/dist/admin/panels/FulfilmentStrategyPanel.d.ts +16 -0
  24. package/dist/admin/panels/FulfilmentStrategyPanel.d.ts.map +1 -0
  25. package/dist/admin/panels/FulfilmentStrategyPanel.js +29 -0
  26. package/dist/admin/panels/FulfilmentStrategyPanel.js.map +1 -0
  27. package/dist/admin/panels/HierarchyPanel.d.ts +15 -0
  28. package/dist/admin/panels/HierarchyPanel.d.ts.map +1 -0
  29. package/dist/admin/panels/HierarchyPanel.js +65 -0
  30. package/dist/admin/panels/HierarchyPanel.js.map +1 -0
  31. package/dist/admin/panels/ModerationActionsPanel.d.ts +28 -0
  32. package/dist/admin/panels/ModerationActionsPanel.d.ts.map +1 -0
  33. package/dist/admin/panels/ModerationActionsPanel.js +111 -0
  34. package/dist/admin/panels/ModerationActionsPanel.js.map +1 -0
  35. package/dist/admin/panels/RestrictionsPanel.d.ts +24 -0
  36. package/dist/admin/panels/RestrictionsPanel.d.ts.map +1 -0
  37. package/dist/admin/panels/RestrictionsPanel.js +121 -0
  38. package/dist/admin/panels/RestrictionsPanel.js.map +1 -0
  39. package/dist/admin/panels/VatValidationPanel.d.ts +28 -0
  40. package/dist/admin/panels/VatValidationPanel.d.ts.map +1 -0
  41. package/dist/admin/panels/VatValidationPanel.js +79 -0
  42. package/dist/admin/panels/VatValidationPanel.js.map +1 -0
  43. package/dist/backend/commands/move.command.d.ts +11 -0
  44. package/dist/backend/commands/move.command.d.ts.map +1 -0
  45. package/dist/backend/commands/move.command.js +11 -0
  46. package/dist/backend/commands/move.command.js.map +1 -0
  47. package/dist/backend/commands/set-cart-approval-policy.command.d.ts +31 -0
  48. package/dist/backend/commands/set-cart-approval-policy.command.d.ts.map +1 -0
  49. package/dist/backend/commands/set-cart-approval-policy.command.js +56 -0
  50. package/dist/backend/commands/set-cart-approval-policy.command.js.map +1 -0
  51. package/dist/backend/commands/set-credit-mode.command.d.ts +16 -0
  52. package/dist/backend/commands/set-credit-mode.command.d.ts.map +1 -0
  53. package/dist/backend/commands/set-credit-mode.command.js +25 -0
  54. package/dist/backend/commands/set-credit-mode.command.js.map +1 -0
  55. package/dist/backend/commands/set-parent.command.d.ts +26 -0
  56. package/dist/backend/commands/set-parent.command.d.ts.map +1 -0
  57. package/dist/backend/commands/set-parent.command.js +51 -0
  58. package/dist/backend/commands/set-parent.command.js.map +1 -0
  59. package/dist/backend/demo/reset.d.ts +20 -0
  60. package/dist/backend/demo/reset.d.ts.map +1 -0
  61. package/dist/backend/demo/reset.js +11 -0
  62. package/dist/backend/demo/reset.js.map +1 -0
  63. package/dist/backend/demo/rows.d.ts +44 -0
  64. package/dist/backend/demo/rows.d.ts.map +1 -0
  65. package/dist/backend/demo/rows.js +44 -0
  66. package/dist/backend/demo/rows.js.map +1 -0
  67. package/dist/backend/demo/seed.d.ts +20 -0
  68. package/dist/backend/demo/seed.d.ts.map +1 -0
  69. package/dist/backend/demo/seed.js +28 -0
  70. package/dist/backend/demo/seed.js.map +1 -0
  71. package/dist/backend/email-templates/invitation.d.ts +23 -0
  72. package/dist/backend/email-templates/invitation.d.ts.map +1 -0
  73. package/dist/backend/email-templates/invitation.js +35 -0
  74. package/dist/backend/email-templates/invitation.js.map +1 -0
  75. package/dist/backend/email-templates/transactional-defaults.d.ts +54 -0
  76. package/dist/backend/email-templates/transactional-defaults.d.ts.map +1 -0
  77. package/dist/backend/email-templates/transactional-defaults.js +242 -0
  78. package/dist/backend/email-templates/transactional-defaults.js.map +1 -0
  79. package/dist/backend/email-templates/verification.d.ts +14 -0
  80. package/dist/backend/email-templates/verification.d.ts.map +1 -0
  81. package/dist/backend/email-templates/verification.js +34 -0
  82. package/dist/backend/email-templates/verification.js.map +1 -0
  83. package/dist/backend/entities/email-verification-token.entity.d.ts +17 -0
  84. package/dist/backend/entities/email-verification-token.entity.d.ts.map +1 -0
  85. package/dist/backend/entities/email-verification-token.entity.js +60 -0
  86. package/dist/backend/entities/email-verification-token.entity.js.map +1 -0
  87. package/dist/backend/entities/organization-delivery-method-link.entity.d.ts +14 -0
  88. package/dist/backend/entities/organization-delivery-method-link.entity.d.ts.map +1 -0
  89. package/dist/backend/entities/organization-delivery-method-link.entity.js +41 -0
  90. package/dist/backend/entities/organization-delivery-method-link.entity.js.map +1 -0
  91. package/dist/backend/entities/organization-invitation.entity.d.ts +21 -0
  92. package/dist/backend/entities/organization-invitation.entity.d.ts.map +1 -0
  93. package/dist/backend/entities/organization-invitation.entity.js +85 -0
  94. package/dist/backend/entities/organization-invitation.entity.js.map +1 -0
  95. package/dist/backend/entities/organization-payment-method-link.entity.d.ts +14 -0
  96. package/dist/backend/entities/organization-payment-method-link.entity.d.ts.map +1 -0
  97. package/dist/backend/entities/organization-payment-method-link.entity.js +41 -0
  98. package/dist/backend/entities/organization-payment-method-link.entity.js.map +1 -0
  99. package/dist/backend/entities/organization-sales-rep-assignment.entity.d.ts +17 -0
  100. package/dist/backend/entities/organization-sales-rep-assignment.entity.d.ts.map +1 -0
  101. package/dist/backend/entities/organization-sales-rep-assignment.entity.js +56 -0
  102. package/dist/backend/entities/organization-sales-rep-assignment.entity.js.map +1 -0
  103. package/dist/backend/entities/organization-tax-id-validation.entity.d.ts +29 -0
  104. package/dist/backend/entities/organization-tax-id-validation.entity.d.ts.map +1 -0
  105. package/dist/backend/entities/organization-tax-id-validation.entity.js +78 -0
  106. package/dist/backend/entities/organization-tax-id-validation.entity.js.map +1 -0
  107. package/dist/backend/entities/organization-warehouse-link.entity.d.ts +15 -0
  108. package/dist/backend/entities/organization-warehouse-link.entity.d.ts.map +1 -0
  109. package/dist/backend/entities/organization-warehouse-link.entity.js +42 -0
  110. package/dist/backend/entities/organization-warehouse-link.entity.js.map +1 -0
  111. package/dist/backend/entities/organization.entity.d.ts +125 -0
  112. package/dist/backend/entities/organization.entity.d.ts.map +1 -0
  113. package/dist/backend/entities/organization.entity.js +282 -0
  114. package/dist/backend/entities/organization.entity.js.map +1 -0
  115. package/dist/backend/index.d.ts +250 -0
  116. package/dist/backend/index.d.ts.map +1 -0
  117. package/dist/backend/index.js +506 -0
  118. package/dist/backend/index.js.map +1 -0
  119. package/dist/backend/integrations/ministerstwo-finansow-client.d.ts +22 -0
  120. package/dist/backend/integrations/ministerstwo-finansow-client.d.ts.map +1 -0
  121. package/dist/backend/integrations/ministerstwo-finansow-client.js +172 -0
  122. package/dist/backend/integrations/ministerstwo-finansow-client.js.map +1 -0
  123. package/dist/backend/integrations/vies-client.d.ts +18 -0
  124. package/dist/backend/integrations/vies-client.d.ts.map +1 -0
  125. package/dist/backend/integrations/vies-client.js +133 -0
  126. package/dist/backend/integrations/vies-client.js.map +1 -0
  127. package/dist/backend/plugin.d.ts +126 -0
  128. package/dist/backend/plugin.d.ts.map +1 -0
  129. package/dist/backend/plugin.js +139 -0
  130. package/dist/backend/plugin.js.map +1 -0
  131. package/dist/backend/routes.admin.d.ts +66 -0
  132. package/dist/backend/routes.admin.d.ts.map +1 -0
  133. package/dist/backend/routes.admin.js +711 -0
  134. package/dist/backend/routes.admin.js.map +1 -0
  135. package/dist/backend/routes.customer.d.ts +33 -0
  136. package/dist/backend/routes.customer.d.ts.map +1 -0
  137. package/dist/backend/routes.customer.js +139 -0
  138. package/dist/backend/routes.customer.js.map +1 -0
  139. package/dist/backend/routes.members.d.ts +31 -0
  140. package/dist/backend/routes.members.d.ts.map +1 -0
  141. package/dist/backend/routes.members.js +109 -0
  142. package/dist/backend/routes.members.js.map +1 -0
  143. package/dist/backend/routes.public.d.ts +49 -0
  144. package/dist/backend/routes.public.d.ts.map +1 -0
  145. package/dist/backend/routes.public.js +220 -0
  146. package/dist/backend/routes.public.js.map +1 -0
  147. package/dist/backend/routes.sales-reps.d.ts +46 -0
  148. package/dist/backend/routes.sales-reps.d.ts.map +1 -0
  149. package/dist/backend/routes.sales-reps.js +114 -0
  150. package/dist/backend/routes.sales-reps.js.map +1 -0
  151. package/dist/backend/routes.storefront.d.ts +25 -0
  152. package/dist/backend/routes.storefront.d.ts.map +1 -0
  153. package/dist/backend/routes.storefront.js +65 -0
  154. package/dist/backend/routes.storefront.js.map +1 -0
  155. package/dist/backend/schemas/organization.d.ts +59 -0
  156. package/dist/backend/schemas/organization.d.ts.map +1 -0
  157. package/dist/backend/schemas/organization.js +55 -0
  158. package/dist/backend/schemas/organization.js.map +1 -0
  159. package/dist/backend/schemas/settings.d.ts +30 -0
  160. package/dist/backend/schemas/settings.d.ts.map +1 -0
  161. package/dist/backend/schemas/settings.js +35 -0
  162. package/dist/backend/schemas/settings.js.map +1 -0
  163. package/dist/backend/services/email-verification-service.d.ts +45 -0
  164. package/dist/backend/services/email-verification-service.d.ts.map +1 -0
  165. package/dist/backend/services/email-verification-service.js +95 -0
  166. package/dist/backend/services/email-verification-service.js.map +1 -0
  167. package/dist/backend/services/invitation-service.d.ts +85 -0
  168. package/dist/backend/services/invitation-service.d.ts.map +1 -0
  169. package/dist/backend/services/invitation-service.js +266 -0
  170. package/dist/backend/services/invitation-service.js.map +1 -0
  171. package/dist/backend/services/normalize-name.d.ts +14 -0
  172. package/dist/backend/services/normalize-name.d.ts.map +1 -0
  173. package/dist/backend/services/normalize-name.js +14 -0
  174. package/dist/backend/services/normalize-name.js.map +1 -0
  175. package/dist/backend/services/org-registration-notifier.d.ts +36 -0
  176. package/dist/backend/services/org-registration-notifier.d.ts.map +1 -0
  177. package/dist/backend/services/org-registration-notifier.js +109 -0
  178. package/dist/backend/services/org-registration-notifier.js.map +1 -0
  179. package/dist/backend/services/org-template-email.d.ts +18 -0
  180. package/dist/backend/services/org-template-email.d.ts.map +1 -0
  181. package/dist/backend/services/org-template-email.js +16 -0
  182. package/dist/backend/services/org-template-email.js.map +1 -0
  183. package/dist/backend/services/organization-context-service.d.ts +52 -0
  184. package/dist/backend/services/organization-context-service.d.ts.map +1 -0
  185. package/dist/backend/services/organization-context-service.js +70 -0
  186. package/dist/backend/services/organization-context-service.js.map +1 -0
  187. package/dist/backend/services/organization-country-reference.d.ts +11 -0
  188. package/dist/backend/services/organization-country-reference.d.ts.map +1 -0
  189. package/dist/backend/services/organization-country-reference.js +24 -0
  190. package/dist/backend/services/organization-country-reference.js.map +1 -0
  191. package/dist/backend/services/organization-details-port.d.ts +33 -0
  192. package/dist/backend/services/organization-details-port.d.ts.map +1 -0
  193. package/dist/backend/services/organization-details-port.js +95 -0
  194. package/dist/backend/services/organization-details-port.js.map +1 -0
  195. package/dist/backend/services/organization-effective-pricelists-service.d.ts +50 -0
  196. package/dist/backend/services/organization-effective-pricelists-service.d.ts.map +1 -0
  197. package/dist/backend/services/organization-effective-pricelists-service.js +68 -0
  198. package/dist/backend/services/organization-effective-pricelists-service.js.map +1 -0
  199. package/dist/backend/services/organization-inheritance-service.d.ts +73 -0
  200. package/dist/backend/services/organization-inheritance-service.d.ts.map +1 -0
  201. package/dist/backend/services/organization-inheritance-service.js +63 -0
  202. package/dist/backend/services/organization-inheritance-service.js.map +1 -0
  203. package/dist/backend/services/organization-moderation-service.d.ts +124 -0
  204. package/dist/backend/services/organization-moderation-service.d.ts.map +1 -0
  205. package/dist/backend/services/organization-moderation-service.js +337 -0
  206. package/dist/backend/services/organization-moderation-service.js.map +1 -0
  207. package/dist/backend/services/organization-restriction-service.d.ts +70 -0
  208. package/dist/backend/services/organization-restriction-service.d.ts.map +1 -0
  209. package/dist/backend/services/organization-restriction-service.js +210 -0
  210. package/dist/backend/services/organization-restriction-service.js.map +1 -0
  211. package/dist/backend/services/organization-tax-id-validation-service.d.ts +59 -0
  212. package/dist/backend/services/organization-tax-id-validation-service.d.ts.map +1 -0
  213. package/dist/backend/services/organization-tax-id-validation-service.js +115 -0
  214. package/dist/backend/services/organization-tax-id-validation-service.js.map +1 -0
  215. package/dist/backend/services/organization-tree-service.d.ts +102 -0
  216. package/dist/backend/services/organization-tree-service.d.ts.map +1 -0
  217. package/dist/backend/services/organization-tree-service.js +184 -0
  218. package/dist/backend/services/organization-tree-service.js.map +1 -0
  219. package/dist/backend/services/personal-organization-service.d.ts +130 -0
  220. package/dist/backend/services/personal-organization-service.d.ts.map +1 -0
  221. package/dist/backend/services/personal-organization-service.js +207 -0
  222. package/dist/backend/services/personal-organization-service.js.map +1 -0
  223. package/dist/backend/services/registration-service.d.ts +80 -0
  224. package/dist/backend/services/registration-service.d.ts.map +1 -0
  225. package/dist/backend/services/registration-service.js +126 -0
  226. package/dist/backend/services/registration-service.js.map +1 -0
  227. package/dist/backend/services/sales-rep-assignment-service.d.ts +89 -0
  228. package/dist/backend/services/sales-rep-assignment-service.d.ts.map +1 -0
  229. package/dist/backend/services/sales-rep-assignment-service.js +176 -0
  230. package/dist/backend/services/sales-rep-assignment-service.js.map +1 -0
  231. package/dist/backend/services/vat-validator-port.d.ts +20 -0
  232. package/dist/backend/services/vat-validator-port.d.ts.map +1 -0
  233. package/dist/backend/services/vat-validator-port.js +2 -0
  234. package/dist/backend/services/vat-validator-port.js.map +1 -0
  235. package/dist/manifest.d.ts +176 -0
  236. package/dist/manifest.d.ts.map +1 -0
  237. package/dist/manifest.js +503 -0
  238. package/dist/manifest.js.map +1 -0
  239. package/dist/migrations/20260424T205317_organizations_init.d.ts +13 -0
  240. package/dist/migrations/20260424T205317_organizations_init.d.ts.map +1 -0
  241. package/dist/migrations/20260424T205317_organizations_init.js +100 -0
  242. package/dist/migrations/20260424T205317_organizations_init.js.map +1 -0
  243. package/dist/migrations/20260425T051700_organizations_invitations_init.d.ts +13 -0
  244. package/dist/migrations/20260425T051700_organizations_invitations_init.d.ts.map +1 -0
  245. package/dist/migrations/20260425T051700_organizations_invitations_init.js +39 -0
  246. package/dist/migrations/20260425T051700_organizations_invitations_init.js.map +1 -0
  247. package/dist/migrations/20260611T140349_organizations_consolidation.d.ts +35 -0
  248. package/dist/migrations/20260611T140349_organizations_consolidation.d.ts.map +1 -0
  249. package/dist/migrations/20260611T140349_organizations_consolidation.js +180 -0
  250. package/dist/migrations/20260611T140349_organizations_consolidation.js.map +1 -0
  251. package/dist/migrations/20260611T140358_organizations_org_order_confirmation_emails.d.ts +10 -0
  252. package/dist/migrations/20260611T140358_organizations_org_order_confirmation_emails.d.ts.map +1 -0
  253. package/dist/migrations/20260611T140358_organizations_org_order_confirmation_emails.js +14 -0
  254. package/dist/migrations/20260611T140358_organizations_org_order_confirmation_emails.js.map +1 -0
  255. package/dist/migrations/20260611T140402_organizations_org_fulfilment_strategy.d.ts +14 -0
  256. package/dist/migrations/20260611T140402_organizations_org_fulfilment_strategy.d.ts.map +1 -0
  257. package/dist/migrations/20260611T140402_organizations_org_fulfilment_strategy.js +20 -0
  258. package/dist/migrations/20260611T140402_organizations_org_fulfilment_strategy.js.map +1 -0
  259. package/dist/migrations/20260717T151403_organizations_personal_organizations.d.ts +24 -0
  260. package/dist/migrations/20260717T151403_organizations_personal_organizations.d.ts.map +1 -0
  261. package/dist/migrations/20260717T151403_organizations_personal_organizations.js +63 -0
  262. package/dist/migrations/20260717T151403_organizations_personal_organizations.js.map +1 -0
  263. package/dist/migrations/20260718T200340_organizations_organization_custom_field_values.d.ts +12 -0
  264. package/dist/migrations/20260718T200340_organizations_organization_custom_field_values.d.ts.map +1 -0
  265. package/dist/migrations/20260718T200340_organizations_organization_custom_field_values.js +16 -0
  266. package/dist/migrations/20260718T200340_organizations_organization_custom_field_values.js.map +1 -0
  267. package/dist/migrations/20260720T044254_organizations_org_hierarchy.d.ts +23 -0
  268. package/dist/migrations/20260720T044254_organizations_org_hierarchy.d.ts.map +1 -0
  269. package/dist/migrations/20260720T044254_organizations_org_hierarchy.js +37 -0
  270. package/dist/migrations/20260720T044254_organizations_org_hierarchy.js.map +1 -0
  271. package/dist/migrations/20260912T094646_organizations_sales_channel_organizations.d.ts +27 -0
  272. package/dist/migrations/20260912T094646_organizations_sales_channel_organizations.d.ts.map +1 -0
  273. package/dist/migrations/20260912T094646_organizations_sales_channel_organizations.js +44 -0
  274. package/dist/migrations/20260912T094646_organizations_sales_channel_organizations.js.map +1 -0
  275. package/dist/migrations/index.d.ts +35 -0
  276. package/dist/migrations/index.d.ts.map +1 -0
  277. package/dist/migrations/index.js +45 -0
  278. package/dist/migrations/index.js.map +1 -0
  279. package/dist/ports/index.d.ts +53 -0
  280. package/dist/ports/index.d.ts.map +1 -0
  281. package/dist/ports/index.js +2 -0
  282. package/dist/ports/index.js.map +1 -0
  283. package/docs/organization-hierarchy.md +117 -0
  284. package/docs/organizations.md +312 -0
  285. package/i18n/en.json +17 -0
  286. package/i18n/pl.json +17 -0
  287. package/package.json +107 -0
  288. package/tailwind.css +14 -0
@@ -0,0 +1,506 @@
1
+ import { lazyPort } from '@endora-commerce/platform/kernel';
2
+ import { ORGANIZATIONS_SETTING_CODES } from '../manifest.js';
3
+ import { creditInheritanceModeSchema, moderationModeSchema, notificationRecipientsSchema, } from './schemas/settings.js';
4
+ import { OrganizationContextService } from './services/organization-context-service.js';
5
+ import { OrganizationDetailsService, toOrganizationRecord, } from './services/organization-details-port.js';
6
+ import { PersonalOrganizationService } from './services/personal-organization-service.js';
7
+ import { OrganizationRestrictionService } from './services/organization-restriction-service.js';
8
+ import { OrganizationTreeService } from './services/organization-tree-service.js';
9
+ import { OrganizationInheritanceService } from './services/organization-inheritance-service.js';
10
+ import { OrganizationModerationService } from './services/organization-moderation-service.js';
11
+ import { OrganizationEffectivePriceListsService } from './services/organization-effective-pricelists-service.js';
12
+ import { OrganizationTaxIdValidationService } from './services/organization-tax-id-validation-service.js';
13
+ import { SalesRepAssignmentService, } from './services/sales-rep-assignment-service.js';
14
+ import { OrgRegistrationNotifier } from './services/org-registration-notifier.js';
15
+ import { makeSetCartApprovalPolicyCommand } from './commands/set-cart-approval-policy.command.js';
16
+ import { Organization } from './entities/organization.entity.js';
17
+ import { ViesClient } from './integrations/vies-client.js';
18
+ import { MinisterstwoFinansowClient } from './integrations/ministerstwo-finansow-client.js';
19
+ import { organizationsModule } from './plugin.js';
20
+ import { registerOrganizationsSalesRepRoutes } from './routes.sales-reps.js';
21
+ import { EMAIL_VERIFICATION_DEFAULT, NEW_ORG_REGISTRATION_DEFAULT, ORGANIZATION_APPROVED_DEFAULT, ORGANIZATION_INVITATION_DEFAULT, ORGANIZATION_REJECTED_DEFAULT, } from './email-templates/transactional-defaults.js';
22
+ import { registerOrganizationCountryReferences } from './services/organization-country-reference.js';
23
+ import { EmailVerificationToken } from './entities/email-verification-token.entity.js';
24
+ import { OrganizationDeliveryMethodLink } from './entities/organization-delivery-method-link.entity.js';
25
+ import { OrganizationInvitation } from './entities/organization-invitation.entity.js';
26
+ import { OrganizationPaymentMethodLink } from './entities/organization-payment-method-link.entity.js';
27
+ import { OrganizationSalesRepAssignment } from './entities/organization-sales-rep-assignment.entity.js';
28
+ import { OrganizationTaxIdValidation } from './entities/organization-tax-id-validation.entity.js';
29
+ import { OrganizationWarehouseLink } from './entities/organization-warehouse-link.entity.js';
30
+ export function registerModule(ctx) {
31
+ /**
32
+ * Feature 120 (FR-015) — the sales-channel membership bridge this module owns.
33
+ *
34
+ * The platform used to hold a map **total** over
35
+ * `ChannelMemberEntityTypeSchema`, naming this module's bridge table from
36
+ * inside the kernel. That is D-52/D-53's prohibition expressed in a contract
37
+ * instead of an import, and it meant a membership call for 'organization' on an
38
+ * instance that never installed this module executed SQL against a relation
39
+ * that is not there (D-226). The module whose migration creates the table is
40
+ * the one that says where it is; a member nothing registers now refuses at
41
+ * the call instead.
42
+ *
43
+ * A **contribution** hook and deliberately **unprobed** (D-62/D-68): a
44
+ * registration is an inert statement about the schema rather than a
45
+ * capability, the rows outlive an operator switching this module off, and
46
+ * probing would make a runtime activation flip require a restart. It is
47
+ * declared first in this module so any later hook of its own that binds a
48
+ * membership finds the bridge already there.
49
+ */
50
+ ctx.onBoot(() => {
51
+ const { salesChannelBridgeRegistry } = ctx.cradle();
52
+ for (const bridge of salesChannelBridges)
53
+ salesChannelBridgeRegistry.register(bridge);
54
+ });
55
+ const cradle = () => ctx.cradle();
56
+ /**
57
+ * All three `organizations.*` settings are **platform-wide**: whether a new
58
+ * Organization needs manual moderation, who is notified when one registers,
59
+ * and how a parent's credit limit is inherited are properties of the
60
+ * business, not of a storefront. So the read passes `null` (feature 072,
61
+ * D-41 case c).
62
+ *
63
+ * It used to pass `organizationsSettingsChannelId`, a root-supplied name
64
+ * carrying `ORGANIZATIONS_SETTINGS_CHANNEL_ID` — an undocumented env var
65
+ * whose default was the string `'default'`, a channel **code** against a
66
+ * `uuid` column. D-41 deleted the name rather than fixing its value, because
67
+ * a DI name that carries a sentinel is one no static check can see.
68
+ *
69
+ * The reads degrade to the manifest's own default rather than failing a
70
+ * registration; the `manual` fallback in particular is deliberate, so a
71
+ * brand-new install never grants an unverified Organization transaction
72
+ * rights by accident.
73
+ */
74
+ const readSetting = async (code, schema, fallback) => {
75
+ try {
76
+ return (await cradle().settingsReadPort.get(code, null, schema));
77
+ }
78
+ catch {
79
+ return fallback;
80
+ }
81
+ };
82
+ /**
83
+ * The VAT-ID validator, published — feature 076, D-86.
84
+ *
85
+ * `customers` used to build its own `new ViesClient()` from an import of this
86
+ * module's `integrations/` directory, over a contribution point of its own.
87
+ * Its comment claimed the harness got "the same fake the organizations wiring
88
+ * gets… that coupling is now structural rather than a note" while the
89
+ * mechanism was two roots constructing two objects. Resolving one port makes
90
+ * it structural for real, and it is one contribution point fewer for a root
91
+ * to keep in step.
92
+ *
93
+ * It hands out whatever `organizationsTaxIdClients.vies` is, which is the
94
+ * contribution point the harness already overrides — so the fake reaches both
95
+ * consumers by construction rather than by two roots agreeing to pass it.
96
+ *
97
+ * The gate is unreachable, and that is fine: this module is
98
+ * `nonDeactivatable`, so the port reads `OWNER LOCKED`. The ruling fixes the
99
+ * ownership statement; the gate is not what was wrong.
100
+ */
101
+ ctx.di.providePort('vatValidatorPort', ctx
102
+ .asFunction(({ organizationsTaxIdClients }) => organizationsTaxIdClients.vies)
103
+ .singleton());
104
+ ctx.di.register({
105
+ // Production contributes nothing and reaches the real registries.
106
+ organizationsTaxIdClients: ctx
107
+ .asFunction(() => ({
108
+ vies: new ViesClient(),
109
+ mfPl: new MinisterstwoFinansowClient(),
110
+ }))
111
+ .singleton(),
112
+ // Default: a login does nothing beyond logging in.
113
+ organizationsLoginHook: ctx
114
+ .asFunction(() => async () => ({}))
115
+ .singleton(),
116
+ organizationModerationService: ctx
117
+ .asFunction(({ emFactory, auditLogService, eventBus }) => new OrganizationModerationService(emFactory, auditLogService, eventBus,
118
+ // Every one of these three is another module's gated service and is
119
+ // *stored* by the constructor, so a plain cradle read would freeze
120
+ // a transient gate inside a singleton — it would keep answering
121
+ // after `email` was switched off, and Awilix's strict mode refuses
122
+ // it outright.
123
+ lazyPort(ctx, 'emailMailer'),
124
+ // Feature 075 (D-87) — who the moderation mail goes to. The
125
+ // recipient lookup was raw SQL against `customer_accounts`' table,
126
+ // which names no import specifier and so crossed the boundary
127
+ // invisibly to the import predicate.
128
+ lazyPort(ctx, 'customerAccountReadPort'), () => readSetting(ORGANIZATIONS_SETTING_CODES.MODERATION_MODE, moderationModeSchema, 'manual'),
129
+ // Where the approval and rejection messages get their language
130
+ // (`specs/093-backend-delivered-prose/` § the seam-B carve-out).
131
+ // Until this argument existed both were composed as hard-coded
132
+ // Polish prose and handed to `emailMailer` directly, so a buyer on
133
+ // an English sales channel received Polish unconditionally.
134
+ lazyPort(ctx, 'templateEmailPort')))
135
+ .singleton(),
136
+ organizationRegistrationNotifier: ctx
137
+ .asFunction(({ emFactory }) => new OrgRegistrationNotifier({
138
+ emFactory,
139
+ adminNotificationService: lazyPort(ctx, 'adminNotificationRecordPort'),
140
+ mailer: lazyPort(ctx, 'emailMailer'),
141
+ resolveRecipients: () => readSetting(ORGANIZATIONS_SETTING_CODES.NEW_REGISTRATION_RECIPIENTS, notificationRecipientsSchema, []),
142
+ templateEmail: lazyPort(ctx, 'templateEmailPort'),
143
+ }))
144
+ .singleton(),
145
+ organizations: ctx
146
+ .asFunction(({ emFactory, eventBus, commandBus, auditLogService }) => organizationsModule({
147
+ emFactory,
148
+ eventBus,
149
+ commandBus,
150
+ auditLogService,
151
+ // Feature 075, Phase C (issue #195) — the record-mapping adapter,
152
+ // not the `addressService` class registration beside it: `Address`
153
+ // is structurally assignable to `AddressRecord`, so the old name
154
+ // compiled while the entity crossed. Same reasoning as the two
155
+ // `customer_accounts` ports below.
156
+ addressService: lazyPort(ctx, 'addressServicePort'),
157
+ // Every one of these is another module's **gated** port, and this
158
+ // registration is a singleton: reading one here would put a
159
+ // transient gate inside a longer-lived object, which Awilix's
160
+ // strict mode refuses outright — `Dependency has a shorter lifetime
161
+ // than its ancestor`. `lazyPort` resolves per method call, so the
162
+ // gate stays live and the lifetimes stay honest.
163
+ // Feature 075, Phase C — `customerAuthPort` / `customerRolePort`
164
+ // rather than the two same-named services beside them. Those hand
165
+ // back `customer_accounts`' entity; these hand back the published
166
+ // record, which is what stops the entity crossing.
167
+ customerAuthService: lazyPort(ctx, 'customerAuthPort'),
168
+ passwordResetService: lazyPort(ctx, 'passwordResetService'),
169
+ customerRoleService: lazyPort(ctx, 'customerRolePort'),
170
+ customerAccountRead: lazyPort(ctx, 'customerAccountReadPort'),
171
+ customerAccountWrite: lazyPort(ctx, 'customerAccountMemberWritePort'),
172
+ customFieldValues: lazyPort(ctx, 'customFieldValueService'),
173
+ // Passed for the first time by any composition — see the note above
174
+ // on `validateCountry`.
175
+ dictionaryValidator: lazyPort(ctx, 'dictionaryValidator'),
176
+ mailer: lazyPort(ctx, 'emailMailer'),
177
+ templateEmail: lazyPort(ctx, 'templateEmailPort'),
178
+ storefrontBaseUrl: cradle().storefrontBaseUrl,
179
+ exposeTestProbe: cradle().organizationsExposeTestProbe,
180
+ requireAdmin: (permission) => async (req, reply) => cradle().requireAdmin(permission)(req, reply),
181
+ requireAdminAny: (permissions) => async (req, reply) => cradle().requireAdminAny(permissions)(req, reply),
182
+ requireCustomer: (req, reply) => cradle().requireCustomer(req, reply),
183
+ resolveCustomerContext: (req) => cradle().customerContextResolver(req),
184
+ onLogin: (input) => cradle().organizationsLoginHook(input),
185
+ // Registered unconditionally. Before T138 each of these four was an
186
+ // optional argument, and an omitted one silently removed a route
187
+ // surface: no `restrictionService` meant no storefront preflight,
188
+ // no `moderationService` meant approve/reject/block did not exist.
189
+ // Which endpoints a deployment serves is not a function of which
190
+ // arguments a root remembered to pass.
191
+ moderationService: cradle().organizationModerationService,
192
+ restrictionService: lazyPort(ctx, 'organizationRestrictionPort'),
193
+ effectivePriceListsService: new OrganizationEffectivePriceListsService({
194
+ emFactory,
195
+ // D-48 — this was `?? 'default'`, a channel *code* landing in
196
+ // `ResolutionContext.salesChannelId`, which the price-list
197
+ // evaluator compares against channel **uuids**. On the fallback
198
+ // branch every `salesChannel` criterion therefore evaluated false
199
+ // and the panel reported channel-scoped lists as not applying.
200
+ // The branch cannot be taken, so the fallback goes with it.
201
+ resolveDefaultSalesChannelId: async () => (await cradle().salesChannelResolutionPort.getSystemDefault()).id,
202
+ // Feature 075, Phase C — `price_lists`' own `listActive`, where
203
+ // this service used to run `em.find(PriceList, …)` against that
204
+ // module's table and spell the status filter itself.
205
+ priceListRead: lazyPort(ctx, 'priceListReadPort'),
206
+ }),
207
+ taxIdValidationService: new OrganizationTaxIdValidationService({
208
+ emFactory,
209
+ auditLog: auditLogService,
210
+ ...cradle().organizationsTaxIdClients,
211
+ }),
212
+ }))
213
+ .singleton(),
214
+ });
215
+ // The four gated ports this module owns. Every one of them was a
216
+ // `HOST_REGISTERED_PORTS` entry — a table row asserting an owner that never
217
+ // registered anything. `organizationReadPort` is the starkest: the kernel has
218
+ // declared its shape since D-32 and no composition ever provided it, so the
219
+ // name existed only in a test fixture.
220
+ ctx.di.providePort('organizationReadPort', ctx
221
+ .asFunction(({ emFactory }) => new OrganizationContextService(emFactory))
222
+ .singleton());
223
+ /**
224
+ * Feature 075, Phase P — the row-level read model.
225
+ *
226
+ * A **second** port beside `organizationReadPort` above, not a replacement:
227
+ * that one is the tenancy projection D-55 settled at `{ id, status }`, and
228
+ * `organizationTaxProfilePort` already declined to widen it for the same
229
+ * reason. Eleven modules read the row itself, and between them they touch
230
+ * nearly every column; that is this port.
231
+ */
232
+ ctx.di.providePort('organizationDetailsPort', ctx
233
+ .asFunction(({ emFactory }) => new OrganizationDetailsService(emFactory))
234
+ .singleton());
235
+ /**
236
+ * Feature 075, Phase P — the personal-organization provisioner `customers`
237
+ * calls on registration. It built its own `PersonalOrganizationService` in
238
+ * `plugin.ts`; this is the one the module owns, and it takes the account id
239
+ * rather than the entity.
240
+ */
241
+ ctx.di.providePort('personalOrganizationPort', ctx
242
+ .asFunction(({ emFactory, auditLogService }) => {
243
+ const service = new PersonalOrganizationService(emFactory, {
244
+ // Feature 075, Phase C — `lazyPort` rather than a captured value:
245
+ // the gates stay live inside this singleton, and the service reads
246
+ // them per call.
247
+ read: lazyPort(ctx, 'customerAccountReadPort'),
248
+ write: lazyPort(ctx, 'customerAccountMemberWritePort'),
249
+ }, auditLogService);
250
+ return {
251
+ ensureForCustomerAccount: async (customerAccountId) => toOrganizationRecord(await service.ensureForCustomerAccountId(customerAccountId)),
252
+ provisionPersonalOrganization: async (customerAccountId) => toOrganizationRecord(await service.provisionPersonalOrganizationFor(customerAccountId)),
253
+ anonymizeIfOrphaned: async (customerAccountId) => {
254
+ const org = await service.anonymizeIfOrphaned(customerAccountId);
255
+ return org ? toOrganizationRecord(org) : null;
256
+ },
257
+ };
258
+ })
259
+ .singleton());
260
+ /**
261
+ * D-178 — the co-transactional half of the same provisioning, for the module
262
+ * that owns the account row.
263
+ *
264
+ * A second registration rather than a method on `personalOrganizationPort`
265
+ * because its signature carries the caller's `EntityManager`, which
266
+ * `@endora-commerce/contracts` may not name (FR-034). It is declared in this
267
+ * module's own `ports/` directory, in the shape `credit_limits` and
268
+ * `promotions` already publish for the same reason, and what holds it
269
+ * co-transactional is `customer_accounts_organization_fk` — see that file.
270
+ *
271
+ * It reads and writes nothing on `customer_accounts`, so unlike the port above
272
+ * it needs neither of that module's two ports.
273
+ */
274
+ ctx.di.providePort('personalOrganizationProvisionApi', ctx
275
+ .asFunction(({ emFactory, auditLogService }) => {
276
+ const service = new PersonalOrganizationService(emFactory, {
277
+ read: lazyPort(ctx, 'customerAccountReadPort'),
278
+ write: lazyPort(ctx, 'customerAccountMemberWritePort'),
279
+ }, auditLogService);
280
+ return {
281
+ provisionFor: async (em, input) => {
282
+ const org = await service.provisionFor(em, input);
283
+ return { id: org.id };
284
+ },
285
+ };
286
+ })
287
+ .singleton());
288
+ /**
289
+ * Issue #175 — the cart-approval policy write.
290
+ *
291
+ * `carts` drives both surfaces that flip `requires_cart_approval` but the
292
+ * column is this module's, and it was writing it by holding this module's
293
+ * entity — the last entry in that module's cross-module import ledger. D-78
294
+ * step 1 puts the operation with the owner, and publishing it settled the
295
+ * question the direct write had been ducking: the flip had no audit row on
296
+ * this side, and Constitution XIII says it must have one. Hence a Command,
297
+ * whose actor the bus derives from the caller's ambient context.
298
+ *
299
+ * The cascade over `carts`' own rows stays with `carts`, keyed off `changed`.
300
+ */
301
+ ctx.di.providePort('organizationCartApprovalWritePort', ctx
302
+ .asFunction(({ commandBus }) => ({
303
+ setCartApprovalPolicy: (organizationId, requiresCartApproval) => commandBus.run(makeSetCartApprovalPolicyCommand({ organizationId, requiresCartApproval })),
304
+ }))
305
+ .singleton());
306
+ ctx.di.providePort('organizationRestrictionPort', ctx
307
+ .asFunction(({ emFactory, auditLogService }) => new OrganizationRestrictionService(emFactory, auditLogService))
308
+ .singleton());
309
+ // One instance per composition. Production shared one; the harness built four
310
+ // separate ones for four consumers, which is issue #44's shape.
311
+ ctx.di.providePort('organizationTreeService', ctx
312
+ .asFunction(({ emFactory }) => new OrganizationTreeService(emFactory))
313
+ .singleton());
314
+ /**
315
+ * The two Organization facts a VAT rate depends on (T143c).
316
+ *
317
+ * Both roots spelled the same `em.findOne(Organization, …)` inside the Quote
318
+ * Requests tax closure — a root loading this module's entity, and doing it
319
+ * ungated, so the quote was priced from an Organization row with
320
+ * `organizations` switched off. Refusing is the right answer there: the
321
+ * closure deliberately carries no `catch` (issue #84), because quoting 0 % on
322
+ * an operator's behalf is worse than failing.
323
+ *
324
+ * Deliberately not a widening of the kernel's `OrganizationSnapshot`. That
325
+ * shape is the tenancy projection every module reads; a tax profile is one
326
+ * consumer's question, and D-55 settled the snapshot at what its callers
327
+ * actually use.
328
+ */
329
+ ctx.di.providePort('organizationTaxProfilePort', ctx
330
+ .asFunction(({ emFactory }) => ({
331
+ taxProfileOf: async (organizationId) => {
332
+ const org = await emFactory().findOne(Organization, { id: organizationId });
333
+ if (!org)
334
+ return null;
335
+ return { vatStatus: org.vatStatus, country: org.registeredAddress?.country ?? null };
336
+ },
337
+ }))
338
+ .singleton());
339
+ ctx.di.providePort('organizationInheritancePort', ctx
340
+ .asFunction(({ emFactory }) => new OrganizationInheritanceService(emFactory,
341
+ // Its own port, and gated all the same — a singleton may not hold
342
+ // the gate.
343
+ lazyPort(ctx, 'organizationTreeService'),
344
+ // `credit_limits`' membership read (feature 077, D-87). Lazily for
345
+ // the same reason and one more: it is another module's gate, so a
346
+ // captured reference would keep answering after an operator
347
+ // switched credit limits off. The edge is mutual — that module
348
+ // declares this one — so it is an `acknowledgedDependencies` entry
349
+ // in this manifest rather than a `dependencies` one.
350
+ lazyPort(ctx, 'creditLimitReadPort'), () => readSetting(ORGANIZATIONS_SETTING_CODES.CREDIT_INHERITANCE_MODE, creditInheritanceModeSchema, 'shared_pool')))
351
+ .singleton());
352
+ /**
353
+ * The visibility scope both roots used to build for themselves (T143a).
354
+ *
355
+ * A **port**, not a contribution point (D-39): it decides what an admin may
356
+ * see, reading two tables and a capability to do it. A caller that reaches it
357
+ * while the module is absent must get the 503 rather than an empty array,
358
+ * because an empty array here reads as "this rep is assigned nothing" — a
359
+ * plausible answer, and the wrong one.
360
+ *
361
+ * Both collaborators are read through `lazyPort`: the tree is this module's
362
+ * own gated port and the permission check is `admin_roles`', and a singleton
363
+ * may hold neither gate.
364
+ *
365
+ * Issue #108 widened it from one method to five. `customers` built its own
366
+ * `SalesRepAssignmentService` **without** the subtree deps, so the roll-up was
367
+ * skipped for every staff-authority decision, and `quote_requests` spelled the
368
+ * same wiring out again. What kept them off this port was the methods it
369
+ * did not carry — the visibility predicate, the per-organization rep list, and
370
+ * the two writes this module's own admin routes make (routes `quote_requests`
371
+ * hosts, because they count Quote Requests and moving them here would close a
372
+ * manifest dependency cycle). So the port grew and the copies went.
373
+ */
374
+ ctx.di.providePort('organizationSalesRepScopePort', ctx
375
+ .asFunction(({ emFactory, auditLogService }) => {
376
+ const assignments = new SalesRepAssignmentService(emFactory, auditLogService, {
377
+ treeService: lazyPort(ctx, 'organizationTreeService'),
378
+ hasRollupCapability: (adminUserId) =>
379
+ // `organizations:rollup` is a core `PERMISSION_CATALOGUE` code
380
+ // rather than another module's private string, so naming it here
381
+ // crosses no boundary — the same call `quote_requests` makes.
382
+ lazyPort(ctx, 'permissionService').hasPermission(adminUserId, 'organizations:rollup'),
383
+ });
384
+ return {
385
+ canSeeOrganization: (adminUserId, organizationId) => assignments.canSeeOrganization(adminUserId, organizationId),
386
+ listAssignedOrganizationIds: (adminUserId) => assignments.listAssignedOrganizationIds(adminUserId),
387
+ listForOrganization: (organizationId) => assignments.listForOrganization(organizationId),
388
+ assign: (input) => assignments.assign(input),
389
+ unassign: (input) => assignments.unassign(input),
390
+ };
391
+ })
392
+ .singleton());
393
+ ctx.routes(async (app) => {
394
+ await cradle().organizations(app);
395
+ });
396
+ /**
397
+ * The three sales-rep assignment endpoints, registered by their owner (D-166).
398
+ *
399
+ * They used to be registered by `quote_requests`, which dynamically imported
400
+ * this module's route file and built its `deps` — so the screen that assigns a
401
+ * sales representative to an organisation was gated by *quote requests'*
402
+ * effective state, and this module had no seam through which to hand that file
403
+ * a port its own container resolved. Both halves are gone: the registration is
404
+ * here, and `adminUserReadPort` is resolved here, which retires this module's
405
+ * two `routes.sales-reps.ts` ledger entries.
406
+ *
407
+ * `lazyPort` rather than a captured resolution, for the usual reason — a
408
+ * captured gate keeps answering after its owner is switched off. `admin_users`
409
+ * is declared in this manifest's `dependencies`, and directly since D-179.3:
410
+ * it used to be satisfied transitively through `admin_notifications`, which is
411
+ * a non-binding edge now. The edge closes no cycle either way.
412
+ */
413
+ ctx.routes(async (app) => {
414
+ await registerOrganizationsSalesRepRoutes(app, {
415
+ emFactory: cradle().emFactory,
416
+ requireAdmin: (permission) => async (req, reply) => cradle().requireAdmin(permission)(req, reply),
417
+ salesRepAssignment: lazyPort(ctx, 'organizationSalesRepScopePort'),
418
+ adminUsers: lazyPort(ctx, 'adminUserReadPort'),
419
+ });
420
+ });
421
+ // Both reactors used to be bare `eventBus.on` calls in each root, so they ran
422
+ // whether or not the module was present. Failures inside either one never
423
+ // poison the registration itself — the EventBus catches handler throws.
424
+ ctx.subscribe('organization.registered.v1', async (payload) => {
425
+ const { organizationId } = payload;
426
+ await cradle().organizationRegistrationNotifier.handleRegistered(organizationId);
427
+ });
428
+ ctx.subscribe('organization.registered.v1', async (payload) => {
429
+ const { organizationId } = payload;
430
+ await cradle().organizationModerationService.handleNewlyRegistered(organizationId);
431
+ });
432
+ /**
433
+ * The default subject and content for the 3 transactional emails this
434
+ * module declares in its manifest (T143a).
435
+ *
436
+ * These were fourteen `emailDefaultsRegistry.register(...)` calls in
437
+ * `composition.ts`, each importing a template constant out of the module that
438
+ * owns it — a root reaching into seven modules to hand their own content to
439
+ * an eighth. Each module registers its own now.
440
+ *
441
+ * `ctx.onBoot` rather than a registration: the registry is *read* once, by
442
+ * `transactional_emails`' boot reconciler inside its plugin body. Boot hooks
443
+ * run during composition and plugin bodies only when the Fastify app is
444
+ * built, so this always lands first — by construction, not by ordering luck.
445
+ */
446
+ ctx.onBoot(async () => {
447
+ const defaults = lazyPort(ctx, 'emailDefaultsPort');
448
+ defaults.register('email_verification', EMAIL_VERIFICATION_DEFAULT, 'organizations');
449
+ defaults.register('organization_invitation', ORGANIZATION_INVITATION_DEFAULT, 'organizations');
450
+ defaults.register('new_org_registration', NEW_ORG_REGISTRATION_DEFAULT, 'organizations');
451
+ defaults.register('organization_approved', ORGANIZATION_APPROVED_DEFAULT, 'organizations');
452
+ defaults.register('organization_rejected', ORGANIZATION_REJECTED_DEFAULT, 'organizations');
453
+ });
454
+ /**
455
+ * This module's rows carry a country code, so it answers "who still points at
456
+ * this country?" about its own tables (feature 077, D-87), where the owner used
457
+ * to count them with SQL naming this module's tables.
458
+ *
459
+ * A **contribution** hook: it pushes an inert descriptor into `countryReferenceRegistry`,
460
+ * an ungated registry, and carries no presence probe (D-62/D-68). Probing
461
+ * would be wrong in the dangerous direction — a switched-off module still owns
462
+ * the rows, so its country must still refuse the delete, which is the
463
+ * enumeration policy the registry states.
464
+ */
465
+ ctx.onBoot(() => {
466
+ registerOrganizationCountryReferences(lazyPort(ctx, 'countryReferenceRegistry'), ctx.cradle().emFactory);
467
+ });
468
+ }
469
+ /**
470
+ * The module's persisted entity classes, on the `./backend` subpath, as one
471
+ * array and **no named class export** (D-168).
472
+ *
473
+ * This is the shape the platform reads when the package is *installed*: the
474
+ * boot-time loader (`src/packages/package-runtime.ts`, `exported['entities']`)
475
+ * and the static declaration reader (`scripts/lib/package-declarations.ts`),
476
+ * which is the third source of `check:module-boundary`'s `table->owner` map and
477
+ * the package pass of `check-entity-tenant-classification`. A missing array is
478
+ * answered with `[]` — zero entities registered, no error anywhere.
479
+ *
480
+ * The order is the one `db/entities-registry.generated.ts` declared before this
481
+ * module became a package, so the registered set is the same list in the same
482
+ * sequence.
483
+ */
484
+ export const entities = [
485
+ EmailVerificationToken,
486
+ OrganizationDeliveryMethodLink,
487
+ OrganizationInvitation,
488
+ OrganizationPaymentMethodLink,
489
+ OrganizationSalesRepAssignment,
490
+ OrganizationTaxIdValidation,
491
+ OrganizationWarehouseLink,
492
+ Organization,
493
+ ];
494
+ /**
495
+ * The sales-channel membership bridge this module owns (feature 120, FR-015).
496
+ *
497
+ * Exported as well as registered because the owning module is the only honest
498
+ * source for it: a caller that composes no platform — the bare-database test
499
+ * harness, which constructs the kernel's membership service directly — declares
500
+ * these from here rather than from a list of nine it keeps itself, which is
501
+ * exactly the total map this feature deleted.
502
+ */
503
+ export const salesChannelBridges = [
504
+ { entityType: 'organization', table: 'sales_channel_organizations', entityIdColumn: 'organization_id' },
505
+ ];
506
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { VatValidationResult, VatValidator } from '../services/vat-validator-port.js';
2
+ export interface MinisterstwoFinansowClientOptions {
3
+ baseUrl?: string;
4
+ timeoutMs?: number;
5
+ fetchImpl?: typeof globalThis.fetch;
6
+ /** Minimum ms between successive requests. Defaults to 100ms (10 rps). */
7
+ minIntervalMs?: number;
8
+ }
9
+ export declare class MinisterstwoFinansowClient implements VatValidator {
10
+ readonly provider: "mf_pl";
11
+ private readonly baseUrl;
12
+ private readonly timeoutMs;
13
+ private readonly fetchImpl;
14
+ private readonly minIntervalMs;
15
+ private lastRequestAt;
16
+ constructor(options?: MinisterstwoFinansowClientOptions);
17
+ validate(input: {
18
+ taxId: string;
19
+ }): Promise<VatValidationResult>;
20
+ private throttle;
21
+ }
22
+ //# sourceMappingURL=ministerstwo-finansow-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ministerstwo-finansow-client.d.ts","sourceRoot":"","sources":["../../../src/backend/integrations/ministerstwo-finansow-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACb,MAAM,mCAAmC,CAAC;AAoC3C,MAAM,WAAW,iCAAiC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACpC,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,0BAA2B,YAAW,YAAY;IAC7D,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,aAAa,CAAK;gBAEd,OAAO,GAAE,iCAAsC;IAOrD,QAAQ,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;YA+GxD,QAAQ;CAQvB"}