@wildo-ai/saas-backend-lib 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1747) hide show
  1. package/dist/esm/__tests__/setup.d.ts +7 -0
  2. package/dist/esm/__tests__/setup.d.ts.map +1 -0
  3. package/dist/esm/__tests__/setup.js +14 -0
  4. package/dist/esm/__tests__/setup.js.map +1 -0
  5. package/dist/esm/__tests__/test-container.d.ts +39 -0
  6. package/dist/esm/__tests__/test-container.d.ts.map +1 -0
  7. package/dist/esm/__tests__/test-container.js +94 -0
  8. package/dist/esm/__tests__/test-container.js.map +1 -0
  9. package/dist/esm/applications/models/applications.backend.schemas.d.ts +11 -0
  10. package/dist/esm/applications/models/applications.backend.schemas.d.ts.map +1 -0
  11. package/dist/esm/applications/models/applications.backend.schemas.js +15 -0
  12. package/dist/esm/applications/models/applications.backend.schemas.js.map +1 -0
  13. package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts +12 -0
  14. package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -0
  15. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +30 -0
  16. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -0
  17. package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts +98 -0
  18. package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts.map +1 -0
  19. package/dist/esm/base-classes/models/repositories.backend.schemas.js +11 -0
  20. package/dist/esm/base-classes/models/repositories.backend.schemas.js.map +1 -0
  21. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts +31 -0
  22. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts.map +1 -0
  23. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.js +52 -0
  24. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.js.map +1 -0
  25. package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts +56 -0
  26. package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts.map +1 -0
  27. package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.js +52 -0
  28. package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.js.map +1 -0
  29. package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts +33 -0
  30. package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts.map +1 -0
  31. package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.js +125 -0
  32. package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.js.map +1 -0
  33. package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts +20 -0
  34. package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts.map +1 -0
  35. package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.js +45 -0
  36. package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.js.map +1 -0
  37. package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts +133 -0
  38. package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts.map +1 -0
  39. package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.js +280 -0
  40. package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.js.map +1 -0
  41. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts +147 -0
  42. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -0
  43. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +1320 -0
  44. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -0
  45. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts +107 -0
  46. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -0
  47. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js +369 -0
  48. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -0
  49. package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts +194 -0
  50. package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts.map +1 -0
  51. package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.js +417 -0
  52. package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.js.map +1 -0
  53. package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts +9 -0
  54. package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts.map +1 -0
  55. package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.js +35 -0
  56. package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.js.map +1 -0
  57. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +107 -0
  58. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -0
  59. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +800 -0
  60. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -0
  61. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts +181 -0
  62. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -0
  63. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +529 -0
  64. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -0
  65. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +245 -0
  66. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -0
  67. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +1509 -0
  68. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -0
  69. package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts +134 -0
  70. package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts.map +1 -0
  71. package/dist/esm/base-classes/services/resource-operations-helper.backend.service.js +388 -0
  72. package/dist/esm/base-classes/services/resource-operations-helper.backend.service.js.map +1 -0
  73. package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts +9 -0
  74. package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts.map +1 -0
  75. package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.js +26 -0
  76. package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.js.map +1 -0
  77. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +144 -0
  78. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -0
  79. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js +49 -0
  80. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -0
  81. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts +84 -0
  82. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts.map +1 -0
  83. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.js +156 -0
  84. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.js.map +1 -0
  85. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts +42 -0
  86. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts.map +1 -0
  87. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.js +94 -0
  88. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.js.map +1 -0
  89. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +593 -0
  90. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -0
  91. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +4015 -0
  92. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -0
  93. package/dist/esm/base-classes/utils/backend-type-utils.d.ts +43 -0
  94. package/dist/esm/base-classes/utils/backend-type-utils.d.ts.map +1 -0
  95. package/dist/esm/base-classes/utils/backend-type-utils.js +10 -0
  96. package/dist/esm/base-classes/utils/backend-type-utils.js.map +1 -0
  97. package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts +44 -0
  98. package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts.map +1 -0
  99. package/dist/esm/billing/services/back-office/abstract-billing.backend.service.js +94 -0
  100. package/dist/esm/billing/services/back-office/abstract-billing.backend.service.js.map +1 -0
  101. package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts +102 -0
  102. package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts.map +1 -0
  103. package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.js +405 -0
  104. package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.js.map +1 -0
  105. package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts +55 -0
  106. package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts.map +1 -0
  107. package/dist/esm/billing/services/back-office/billing-state.backend.service.js +268 -0
  108. package/dist/esm/billing/services/back-office/billing-state.backend.service.js.map +1 -0
  109. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +83 -0
  110. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -0
  111. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +371 -0
  112. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -0
  113. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +80 -0
  114. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -0
  115. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +255 -0
  116. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -0
  117. package/dist/esm/billing/services/billing.utils.d.ts +17 -0
  118. package/dist/esm/billing/services/billing.utils.d.ts.map +1 -0
  119. package/dist/esm/billing/services/billing.utils.js +25 -0
  120. package/dist/esm/billing/services/billing.utils.js.map +1 -0
  121. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts +50 -0
  122. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -0
  123. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +290 -0
  124. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -0
  125. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +92 -0
  126. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -0
  127. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +193 -0
  128. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -0
  129. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +66 -0
  130. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -0
  131. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +180 -0
  132. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -0
  133. package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts +31 -0
  134. package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts.map +1 -0
  135. package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.js +100 -0
  136. package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.js.map +1 -0
  137. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +33 -0
  138. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -0
  139. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +200 -0
  140. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -0
  141. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts +58 -0
  142. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -0
  143. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +362 -0
  144. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -0
  145. package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts +19 -0
  146. package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts.map +1 -0
  147. package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.js +50 -0
  148. package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.js.map +1 -0
  149. package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts +21 -0
  150. package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts.map +1 -0
  151. package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.js +32 -0
  152. package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.js.map +1 -0
  153. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +114 -0
  154. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -0
  155. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +569 -0
  156. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -0
  157. package/dist/esm/billing/testing/billing-test-fixtures.d.ts +109 -0
  158. package/dist/esm/billing/testing/billing-test-fixtures.d.ts.map +1 -0
  159. package/dist/esm/billing/testing/billing-test-fixtures.js +200 -0
  160. package/dist/esm/billing/testing/billing-test-fixtures.js.map +1 -0
  161. package/dist/esm/billing/testing/mock-billing-provider.d.ts +152 -0
  162. package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -0
  163. package/dist/esm/billing/testing/mock-billing-provider.js +394 -0
  164. package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -0
  165. package/dist/esm/charts/controllers/chart.backend.controller.d.ts +46 -0
  166. package/dist/esm/charts/controllers/chart.backend.controller.d.ts.map +1 -0
  167. package/dist/esm/charts/controllers/chart.backend.controller.js +214 -0
  168. package/dist/esm/charts/controllers/chart.backend.controller.js.map +1 -0
  169. package/dist/esm/charts/services/chart-registry.backend.service.d.ts +55 -0
  170. package/dist/esm/charts/services/chart-registry.backend.service.d.ts.map +1 -0
  171. package/dist/esm/charts/services/chart-registry.backend.service.js +102 -0
  172. package/dist/esm/charts/services/chart-registry.backend.service.js.map +1 -0
  173. package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts +9 -0
  174. package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts.map +1 -0
  175. package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.js +80 -0
  176. package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.js.map +1 -0
  177. package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts +23 -0
  178. package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts.map +1 -0
  179. package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.js +46 -0
  180. package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.js.map +1 -0
  181. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +73 -0
  182. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -0
  183. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +291 -0
  184. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -0
  185. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +447 -0
  186. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -0
  187. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +898 -0
  188. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -0
  189. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +127 -0
  190. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -0
  191. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +462 -0
  192. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -0
  193. package/dist/esm/compliance/index.d.ts +2 -0
  194. package/dist/esm/compliance/index.d.ts.map +1 -0
  195. package/dist/esm/compliance/index.js +1 -0
  196. package/dist/esm/compliance/index.js.map +1 -0
  197. package/dist/esm/config/custom/application-config-controller.backend.service.d.ts +31 -0
  198. package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -0
  199. package/dist/esm/config/custom/application-config-controller.backend.service.js +112 -0
  200. package/dist/esm/config/custom/application-config-controller.backend.service.js.map +1 -0
  201. package/dist/esm/config/models/app-config-overrides.backend.definitions.d.ts +29 -0
  202. package/dist/esm/config/models/app-config-overrides.backend.definitions.d.ts.map +1 -0
  203. package/dist/esm/config/models/app-config-overrides.backend.definitions.js +143 -0
  204. package/dist/esm/config/models/app-config-overrides.backend.definitions.js.map +1 -0
  205. package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts +56 -0
  206. package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts.map +1 -0
  207. package/dist/esm/config/models/app-config-secrets.backend.schemas.js +121 -0
  208. package/dist/esm/config/models/app-config-secrets.backend.schemas.js.map +1 -0
  209. package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts +35 -0
  210. package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts.map +1 -0
  211. package/dist/esm/config/models/app-config.backend-authored.definitions.js +89 -0
  212. package/dist/esm/config/models/app-config.backend-authored.definitions.js.map +1 -0
  213. package/dist/esm/config/models/app-config.backend.schemas.d.ts +1651 -0
  214. package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -0
  215. package/dist/esm/config/models/app-config.backend.schemas.js +478 -0
  216. package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -0
  217. package/dist/esm/config/models/app-env-config.backend.schemas.d.ts +74 -0
  218. package/dist/esm/config/models/app-env-config.backend.schemas.d.ts.map +1 -0
  219. package/dist/esm/config/models/app-env-config.backend.schemas.js +115 -0
  220. package/dist/esm/config/models/app-env-config.backend.schemas.js.map +1 -0
  221. package/dist/esm/config/models/config-mutation-boundary.utils.d.ts +11 -0
  222. package/dist/esm/config/models/config-mutation-boundary.utils.d.ts.map +1 -0
  223. package/dist/esm/config/models/config-mutation-boundary.utils.js +50 -0
  224. package/dist/esm/config/models/config-mutation-boundary.utils.js.map +1 -0
  225. package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts +48 -0
  226. package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts.map +1 -0
  227. package/dist/esm/config/models/postgresql-env-config.backend.schemas.js +106 -0
  228. package/dist/esm/config/models/postgresql-env-config.backend.schemas.js.map +1 -0
  229. package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts +12 -0
  230. package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts.map +1 -0
  231. package/dist/esm/config/models/runtime-topology.backend.contracts.js +23 -0
  232. package/dist/esm/config/models/runtime-topology.backend.contracts.js.map +1 -0
  233. package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts +39 -0
  234. package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts.map +1 -0
  235. package/dist/esm/config/services/__tests__/mock-app-configuration.service.js +124 -0
  236. package/dist/esm/config/services/__tests__/mock-app-configuration.service.js.map +1 -0
  237. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +76 -0
  238. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -0
  239. package/dist/esm/config/services/app-configuration-loader.backend.service.js +375 -0
  240. package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -0
  241. package/dist/esm/config/services/app-configuration.backend.service.d.ts +148 -0
  242. package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -0
  243. package/dist/esm/config/services/app-configuration.backend.service.js +494 -0
  244. package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -0
  245. package/dist/esm/config/services/app-configuration.backend.utils.d.ts +17 -0
  246. package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -0
  247. package/dist/esm/config/services/app-configuration.backend.utils.js +61 -0
  248. package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -0
  249. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +70 -0
  250. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -0
  251. package/dist/esm/config/services/application-startup-config-validator.backend.service.js +470 -0
  252. package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -0
  253. package/dist/esm/databases/models/aggregation.backend.schemas.d.ts +136 -0
  254. package/dist/esm/databases/models/aggregation.backend.schemas.d.ts.map +1 -0
  255. package/dist/esm/databases/models/aggregation.backend.schemas.js +9 -0
  256. package/dist/esm/databases/models/aggregation.backend.schemas.js.map +1 -0
  257. package/dist/esm/databases/models/databases.backend.schemas.d.ts +32 -0
  258. package/dist/esm/databases/models/databases.backend.schemas.d.ts.map +1 -0
  259. package/dist/esm/databases/models/databases.backend.schemas.js +60 -0
  260. package/dist/esm/databases/models/databases.backend.schemas.js.map +1 -0
  261. package/dist/esm/databases/models/filter.backend.schemas.d.ts +83 -0
  262. package/dist/esm/databases/models/filter.backend.schemas.d.ts.map +1 -0
  263. package/dist/esm/databases/models/filter.backend.schemas.js +27 -0
  264. package/dist/esm/databases/models/filter.backend.schemas.js.map +1 -0
  265. package/dist/esm/databases/models/sql.backend.schemas.d.ts +75 -0
  266. package/dist/esm/databases/models/sql.backend.schemas.d.ts.map +1 -0
  267. package/dist/esm/databases/models/sql.backend.schemas.js +31 -0
  268. package/dist/esm/databases/models/sql.backend.schemas.js.map +1 -0
  269. package/dist/esm/databases/models/transaction.shared.schemas.d.ts +120 -0
  270. package/dist/esm/databases/models/transaction.shared.schemas.d.ts.map +1 -0
  271. package/dist/esm/databases/models/transaction.shared.schemas.js +30 -0
  272. package/dist/esm/databases/models/transaction.shared.schemas.js.map +1 -0
  273. package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts +15 -0
  274. package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts.map +1 -0
  275. package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.js +60 -0
  276. package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.js.map +1 -0
  277. package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts +19 -0
  278. package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts.map +1 -0
  279. package/dist/esm/databases/services/__tests__/mock-mongodb.service.js +69 -0
  280. package/dist/esm/databases/services/__tests__/mock-mongodb.service.js.map +1 -0
  281. package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts +11 -0
  282. package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts.map +1 -0
  283. package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.js +315 -0
  284. package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.js.map +1 -0
  285. package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts +29 -0
  286. package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts.map +1 -0
  287. package/dist/esm/databases/services/__tests__/mock-redis.service.js +65 -0
  288. package/dist/esm/databases/services/__tests__/mock-redis.service.js.map +1 -0
  289. package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts +19 -0
  290. package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts.map +1 -0
  291. package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.js +44 -0
  292. package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.js.map +1 -0
  293. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts +74 -0
  294. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -0
  295. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js +369 -0
  296. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js.map +1 -0
  297. package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.d.ts +110 -0
  298. package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.d.ts.map +1 -0
  299. package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.js +444 -0
  300. package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.js.map +1 -0
  301. package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts +38 -0
  302. package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts.map +1 -0
  303. package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.js +180 -0
  304. package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.js.map +1 -0
  305. package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts +42 -0
  306. package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts.map +1 -0
  307. package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.js +183 -0
  308. package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.js.map +1 -0
  309. package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts +48 -0
  310. package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts.map +1 -0
  311. package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.js +320 -0
  312. package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.js.map +1 -0
  313. package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts +47 -0
  314. package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts.map +1 -0
  315. package/dist/esm/databases/services/aggregation/topn-processor.backend.service.js +187 -0
  316. package/dist/esm/databases/services/aggregation/topn-processor.backend.service.js.map +1 -0
  317. package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts +47 -0
  318. package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts.map +1 -0
  319. package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.js +250 -0
  320. package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.js.map +1 -0
  321. package/dist/esm/databases/services/db-utils.d.ts +56 -0
  322. package/dist/esm/databases/services/db-utils.d.ts.map +1 -0
  323. package/dist/esm/databases/services/db-utils.js +66 -0
  324. package/dist/esm/databases/services/db-utils.js.map +1 -0
  325. package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts +91 -0
  326. package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts.map +1 -0
  327. package/dist/esm/databases/services/mongo-aggregation.backend.service.js +652 -0
  328. package/dist/esm/databases/services/mongo-aggregation.backend.service.js.map +1 -0
  329. package/dist/esm/databases/services/mongodb.service.d.ts +132 -0
  330. package/dist/esm/databases/services/mongodb.service.d.ts.map +1 -0
  331. package/dist/esm/databases/services/mongodb.service.js +630 -0
  332. package/dist/esm/databases/services/mongodb.service.js.map +1 -0
  333. package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts +113 -0
  334. package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts.map +1 -0
  335. package/dist/esm/databases/services/postgresql-aggregation.backend.service.js +635 -0
  336. package/dist/esm/databases/services/postgresql-aggregation.backend.service.js.map +1 -0
  337. package/dist/esm/databases/services/postgresql-database.backend.service.d.ts +75 -0
  338. package/dist/esm/databases/services/postgresql-database.backend.service.d.ts.map +1 -0
  339. package/dist/esm/databases/services/postgresql-database.backend.service.js +255 -0
  340. package/dist/esm/databases/services/postgresql-database.backend.service.js.map +1 -0
  341. package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts +116 -0
  342. package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts.map +1 -0
  343. package/dist/esm/databases/services/postgresql-filter.backend.service.js +624 -0
  344. package/dist/esm/databases/services/postgresql-filter.backend.service.js.map +1 -0
  345. package/dist/esm/databases/services/redis.service.d.ts +143 -0
  346. package/dist/esm/databases/services/redis.service.d.ts.map +1 -0
  347. package/dist/esm/databases/services/redis.service.js +429 -0
  348. package/dist/esm/databases/services/redis.service.js.map +1 -0
  349. package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts +302 -0
  350. package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts.map +1 -0
  351. package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.js +1787 -0
  352. package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.js.map +1 -0
  353. package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts +65 -0
  354. package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts.map +1 -0
  355. package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.js +237 -0
  356. package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.js.map +1 -0
  357. package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts +339 -0
  358. package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts.map +1 -0
  359. package/dist/esm/errors/services/__tests__/mock-error-builder.service.js +209 -0
  360. package/dist/esm/errors/services/__tests__/mock-error-builder.service.js.map +1 -0
  361. package/dist/esm/errors/services/error-builder.backend.service.d.ts +95 -0
  362. package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -0
  363. package/dist/esm/errors/services/error-builder.backend.service.js +334 -0
  364. package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -0
  365. package/dist/esm/errors/services/error-handler.backend.service.d.ts +43 -0
  366. package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -0
  367. package/dist/esm/errors/services/error-handler.backend.service.js +219 -0
  368. package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -0
  369. package/dist/esm/errors/services/rate-limit.backend.service.d.ts +23 -0
  370. package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -0
  371. package/dist/esm/errors/services/rate-limit.backend.service.js +59 -0
  372. package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -0
  373. package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts +135 -0
  374. package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts.map +1 -0
  375. package/dist/esm/external-providers/models/external-providers.backend.schemas.js +129 -0
  376. package/dist/esm/external-providers/models/external-providers.backend.schemas.js.map +1 -0
  377. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +18 -0
  378. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -0
  379. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +38 -0
  380. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -0
  381. package/dist/esm/external-providers/services/__tests__/mock-lazy-provider-registry.service.d.ts +20 -0
  382. package/dist/esm/external-providers/services/__tests__/mock-lazy-provider-registry.service.d.ts.map +1 -0
  383. package/dist/esm/external-providers/services/__tests__/mock-lazy-provider-registry.service.js +44 -0
  384. package/dist/esm/external-providers/services/__tests__/mock-lazy-provider-registry.service.js.map +1 -0
  385. package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts +9 -0
  386. package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts.map +1 -0
  387. package/dist/esm/external-providers/services/external-api-handler.backend.service.js +36 -0
  388. package/dist/esm/external-providers/services/external-api-handler.backend.service.js.map +1 -0
  389. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +83 -0
  390. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -0
  391. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +422 -0
  392. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -0
  393. package/dist/esm/external-providers/services/feature-bindings.backend.service.d.ts +102 -0
  394. package/dist/esm/external-providers/services/feature-bindings.backend.service.d.ts.map +1 -0
  395. package/dist/esm/external-providers/services/feature-bindings.backend.service.js +352 -0
  396. package/dist/esm/external-providers/services/feature-bindings.backend.service.js.map +1 -0
  397. package/dist/esm/external-providers/services/lazy-provider-registry.backend.service.d.ts +141 -0
  398. package/dist/esm/external-providers/services/lazy-provider-registry.backend.service.d.ts.map +1 -0
  399. package/dist/esm/external-providers/services/lazy-provider-registry.backend.service.js +391 -0
  400. package/dist/esm/external-providers/services/lazy-provider-registry.backend.service.js.map +1 -0
  401. package/dist/esm/features/controllers/features.backend.controller.d.ts +35 -0
  402. package/dist/esm/features/controllers/features.backend.controller.d.ts.map +1 -0
  403. package/dist/esm/features/controllers/features.backend.controller.js +179 -0
  404. package/dist/esm/features/controllers/features.backend.controller.js.map +1 -0
  405. package/dist/esm/features/services/__tests__/mock-capability-bindings.service.d.ts +8 -0
  406. package/dist/esm/features/services/__tests__/mock-capability-bindings.service.d.ts.map +1 -0
  407. package/dist/esm/features/services/__tests__/mock-capability-bindings.service.js +31 -0
  408. package/dist/esm/features/services/__tests__/mock-capability-bindings.service.js.map +1 -0
  409. package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts +22 -0
  410. package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts.map +1 -0
  411. package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.js +52 -0
  412. package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.js.map +1 -0
  413. package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts +13 -0
  414. package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts.map +1 -0
  415. package/dist/esm/features/services/__tests__/mock-feature-resolution.service.js +36 -0
  416. package/dist/esm/features/services/__tests__/mock-feature-resolution.service.js.map +1 -0
  417. package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts +111 -0
  418. package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts.map +1 -0
  419. package/dist/esm/features/services/feature-definition-registry.backend.service.js +437 -0
  420. package/dist/esm/features/services/feature-definition-registry.backend.service.js.map +1 -0
  421. package/dist/esm/features/services/feature-gate.backend.service.d.ts +110 -0
  422. package/dist/esm/features/services/feature-gate.backend.service.d.ts.map +1 -0
  423. package/dist/esm/features/services/feature-gate.backend.service.js +414 -0
  424. package/dist/esm/features/services/feature-gate.backend.service.js.map +1 -0
  425. package/dist/esm/features/services/feature-resolution.backend.service.d.ts +163 -0
  426. package/dist/esm/features/services/feature-resolution.backend.service.d.ts.map +1 -0
  427. package/dist/esm/features/services/feature-resolution.backend.service.js +550 -0
  428. package/dist/esm/features/services/feature-resolution.backend.service.js.map +1 -0
  429. package/dist/esm/features/testing/feature-test-utils.d.ts +85 -0
  430. package/dist/esm/features/testing/feature-test-utils.d.ts.map +1 -0
  431. package/dist/esm/features/testing/feature-test-utils.js +127 -0
  432. package/dist/esm/features/testing/feature-test-utils.js.map +1 -0
  433. package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts +34 -0
  434. package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts.map +1 -0
  435. package/dist/esm/files/batches/files-cleanup.batch.backend.service.js +226 -0
  436. package/dist/esm/files/batches/files-cleanup.batch.backend.service.js.map +1 -0
  437. package/dist/esm/files/constraints/file-analyzers.types.d.ts +76 -0
  438. package/dist/esm/files/constraints/file-analyzers.types.d.ts.map +1 -0
  439. package/dist/esm/files/constraints/file-analyzers.types.js +16 -0
  440. package/dist/esm/files/constraints/file-analyzers.types.js.map +1 -0
  441. package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts +38 -0
  442. package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts.map +1 -0
  443. package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.js +99 -0
  444. package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.js.map +1 -0
  445. package/dist/esm/files/constraints/file-constraint.types.d.ts +77 -0
  446. package/dist/esm/files/constraints/file-constraint.types.d.ts.map +1 -0
  447. package/dist/esm/files/constraints/file-constraint.types.js +16 -0
  448. package/dist/esm/files/constraints/file-constraint.types.js.map +1 -0
  449. package/dist/esm/files/constraints/file-validation.backend.service.d.ts +63 -0
  450. package/dist/esm/files/constraints/file-validation.backend.service.d.ts.map +1 -0
  451. package/dist/esm/files/constraints/file-validation.backend.service.js +317 -0
  452. package/dist/esm/files/constraints/file-validation.backend.service.js.map +1 -0
  453. package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts +33 -0
  454. package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts.map +1 -0
  455. package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.js +126 -0
  456. package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.js.map +1 -0
  457. package/dist/esm/files/controllers/file.controller.d.ts +145 -0
  458. package/dist/esm/files/controllers/file.controller.d.ts.map +1 -0
  459. package/dist/esm/files/controllers/file.controller.js +806 -0
  460. package/dist/esm/files/controllers/file.controller.js.map +1 -0
  461. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +85 -0
  462. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -0
  463. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +512 -0
  464. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -0
  465. package/dist/esm/files/rag/weaviate-vector-store.backend.service.d.ts +84 -0
  466. package/dist/esm/files/rag/weaviate-vector-store.backend.service.d.ts.map +1 -0
  467. package/dist/esm/files/rag/weaviate-vector-store.backend.service.js +224 -0
  468. package/dist/esm/files/rag/weaviate-vector-store.backend.service.js.map +1 -0
  469. package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts +55 -0
  470. package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts.map +1 -0
  471. package/dist/esm/files/scanning/clamav-scanner.backend.service.js +202 -0
  472. package/dist/esm/files/scanning/clamav-scanner.backend.service.js.map +1 -0
  473. package/dist/esm/files/scanning/file-scan.types.d.ts +17 -0
  474. package/dist/esm/files/scanning/file-scan.types.d.ts.map +1 -0
  475. package/dist/esm/files/scanning/file-scan.types.js +7 -0
  476. package/dist/esm/files/scanning/file-scan.types.js.map +1 -0
  477. package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts +73 -0
  478. package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts.map +1 -0
  479. package/dist/esm/files/scanning/yara-scanner.backend.service.js +184 -0
  480. package/dist/esm/files/scanning/yara-scanner.backend.service.js.map +1 -0
  481. package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts +12 -0
  482. package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts.map +1 -0
  483. package/dist/esm/files/services/__tests__/mock-file-field-detection.service.js +41 -0
  484. package/dist/esm/files/services/__tests__/mock-file-field-detection.service.js.map +1 -0
  485. package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts +33 -0
  486. package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts.map +1 -0
  487. package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.js +71 -0
  488. package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.js.map +1 -0
  489. package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts +16 -0
  490. package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts.map +1 -0
  491. package/dist/esm/files/services/__tests__/mock-file-repository.service.js +95 -0
  492. package/dist/esm/files/services/__tests__/mock-file-repository.service.js.map +1 -0
  493. package/dist/esm/files/services/file-field-detection.backend.service.d.ts +57 -0
  494. package/dist/esm/files/services/file-field-detection.backend.service.d.ts.map +1 -0
  495. package/dist/esm/files/services/file-field-detection.backend.service.js +145 -0
  496. package/dist/esm/files/services/file-field-detection.backend.service.js.map +1 -0
  497. package/dist/esm/files/services/file-operation-handler.backend.service.d.ts +103 -0
  498. package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -0
  499. package/dist/esm/files/services/file-operation-handler.backend.service.js +604 -0
  500. package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -0
  501. package/dist/esm/files/services/file-population.backend.service.d.ts +73 -0
  502. package/dist/esm/files/services/file-population.backend.service.d.ts.map +1 -0
  503. package/dist/esm/files/services/file-population.backend.service.js +367 -0
  504. package/dist/esm/files/services/file-population.backend.service.js.map +1 -0
  505. package/dist/esm/files/services/file-rag-indexing.backend.service.d.ts +64 -0
  506. package/dist/esm/files/services/file-rag-indexing.backend.service.d.ts.map +1 -0
  507. package/dist/esm/files/services/file-rag-indexing.backend.service.js +188 -0
  508. package/dist/esm/files/services/file-rag-indexing.backend.service.js.map +1 -0
  509. package/dist/esm/files/services/file-scanning.backend.service.d.ts +97 -0
  510. package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -0
  511. package/dist/esm/files/services/file-scanning.backend.service.js +323 -0
  512. package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -0
  513. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +52 -0
  514. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -0
  515. package/dist/esm/files/services/file-text-extraction.backend.service.js +168 -0
  516. package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -0
  517. package/dist/esm/files/services/files.backend.service.d.ts +235 -0
  518. package/dist/esm/files/services/files.backend.service.d.ts.map +1 -0
  519. package/dist/esm/files/services/files.backend.service.js +987 -0
  520. package/dist/esm/files/services/files.backend.service.js.map +1 -0
  521. package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts +50 -0
  522. package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts.map +1 -0
  523. package/dist/esm/files/storage/file-storage-path-resolver.backend.service.js +253 -0
  524. package/dist/esm/files/storage/file-storage-path-resolver.backend.service.js.map +1 -0
  525. package/dist/esm/files/storage/file-storage-provider.types.d.ts +156 -0
  526. package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -0
  527. package/dist/esm/files/storage/file-storage-provider.types.js +10 -0
  528. package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -0
  529. package/dist/esm/files/storage/file-storage-router.backend.service.d.ts +68 -0
  530. package/dist/esm/files/storage/file-storage-router.backend.service.d.ts.map +1 -0
  531. package/dist/esm/files/storage/file-storage-router.backend.service.js +168 -0
  532. package/dist/esm/files/storage/file-storage-router.backend.service.js.map +1 -0
  533. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +57 -0
  534. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -0
  535. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +307 -0
  536. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -0
  537. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts +41 -0
  538. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -0
  539. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +397 -0
  540. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -0
  541. package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts +30 -0
  542. package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -0
  543. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +251 -0
  544. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -0
  545. package/dist/esm/files/utils/file-upload.utils.d.ts +74 -0
  546. package/dist/esm/files/utils/file-upload.utils.d.ts.map +1 -0
  547. package/dist/esm/files/utils/file-upload.utils.js +116 -0
  548. package/dist/esm/files/utils/file-upload.utils.js.map +1 -0
  549. package/dist/esm/files/utils/file-uploader.utils.d.ts +15 -0
  550. package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -0
  551. package/dist/esm/files/utils/file-uploader.utils.js +47 -0
  552. package/dist/esm/files/utils/file-uploader.utils.js.map +1 -0
  553. package/dist/esm/files/utils/file-validation.utils.d.ts +111 -0
  554. package/dist/esm/files/utils/file-validation.utils.d.ts.map +1 -0
  555. package/dist/esm/files/utils/file-validation.utils.js +516 -0
  556. package/dist/esm/files/utils/file-validation.utils.js.map +1 -0
  557. package/dist/esm/flows-actors/agent-catalogs.backend.d.ts +222 -0
  558. package/dist/esm/flows-actors/agent-catalogs.backend.d.ts.map +1 -0
  559. package/dist/esm/flows-actors/agent-catalogs.backend.js +320 -0
  560. package/dist/esm/flows-actors/agent-catalogs.backend.js.map +1 -0
  561. package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts +33 -0
  562. package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts.map +1 -0
  563. package/dist/esm/flows-actors/controllers/flows-actors.controller.js +96 -0
  564. package/dist/esm/flows-actors/controllers/flows-actors.controller.js.map +1 -0
  565. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +225 -0
  566. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -0
  567. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +323 -0
  568. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -0
  569. package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts +77 -0
  570. package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts.map +1 -0
  571. package/dist/esm/flows-actors/models/agent-facets.backend.definitions.js +28 -0
  572. package/dist/esm/flows-actors/models/agent-facets.backend.definitions.js.map +1 -0
  573. package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts +1 -0
  574. package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts.map +1 -0
  575. package/dist/esm/flows-actors/models/agents.backend.definitions.js +1 -0
  576. package/dist/esm/flows-actors/models/agents.backend.definitions.js.map +1 -0
  577. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +52 -0
  578. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -0
  579. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +307 -0
  580. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -0
  581. package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts +7 -0
  582. package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts.map +1 -0
  583. package/dist/esm/flows-actors/models/flows-actors.backend.definitions.js +8 -0
  584. package/dist/esm/flows-actors/models/flows-actors.backend.definitions.js.map +1 -0
  585. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +30 -0
  586. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -0
  587. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js +7 -0
  588. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -0
  589. package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts +72 -0
  590. package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -0
  591. package/dist/esm/flows-actors/services/actors-system.backend.service.js +229 -0
  592. package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -0
  593. package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts +95 -0
  594. package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts.map +1 -0
  595. package/dist/esm/flows-actors/services/agent-facets.backend.service.js +276 -0
  596. package/dist/esm/flows-actors/services/agent-facets.backend.service.js.map +1 -0
  597. package/dist/esm/flows-actors/services/agents.backend.service.d.ts +183 -0
  598. package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -0
  599. package/dist/esm/flows-actors/services/agents.backend.service.js +2095 -0
  600. package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -0
  601. package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts +64 -0
  602. package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts.map +1 -0
  603. package/dist/esm/flows-actors/services/context-curation.backend.service.js +180 -0
  604. package/dist/esm/flows-actors/services/context-curation.backend.service.js.map +1 -0
  605. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +101 -0
  606. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -0
  607. package/dist/esm/flows-actors/services/flows-actors-registry.service.js +313 -0
  608. package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -0
  609. package/dist/esm/flows-actors/services/flows.backend.services.d.ts +64 -0
  610. package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -0
  611. package/dist/esm/flows-actors/services/flows.backend.services.js +203 -0
  612. package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -0
  613. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +91 -0
  614. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -0
  615. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +629 -0
  616. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -0
  617. package/dist/esm/flows-actors/utils/cli-runtime-operation-support.backend.utils.d.ts +15 -0
  618. package/dist/esm/flows-actors/utils/cli-runtime-operation-support.backend.utils.d.ts.map +1 -0
  619. package/dist/esm/flows-actors/utils/cli-runtime-operation-support.backend.utils.js +55 -0
  620. package/dist/esm/flows-actors/utils/cli-runtime-operation-support.backend.utils.js.map +1 -0
  621. package/dist/esm/flows-actors/utils/cli-runtime-runner.backend.utils.d.ts +22 -0
  622. package/dist/esm/flows-actors/utils/cli-runtime-runner.backend.utils.d.ts.map +1 -0
  623. package/dist/esm/flows-actors/utils/cli-runtime-runner.backend.utils.js +131 -0
  624. package/dist/esm/flows-actors/utils/cli-runtime-runner.backend.utils.js.map +1 -0
  625. package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts +15 -0
  626. package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts.map +1 -0
  627. package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.js +43 -0
  628. package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.js.map +1 -0
  629. package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts +66 -0
  630. package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts.map +1 -0
  631. package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.js +219 -0
  632. package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.js.map +1 -0
  633. package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts +17 -0
  634. package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts.map +1 -0
  635. package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.js +110 -0
  636. package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.js.map +1 -0
  637. package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts +41 -0
  638. package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts.map +1 -0
  639. package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.js +135 -0
  640. package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.js.map +1 -0
  641. package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts +33 -0
  642. package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts.map +1 -0
  643. package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.js +105 -0
  644. package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.js.map +1 -0
  645. package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts +103 -0
  646. package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts.map +1 -0
  647. package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.js +685 -0
  648. package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.js.map +1 -0
  649. package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts +23 -0
  650. package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts.map +1 -0
  651. package/dist/esm/guidance/services/milestone-condition-registry.backend.service.js +57 -0
  652. package/dist/esm/guidance/services/milestone-condition-registry.backend.service.js.map +1 -0
  653. package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts +49 -0
  654. package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts.map +1 -0
  655. package/dist/esm/guidance/services/milestone-definition-registry.backend.service.js +248 -0
  656. package/dist/esm/guidance/services/milestone-definition-registry.backend.service.js.map +1 -0
  657. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +64 -0
  658. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -0
  659. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +487 -0
  660. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -0
  661. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +55 -0
  662. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -0
  663. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +208 -0
  664. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -0
  665. package/dist/esm/i18n/services/i18n.backend.service.d.ts +43 -0
  666. package/dist/esm/i18n/services/i18n.backend.service.d.ts.map +1 -0
  667. package/dist/esm/i18n/services/i18n.backend.service.js +83 -0
  668. package/dist/esm/i18n/services/i18n.backend.service.js.map +1 -0
  669. package/dist/esm/index.d.ts +203 -0
  670. package/dist/esm/index.d.ts.map +1 -0
  671. package/dist/esm/index.js +239 -0
  672. package/dist/esm/index.js.map +1 -0
  673. package/dist/esm/inject/models/container.d.ts +44 -0
  674. package/dist/esm/inject/models/container.d.ts.map +1 -0
  675. package/dist/esm/inject/models/container.js +489 -0
  676. package/dist/esm/inject/models/container.js.map +1 -0
  677. package/dist/esm/inject/models/service-types.d.ts +198 -0
  678. package/dist/esm/inject/models/service-types.d.ts.map +1 -0
  679. package/dist/esm/inject/models/service-types.js +226 -0
  680. package/dist/esm/inject/models/service-types.js.map +1 -0
  681. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts +34 -0
  682. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -0
  683. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +122 -0
  684. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -0
  685. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +41 -0
  686. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -0
  687. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +62 -0
  688. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -0
  689. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +18 -0
  690. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -0
  691. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js +43 -0
  692. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -0
  693. package/dist/esm/monitoring/logger/middleware/logging.middleware.d.ts +12 -0
  694. package/dist/esm/monitoring/logger/middleware/logging.middleware.d.ts.map +1 -0
  695. package/dist/esm/monitoring/logger/middleware/logging.middleware.js +25 -0
  696. package/dist/esm/monitoring/logger/middleware/logging.middleware.js.map +1 -0
  697. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +41 -0
  698. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -0
  699. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +29 -0
  700. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -0
  701. package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts +22 -0
  702. package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts.map +1 -0
  703. package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.js +53 -0
  704. package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.js.map +1 -0
  705. package/dist/esm/monitoring/logger/services/logger.service.d.ts +37 -0
  706. package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -0
  707. package/dist/esm/monitoring/logger/services/logger.service.js +189 -0
  708. package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -0
  709. package/dist/esm/monitoring/observability/middleware/metrics.middleware.d.ts +38 -0
  710. package/dist/esm/monitoring/observability/middleware/metrics.middleware.d.ts.map +1 -0
  711. package/dist/esm/monitoring/observability/middleware/metrics.middleware.js +147 -0
  712. package/dist/esm/monitoring/observability/middleware/metrics.middleware.js.map +1 -0
  713. package/dist/esm/monitoring/observability/middleware/telemetry.middleware.d.ts +26 -0
  714. package/dist/esm/monitoring/observability/middleware/telemetry.middleware.d.ts.map +1 -0
  715. package/dist/esm/monitoring/observability/middleware/telemetry.middleware.js +117 -0
  716. package/dist/esm/monitoring/observability/middleware/telemetry.middleware.js.map +1 -0
  717. package/dist/esm/monitoring/observability/middleware/tracing.middleware.d.ts +28 -0
  718. package/dist/esm/monitoring/observability/middleware/tracing.middleware.d.ts.map +1 -0
  719. package/dist/esm/monitoring/observability/middleware/tracing.middleware.js +182 -0
  720. package/dist/esm/monitoring/observability/middleware/tracing.middleware.js.map +1 -0
  721. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +86 -0
  722. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -0
  723. package/dist/esm/monitoring/observability/models/observability.backend.schemas.js +1 -0
  724. package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -0
  725. package/dist/esm/monitoring/observability/services/instrumentations/custom.instrumentations.d.ts +57 -0
  726. package/dist/esm/monitoring/observability/services/instrumentations/custom.instrumentations.d.ts.map +1 -0
  727. package/dist/esm/monitoring/observability/services/instrumentations/custom.instrumentations.js +77 -0
  728. package/dist/esm/monitoring/observability/services/instrumentations/custom.instrumentations.js.map +1 -0
  729. package/dist/esm/monitoring/observability/services/metrics.service.d.ts +27 -0
  730. package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -0
  731. package/dist/esm/monitoring/observability/services/metrics.service.js +236 -0
  732. package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -0
  733. package/dist/esm/monitoring/observability/services/telemetry.service.d.ts +28 -0
  734. package/dist/esm/monitoring/observability/services/telemetry.service.d.ts.map +1 -0
  735. package/dist/esm/monitoring/observability/services/telemetry.service.js +144 -0
  736. package/dist/esm/monitoring/observability/services/telemetry.service.js.map +1 -0
  737. package/dist/esm/monitoring/observability/services/tracer.service.d.ts +24 -0
  738. package/dist/esm/monitoring/observability/services/tracer.service.d.ts.map +1 -0
  739. package/dist/esm/monitoring/observability/services/tracer.service.js +287 -0
  740. package/dist/esm/monitoring/observability/services/tracer.service.js.map +1 -0
  741. package/dist/esm/notifications/email/components/email-components.d.ts +90 -0
  742. package/dist/esm/notifications/email/components/email-components.d.ts.map +1 -0
  743. package/dist/esm/notifications/email/components/email-components.js +171 -0
  744. package/dist/esm/notifications/email/components/email-components.js.map +1 -0
  745. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +80 -0
  746. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +1 -0
  747. package/dist/esm/notifications/email/models/email-context-provider.interface.js +25 -0
  748. package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +1 -0
  749. package/dist/esm/notifications/email/models/email-template-definition.d.ts +68 -0
  750. package/dist/esm/notifications/email/models/email-template-definition.d.ts.map +1 -0
  751. package/dist/esm/notifications/email/models/email-template-definition.js +12 -0
  752. package/dist/esm/notifications/email/models/email-template-definition.js.map +1 -0
  753. package/dist/esm/notifications/email/models/email-template.actors-system.backend.definitions.d.ts +19 -0
  754. package/dist/esm/notifications/email/models/email-template.actors-system.backend.definitions.d.ts.map +1 -0
  755. package/dist/esm/notifications/email/models/email-template.actors-system.backend.definitions.js +66 -0
  756. package/dist/esm/notifications/email/models/email-template.actors-system.backend.definitions.js.map +1 -0
  757. package/dist/esm/notifications/email/models/email.backend.scheamas.d.ts +1 -0
  758. package/dist/esm/notifications/email/models/email.backend.scheamas.d.ts.map +1 -0
  759. package/dist/esm/notifications/email/models/email.backend.scheamas.js +1 -0
  760. package/dist/esm/notifications/email/models/email.backend.scheamas.js.map +1 -0
  761. package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts +74 -0
  762. package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts.map +1 -0
  763. package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.js +196 -0
  764. package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.js.map +1 -0
  765. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +49 -0
  766. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +1 -0
  767. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +141 -0
  768. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +1 -0
  769. package/dist/esm/notifications/email/services/email-renderer.backend.service.d.ts +74 -0
  770. package/dist/esm/notifications/email/services/email-renderer.backend.service.d.ts.map +1 -0
  771. package/dist/esm/notifications/email/services/email-renderer.backend.service.js +215 -0
  772. package/dist/esm/notifications/email/services/email-renderer.backend.service.js.map +1 -0
  773. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +37 -0
  774. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +1 -0
  775. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +121 -0
  776. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +1 -0
  777. package/dist/esm/notifications/email/services/email-template-generation.backend.service.d.ts +115 -0
  778. package/dist/esm/notifications/email/services/email-template-generation.backend.service.d.ts.map +1 -0
  779. package/dist/esm/notifications/email/services/email-template-generation.backend.service.js +634 -0
  780. package/dist/esm/notifications/email/services/email-template-generation.backend.service.js.map +1 -0
  781. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +48 -0
  782. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -0
  783. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +146 -0
  784. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -0
  785. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +58 -0
  786. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +1 -0
  787. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +223 -0
  788. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +1 -0
  789. package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts +49 -0
  790. package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -0
  791. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +204 -0
  792. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -0
  793. package/dist/esm/notifications/email/services/email.backend.service.d.ts +76 -0
  794. package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -0
  795. package/dist/esm/notifications/email/services/email.backend.service.js +294 -0
  796. package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -0
  797. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +56 -0
  798. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -0
  799. package/dist/esm/notifications/email/utils/color-conversion.utils.js +108 -0
  800. package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -0
  801. package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts +8 -0
  802. package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts.map +1 -0
  803. package/dist/esm/notifications/email/utils/interpolate-email-label.utils.js +15 -0
  804. package/dist/esm/notifications/email/utils/interpolate-email-label.utils.js.map +1 -0
  805. package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts +50 -0
  806. package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts.map +1 -0
  807. package/dist/esm/notifications/email/utils/zod-to-typescript.utils.js +281 -0
  808. package/dist/esm/notifications/email/utils/zod-to-typescript.utils.js.map +1 -0
  809. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +94 -0
  810. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -0
  811. package/dist/esm/notifications/services/notification-badge.backend.service.js +292 -0
  812. package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -0
  813. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +202 -0
  814. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -0
  815. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +1290 -0
  816. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -0
  817. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +50 -0
  818. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -0
  819. package/dist/esm/notifications/sms/services/sms.backend.service.js +209 -0
  820. package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -0
  821. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +58 -0
  822. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -0
  823. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +184 -0
  824. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -0
  825. package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts +56 -0
  826. package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts.map +1 -0
  827. package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.js +109 -0
  828. package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.js.map +1 -0
  829. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +96 -0
  830. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -0
  831. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +396 -0
  832. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -0
  833. package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts +39 -0
  834. package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts.map +1 -0
  835. package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.js +73 -0
  836. package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.js.map +1 -0
  837. package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts +22 -0
  838. package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts.map +1 -0
  839. package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.js +35 -0
  840. package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.js.map +1 -0
  841. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts +10 -0
  842. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -0
  843. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +77 -0
  844. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -0
  845. package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts +10 -0
  846. package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts.map +1 -0
  847. package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.js +131 -0
  848. package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.js.map +1 -0
  849. package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts +22 -0
  850. package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts.map +1 -0
  851. package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.js +21 -0
  852. package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.js.map +1 -0
  853. package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts +25 -0
  854. package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts.map +1 -0
  855. package/dist/esm/organizations/services/user-org-type-grant.backend.utils.js +34 -0
  856. package/dist/esm/organizations/services/user-org-type-grant.backend.utils.js.map +1 -0
  857. package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts +32 -0
  858. package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts.map +1 -0
  859. package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.js +66 -0
  860. package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.js.map +1 -0
  861. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +126 -0
  862. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -0
  863. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +370 -0
  864. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -0
  865. package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts +86 -0
  866. package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts.map +1 -0
  867. package/dist/esm/queue/apps-crontabs-manager.backend.service.js +176 -0
  868. package/dist/esm/queue/apps-crontabs-manager.backend.service.js.map +1 -0
  869. package/dist/esm/queue/cron-job-sync.backend.service.d.ts +42 -0
  870. package/dist/esm/queue/cron-job-sync.backend.service.d.ts.map +1 -0
  871. package/dist/esm/queue/cron-job-sync.backend.service.js +181 -0
  872. package/dist/esm/queue/cron-job-sync.backend.service.js.map +1 -0
  873. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +84 -0
  874. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -0
  875. package/dist/esm/queue/domain-queue-consumer.backend.service.js +275 -0
  876. package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -0
  877. package/dist/esm/queue/job-completion-registry.backend.service.d.ts +111 -0
  878. package/dist/esm/queue/job-completion-registry.backend.service.d.ts.map +1 -0
  879. package/dist/esm/queue/job-completion-registry.backend.service.js +237 -0
  880. package/dist/esm/queue/job-completion-registry.backend.service.js.map +1 -0
  881. package/dist/esm/queue/job-consumer.backend.service.d.ts +109 -0
  882. package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -0
  883. package/dist/esm/queue/job-consumer.backend.service.js +515 -0
  884. package/dist/esm/queue/job-consumer.backend.service.js.map +1 -0
  885. package/dist/esm/queue/job-executor.backend.service.d.ts +53 -0
  886. package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -0
  887. package/dist/esm/queue/job-executor.backend.service.js +278 -0
  888. package/dist/esm/queue/job-executor.backend.service.js.map +1 -0
  889. package/dist/esm/queue/job-payload-storage.backend.service.d.ts +86 -0
  890. package/dist/esm/queue/job-payload-storage.backend.service.d.ts.map +1 -0
  891. package/dist/esm/queue/job-payload-storage.backend.service.js +250 -0
  892. package/dist/esm/queue/job-payload-storage.backend.service.js.map +1 -0
  893. package/dist/esm/queue/job-status-tracking.backend.service.d.ts +97 -0
  894. package/dist/esm/queue/job-status-tracking.backend.service.d.ts.map +1 -0
  895. package/dist/esm/queue/job-status-tracking.backend.service.js +281 -0
  896. package/dist/esm/queue/job-status-tracking.backend.service.js.map +1 -0
  897. package/dist/esm/queue/queue-monitoring.backend.service.d.ts +71 -0
  898. package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -0
  899. package/dist/esm/queue/queue-monitoring.backend.service.js +297 -0
  900. package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -0
  901. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +63 -0
  902. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -0
  903. package/dist/esm/queue/queue-worker-initializer.backend.service.js +171 -0
  904. package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -0
  905. package/dist/esm/queue/queue.backend.service.d.ts +108 -0
  906. package/dist/esm/queue/queue.backend.service.d.ts.map +1 -0
  907. package/dist/esm/queue/queue.backend.service.js +419 -0
  908. package/dist/esm/queue/queue.backend.service.js.map +1 -0
  909. package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts +74 -0
  910. package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts.map +1 -0
  911. package/dist/esm/queue/scheduled-message-verifier.backend.service.js +189 -0
  912. package/dist/esm/queue/scheduled-message-verifier.backend.service.js.map +1 -0
  913. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +124 -0
  914. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -0
  915. package/dist/esm/queue/worker-shutdown-manager.backend.service.js +250 -0
  916. package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -0
  917. package/dist/esm/requests/models/api-routes.backend.defintions.d.ts +34 -0
  918. package/dist/esm/requests/models/api-routes.backend.defintions.d.ts.map +1 -0
  919. package/dist/esm/requests/models/api-routes.backend.defintions.js +42 -0
  920. package/dist/esm/requests/models/api-routes.backend.defintions.js.map +1 -0
  921. package/dist/esm/requests/models/requests.backend.schemas.d.ts +48 -0
  922. package/dist/esm/requests/models/requests.backend.schemas.d.ts.map +1 -0
  923. package/dist/esm/requests/models/requests.backend.schemas.js +7 -0
  924. package/dist/esm/requests/models/requests.backend.schemas.js.map +1 -0
  925. package/dist/esm/requests/service/__tests__/mock-apps-shared-resources-gateway.service.d.ts +6 -0
  926. package/dist/esm/requests/service/__tests__/mock-apps-shared-resources-gateway.service.d.ts.map +1 -0
  927. package/dist/esm/requests/service/__tests__/mock-apps-shared-resources-gateway.service.js +20 -0
  928. package/dist/esm/requests/service/__tests__/mock-apps-shared-resources-gateway.service.js.map +1 -0
  929. package/dist/esm/requests/service/apps-shared-resources-gateway.backend.service.d.ts +84 -0
  930. package/dist/esm/requests/service/apps-shared-resources-gateway.backend.service.d.ts.map +1 -0
  931. package/dist/esm/requests/service/apps-shared-resources-gateway.backend.service.js +462 -0
  932. package/dist/esm/requests/service/apps-shared-resources-gateway.backend.service.js.map +1 -0
  933. package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts +9 -0
  934. package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts.map +1 -0
  935. package/dist/esm/requests/service/platform-mutualized-handler.backend.service.js +36 -0
  936. package/dist/esm/requests/service/platform-mutualized-handler.backend.service.js.map +1 -0
  937. package/dist/esm/requests/service/platform-requests.backend.utils.d.ts +6 -0
  938. package/dist/esm/requests/service/platform-requests.backend.utils.d.ts.map +1 -0
  939. package/dist/esm/requests/service/platform-requests.backend.utils.js +47 -0
  940. package/dist/esm/requests/service/platform-requests.backend.utils.js.map +1 -0
  941. package/dist/esm/requests/service/remote-client-base.backend.service.d.ts +111 -0
  942. package/dist/esm/requests/service/remote-client-base.backend.service.d.ts.map +1 -0
  943. package/dist/esm/requests/service/remote-client-base.backend.service.js +354 -0
  944. package/dist/esm/requests/service/remote-client-base.backend.service.js.map +1 -0
  945. package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts +9 -0
  946. package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts.map +1 -0
  947. package/dist/esm/requests/service/serverless-services-handler.backend.service.js +36 -0
  948. package/dist/esm/requests/service/serverless-services-handler.backend.service.js.map +1 -0
  949. package/dist/esm/requests/service/websocket.service.d.ts +507 -0
  950. package/dist/esm/requests/service/websocket.service.d.ts.map +1 -0
  951. package/dist/esm/requests/service/websocket.service.js +2222 -0
  952. package/dist/esm/requests/service/websocket.service.js.map +1 -0
  953. package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts +3 -0
  954. package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -0
  955. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +17 -0
  956. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -0
  957. package/dist/esm/resources/models/index.d.ts +7 -0
  958. package/dist/esm/resources/models/index.d.ts.map +1 -0
  959. package/dist/esm/resources/models/index.js +7 -0
  960. package/dist/esm/resources/models/index.js.map +1 -0
  961. package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts +4 -0
  962. package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -0
  963. package/dist/esm/resources/models/resources-operations.backend.definitions.js +7 -0
  964. package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -0
  965. package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts +3 -0
  966. package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -0
  967. package/dist/esm/resources/models/resources-relationships.backend.definitions.js +19 -0
  968. package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -0
  969. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +13 -0
  970. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -0
  971. package/dist/esm/resources/models/resources-types.backend.schemas.js +14 -0
  972. package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -0
  973. package/dist/esm/resources/models/resources.backend.schemas.d.ts +7 -0
  974. package/dist/esm/resources/models/resources.backend.schemas.d.ts.map +1 -0
  975. package/dist/esm/resources/models/resources.backend.schemas.js +8 -0
  976. package/dist/esm/resources/models/resources.backend.schemas.js.map +1 -0
  977. package/dist/esm/resources/models/virtual-fields.backend.types.d.ts +121 -0
  978. package/dist/esm/resources/models/virtual-fields.backend.types.d.ts.map +1 -0
  979. package/dist/esm/resources/models/virtual-fields.backend.types.js +10 -0
  980. package/dist/esm/resources/models/virtual-fields.backend.types.js.map +1 -0
  981. package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts +25 -0
  982. package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts.map +1 -0
  983. package/dist/esm/resources/services/__tests__/mock-resources-registry.service.js +59 -0
  984. package/dist/esm/resources/services/__tests__/mock-resources-registry.service.js.map +1 -0
  985. package/dist/esm/resources/services/resource-context.backend.service.d.ts +321 -0
  986. package/dist/esm/resources/services/resource-context.backend.service.d.ts.map +1 -0
  987. package/dist/esm/resources/services/resource-context.backend.service.js +723 -0
  988. package/dist/esm/resources/services/resource-context.backend.service.js.map +1 -0
  989. package/dist/esm/resources/services/resource-id.backend.service.d.ts +110 -0
  990. package/dist/esm/resources/services/resource-id.backend.service.d.ts.map +1 -0
  991. package/dist/esm/resources/services/resource-id.backend.service.js +267 -0
  992. package/dist/esm/resources/services/resource-id.backend.service.js.map +1 -0
  993. package/dist/esm/resources/services/resource-population.backend.service.d.ts +149 -0
  994. package/dist/esm/resources/services/resource-population.backend.service.d.ts.map +1 -0
  995. package/dist/esm/resources/services/resource-population.backend.service.js +543 -0
  996. package/dist/esm/resources/services/resource-population.backend.service.js.map +1 -0
  997. package/dist/esm/resources/services/resources-registry.backend.service.d.ts +151 -0
  998. package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -0
  999. package/dist/esm/resources/services/resources-registry.backend.service.js +867 -0
  1000. package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -0
  1001. package/dist/esm/resources/services/virtual-fields.backend.service.d.ts +72 -0
  1002. package/dist/esm/resources/services/virtual-fields.backend.service.d.ts.map +1 -0
  1003. package/dist/esm/resources/services/virtual-fields.backend.service.js +254 -0
  1004. package/dist/esm/resources/services/virtual-fields.backend.service.js.map +1 -0
  1005. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +73 -0
  1006. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -0
  1007. package/dist/esm/runtime/controllers/health-controller.backend.service.js +275 -0
  1008. package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -0
  1009. package/dist/esm/runtime/domain-module.backend.definitions.d.ts +43 -0
  1010. package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -0
  1011. package/dist/esm/runtime/domain-module.backend.definitions.js +70 -0
  1012. package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -0
  1013. package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts +253 -0
  1014. package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts.map +1 -0
  1015. package/dist/esm/runtime/models/execution-context.backend.schemas.js +329 -0
  1016. package/dist/esm/runtime/models/execution-context.backend.schemas.js.map +1 -0
  1017. package/dist/esm/runtime/models/runtime.backend.schemas.d.ts +45 -0
  1018. package/dist/esm/runtime/models/runtime.backend.schemas.d.ts.map +1 -0
  1019. package/dist/esm/runtime/models/runtime.backend.schemas.js +73 -0
  1020. package/dist/esm/runtime/models/runtime.backend.schemas.js.map +1 -0
  1021. package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts +315 -0
  1022. package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -0
  1023. package/dist/esm/runtime/services/execution-context-creator.backend.service.js +1525 -0
  1024. package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -0
  1025. package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts +60 -0
  1026. package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts.map +1 -0
  1027. package/dist/esm/runtime/services/execution-context-handler.backend.service.js +150 -0
  1028. package/dist/esm/runtime/services/execution-context-handler.backend.service.js.map +1 -0
  1029. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +11 -0
  1030. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -0
  1031. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js +1 -0
  1032. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -0
  1033. package/dist/esm/runtime/services/http-server.backend.service.d.ts +188 -0
  1034. package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -0
  1035. package/dist/esm/runtime/services/http-server.backend.service.js +755 -0
  1036. package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -0
  1037. package/dist/esm/runtime/services/start-application.backend.service.d.ts +240 -0
  1038. package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -0
  1039. package/dist/esm/runtime/services/start-application.backend.service.js +977 -0
  1040. package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -0
  1041. package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts +10 -0
  1042. package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts.map +1 -0
  1043. package/dist/esm/runtime/testing/execution-context-test-fixtures.js +13 -0
  1044. package/dist/esm/runtime/testing/execution-context-test-fixtures.js.map +1 -0
  1045. package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts +15 -0
  1046. package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts.map +1 -0
  1047. package/dist/esm/runtime/testing/mock-execution-context-creator.service.js +42 -0
  1048. package/dist/esm/runtime/testing/mock-execution-context-creator.service.js.map +1 -0
  1049. package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts +85 -0
  1050. package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts.map +1 -0
  1051. package/dist/esm/runtime/utils/scan-default-exports.backend.utils.js +171 -0
  1052. package/dist/esm/runtime/utils/scan-default-exports.backend.utils.js.map +1 -0
  1053. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +19 -0
  1054. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -0
  1055. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +59 -0
  1056. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -0
  1057. package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts +31 -0
  1058. package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts.map +1 -0
  1059. package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.js +215 -0
  1060. package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.js.map +1 -0
  1061. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts +493 -0
  1062. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -0
  1063. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +2371 -0
  1064. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -0
  1065. package/dist/esm/security/authentications/models/auth-constants.backend.d.ts +83 -0
  1066. package/dist/esm/security/authentications/models/auth-constants.backend.d.ts.map +1 -0
  1067. package/dist/esm/security/authentications/models/auth-constants.backend.js +113 -0
  1068. package/dist/esm/security/authentications/models/auth-constants.backend.js.map +1 -0
  1069. package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts +98 -0
  1070. package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts.map +1 -0
  1071. package/dist/esm/security/authentications/models/authentications.backend.schemas.js +59 -0
  1072. package/dist/esm/security/authentications/models/authentications.backend.schemas.js.map +1 -0
  1073. package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts +42 -0
  1074. package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -0
  1075. package/dist/esm/security/authentications/models/jwt.backend.schemas.js +98 -0
  1076. package/dist/esm/security/authentications/models/jwt.backend.schemas.js.map +1 -0
  1077. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +163 -0
  1078. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -0
  1079. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js +12 -0
  1080. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -0
  1081. package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.d.ts +102 -0
  1082. package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.d.ts.map +1 -0
  1083. package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.js +7 -0
  1084. package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.js.map +1 -0
  1085. package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts +88 -0
  1086. package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts.map +1 -0
  1087. package/dist/esm/security/authentications/models/sso-connection.backend.schemas.js +17 -0
  1088. package/dist/esm/security/authentications/models/sso-connection.backend.schemas.js.map +1 -0
  1089. package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts +27 -0
  1090. package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts.map +1 -0
  1091. package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.js +66 -0
  1092. package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.js.map +1 -0
  1093. package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts +30 -0
  1094. package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts.map +1 -0
  1095. package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.js +44 -0
  1096. package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.js.map +1 -0
  1097. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts +19 -0
  1098. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts.map +1 -0
  1099. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.js +43 -0
  1100. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.js.map +1 -0
  1101. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts +37 -0
  1102. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts.map +1 -0
  1103. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.js +58 -0
  1104. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.js.map +1 -0
  1105. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +85 -0
  1106. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -0
  1107. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +379 -0
  1108. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -0
  1109. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +79 -0
  1110. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -0
  1111. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +205 -0
  1112. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -0
  1113. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +59 -0
  1114. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -0
  1115. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +179 -0
  1116. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -0
  1117. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +116 -0
  1118. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -0
  1119. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +436 -0
  1120. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -0
  1121. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts +67 -0
  1122. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts.map +1 -0
  1123. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js +222 -0
  1124. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js.map +1 -0
  1125. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +80 -0
  1126. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -0
  1127. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +368 -0
  1128. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -0
  1129. package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts +75 -0
  1130. package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts.map +1 -0
  1131. package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.js +139 -0
  1132. package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.js.map +1 -0
  1133. package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts +72 -0
  1134. package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts.map +1 -0
  1135. package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.js +127 -0
  1136. package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.js.map +1 -0
  1137. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts +57 -0
  1138. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -0
  1139. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +459 -0
  1140. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -0
  1141. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts +44 -0
  1142. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -0
  1143. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js +131 -0
  1144. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js.map +1 -0
  1145. package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.d.ts +58 -0
  1146. package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.d.ts.map +1 -0
  1147. package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.js +209 -0
  1148. package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.js.map +1 -0
  1149. package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts +46 -0
  1150. package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts.map +1 -0
  1151. package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.js +124 -0
  1152. package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.js.map +1 -0
  1153. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +165 -0
  1154. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -0
  1155. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +816 -0
  1156. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -0
  1157. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts +218 -0
  1158. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -0
  1159. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +1026 -0
  1160. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -0
  1161. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts +150 -0
  1162. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -0
  1163. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +737 -0
  1164. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -0
  1165. package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts +224 -0
  1166. package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts.map +1 -0
  1167. package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.js +593 -0
  1168. package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.js.map +1 -0
  1169. package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts +267 -0
  1170. package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts.map +1 -0
  1171. package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.js +1376 -0
  1172. package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.js.map +1 -0
  1173. package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts +93 -0
  1174. package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts.map +1 -0
  1175. package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.js +396 -0
  1176. package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.js.map +1 -0
  1177. package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts +40 -0
  1178. package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts.map +1 -0
  1179. package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.js +92 -0
  1180. package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.js.map +1 -0
  1181. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +82 -0
  1182. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -0
  1183. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +325 -0
  1184. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -0
  1185. package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts +66 -0
  1186. package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts.map +1 -0
  1187. package/dist/esm/security/authentications/services/auth-session-store.backend.service.js +198 -0
  1188. package/dist/esm/security/authentications/services/auth-session-store.backend.service.js.map +1 -0
  1189. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +108 -0
  1190. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -0
  1191. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +406 -0
  1192. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -0
  1193. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +366 -0
  1194. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -0
  1195. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +2631 -0
  1196. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -0
  1197. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts +13 -0
  1198. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -0
  1199. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +53 -0
  1200. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -0
  1201. package/dist/esm/security/authentications/services/custom-impls/auth-policy.custom-impl.backend.service.d.ts +12 -0
  1202. package/dist/esm/security/authentications/services/custom-impls/auth-policy.custom-impl.backend.service.d.ts.map +1 -0
  1203. package/dist/esm/security/authentications/services/custom-impls/auth-policy.custom-impl.backend.service.js +41 -0
  1204. package/dist/esm/security/authentications/services/custom-impls/auth-policy.custom-impl.backend.service.js.map +1 -0
  1205. package/dist/esm/security/authentications/services/custom-impls/scim-provisioning-config.custom-impl.backend.service.d.ts +18 -0
  1206. package/dist/esm/security/authentications/services/custom-impls/scim-provisioning-config.custom-impl.backend.service.d.ts.map +1 -0
  1207. package/dist/esm/security/authentications/services/custom-impls/scim-provisioning-config.custom-impl.backend.service.js +140 -0
  1208. package/dist/esm/security/authentications/services/custom-impls/scim-provisioning-config.custom-impl.backend.service.js.map +1 -0
  1209. package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts +16 -0
  1210. package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts.map +1 -0
  1211. package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.js +112 -0
  1212. package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.js.map +1 -0
  1213. package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts +16 -0
  1214. package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts.map +1 -0
  1215. package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.js +101 -0
  1216. package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.js.map +1 -0
  1217. package/dist/esm/security/authentications/services/custom-impls/siem-export-config.custom-impl.backend.service.d.ts +18 -0
  1218. package/dist/esm/security/authentications/services/custom-impls/siem-export-config.custom-impl.backend.service.d.ts.map +1 -0
  1219. package/dist/esm/security/authentications/services/custom-impls/siem-export-config.custom-impl.backend.service.js +136 -0
  1220. package/dist/esm/security/authentications/services/custom-impls/siem-export-config.custom-impl.backend.service.js.map +1 -0
  1221. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +19 -0
  1222. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -0
  1223. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +154 -0
  1224. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -0
  1225. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts +26 -0
  1226. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts.map +1 -0
  1227. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js +657 -0
  1228. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js.map +1 -0
  1229. package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts +27 -0
  1230. package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts.map +1 -0
  1231. package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.js +60 -0
  1232. package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.js.map +1 -0
  1233. package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts +23 -0
  1234. package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts.map +1 -0
  1235. package/dist/esm/security/authentications/services/utils/auth-controller.utils.js +44 -0
  1236. package/dist/esm/security/authentications/services/utils/auth-controller.utils.js.map +1 -0
  1237. package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts +89 -0
  1238. package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts.map +1 -0
  1239. package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.js +192 -0
  1240. package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.js.map +1 -0
  1241. package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts +20 -0
  1242. package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts.map +1 -0
  1243. package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.js +55 -0
  1244. package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.js.map +1 -0
  1245. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts +50 -0
  1246. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -0
  1247. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +135 -0
  1248. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -0
  1249. package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts +26 -0
  1250. package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts.map +1 -0
  1251. package/dist/esm/security/authentications/services/utils/saml-java-availability.js +59 -0
  1252. package/dist/esm/security/authentications/services/utils/saml-java-availability.js.map +1 -0
  1253. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +137 -0
  1254. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -0
  1255. package/dist/esm/security/authorizations/services/authorizations.backend.service.js +723 -0
  1256. package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -0
  1257. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts +28 -0
  1258. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -0
  1259. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js +156 -0
  1260. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js.map +1 -0
  1261. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts +4 -0
  1262. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -0
  1263. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js +72 -0
  1264. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js.map +1 -0
  1265. package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.d.ts +125 -0
  1266. package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.d.ts.map +1 -0
  1267. package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.js +69 -0
  1268. package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.js.map +1 -0
  1269. package/dist/esm/security/consumable-tokens/models/index.d.ts +3 -0
  1270. package/dist/esm/security/consumable-tokens/models/index.d.ts.map +1 -0
  1271. package/dist/esm/security/consumable-tokens/models/index.js +3 -0
  1272. package/dist/esm/security/consumable-tokens/models/index.js.map +1 -0
  1273. package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts +26 -0
  1274. package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts.map +1 -0
  1275. package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.js +55 -0
  1276. package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.js.map +1 -0
  1277. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +142 -0
  1278. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -0
  1279. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +446 -0
  1280. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -0
  1281. package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts +46 -0
  1282. package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts.map +1 -0
  1283. package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.js +147 -0
  1284. package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.js.map +1 -0
  1285. package/dist/esm/security/jwt/services/jwt.backend.service.d.ts +75 -0
  1286. package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -0
  1287. package/dist/esm/security/jwt/services/jwt.backend.service.js +368 -0
  1288. package/dist/esm/security/jwt/services/jwt.backend.service.js.map +1 -0
  1289. package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts +71 -0
  1290. package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -0
  1291. package/dist/esm/security/scim/controllers/scim.backend.controller.js +863 -0
  1292. package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -0
  1293. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +275 -0
  1294. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -0
  1295. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +139 -0
  1296. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -0
  1297. package/dist/esm/security/scim/utils/scim-filter-parser.d.ts +35 -0
  1298. package/dist/esm/security/scim/utils/scim-filter-parser.d.ts.map +1 -0
  1299. package/dist/esm/security/scim/utils/scim-filter-parser.js +232 -0
  1300. package/dist/esm/security/scim/utils/scim-filter-parser.js.map +1 -0
  1301. package/dist/esm/security/scim/utils/scim-response-formatter.d.ts +42 -0
  1302. package/dist/esm/security/scim/utils/scim-response-formatter.d.ts.map +1 -0
  1303. package/dist/esm/security/scim/utils/scim-response-formatter.js +89 -0
  1304. package/dist/esm/security/scim/utils/scim-response-formatter.js.map +1 -0
  1305. package/dist/esm/testing.d.ts +31 -0
  1306. package/dist/esm/testing.d.ts.map +1 -0
  1307. package/dist/esm/testing.js +31 -0
  1308. package/dist/esm/testing.js.map +1 -0
  1309. package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts +9 -0
  1310. package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts.map +1 -0
  1311. package/dist/esm/users/services/user-self-custom-implementations.backend.js +48 -0
  1312. package/dist/esm/users/services/user-self-custom-implementations.backend.js.map +1 -0
  1313. package/dist/tsconfig.build.tsbuildinfo +1 -0
  1314. package/package.json +163 -0
  1315. package/src/__tests__/integration/bulk-repository-write-contract.integration.test.ts +373 -0
  1316. package/src/__tests__/integration/custom-batch-job-execution.integration.test.ts +147 -0
  1317. package/src/__tests__/integration/delete-file-rollback-persistence.integration.test.ts +551 -0
  1318. package/src/__tests__/integration/file-management-nested-persistence.integration.test.ts +487 -0
  1319. package/src/__tests__/integration/file-management-postgresql-persistence.integration.test.ts +466 -0
  1320. package/src/__tests__/integration/files-cleanup-persistence.integration.test.ts +335 -0
  1321. package/src/__tests__/integration/generated-bulk-relationship-runtime.integration.test.ts +545 -0
  1322. package/src/__tests__/integration/lifecycle-delete-rollback-persistence.integration.test.ts +537 -0
  1323. package/src/__tests__/integration/postgresql-contextual-filter-enforcement.integration.test.ts +170 -0
  1324. package/src/__tests__/integration/postgresql-delete-best-effort-boundary.integration.test.ts +604 -0
  1325. package/src/__tests__/integration/prompt-compiler.integration.test.ts +723 -0
  1326. package/src/__tests__/integration/relationship-service-semantics.integration.test.ts +2086 -0
  1327. package/src/__tests__/integration/repositories-registry.integration.test.ts +296 -0
  1328. package/src/__tests__/integration/resource-factory-pipeline.integration.test.ts +556 -0
  1329. package/src/__tests__/integration/resource-services.integration.test.ts +265 -0
  1330. package/src/__tests__/integration/resources-registry.integration.test.ts +327 -0
  1331. package/src/__tests__/integration/services-registry.integration.test.ts +231 -0
  1332. package/src/__tests__/integration/update-many-runtime-guards.integration.test.ts +290 -0
  1333. package/src/__tests__/setup.ts +15 -0
  1334. package/src/__tests__/test-container.ts +120 -0
  1335. package/src/applications/models/applications.backend.schemas.ts +18 -0
  1336. package/src/base-classes/__tests__/batches-cronjobs-executor.test.ts +63 -0
  1337. package/src/base-classes/__tests__/bulk-delete-child-file-guard.test.ts +152 -0
  1338. package/src/base-classes/__tests__/bulk-nested-file-update-coordination.test.ts +171 -0
  1339. package/src/base-classes/__tests__/delete-file-coordination.test.ts +185 -0
  1340. package/src/base-classes/__tests__/postgresql-file-transaction-coordination.test.ts +424 -0
  1341. package/src/base-classes/__tests__/postgresql-repository-contextual-filter-enforcement.test.ts +88 -0
  1342. package/src/base-classes/__tests__/repository-contextual-filter-enforcement.test.ts +87 -0
  1343. package/src/base-classes/__tests__/resource-operation-helper-context-enforcement.test.ts +74 -0
  1344. package/src/base-classes/__tests__/transaction-boundaries.test.ts +153 -0
  1345. package/src/base-classes/models/manual-controllers.backend.definition.ts +56 -0
  1346. package/src/base-classes/models/repositories.backend.schemas.ts +105 -0
  1347. package/src/base-classes/services/__tests__/mock-resource-operation-helper.service.ts +61 -0
  1348. package/src/base-classes/services/batches/batches-cronjobs-custom-execution.service.ts +148 -0
  1349. package/src/base-classes/services/batches/batches-cronjobs-executor.backend.service.ts +115 -0
  1350. package/src/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.ts +58 -0
  1351. package/src/base-classes/services/controllers/__tests__/controller-request-validation.utils.test.ts +292 -0
  1352. package/src/base-classes/services/controllers/__tests__/controller-resource-file-upload-routes.test.ts +1335 -0
  1353. package/src/base-classes/services/controllers/__tests__/controller-resource.version-conflict.test.ts +372 -0
  1354. package/src/base-classes/services/controllers/abstract-controller.backend.service.ts +302 -0
  1355. package/src/base-classes/services/controllers/controller-resource.backend.service.ts +1833 -0
  1356. package/src/base-classes/services/controllers/controllers-registry-handler.backend.service.ts +494 -0
  1357. package/src/base-classes/services/controllers/validate-field-handler.backend.service.ts +613 -0
  1358. package/src/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.ts +31 -0
  1359. package/src/base-classes/services/repositories/__tests__/repository-resource.singleton-read.test.ts +50 -0
  1360. package/src/base-classes/services/repositories/postgresql-resource-repository.backend.service.ts +1207 -0
  1361. package/src/base-classes/services/repositories/repositories-registry-handler.backend.service.ts +804 -0
  1362. package/src/base-classes/services/repositories/repository-resource.backend.service.ts +2186 -0
  1363. package/src/base-classes/services/resource-operations-helper.backend.service.ts +468 -0
  1364. package/src/base-classes/services/services/__tests__/mock-services-registry-handler.service.ts +21 -0
  1365. package/src/base-classes/services/services/__tests__/services-registry-handler.notifications.test.ts +65 -0
  1366. package/src/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.ts +305 -0
  1367. package/src/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.ts +224 -0
  1368. package/src/base-classes/services/services/resource-operation-custom-implementation.factory.backend.ts +331 -0
  1369. package/src/base-classes/services/services/services-registry-handler.backend.service.ts +6288 -0
  1370. package/src/base-classes/utils/backend-type-utils.ts +64 -0
  1371. package/src/billing/services/back-office/__tests__/billing-feature-sync.backend.service.test.ts +132 -0
  1372. package/src/billing/services/back-office/__tests__/billing-state.backend.service.test.ts +245 -0
  1373. package/src/billing/services/back-office/__tests__/product-catalog-sync.backend.service.test.ts +238 -0
  1374. package/src/billing/services/back-office/abstract-billing.backend.service.ts +89 -0
  1375. package/src/billing/services/back-office/billing-feature-sync.backend.service.ts +473 -0
  1376. package/src/billing/services/back-office/billing-state.backend.service.ts +348 -0
  1377. package/src/billing/services/back-office/product-catalog-sync.backend.service.ts +415 -0
  1378. package/src/billing/services/back-office/usage-metering.backend.service.ts +326 -0
  1379. package/src/billing/services/billing.utils.ts +26 -0
  1380. package/src/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.ts +342 -0
  1381. package/src/billing/services/custom-impl/billing-custom-impl-utils.backend.ts +274 -0
  1382. package/src/billing/services/custom-impl/billing-custom-implementations.backend.ts +236 -0
  1383. package/src/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.ts +133 -0
  1384. package/src/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.ts +242 -0
  1385. package/src/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.ts +434 -0
  1386. package/src/billing/services/webhooks/billing-webhook-adapter.backend.service.ts +70 -0
  1387. package/src/billing/services/webhooks/billing-webhook-capability-handler.backend.service.ts +46 -0
  1388. package/src/billing/services/webhooks/billing-webhook-event-router.backend.service.ts +727 -0
  1389. package/src/billing/testing/billing-test-fixtures.ts +296 -0
  1390. package/src/billing/testing/mock-billing-provider.ts +548 -0
  1391. package/src/charts/controllers/__tests__/chart.backend.controller.test.ts +403 -0
  1392. package/src/charts/controllers/chart.backend.controller.ts +238 -0
  1393. package/src/charts/services/__tests__/chart-registry.backend.service.test.ts +120 -0
  1394. package/src/charts/services/chart-registry.backend.service.ts +109 -0
  1395. package/src/compliance/audit-trails/audit-logs.custom-impl.backend.service.ts +104 -0
  1396. package/src/compliance/audit-trails/services/__tests__/mock-audit-logs.service.ts +48 -0
  1397. package/src/compliance/audit-trails/services/audit-event-dispatcher.backend.service.ts +325 -0
  1398. package/src/compliance/audit-trails/services/audit-logs.backend.service.ts +1313 -0
  1399. package/src/compliance/audit-trails/services/siem-webhook-delivery.backend.service.ts +542 -0
  1400. package/src/compliance/index.ts +1 -0
  1401. package/src/config/custom/application-config-controller.backend.service.ts +119 -0
  1402. package/src/config/models/__tests__/app-config-secrets.boundaries.test.ts +56 -0
  1403. package/src/config/models/__tests__/app-config.backend-authored.definitions.test.ts +286 -0
  1404. package/src/config/models/app-config-secrets.backend.schemas.ts +154 -0
  1405. package/src/config/models/app-config.backend-authored.definitions.ts +165 -0
  1406. package/src/config/models/app-config.backend.schemas.ts +614 -0
  1407. package/src/config/models/app-env-config.backend.schemas.ts +135 -0
  1408. package/src/config/models/config-mutation-boundary.utils.ts +76 -0
  1409. package/src/config/models/postgresql-env-config.backend.schemas.ts +126 -0
  1410. package/src/config/models/runtime-topology.backend.contracts.ts +42 -0
  1411. package/src/config/services/__tests__/app-configuration-loader.backend.service.test.ts +118 -0
  1412. package/src/config/services/__tests__/app-configuration.backend.service.test.ts +40 -0
  1413. package/src/config/services/__tests__/app-configuration.backend.utils.test.ts +72 -0
  1414. package/src/config/services/__tests__/application-startup-config-validator.backend.service.test.ts +404 -0
  1415. package/src/config/services/__tests__/mock-app-configuration.service.ts +131 -0
  1416. package/src/config/services/app-configuration-loader.backend.service.ts +443 -0
  1417. package/src/config/services/app-configuration.backend.service.ts +570 -0
  1418. package/src/config/services/app-configuration.backend.utils.ts +94 -0
  1419. package/src/config/services/application-startup-config-validator.backend.service.ts +611 -0
  1420. package/src/databases/models/aggregation.backend.schemas.ts +174 -0
  1421. package/src/databases/models/databases.backend.schemas.ts +70 -0
  1422. package/src/databases/models/filter.backend.schemas.ts +101 -0
  1423. package/src/databases/models/sql.backend.schemas.ts +111 -0
  1424. package/src/databases/models/transaction.shared.schemas.ts +172 -0
  1425. package/src/databases/services/__tests__/mock-mongo-transaction-registry.service.ts +90 -0
  1426. package/src/databases/services/__tests__/mock-mongodb.service.ts +86 -0
  1427. package/src/databases/services/__tests__/mock-mongoose-model.service.ts +411 -0
  1428. package/src/databases/services/__tests__/mock-redis.service.ts +72 -0
  1429. package/src/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.ts +41 -0
  1430. package/src/databases/services/__tests__/mongo-aggregation-compiler.test.ts +918 -0
  1431. package/src/databases/services/__tests__/postgresql-filter.backend.service.test.ts +180 -0
  1432. package/src/databases/services/__tests__/sql-hybrid-transform.test.ts +73 -0
  1433. package/src/databases/services/aggregation/__tests__/aggregation-authorization.backend.service.test.ts +444 -0
  1434. package/src/databases/services/aggregation/__tests__/aggregation-query.backend.service.test.ts +150 -0
  1435. package/src/databases/services/aggregation/__tests__/computed-measure-evaluator.test.ts +525 -0
  1436. package/src/databases/services/aggregation/__tests__/field-access-validator.test.ts +458 -0
  1437. package/src/databases/services/aggregation/__tests__/time-series-densifier.test.ts +631 -0
  1438. package/src/databases/services/aggregation/__tests__/window-function-processor.test.ts +598 -0
  1439. package/src/databases/services/aggregation/aggregation-authorization.backend.service.ts +516 -0
  1440. package/src/databases/services/aggregation/aggregation-query.backend.service.ts +514 -0
  1441. package/src/databases/services/aggregation/computed-measure-evaluator.backend.service.ts +196 -0
  1442. package/src/databases/services/aggregation/field-access-validator.backend.service.ts +225 -0
  1443. package/src/databases/services/aggregation/time-series-densifier.backend.service.ts +389 -0
  1444. package/src/databases/services/aggregation/topn-processor.backend.service.ts +221 -0
  1445. package/src/databases/services/aggregation/window-function-processor.backend.service.ts +301 -0
  1446. package/src/databases/services/db-utils.ts +96 -0
  1447. package/src/databases/services/mongo-aggregation.backend.service.ts +762 -0
  1448. package/src/databases/services/mongodb.service.ts +736 -0
  1449. package/src/databases/services/postgresql-aggregation.backend.service.ts +794 -0
  1450. package/src/databases/services/postgresql-database.backend.service.ts +288 -0
  1451. package/src/databases/services/postgresql-filter.backend.service.ts +673 -0
  1452. package/src/databases/services/redis.service.ts +531 -0
  1453. package/src/databases/services/zod-to-mongoose-schema-convertor.backend.service.ts +2486 -0
  1454. package/src/databases/services/zod-to-sql-hybrid-schema.planner.ts +312 -0
  1455. package/src/errors/services/__tests__/error-builder.backend.service.test.ts +31 -0
  1456. package/src/errors/services/__tests__/error-handler.backend.service.test.ts +82 -0
  1457. package/src/errors/services/__tests__/mock-error-builder.service.ts +288 -0
  1458. package/src/errors/services/error-builder.backend.service.ts +403 -0
  1459. package/src/errors/services/error-handler.backend.service.ts +236 -0
  1460. package/src/errors/services/rate-limit.backend.service.ts +45 -0
  1461. package/src/external-providers/models/external-providers.backend.schemas.ts +243 -0
  1462. package/src/external-providers/services/__tests__/external-providers-registry.backend.service.test.ts +136 -0
  1463. package/src/external-providers/services/__tests__/feature-bindings.backend.service.test.ts +40 -0
  1464. package/src/external-providers/services/__tests__/mock-external-providers-registry.service.ts +33 -0
  1465. package/src/external-providers/services/__tests__/mock-lazy-provider-registry.service.ts +45 -0
  1466. package/src/external-providers/services/external-api-handler.backend.service.ts +19 -0
  1467. package/src/external-providers/services/external-providers-registry.backend.service.ts +534 -0
  1468. package/src/external-providers/services/feature-bindings.backend.service.ts +422 -0
  1469. package/src/external-providers/services/lazy-provider-registry.backend.service.ts +486 -0
  1470. package/src/features/__tests__/feature-builders.test.ts +152 -0
  1471. package/src/features/controllers/__tests__/features.backend.controller.test.ts +173 -0
  1472. package/src/features/controllers/features.backend.controller.ts +200 -0
  1473. package/src/features/services/__tests__/feature-definition-registry.backend.service.test.ts +152 -0
  1474. package/src/features/services/__tests__/feature-gate.test.ts +484 -0
  1475. package/src/features/services/__tests__/feature-resolution.backend.service.test.ts +203 -0
  1476. package/src/features/services/__tests__/mock-capability-bindings.service.ts +26 -0
  1477. package/src/features/services/__tests__/mock-feature-definition-registry.service.ts +56 -0
  1478. package/src/features/services/__tests__/mock-feature-resolution.service.ts +36 -0
  1479. package/src/features/services/feature-definition-registry.backend.service.ts +537 -0
  1480. package/src/features/services/feature-gate.backend.service.ts +522 -0
  1481. package/src/features/services/feature-resolution.backend.service.ts +652 -0
  1482. package/src/features/testing/feature-test-utils.ts +200 -0
  1483. package/src/files/batches/__tests__/files-cleanup.batch.backend.service.test.ts +186 -0
  1484. package/src/files/batches/files-cleanup.batch.backend.service.ts +259 -0
  1485. package/src/files/constraints/file-analyzers.types.ts +85 -0
  1486. package/src/files/constraints/file-constraint-resolver-chain.backend.service.ts +99 -0
  1487. package/src/files/constraints/file-constraint.types.ts +104 -0
  1488. package/src/files/constraints/file-validation.backend.service.ts +359 -0
  1489. package/src/files/constraints/resource-field-constraint-resolver.backend.service.ts +138 -0
  1490. package/src/files/controllers/__tests__/file.controller.behavior.test.ts +655 -0
  1491. package/src/files/controllers/file.controller.ts +1030 -0
  1492. package/src/files/handlers/__tests__/resource-file-upload-handler.backend.service.test.ts +392 -0
  1493. package/src/files/handlers/resource-file-upload-handler.backend.service.ts +605 -0
  1494. package/src/files/rag/weaviate-vector-store.backend.service.ts +271 -0
  1495. package/src/files/scanning/clamav-scanner.backend.service.ts +214 -0
  1496. package/src/files/scanning/file-scan.types.ts +17 -0
  1497. package/src/files/scanning/yara-scanner.backend.service.ts +212 -0
  1498. package/src/files/services/__tests__/file-field-detection.backend.service.test.ts +91 -0
  1499. package/src/files/services/__tests__/file-operation-handler.backend.service.test.ts +272 -0
  1500. package/src/files/services/__tests__/file-population.backend.service.test.ts +120 -0
  1501. package/src/files/services/__tests__/file-scanning.backend.service.test.ts +163 -0
  1502. package/src/files/services/__tests__/files.backend.service.test.ts +885 -0
  1503. package/src/files/services/__tests__/mock-file-field-detection.service.ts +43 -0
  1504. package/src/files/services/__tests__/mock-file-operation-handler.service.ts +113 -0
  1505. package/src/files/services/__tests__/mock-file-repository.service.ts +104 -0
  1506. package/src/files/services/file-field-detection.backend.service.ts +156 -0
  1507. package/src/files/services/file-operation-handler.backend.service.ts +861 -0
  1508. package/src/files/services/file-population.backend.service.ts +485 -0
  1509. package/src/files/services/file-rag-indexing.backend.service.ts +229 -0
  1510. package/src/files/services/file-scanning.backend.service.ts +373 -0
  1511. package/src/files/services/file-text-extraction.backend.service.ts +193 -0
  1512. package/src/files/services/files.backend.service.ts +1356 -0
  1513. package/src/files/storage/file-storage-path-resolver.backend.service.ts +289 -0
  1514. package/src/files/storage/file-storage-provider.types.ts +188 -0
  1515. package/src/files/storage/file-storage-router.backend.service.ts +172 -0
  1516. package/src/files/storage/local-directory-storage-provider.backend.service.ts +417 -0
  1517. package/src/files/storage/wildo-managed-storage-provider.backend.service.ts +530 -0
  1518. package/src/files/utils/__tests__/file-field-schema-path.backend.utils.test.ts +44 -0
  1519. package/src/files/utils/__tests__/file-uploader.utils.test.ts +57 -0
  1520. package/src/files/utils/__tests__/file-validation.utils.test.ts +559 -0
  1521. package/src/files/utils/file-field-schema-path.backend.utils.ts +385 -0
  1522. package/src/files/utils/file-upload.utils.ts +146 -0
  1523. package/src/files/utils/file-uploader.utils.ts +65 -0
  1524. package/src/files/utils/file-validation.utils.ts +753 -0
  1525. package/src/flows-actors/agent-catalogs.backend.ts +427 -0
  1526. package/src/flows-actors/controllers/flows-actors.controller.ts +91 -0
  1527. package/src/flows-actors/models/agent-catalogs.backend.definitions.ts +430 -0
  1528. package/src/flows-actors/models/agent-facets.backend.definitions.ts +120 -0
  1529. package/src/flows-actors/models/agents.backend.definitions.ts +4 -0
  1530. package/src/flows-actors/models/core-facets.backend.definitions.ts +348 -0
  1531. package/src/flows-actors/models/flows-actors.backend.definitions.ts +13 -0
  1532. package/src/flows-actors/models/flows-actors.backend.schemas.ts +44 -0
  1533. package/src/flows-actors/services/__tests__/agent-facets-catalogs.test.ts +544 -0
  1534. package/src/flows-actors/services/__tests__/agents.backend.service.cli-runtime.test.ts +234 -0
  1535. package/src/flows-actors/services/actors-system.backend.service.ts +270 -0
  1536. package/src/flows-actors/services/agent-facets.backend.service.ts +350 -0
  1537. package/src/flows-actors/services/agents.backend.service.ts +2730 -0
  1538. package/src/flows-actors/services/context-curation.backend.service.ts +203 -0
  1539. package/src/flows-actors/services/flows-actors-registry.service.ts +374 -0
  1540. package/src/flows-actors/services/flows.backend.services.ts +237 -0
  1541. package/src/flows-actors/services/prompt-compiler.backend.service.ts +734 -0
  1542. package/src/flows-actors/utils/__tests__/cli-runtime-operation-support.backend.utils.test.ts +95 -0
  1543. package/src/flows-actors/utils/cli-runtime-operation-support.backend.utils.ts +87 -0
  1544. package/src/flows-actors/utils/cli-runtime-runner.backend.utils.ts +171 -0
  1545. package/src/flows-actors/utils/flows-actors-frontend-extractor.utils.ts +63 -0
  1546. package/src/flows-actors/utils/prompt-ir-adapters.backend.utils.ts +257 -0
  1547. package/src/guidance/batches/dormancy-detection.batch.backend.service.ts +126 -0
  1548. package/src/guidance/services/__tests__/guidance-trigger-evaluator.backend.service.test.ts +49 -0
  1549. package/src/guidance/services/__tests__/lifecycle-evaluator.backend.service.test.ts +85 -0
  1550. package/src/guidance/services/__tests__/milestone-definition-registry.backend.service.test.ts +211 -0
  1551. package/src/guidance/services/__tests__/milestone-evaluator.backend.service.test.ts +561 -0
  1552. package/src/guidance/services/guidance-trigger-evaluator.backend.service.ts +151 -0
  1553. package/src/guidance/services/lifecycle-custom-implementations.backend.ts +139 -0
  1554. package/src/guidance/services/lifecycle-evaluator.backend.service.ts +908 -0
  1555. package/src/guidance/services/milestone-condition-registry.backend.service.ts +57 -0
  1556. package/src/guidance/services/milestone-definition-registry.backend.service.ts +265 -0
  1557. package/src/guidance/services/milestone-evaluator.backend.service.ts +611 -0
  1558. package/src/i18n/controllers/i18n-controller.backend.service.ts +227 -0
  1559. package/src/i18n/services/i18n.backend.service.ts +88 -0
  1560. package/src/index.ts +286 -0
  1561. package/src/inject/models/container.ts +586 -0
  1562. package/src/inject/models/service-types.ts +488 -0
  1563. package/src/monitoring/analytics/controllers/analytics.backend.controller.ts +114 -0
  1564. package/src/monitoring/analytics/services/value-moment-engine.backend.service.ts +53 -0
  1565. package/src/monitoring/analytics/services/value-moment-handler-registry.backend.service.ts +38 -0
  1566. package/src/monitoring/logger/middleware/logging.middleware.ts +40 -0
  1567. package/src/monitoring/logger/models/logger.backend.schemas.ts +56 -0
  1568. package/src/monitoring/logger/services/__tests__/mock-logger.service.ts +49 -0
  1569. package/src/monitoring/logger/services/logger.service.ts +214 -0
  1570. package/src/monitoring/observability/middleware/metrics.middleware.ts +205 -0
  1571. package/src/monitoring/observability/middleware/telemetry.middleware.ts +188 -0
  1572. package/src/monitoring/observability/middleware/tracing.middleware.ts +265 -0
  1573. package/src/monitoring/observability/models/observability.backend.schemas.ts +96 -0
  1574. package/src/monitoring/observability/services/instrumentations/custom.instrumentations.ts +132 -0
  1575. package/src/monitoring/observability/services/metrics.service.ts +266 -0
  1576. package/src/monitoring/observability/services/telemetry.service.ts +157 -0
  1577. package/src/monitoring/observability/services/tracer.service.ts +334 -0
  1578. package/src/notifications/email/components/email-components.ts +341 -0
  1579. package/src/notifications/email/models/email-context-provider.interface.ts +107 -0
  1580. package/src/notifications/email/models/email-template-definition.ts +74 -0
  1581. package/src/notifications/email/models/email-template.actors-system.backend.definitions.ts +80 -0
  1582. package/src/notifications/email/models/email.backend.scheamas.ts +0 -0
  1583. package/src/notifications/email/services/email-batch-send.batch.backend.service.ts +236 -0
  1584. package/src/notifications/email/services/email-context-provider-registry.backend.service.ts +157 -0
  1585. package/src/notifications/email/services/email-renderer.backend.service.ts +274 -0
  1586. package/src/notifications/email/services/email-template-compiler.backend.service.ts +136 -0
  1587. package/src/notifications/email/services/email-template-generation.backend.service.ts +811 -0
  1588. package/src/notifications/email/services/email-template-registry.backend.service.ts +166 -0
  1589. package/src/notifications/email/services/email-template-sandbox.backend.service.ts +255 -0
  1590. package/src/notifications/email/services/email-template-validator.backend.service.ts +229 -0
  1591. package/src/notifications/email/services/email.backend.service.ts +429 -0
  1592. package/src/notifications/email/utils/color-conversion.utils.ts +142 -0
  1593. package/src/notifications/email/utils/interpolate-email-label.utils.ts +16 -0
  1594. package/src/notifications/email/utils/zod-to-typescript.utils.ts +352 -0
  1595. package/src/notifications/services/__tests__/notifications-dispatcher.operation-semantics.test.ts +773 -0
  1596. package/src/notifications/services/__tests__/notifications-dispatcher.websocket-integration.test.ts +173 -0
  1597. package/src/notifications/services/notification-badge.backend.service.ts +412 -0
  1598. package/src/notifications/services/notifications-dispatcher.backend.service.ts +1696 -0
  1599. package/src/notifications/sms/services/sms.backend.service.ts +283 -0
  1600. package/src/notifications/webhooks/controllers/webhook-auto-controller.backend.service.ts +220 -0
  1601. package/src/notifications/webhooks/services/polymorphic-lookup.backend.service.ts +131 -0
  1602. package/src/notifications/webhooks/services/webhook-handler.backend.service.ts +481 -0
  1603. package/src/organizations/services/__tests__/org-creation-on-registration.backend.utils.test.ts +193 -0
  1604. package/src/organizations/services/__tests__/org-member-roles-validation.backend.utils.test.ts +101 -0
  1605. package/src/organizations/services/__tests__/organization-custom-implementation.backend.service.test.ts +113 -0
  1606. package/src/organizations/services/__tests__/scim-provisioning-gate.backend.utils.test.ts +94 -0
  1607. package/src/organizations/services/__tests__/user-org-type-grant.backend.utils.test.ts +164 -0
  1608. package/src/organizations/services/__tests__/user-type-revocation-on-org-leave.backend.utils.test.ts +161 -0
  1609. package/src/organizations/services/org-creation-on-registration.backend.utils.ts +119 -0
  1610. package/src/organizations/services/org-member-roles-validation.backend.utils.ts +51 -0
  1611. package/src/organizations/services/organization-custom-implementation.backend.service.ts +106 -0
  1612. package/src/organizations/services/organization-member-custom-implementation.backend.service.ts +150 -0
  1613. package/src/organizations/services/scim-provisioning-gate.backend.utils.ts +34 -0
  1614. package/src/organizations/services/user-org-type-grant.backend.utils.ts +49 -0
  1615. package/src/organizations/services/user-type-revocation-on-org-leave.backend.utils.ts +102 -0
  1616. package/src/queue/adapters/rabbitmq-adapter.backend.service.ts +494 -0
  1617. package/src/queue/apps-crontabs-manager.backend.service.ts +258 -0
  1618. package/src/queue/cron-job-sync.backend.service.ts +184 -0
  1619. package/src/queue/domain-queue-consumer.backend.service.ts +333 -0
  1620. package/src/queue/job-completion-registry.backend.service.ts +342 -0
  1621. package/src/queue/job-consumer.backend.service.ts +646 -0
  1622. package/src/queue/job-executor.backend.service.ts +315 -0
  1623. package/src/queue/job-payload-storage.backend.service.ts +297 -0
  1624. package/src/queue/job-status-tracking.backend.service.ts +376 -0
  1625. package/src/queue/queue-monitoring.backend.service.ts +333 -0
  1626. package/src/queue/queue-worker-initializer.backend.service.ts +179 -0
  1627. package/src/queue/queue.backend.service.ts +530 -0
  1628. package/src/queue/scheduled-message-verifier.backend.service.ts +228 -0
  1629. package/src/queue/worker-shutdown-manager.backend.service.ts +298 -0
  1630. package/src/requests/models/api-routes.backend.defintions.ts +45 -0
  1631. package/src/requests/models/requests.backend.schemas.ts +73 -0
  1632. package/src/requests/service/__tests__/websocket.service.auth-refresh.test.ts +361 -0
  1633. package/src/requests/service/__tests__/websocket.service.resource-room-validation.test.ts +234 -0
  1634. package/src/requests/service/__tests__/websocket.service.variant-authorization.test.ts +94 -0
  1635. package/src/requests/service/platform-mutualized-handler.backend.service.ts +19 -0
  1636. package/src/requests/service/platform-requests.backend.utils.ts +54 -0
  1637. package/src/requests/service/remote-client-base.backend.service.ts +485 -0
  1638. package/src/requests/service/serverless-services-handler.backend.service.ts +19 -0
  1639. package/src/requests/service/websocket.service.ts +2844 -0
  1640. package/src/resources/models/custom-service-implementations.backend.definition.ts +22 -0
  1641. package/src/resources/models/index.ts +7 -0
  1642. package/src/resources/models/resources-operations.backend.definitions.ts +9 -0
  1643. package/src/resources/models/resources-relationships.backend.definitions.ts +30 -0
  1644. package/src/resources/models/resources-types.backend.schemas.ts +14 -0
  1645. package/src/resources/models/resources.backend.schemas.ts +6 -0
  1646. package/src/resources/models/virtual-fields.backend.types.ts +132 -0
  1647. package/src/resources/services/__tests__/mock-resources-registry.service.ts +69 -0
  1648. package/src/resources/services/__tests__/resource-id.backend.service.test.ts +69 -0
  1649. package/src/resources/services/resource-context.backend.service.ts +1107 -0
  1650. package/src/resources/services/resource-id.backend.service.ts +280 -0
  1651. package/src/resources/services/resource-population.backend.service.ts +761 -0
  1652. package/src/resources/services/resources-registry.backend.service.ts +1126 -0
  1653. package/src/resources/services/virtual-fields.backend.service.ts +303 -0
  1654. package/src/runtime/__tests__/execution-context-creator.backend.service.test.ts +469 -0
  1655. package/src/runtime/controllers/health-controller.backend.service.ts +297 -0
  1656. package/src/runtime/domain-module.backend.definitions.test.ts +83 -0
  1657. package/src/runtime/domain-module.backend.definitions.ts +161 -0
  1658. package/src/runtime/models/execution-context.backend.schemas.ts +456 -0
  1659. package/src/runtime/models/runtime.backend.schemas.ts +82 -0
  1660. package/src/runtime/services/execution-context-creator.backend.service.ts +2102 -0
  1661. package/src/runtime/services/execution-context-handler.backend.service.ts +224 -0
  1662. package/src/runtime/services/health-readiness-contributor.backend.interface.ts +11 -0
  1663. package/src/runtime/services/http-server.backend.service.ts +870 -0
  1664. package/src/runtime/services/start-application.backend.service.ts +1109 -0
  1665. package/src/runtime/testing/execution-context-test-fixtures.ts +14 -0
  1666. package/src/runtime/testing/mock-execution-context-creator.service.ts +46 -0
  1667. package/src/runtime/utils/scan-default-exports.backend.utils.ts +247 -0
  1668. package/src/security/authentications/__tests__/auth-registration.test.ts +338 -0
  1669. package/src/security/authentications/__tests__/authentication-controller.test.ts +31 -0
  1670. package/src/security/authentications/__tests__/authentication-orchestrator.test.ts +27 -0
  1671. package/src/security/authentications/__tests__/saml-assertion-validator.test.ts +631 -0
  1672. package/src/security/authentications/__tests__/saml-authentication.test.ts +126 -0
  1673. package/src/security/authentications/__tests__/saml-integration-test-helpers.test.ts +234 -0
  1674. package/src/security/authentications/__tests__/saml-metadata.test.ts +185 -0
  1675. package/src/security/authentications/__tests__/saml-replay-guard.test.ts +99 -0
  1676. package/src/security/authentications/__tests__/saml-sso-flow.integration.test.ts +355 -0
  1677. package/src/security/authentications/__tests__/saml-test-fixtures.test.ts +433 -0
  1678. package/src/security/authentications/__tests__/saml-test-parser.test.ts +117 -0
  1679. package/src/security/authentications/__tests__/sso-connection-custom-ops.integration.test.ts +236 -0
  1680. package/src/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.ts +71 -0
  1681. package/src/security/authentications/controllers/auth-method-management-controller.backend.service.ts +205 -0
  1682. package/src/security/authentications/controllers/authentication-controller.backend.service.ts +2712 -0
  1683. package/src/security/authentications/models/auth-constants.backend.ts +141 -0
  1684. package/src/security/authentications/models/authentications.backend.schemas.ts +106 -0
  1685. package/src/security/authentications/models/jwt.backend.schemas.ts +107 -0
  1686. package/src/security/authentications/models/oauth2-connection.backend.schemas.ts +196 -0
  1687. package/src/security/authentications/models/saml-authentication.backend.schemas.ts +124 -0
  1688. package/src/security/authentications/models/sso-connection.backend.schemas.ts +104 -0
  1689. package/src/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.ts +73 -0
  1690. package/src/security/authentications/services/__tests__/mock-auth-token-issuer.service.ts +46 -0
  1691. package/src/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.ts +40 -0
  1692. package/src/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.ts +67 -0
  1693. package/src/security/authentications/services/admin-config/auth-organization-configuration.service.ts +424 -0
  1694. package/src/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.ts +244 -0
  1695. package/src/security/authentications/services/admin-config/domain-verification.backend.service.ts +215 -0
  1696. package/src/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.ts +509 -0
  1697. package/src/security/authentications/services/admin-config/oidc-discovery.backend.service.ts +250 -0
  1698. package/src/security/authentications/services/anonymous-session.backend.service.ts +442 -0
  1699. package/src/security/authentications/services/auth-credential-verifier.backend.service.ts +147 -0
  1700. package/src/security/authentications/services/auth-execution-context-factory.backend.service.ts +132 -0
  1701. package/src/security/authentications/services/auth-methods/auth-method-management.backend.service.ts +532 -0
  1702. package/src/security/authentications/services/auth-methods/auth-mfa.backend.service.ts +141 -0
  1703. package/src/security/authentications/services/auth-methods/auth-password-reset.backend.service.ts +215 -0
  1704. package/src/security/authentications/services/auth-methods/auth-phone-verification.backend.service.ts +136 -0
  1705. package/src/security/authentications/services/auth-methods/auth-registration.backend.service.ts +994 -0
  1706. package/src/security/authentications/services/auth-methods/oauth2-authentication.backend.service.ts +1210 -0
  1707. package/src/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.ts +903 -0
  1708. package/src/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.ts +791 -0
  1709. package/src/security/authentications/services/auth-methods/saml-authentication.backend.service.ts +1727 -0
  1710. package/src/security/authentications/services/auth-methods/saml-metadata.backend.service.ts +432 -0
  1711. package/src/security/authentications/services/auth-methods/saml-replay-guard.backend.service.ts +90 -0
  1712. package/src/security/authentications/services/auth-methods/webauthn.backend.service.ts +393 -0
  1713. package/src/security/authentications/services/auth-session-store.backend.service.ts +211 -0
  1714. package/src/security/authentications/services/auth-token-issuer.backend.service.ts +496 -0
  1715. package/src/security/authentications/services/authentication-orchestrator.backend.service.ts +3156 -0
  1716. package/src/security/authentications/services/custom-impls/auth-custom-implementations.backend.ts +88 -0
  1717. package/src/security/authentications/services/custom-impls/auth-policy.custom-impl.backend.service.ts +54 -0
  1718. package/src/security/authentications/services/custom-impls/scim-provisioning-config.custom-impl.backend.service.ts +167 -0
  1719. package/src/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.ts +136 -0
  1720. package/src/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.ts +123 -0
  1721. package/src/security/authentications/services/custom-impls/siem-export-config.custom-impl.backend.service.ts +161 -0
  1722. package/src/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.ts +185 -0
  1723. package/src/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.ts +792 -0
  1724. package/src/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.ts +62 -0
  1725. package/src/security/authentications/services/utils/auth-controller.utils.ts +51 -0
  1726. package/src/security/authentications/services/utils/auth-credential-ops.backend.service.ts +202 -0
  1727. package/src/security/authentications/services/utils/auth-response-helper.backend.service.ts +38 -0
  1728. package/src/security/authentications/services/utils/auth-user-lookup.backend.service.ts +128 -0
  1729. package/src/security/authentications/services/utils/saml-java-availability.ts +64 -0
  1730. package/src/security/authorizations/__tests__/authorizations.backend.service.test.ts +82 -0
  1731. package/src/security/authorizations/services/authorizations.backend.service.ts +934 -0
  1732. package/src/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.ts +168 -0
  1733. package/src/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.ts +92 -0
  1734. package/src/security/consumable-tokens/models/consumable-tokens.shared.schemas.ts +86 -0
  1735. package/src/security/consumable-tokens/models/index.ts +3 -0
  1736. package/src/security/consumable-tokens/services/__tests__/mock-consumable-token.service.ts +63 -0
  1737. package/src/security/consumable-tokens/services/consumable-token.backend.service.ts +568 -0
  1738. package/src/security/jwt/services/auth-jwt-guard.backend.service.ts +137 -0
  1739. package/src/security/jwt/services/jwt.backend.service.ts +397 -0
  1740. package/src/security/scim/__tests__/scim-filter-parser.test.ts +121 -0
  1741. package/src/security/scim/controllers/scim.backend.controller.ts +1066 -0
  1742. package/src/security/scim/models/scim-protocol.backend.schemas.ts +258 -0
  1743. package/src/security/scim/utils/scim-filter-parser.ts +289 -0
  1744. package/src/security/scim/utils/scim-response-formatter.ts +122 -0
  1745. package/src/testing.ts +30 -0
  1746. package/src/types/xmldom.d.ts +9 -0
  1747. package/src/users/services/user-self-custom-implementations.backend.ts +62 -0
@@ -0,0 +1,2222 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { injectable, inject, Container } from 'inversify';
14
+ import { Server as SocketIOServer } from 'socket.io';
15
+ import { createAdapter } from '@socket.io/redis-adapter';
16
+ import { createClient } from 'redis';
17
+ import { SAAS_SERVICE_TYPES } from '../../inject/models/service-types.js';
18
+ import { LoggerService } from '../../monitoring/logger/services/logger.service.js';
19
+ import { AppConfigurationService } from '../../config/services/app-configuration.backend.service.js';
20
+ import { RedisService } from '../../databases/services/redis.service.js';
21
+ import { ErrorBuilderBackendService } from '../../errors/services/error-builder.backend.service.js';
22
+ import { ErrorCustomMessageReference, ErrorType, ExecutionContext_ExecutionType, ResourcePrimaryScope, CoreResourceOperation, ARRAY_RESPONSE_OPERATIONS, DataMode, ResourcesConfigOperationsDtosBuilderUtils, ResourceOperationsUtils, WildoHeaderKeys, ResourceOperationVariantType, isWildoBackendError, } from '@wildo-ai/saas-models';
23
+ import { ExecutionContextCreatorBackendService, } from '../../runtime/services/execution-context-creator.backend.service.js';
24
+ import { AuthorizationsBackendService } from '../../security/authorizations/services/authorizations.backend.service.js';
25
+ import { ResourcesRegistryBackendService } from '../../resources/services/resources-registry.backend.service.js';
26
+ import { WS_ResourceSubscribePayloadSchema, WS_ResourceEditingPayloadSchema, WS_ResourceCustomEventPayloadSchema, NotificationDisplayTarget, ResourceAction, buildResourceRoomName, buildScopeRoomName, buildUserRoomName, buildOrganizationRoomName, buildOrganizationRoleRoomName, buildAppRoleRoomName, parseOrganizationRoomName, WebSocketRoomPrefix, CoreWebSocketEvent, WebSocketResourceDeliveryTarget, } from '@wildo-ai/saas-models';
27
+ function subscriptionMatchesOrganization(subscription, organizationId) {
28
+ if (subscription.scopeId === organizationId) {
29
+ return true;
30
+ }
31
+ return Object.values(subscription.contextResourceIdentifiers ?? {}).includes(organizationId);
32
+ }
33
+ /**
34
+ * Default rate limits per event type
35
+ */
36
+ const DEFAULT_RATE_LIMITS = {
37
+ // Resource subscription: 20 per 10 seconds (allow rapid page navigation)
38
+ [CoreWebSocketEvent.RESOURCE_SUBSCRIBE]: { maxEvents: 20, windowSeconds: 10 },
39
+ [CoreWebSocketEvent.RESOURCE_UNSUBSCRIBE]: { maxEvents: 20, windowSeconds: 10 },
40
+ // Editing events: 10 per minute (reasonable for form editing)
41
+ [CoreWebSocketEvent.RESOURCE_EDITING_START]: { maxEvents: 10, windowSeconds: 60 },
42
+ [CoreWebSocketEvent.RESOURCE_EDITING_END]: { maxEvents: 10, windowSeconds: 60 },
43
+ // Custom events: 30 per second (for real-time collaboration like cursor moves)
44
+ [CoreWebSocketEvent.RESOURCE_CUSTOM]: { maxEvents: 30, windowSeconds: 1 },
45
+ // Badge requests: 10 per second
46
+ [CoreWebSocketEvent.BADGE_GET]: { maxEvents: 10, windowSeconds: 1 },
47
+ [CoreWebSocketEvent.BADGE_GET_ALL]: { maxEvents: 5, windowSeconds: 1 },
48
+ // Auth/system events: 5 per minute
49
+ [CoreWebSocketEvent.AUTH_REFRESH]: { maxEvents: 5, windowSeconds: 60 },
50
+ [CoreWebSocketEvent.ORGANIZATION_SWITCH]: { maxEvents: 10, windowSeconds: 60 },
51
+ // Default for unlisted events: 100 per minute
52
+ 'default': { maxEvents: 100, windowSeconds: 60 },
53
+ };
54
+ /**
55
+ * WebSocket Service
56
+ *
57
+ * Provides real-time communication for SaaS applications:
58
+ * - Multi-tenant socket management with identity-based rooms
59
+ * - Resource-centric rooms for collaboration (editing, locking, custom events)
60
+ * - Role-based message broadcasting
61
+ * - Redis adapter for horizontal scaling
62
+ * - JWT authentication reusing ExecutionContextCreatorBackendService
63
+ * - Authorization reusing AuthorizationsBackendService
64
+ */
65
+ let WebSocketService = class WebSocketService {
66
+ logger;
67
+ configService;
68
+ errorBuilder;
69
+ redisService;
70
+ executionContextCreator;
71
+ authorizationsService;
72
+ resourcesRegistry;
73
+ container;
74
+ io = null;
75
+ userSockets = new Map(); // userId -> socketIds
76
+ rooms = new Map();
77
+ organizationSockets = new Map(); // orgId -> socketIds
78
+ // NEW: Track authenticated sockets and editing state
79
+ authenticatedSockets = new Map(); // socketId -> auth info
80
+ resourceEditingState = new Map(); // resource room -> editing userIds
81
+ resourceSubscriptionsBySocket = new Map();
82
+ logDebug;
83
+ constructor(logger, configService, errorBuilder, redisService, executionContextCreator, authorizationsService, resourcesRegistry, container) {
84
+ this.logger = logger;
85
+ this.configService = configService;
86
+ this.errorBuilder = errorBuilder;
87
+ this.redisService = redisService;
88
+ this.executionContextCreator = executionContextCreator;
89
+ this.authorizationsService = authorizationsService;
90
+ this.resourcesRegistry = resourcesRegistry;
91
+ this.container = container;
92
+ this.logDebug = this.logger.debugByType('WebSocketService');
93
+ this.logger.setDebugTypeLogging('WebSocketService', false);
94
+ }
95
+ /**
96
+ * Lazy getter for NotificationBadgeService to break circular dependency
97
+ * NotificationBadgeService depends on WebSocketService, so we resolve it lazily
98
+ */
99
+ getBadgeService() {
100
+ return this.container.get(SAAS_SERVICE_TYPES.NotificationBadgeService);
101
+ }
102
+ getSocketAuth(socket) {
103
+ return socket.auth;
104
+ }
105
+ hasOrganizationAccess(auth, organizationId) {
106
+ if (auth.executionType === ExecutionContext_ExecutionType.PUBLIC_EXECUTION) {
107
+ return false;
108
+ }
109
+ return auth.initiatorRoles.some((roleInfo) => roleInfo.relatedPrimaryScope === ResourcePrimaryScope.ORGANIZATIONS
110
+ && roleInfo.relatedResourceId === organizationId);
111
+ }
112
+ trackSocketResourceSubscription(socketId, subscription) {
113
+ const subscriptions = this.resourceSubscriptionsBySocket.get(socketId) ?? new Map();
114
+ subscriptions.set(subscription.roomName, subscription);
115
+ this.resourceSubscriptionsBySocket.set(socketId, subscriptions);
116
+ }
117
+ untrackSocketResourceSubscription(socketId, roomName) {
118
+ const subscriptions = this.resourceSubscriptionsBySocket.get(socketId);
119
+ if (!subscriptions) {
120
+ return;
121
+ }
122
+ subscriptions.delete(roomName);
123
+ if (subscriptions.size === 0) {
124
+ this.resourceSubscriptionsBySocket.delete(socketId);
125
+ }
126
+ }
127
+ async revokeTrackedResourceSubscription(params) {
128
+ const { socket, auth, subscription, reason } = params;
129
+ await socket.leave(subscription.roomName);
130
+ if (subscription.resourceId && auth.initiatorIds?.userId) {
131
+ await this.trackEditingState(subscription.resourceType, subscription.resourceId, auth.initiatorIds.userId, 'end');
132
+ this.io?.to(subscription.roomName).emit(CoreWebSocketEvent.RESOURCE_EDITING_END, {
133
+ resourceType: subscription.resourceType,
134
+ resourceId: subscription.resourceId,
135
+ initiatorUserId: auth.initiatorIds.userId,
136
+ reason,
137
+ timestamp: new Date(),
138
+ });
139
+ }
140
+ this.untrackSocketResourceSubscription(socket.id, subscription.roomName);
141
+ }
142
+ async revalidateTrackedResourceSubscriptions(socket, auth) {
143
+ const subscriptions = Array.from(this.resourceSubscriptionsBySocket.get(socket.id)?.values() ?? []);
144
+ for (const subscription of subscriptions) {
145
+ try {
146
+ if (subscription.resourceId) {
147
+ await this.verifyResourceAccess(socket, auth, subscription.resourceType, subscription.resourceId, subscription.contextResourceIdentifiers);
148
+ }
149
+ else if (subscription.scopeKey && subscription.scopeId) {
150
+ await this.verifyScopeAccess(auth, subscription.scopeKey, subscription.scopeId, subscription.contextResourceIdentifiers);
151
+ }
152
+ else {
153
+ throw new Error('Tracked resource subscription is missing routing identifiers');
154
+ }
155
+ }
156
+ catch {
157
+ await this.revokeTrackedResourceSubscription({
158
+ socket,
159
+ auth,
160
+ subscription,
161
+ reason: 'auth_refresh',
162
+ });
163
+ }
164
+ }
165
+ }
166
+ /**
167
+ * Initialize WebSocket server
168
+ *
169
+ * For platform services that don't serve frontends (e.g., crontabs-batches-manager),
170
+ * WebSocket initialization is skipped since they only receive internal backend requests.
171
+ */
172
+ async initialize(httpServer) {
173
+ const corsOrigins = this.getCorsOrigins();
174
+ // If no frontend URLs are configured, skip WebSocket initialization entirely
175
+ // This is expected for platform services that only receive backend-to-backend requests
176
+ // and don't need real-time WebSocket communication with browsers
177
+ if (corsOrigins.length === 0) {
178
+ this.logger.info('📝 No frontend URLs configured - skipping WebSocket initialization (platform/internal service mode)', {
179
+ availableEndpoints: Object.keys(this.configService.config?.runtime?.endPoints || {}),
180
+ note: 'This is expected for platform services that only receive backend-to-backend requests'
181
+ });
182
+ // Mark as "initialized" but in disabled mode - all public methods will safely no-op
183
+ this.io = null;
184
+ return;
185
+ }
186
+ const config = {
187
+ cors: {
188
+ origin: corsOrigins,
189
+ credentials: true
190
+ },
191
+ transports: ['websocket', 'polling'],
192
+ pingTimeout: 60000,
193
+ pingInterval: 25000,
194
+ maxHttpBufferSize: 1e6,
195
+ allowEIO3: true
196
+ };
197
+ this.io = new SocketIOServer(httpServer, config);
198
+ // Setup Redis adapter for horizontal scaling
199
+ await this.setupRedisAdapter();
200
+ // Setup authentication middleware (FACTORIZED with HTTP)
201
+ this.setupAuthentication();
202
+ // Setup rate limiting middleware (Redis-synchronized across pods)
203
+ this.setupRateLimiting();
204
+ // Setup connection handling (identity-based rooms)
205
+ this.setupConnectionHandling();
206
+ this.logDebug('WebSocket service initialized', {
207
+ cors: config.cors.origin,
208
+ transports: config.transports
209
+ });
210
+ }
211
+ // =====================================================
212
+ // PUBLIC MESSAGING METHODS
213
+ // =====================================================
214
+ /**
215
+ * Send message to specific user (with cross-pod support via Redis adapter)
216
+ */
217
+ async sendToUser(userId, message) {
218
+ if (!this.io) {
219
+ this.logger.warn('WebSocket not initialized');
220
+ return false;
221
+ }
222
+ const roomName = buildUserRoomName(userId);
223
+ this.io.to(roomName).emit(message.type, {
224
+ ...message,
225
+ timestamp: new Date(),
226
+ });
227
+ this.logDebug('Message sent to user', {
228
+ userId: userId.substring(0, 8) + '...',
229
+ messageType: message.type,
230
+ });
231
+ return true;
232
+ }
233
+ /**
234
+ * Send a direct notification to a specific user.
235
+ *
236
+ * This is a convenience method for sending user notifications that are not
237
+ * tied to resource operations (e.g., "Your export is ready", "Payment received").
238
+ *
239
+ * @param userId - The user ID to notify
240
+ * @param notification - Notification configuration
241
+ * @param notification.type - Notification level (info, success, warning, error)
242
+ * @param notification.identifier - i18n identifier for message lookup
243
+ * @param notification.message - Direct message (fallback if identifier not found)
244
+ * @param notification.title - Optional notification title
245
+ * @param notification.data - Additional context data
246
+ * @param notification.displayTarget - Where to display (toast, center, or both)
247
+ * @param notification.organizationId - Organization context (optional)
248
+ *
249
+ * @example
250
+ * // Notify user about export completion
251
+ * await webSocketService.notifyUser(userId, {
252
+ * type: NotificationLevel.SUCCESS,
253
+ * identifier: 'export.completed',
254
+ * data: { fileName: 'report.pdf', downloadUrl: '/files/123' },
255
+ * });
256
+ *
257
+ * @example
258
+ * // Notify user with direct message
259
+ * await webSocketService.notifyUser(userId, {
260
+ * type: NotificationLevel.INFO,
261
+ * message: 'Your session will expire in 5 minutes',
262
+ * displayTarget: NotificationDisplayTarget.TOAST,
263
+ * });
264
+ */
265
+ async notifyUser(userId, notification) {
266
+ const payload = {
267
+ notificationLevel: notification.type,
268
+ identifier: notification.identifier,
269
+ message: notification.message,
270
+ title: notification.title,
271
+ data: notification.data,
272
+ displayTarget: notification.displayTarget ?? NotificationDisplayTarget.BOTH,
273
+ organizationId: notification.organizationId,
274
+ timestamp: new Date(),
275
+ };
276
+ const wsMessage = {
277
+ type: CoreWebSocketEvent.USER_NOTIFICATION,
278
+ payload,
279
+ timestamp: new Date(),
280
+ userId,
281
+ organizationId: notification.organizationId,
282
+ };
283
+ return this.sendToUser(userId, wsMessage);
284
+ }
285
+ /**
286
+ * Send a direct notification to all users in an organization.
287
+ *
288
+ * @param organizationId - The organization ID
289
+ * @param notification - Notification configuration (same as notifyUser)
290
+ * @param excludeUsers - Optional list of user IDs to exclude
291
+ */
292
+ async notifyOrganization(organizationId, notification, excludeUsers) {
293
+ const payload = {
294
+ notificationLevel: notification.type,
295
+ identifier: notification.identifier,
296
+ message: notification.message,
297
+ title: notification.title,
298
+ data: notification.data,
299
+ displayTarget: notification.displayTarget ?? NotificationDisplayTarget.BOTH,
300
+ organizationId,
301
+ timestamp: new Date(),
302
+ };
303
+ const wsMessage = {
304
+ type: CoreWebSocketEvent.USER_NOTIFICATION,
305
+ payload,
306
+ timestamp: new Date(),
307
+ organizationId,
308
+ };
309
+ return this.sendToOrganization(organizationId, wsMessage, excludeUsers);
310
+ }
311
+ /**
312
+ * Send message to organization (with cross-pod support via Redis adapter)
313
+ */
314
+ async sendToOrganization(organizationId, message, excludeUsers) {
315
+ const roomName = buildOrganizationRoomName(organizationId);
316
+ const messageWithTimestamp = {
317
+ ...message,
318
+ timestamp: new Date(),
319
+ organizationId
320
+ };
321
+ if (!this.io) {
322
+ this.logger.warn('WebSocket not initialized');
323
+ return 0;
324
+ }
325
+ if (excludeUsers && excludeUsers.length > 0) {
326
+ // For cross-pod compatibility with Redis adapter:
327
+ // 1. Send to the org room (reaches all pods)
328
+ // 2. Exclude users by emitting to their user rooms with a "skip" flag
329
+ //
330
+ // Alternative approach: Use Socket.IO's except() which works with Redis adapter
331
+ const excludeRooms = excludeUsers.map(userId => buildUserRoomName(userId));
332
+ let broadcast = this.io.to(roomName);
333
+ for (const excludeRoom of excludeRooms) {
334
+ broadcast = broadcast.except(excludeRoom);
335
+ }
336
+ broadcast.emit(message.type, messageWithTimestamp);
337
+ this.logDebug('Message sent to organization with exclusions', {
338
+ organizationId: organizationId.substring(0, 8) + '...',
339
+ messageType: message.type,
340
+ excludedUsers: excludeUsers.length,
341
+ });
342
+ // Return approximate count (exact count not available with except())
343
+ return 1;
344
+ }
345
+ else {
346
+ this.io.to(roomName).emit(message.type, messageWithTimestamp);
347
+ this.logDebug('Message sent to organization', {
348
+ organizationId: organizationId.substring(0, 8) + '...',
349
+ messageType: message.type,
350
+ });
351
+ return 1;
352
+ }
353
+ }
354
+ /**
355
+ * Send message to users with specific role within an organization
356
+ */
357
+ async sendToRole(organizationId, role, message) {
358
+ const roomName = buildOrganizationRoleRoomName(organizationId, role);
359
+ const messageWithTimestamp = {
360
+ ...message,
361
+ timestamp: new Date(),
362
+ organizationId
363
+ };
364
+ if (!this.io) {
365
+ this.logger.warn('WebSocket not initialized');
366
+ return 0;
367
+ }
368
+ const sentCount = (await this.io.in(roomName).fetchSockets()).length;
369
+ this.io.to(roomName).emit(message.type, messageWithTimestamp);
370
+ this.logDebug('Message sent to role', {
371
+ organizationId: organizationId.substring(0, 8) + '...',
372
+ role,
373
+ messageType: message.type,
374
+ sentCount
375
+ });
376
+ return sentCount;
377
+ }
378
+ /**
379
+ * Send message to users with application-level role (admin dashboard users).
380
+ *
381
+ * Application-level roles are not scoped to an organization - they are global
382
+ * admin roles like super admins, support staff, billing admins, etc.
383
+ *
384
+ * Users with app-level roles join app role rooms (via buildAppRoleRoomName) on connection.
385
+ *
386
+ * @param role - The application-level role (e.g., 'admin', 'super_admin', 'support')
387
+ * @param message - The WebSocket message to send
388
+ * @returns Number of sockets the message was sent to
389
+ *
390
+ * @example
391
+ * // Notify all application administrators
392
+ * await webSocketService.sendToAppRole(CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN, {
393
+ * type: CoreWebSocketEvent.USER_NOTIFICATION,
394
+ * payload: { notificationLevel: NotificationLevel.WARNING, message: 'New user signup requires review' },
395
+ * timestamp: new Date(),
396
+ * });
397
+ */
398
+ async sendToAppRole(role, message) {
399
+ const roomName = buildAppRoleRoomName(role);
400
+ const messageWithTimestamp = {
401
+ ...message,
402
+ timestamp: new Date(),
403
+ };
404
+ if (!this.io) {
405
+ this.logger.warn('WebSocket not initialized');
406
+ return 0;
407
+ }
408
+ const sentCount = (await this.io.in(roomName).fetchSockets()).length;
409
+ this.io.to(roomName).emit(message.type, messageWithTimestamp);
410
+ this.logDebug('Message sent to app role', {
411
+ role,
412
+ messageType: message.type,
413
+ sentCount
414
+ });
415
+ return sentCount;
416
+ }
417
+ /**
418
+ * Send a direct notification to users with a specific application-level role.
419
+ *
420
+ * Convenience method for sending admin notifications.
421
+ *
422
+ * @param role - The application-level role
423
+ * @param notification - Notification configuration
424
+ *
425
+ * @example
426
+ * // Notify support staff about a new ticket
427
+ * await webSocketService.notifyAppRole(CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN, {
428
+ * type: NotificationLevel.INFO,
429
+ * identifier: 'support.new_ticket',
430
+ * data: { ticketId: '123', subject: 'Help needed' },
431
+ * });
432
+ */
433
+ async notifyAppRole(role, notification) {
434
+ const payload = {
435
+ notificationLevel: notification.type,
436
+ identifier: notification.identifier,
437
+ message: notification.message,
438
+ title: notification.title,
439
+ data: notification.data,
440
+ displayTarget: notification.displayTarget ?? NotificationDisplayTarget.BOTH,
441
+ timestamp: new Date(),
442
+ };
443
+ const wsMessage = {
444
+ type: CoreWebSocketEvent.USER_NOTIFICATION,
445
+ payload,
446
+ timestamp: new Date(),
447
+ };
448
+ return this.sendToAppRole(role, wsMessage);
449
+ }
450
+ /**
451
+ * Broadcast message to all connected users
452
+ */
453
+ async broadcast(message) {
454
+ if (!this.io) {
455
+ this.logger.warn('WebSocket not initialized');
456
+ return 0;
457
+ }
458
+ const messageWithTimestamp = {
459
+ ...message,
460
+ timestamp: new Date()
461
+ };
462
+ const sockets = await this.io.fetchSockets();
463
+ this.io.emit(message.type, messageWithTimestamp);
464
+ this.logDebug('Message broadcasted', {
465
+ messageType: message.type,
466
+ connectedSockets: sockets.length
467
+ });
468
+ return sockets.length;
469
+ }
470
+ // =====================================================
471
+ // RESOURCE ROOM PUBLIC METHODS (for NotificationDispatcher)
472
+ // =====================================================
473
+ /**
474
+ * Extract DataMode from a websocket payload.
475
+ * Defaults to RAW for websocket messages when no explicit data mode is present.
476
+ */
477
+ extractDataMode(payload) {
478
+ return ResourceOperationsUtils.extractDataMode(payload, undefined, DataMode.RAW);
479
+ }
480
+ /**
481
+ * Select the appropriate response DTO based on DataMode.
482
+ * Similar to controller-resource.backend.service.ts
483
+ */
484
+ selectResponseDto(operation, dataMode) {
485
+ if (!operation) {
486
+ return undefined;
487
+ }
488
+ return ResourcesConfigOperationsDtosBuilderUtils.selectResponseDto(operation, dataMode) || undefined;
489
+ }
490
+ /**
491
+ * Validate and transform websocket resource data before sending it.
492
+ * Similar to controller-resource.backend.service.ts sendResponse() method.
493
+ *
494
+ * This method validates resource data against the appropriate DTO and transforms dates.
495
+ * It is used for sync-grade replay payloads and for custom websocket events that
496
+ * choose to carry resource-shaped data.
497
+ *
498
+ * @param resourceData - The resource data to validate (if present in payload)
499
+ * @param resourceType - Resource type
500
+ * @param operationIdentifier - Operation identifier (optional)
501
+ * @param dataMode - Data mode (defaults to RAW)
502
+ * @returns Validated and transformed resource data, or false when validation cannot proceed
503
+ */
504
+ resolveOperationForWebSocketValidation(params) {
505
+ const desiredOperationIdentifier = params.validationTarget === 'canonical-read'
506
+ ? CoreResourceOperation.READ
507
+ : params.operationIdentifier ?? CoreResourceOperation.READ;
508
+ try {
509
+ const operationPath = this.resourcesRegistry.getOperationPathDefault(params.resourceType, desiredOperationIdentifier);
510
+ return this.resourcesRegistry.getOperationFromPath(operationPath);
511
+ }
512
+ catch (error) {
513
+ this.logger.warn('WebSocket resource data validation lookup failed', {
514
+ resourceType: params.resourceType,
515
+ operationIdentifier: params.operationIdentifier,
516
+ desiredOperationIdentifier,
517
+ dataMode: params.dataMode,
518
+ validationTarget: params.validationTarget,
519
+ error: error instanceof Error ? error.message : 'Unknown',
520
+ });
521
+ return null;
522
+ }
523
+ }
524
+ validateAndTransformResourceData(resourceData, resourceType, operationIdentifier, dataMode = DataMode.RAW, validationTarget = 'canonical-read') {
525
+ // If no resource data provided, signal the caller to emit metadata only.
526
+ if (!resourceData || typeof resourceData !== 'object') {
527
+ return { success: false };
528
+ }
529
+ const operation = this.resolveOperationForWebSocketValidation({
530
+ resourceType,
531
+ operationIdentifier,
532
+ dataMode,
533
+ validationTarget,
534
+ });
535
+ if (!operation) {
536
+ return { success: false };
537
+ }
538
+ // Select appropriate DTO based on DataMode
539
+ const selectedDto = this.selectResponseDto(operation, dataMode);
540
+ if (!selectedDto) {
541
+ return { success: false };
542
+ }
543
+ try {
544
+ // Transform dates from Date objects to ISO strings before validation
545
+ let transformedData = resourceData;
546
+ transformedData = ResourcesConfigOperationsDtosBuilderUtils.transformResponseDates(resourceData, selectedDto);
547
+ // Validate response against the selected DTO as a runtime safety net
548
+ // Handle array responses (LIST, CREATE_MANY, etc.)
549
+ const effectiveOperation = operation.resourceOperationLike || operation.operationIdentifier;
550
+ const isArrayOperation = ARRAY_RESPONSE_OPERATIONS.includes(effectiveOperation);
551
+ if (isArrayOperation && Array.isArray(transformedData)) {
552
+ // For array operations, validate each item individually
553
+ return {
554
+ success: true,
555
+ data: transformedData.map(item => selectedDto.parse(item)),
556
+ };
557
+ }
558
+ else {
559
+ // For single-item operations, validate directly
560
+ return {
561
+ success: true,
562
+ data: selectedDto.parse(transformedData),
563
+ };
564
+ }
565
+ }
566
+ catch (error) {
567
+ this.logger.warn('WebSocket resource data validation failed', {
568
+ resourceType,
569
+ operationIdentifier,
570
+ dataMode,
571
+ error: error instanceof Error ? error.message : 'Unknown',
572
+ resourceDataKeys: typeof resourceData === 'object' ? Object.keys(resourceData) : 'not-object'
573
+ });
574
+ return { success: false };
575
+ }
576
+ }
577
+ stripScopeNotificationReplayFields(payload) {
578
+ const { resourceData: _resourceData, fieldMeta: _fieldMeta, version: _version, dataMode: _dataMode, ...notificationPayload } = payload;
579
+ return notificationPayload;
580
+ }
581
+ validateAndTransformSyncReplayData(params) {
582
+ const dataMode = params.dataMode ?? DataMode.RAW;
583
+ if (!params.resourceData || typeof params.resourceData !== 'object') {
584
+ this.logger.warn('WebSocket sync replay payload is missing resource data', {
585
+ resourceType: params.resourceType,
586
+ dataMode,
587
+ });
588
+ return { success: false };
589
+ }
590
+ const readOperation = this.resolveOperationForWebSocketValidation({
591
+ resourceType: params.resourceType,
592
+ dataMode,
593
+ validationTarget: 'canonical-read',
594
+ });
595
+ if (!readOperation) {
596
+ return { success: false };
597
+ }
598
+ const selectedDto = this.selectResponseDto(readOperation, dataMode);
599
+ if (!selectedDto) {
600
+ this.logger.warn('WebSocket sync replay payload missing canonical READ DTO', {
601
+ resourceType: params.resourceType,
602
+ dataMode,
603
+ });
604
+ return { success: false };
605
+ }
606
+ try {
607
+ const transformedData = ResourcesConfigOperationsDtosBuilderUtils.transformResponseDates(params.resourceData, selectedDto);
608
+ return {
609
+ success: true,
610
+ data: selectedDto.parse(transformedData),
611
+ };
612
+ }
613
+ catch (error) {
614
+ this.logger.warn('WebSocket sync replay validation failed', {
615
+ resourceType: params.resourceType,
616
+ dataMode,
617
+ error: error instanceof Error ? error.message : 'Unknown',
618
+ resourceDataKeys: typeof params.resourceData === 'object' ? Object.keys(params.resourceData) : 'not-object',
619
+ });
620
+ return { success: false };
621
+ }
622
+ }
623
+ /**
624
+ * Emit to a specific resource room (path-independent)
625
+ * Called by NotificationDispatcherService after CRUD operations
626
+ *
627
+ * Resource-room sync payloads now validate replay-grade resource data when it
628
+ * is present in the payload.
629
+ *
630
+ * @param resourceType - Resource type
631
+ * @param resourceId - Resource ID
632
+ * @param event - WebSocket event name
633
+ * @param payload - Resource-room payload. Sync-grade update payloads carry authoritative
634
+ * `version` + `resourceData`; delete/state payloads intentionally do not.
635
+ *
636
+ * @example
637
+ * // Send notification-grade metadata only
638
+ * websocketService.emitToResourceRoom('users', 'userId123', CoreWebSocketEvent.RESOURCE_UPDATED, {
639
+ * resourceType: 'users',
640
+ * resourceId: 'userId123',
641
+ * contextResourceIdentifiers: {},
642
+ * action: ResourceAction.UPDATED,
643
+ * operationIdentifier: CoreResourceOperation.UPDATE
644
+ * });
645
+ *
646
+ * @example
647
+ * // Send synchronization-grade replay data for RESOURCE_ROOM_SYNC
648
+ * websocketService.emitToResourceRoom('users', 'userId123', CoreWebSocketEvent.RESOURCE_UPDATED, {
649
+ * resourceType: 'users',
650
+ * resourceId: 'userId123',
651
+ * contextResourceIdentifiers: {},
652
+ * action: ResourceAction.UPDATED,
653
+ * operationIdentifier: CoreResourceOperation.UPDATE,
654
+ * resourceData: updatedUserObject, // Full resource object
655
+ * dataMode: DataMode.RAW // or DataMode.SUMMARY, DataMode.CONTEXT
656
+ * });
657
+ */
658
+ emitToResourceRoom(resourceType, resourceId, event, payload) {
659
+ if (!this.io) {
660
+ this.logger.warn('WebSocket not initialized, cannot emit to resource room');
661
+ return false;
662
+ }
663
+ // Only sync-grade resource-room payloads are allowed to act like
664
+ // authoritative replay input for clients. Notification-grade room payloads
665
+ // still emit, but they do not go through the stricter canonical replay gate.
666
+ const shouldValidateSyncReplay = payload.deliveryTarget === WebSocketResourceDeliveryTarget.RESOURCE_ROOM_SYNC
667
+ && 'resourceData' in payload;
668
+ let payloadToEmit = payload;
669
+ let dataMode = DataMode.RAW;
670
+ if (shouldValidateSyncReplay) {
671
+ dataMode = this.extractDataMode({ dataMode: payload.dataMode });
672
+ const validation = this.validateAndTransformSyncReplayData({
673
+ resourceData: payload.resourceData,
674
+ resourceType,
675
+ dataMode,
676
+ });
677
+ if (!validation.success) {
678
+ this.logDebug('Skipped resource-room emit: sync replay payload failed canonical validation', {
679
+ resourceType,
680
+ resourceId,
681
+ event,
682
+ deliveryTarget: payload.deliveryTarget,
683
+ });
684
+ return false;
685
+ }
686
+ payloadToEmit = {
687
+ ...payload,
688
+ resourceData: validation.data,
689
+ };
690
+ }
691
+ const roomName = buildResourceRoomName(resourceType, resourceId);
692
+ this.io.to(roomName).emit(event, payloadToEmit);
693
+ this.logDebug('Emitted to resource room', {
694
+ roomName,
695
+ event,
696
+ dataMode: shouldValidateSyncReplay ? dataMode : undefined,
697
+ hasResourceData: shouldValidateSyncReplay,
698
+ deliveryTarget: payload.deliveryTarget,
699
+ });
700
+ return true;
701
+ }
702
+ /**
703
+ * Helper method to send resource data via WebSocket with automatic validation.
704
+ *
705
+ * This is a convenience method that prepares a payload with resource data and sends it
706
+ * to a resource room. Use this when you want to send authoritative resource objects via
707
+ * WebSocket.
708
+ *
709
+ * @param resourceType - Resource type
710
+ * @param resourceId - Resource ID
711
+ * @param event - WebSocket event name (e.g., CoreWebSocketEvent.RESOURCE_UPDATED)
712
+ * @param action - Resource action (ResourceAction.CREATED, UPDATED, DELETED)
713
+ * @param resourceData - The resource data object to send (will be validated and transformed)
714
+ * @param options - Optional configuration
715
+ * @param options.operationIdentifier - Operation identifier (e.g., CoreResourceOperation.UPDATE)
716
+ * @param options.dataMode - Data mode (defaults to RAW)
717
+ * @param options.contextResourceIdentifiers - Context resource identifiers
718
+ * @param options.affectedIds - Array of affected resource IDs
719
+ * @param options.initiatorUserId - User ID of the initiator
720
+ *
721
+ * @example
722
+ * // Send updated user resource
723
+ * await websocketService.sendResourceData(
724
+ * 'users',
725
+ * 'userId123',
726
+ * CoreWebSocketEvent.RESOURCE_UPDATED,
727
+ * ResourceAction.UPDATED,
728
+ * updatedUserObject,
729
+ * {
730
+ * operationIdentifier: CoreResourceOperation.UPDATE,
731
+ * dataMode: DataMode.RAW,
732
+ * contextResourceIdentifiers: {},
733
+ * initiatorUserId: 'currentUserId'
734
+ * }
735
+ * );
736
+ *
737
+ * @example
738
+ * // Send created resource with summary data
739
+ * await websocketService.sendResourceData(
740
+ * 'todos',
741
+ * 'todoId456',
742
+ * CoreWebSocketEvent.RESOURCE_UPDATED,
743
+ * ResourceAction.CREATED,
744
+ * newTodoObject,
745
+ * {
746
+ * operationIdentifier: CoreResourceOperation.CREATE,
747
+ * dataMode: DataMode.SUMMARY, // Use summary for list refreshes
748
+ * contextResourceIdentifiers: { organizationId: 'org123' },
749
+ * initiatorUserId: 'currentUserId'
750
+ * }
751
+ * );
752
+ */
753
+ sendResourceData(resourceType, resourceId, event, action, resourceData, options = {}) {
754
+ const { operationIdentifier, dataMode = DataMode.RAW, contextResourceIdentifiers = {}, affectedIds, initiatorUserId, version, } = options;
755
+ // Convert DataMode enum to string for schema compatibility
756
+ const effectiveDataMode = typeof dataMode === 'string'
757
+ ? ResourceOperationsUtils.normalizeDataModeString(dataMode) || DataMode.RAW
758
+ : dataMode || DataMode.RAW;
759
+ const dataModeString = ResourceOperationsUtils.dataModeToString(effectiveDataMode);
760
+ const resolvedVersion = version ?? (resourceData && typeof resourceData === 'object'
761
+ ? resourceData._version
762
+ : undefined);
763
+ if (action !== ResourceAction.DELETED && resolvedVersion == null) {
764
+ this.logger.warn('sendResourceData skipped sync payload without authoritative version', {
765
+ resourceType,
766
+ resourceId,
767
+ event,
768
+ action,
769
+ });
770
+ return;
771
+ }
772
+ const payload = action === ResourceAction.DELETED
773
+ ? {
774
+ deliveryTarget: WebSocketResourceDeliveryTarget.RESOURCE_ROOM_SYNC,
775
+ resourceType,
776
+ resourceId,
777
+ contextResourceIdentifiers,
778
+ action: ResourceAction.DELETED,
779
+ operationIdentifier: operationIdentifier ?? CoreResourceOperation.DELETE,
780
+ affectedIds,
781
+ initiatorUserId,
782
+ timestamp: new Date(),
783
+ }
784
+ : {
785
+ deliveryTarget: WebSocketResourceDeliveryTarget.RESOURCE_ROOM_SYNC,
786
+ resourceType,
787
+ resourceId,
788
+ contextResourceIdentifiers,
789
+ action,
790
+ operationIdentifier: operationIdentifier ?? CoreResourceOperation.UPDATE,
791
+ resourceData,
792
+ dataMode: dataModeString,
793
+ affectedIds,
794
+ initiatorUserId,
795
+ timestamp: new Date(),
796
+ version: resolvedVersion,
797
+ };
798
+ this.emitToResourceRoom(resourceType, resourceId, event, payload);
799
+ }
800
+ /**
801
+ * Emit to scope rooms (collections) for list refresh
802
+ * Called by NotificationDispatcherService after CRUD operations
803
+ *
804
+ * Scope-room payloads validate resource-shaped data when it is present in the
805
+ * payload, while still treating these emissions as notification-grade rather
806
+ * than replay-grade sync.
807
+ *
808
+ * @param resourceType - Resource type
809
+ * @param scopes - Array of scope rooms to emit to
810
+ * @param event - WebSocket event name
811
+ * @param payload - Payload with optional resourceData and dataMode
812
+ *
813
+ * @example
814
+ * // Send notification-grade metadata for list refresh
815
+ * websocketService.emitToScopeRooms('users', [{ scopeKey: 'organization', scopeId: 'org123' }],
816
+ * CoreWebSocketEvent.RESOURCE_UPDATED, { ... });
817
+ *
818
+ * @example
819
+ * // Send optional summary data for list refresh
820
+ * websocketService.emitToScopeRooms('users', [{ scopeKey: 'organization', scopeId: 'org123' }],
821
+ * CoreWebSocketEvent.RESOURCE_UPDATED, {
822
+ * ...metadata,
823
+ * resourceData: updatedUserObject,
824
+ * dataMode: DataMode.SUMMARY // Use SUMMARY for list refreshes
825
+ * });
826
+ */
827
+ emitToScopeRooms(resourceType, scopes, event, payload) {
828
+ if (!this.io)
829
+ return;
830
+ // Extract DataMode and validate resource data if present
831
+ const dataMode = this.extractDataMode({ dataMode: payload.dataMode });
832
+ let validatedPayload = { ...payload };
833
+ const resourceData = payload.resourceData;
834
+ // Scope-room payloads stay notification-grade. If DTO shaping fails, strip
835
+ // replay-like fields rather than emitting non-canonical bodies; list
836
+ // invalidation is still useful even when authoritative replay truth is not.
837
+ if (resourceData) {
838
+ const validation = this.validateAndTransformResourceData(resourceData, resourceType, undefined, dataMode, 'canonical-read');
839
+ if (validation.success) {
840
+ validatedPayload = {
841
+ ...validatedPayload,
842
+ resourceData: validation.data,
843
+ };
844
+ }
845
+ else {
846
+ validatedPayload = this.stripScopeNotificationReplayFields(validatedPayload);
847
+ }
848
+ }
849
+ for (const scope of scopes) {
850
+ const roomName = buildScopeRoomName(resourceType, scope.scopeKey, scope.scopeId);
851
+ this.io.to(roomName).emit(event, validatedPayload);
852
+ }
853
+ this.logDebug('Emitted to scope rooms', {
854
+ resourceType,
855
+ scopeCount: scopes.length,
856
+ event,
857
+ dataMode,
858
+ hasResourceData: !!resourceData,
859
+ deliveryTarget: payload.deliveryTarget,
860
+ });
861
+ }
862
+ /**
863
+ * Get all users currently editing a resource
864
+ */
865
+ async getResourceEditingUsers(resourceType, resourceId) {
866
+ const prefix = this.redisService.getAppPrefix();
867
+ const key = `${prefix}editing:${resourceType}:${resourceId}`;
868
+ const redisClient = this.redisService.getClient();
869
+ if (!redisClient) {
870
+ return Array.from(this.resourceEditingState.get(key) || []);
871
+ }
872
+ try {
873
+ const editing = await redisClient.hGetAll(key);
874
+ return Object.keys(editing);
875
+ }
876
+ catch {
877
+ return Array.from(this.resourceEditingState.get(key) || []);
878
+ }
879
+ }
880
+ // =====================================================
881
+ // ROOM MANAGEMENT
882
+ // =====================================================
883
+ /**
884
+ * Create custom room
885
+ */
886
+ async createRoom(roomName, organizationId, type = 'custom', metadata) {
887
+ const room = {
888
+ name: roomName,
889
+ organizationId,
890
+ type,
891
+ members: new Set(),
892
+ metadata
893
+ };
894
+ this.rooms.set(roomName, room);
895
+ this.logDebug('Room created', {
896
+ roomName,
897
+ organizationId: organizationId.substring(0, 8) + '...',
898
+ type,
899
+ });
900
+ }
901
+ /**
902
+ * Join user to room
903
+ */
904
+ async joinRoom(userId, roomName) {
905
+ const socketIds = this.userSockets.get(userId);
906
+ const room = this.rooms.get(roomName);
907
+ if (!socketIds || !room || !this.io) {
908
+ return false;
909
+ }
910
+ room.members.add(userId);
911
+ for (const socketId of socketIds) {
912
+ const socket = this.io.sockets.sockets.get(socketId);
913
+ if (socket) {
914
+ await socket.join(roomName);
915
+ }
916
+ }
917
+ this.logDebug('User joined room', { userId: userId.substring(0, 8) + '...', roomName });
918
+ return true;
919
+ }
920
+ /**
921
+ * Remove user from room
922
+ */
923
+ async leaveRoom(userId, roomName) {
924
+ const socketIds = this.userSockets.get(userId);
925
+ const room = this.rooms.get(roomName);
926
+ if (!socketIds || !room || !this.io) {
927
+ return false;
928
+ }
929
+ room.members.delete(userId);
930
+ for (const socketId of socketIds) {
931
+ const socket = this.io.sockets.sockets.get(socketId);
932
+ if (socket) {
933
+ await socket.leave(roomName);
934
+ }
935
+ }
936
+ this.logDebug('User left room', { userId: userId.substring(0, 8) + '...', roomName });
937
+ return true;
938
+ }
939
+ // =====================================================
940
+ // STATUS METHODS
941
+ // =====================================================
942
+ getConnectedUsersCount() {
943
+ return this.authenticatedSockets.size;
944
+ }
945
+ getOrganizationUsersCount(organizationId) {
946
+ const socketIds = this.organizationSockets.get(organizationId);
947
+ return socketIds ? socketIds.size : 0;
948
+ }
949
+ isUserConnected(userId) {
950
+ const socketIds = this.userSockets.get(userId);
951
+ return socketIds ? socketIds.size > 0 : false;
952
+ }
953
+ getRoomInfo(roomName) {
954
+ return this.rooms.get(roomName);
955
+ }
956
+ // =====================================================
957
+ // PRIVATE SETUP METHODS
958
+ // =====================================================
959
+ /**
960
+ * Get CORS origins from app-config runtime endpoints
961
+ */
962
+ getCorsOrigins() {
963
+ // Config must be initialized - this is ensured by the initialization order:
964
+ // 1. AppsUpdaterConfigService fetches config from apps-manager
965
+ // 2. Standard AppConfigurationService is initialized with that config
966
+ // 3. HTTP server starts, which initializes WebSocket
967
+ // If config is not initialized here, it's a programming error - fail fast
968
+ if (!this.configService.isInitialized()) {
969
+ throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {
970
+ customMessageReference: ErrorCustomMessageReference.APP_CONFIGURATION_NOT_INITIALIZED,
971
+ context: {
972
+ message: 'Application configuration not initialized : use config before using the service',
973
+ service: 'WebSocketService',
974
+ operation: 'getCorsOrigins'
975
+ }
976
+ });
977
+ }
978
+ const config = this.configService.config;
979
+ const frontendServices = Object.keys(config.frontendServices ?? {});
980
+ return frontendServices.map((frontendServiceName) => {
981
+ const url = config.runtime?.endPoints?.[frontendServiceName]?.publicUrl;
982
+ if (!url) {
983
+ throw new Error(`Missing runtime.endPoints.${frontendServiceName}.publicUrl for declared frontend service "${frontendServiceName}". ` +
984
+ 'WebSocket CORS cannot be derived from an incomplete runtime topology.');
985
+ }
986
+ return url;
987
+ });
988
+ }
989
+ /**
990
+ * Setup Redis adapter for horizontal scaling across Kubernetes pods
991
+ */
992
+ async setupRedisAdapter() {
993
+ try {
994
+ if (!this.io) {
995
+ throw new Error('Socket.IO server not initialized');
996
+ }
997
+ // Check if config is initialized before accessing
998
+ if (!this.configService.isInitialized()) {
999
+ this.logger.warn('App config not initialized, using memory adapter (single instance only)');
1000
+ return;
1001
+ }
1002
+ const appConfig = this.configService.config;
1003
+ const appSecrets = this.configService.secrets;
1004
+ if (!appConfig.database.redis) {
1005
+ this.logger.warn('Redis not configured, using memory adapter (single instance only)');
1006
+ return;
1007
+ }
1008
+ const redisHost = appConfig.database.redis.host;
1009
+ const redisPort = appConfig.database.redis.port || 6379;
1010
+ const redisPassword = appSecrets?.database?.redis?.password;
1011
+ const redisUsername = appSecrets?.database?.redis?.username;
1012
+ if (!redisHost || redisHost.includes('localhost')) {
1013
+ this.logger.warn('Redis not properly configured for production, using memory adapter (single instance only)');
1014
+ return;
1015
+ }
1016
+ // Build Redis client options (same pattern as RedisService)
1017
+ // Include username for ACL authentication (required when using app-specific credentials)
1018
+ const redisOptions = {
1019
+ socket: {
1020
+ host: redisHost,
1021
+ port: redisPort,
1022
+ connectTimeout: 10000
1023
+ },
1024
+ username: redisUsername,
1025
+ password: redisPassword,
1026
+ };
1027
+ const pubClient = createClient(redisOptions);
1028
+ const subClient = pubClient.duplicate();
1029
+ // CRITICAL: Attach error handlers BEFORE connect to prevent "missing 'error' handler" warnings
1030
+ // These handlers prevent unhandled errors from crashing the process during Redis restarts
1031
+ pubClient.on('error', (error) => {
1032
+ this.logger.error('Socket.IO Redis pubClient error', {
1033
+ error: error instanceof Error ? error.message : String(error)
1034
+ });
1035
+ });
1036
+ subClient.on('error', (error) => {
1037
+ this.logger.error('Socket.IO Redis subClient error', {
1038
+ error: error instanceof Error ? error.message : String(error)
1039
+ });
1040
+ });
1041
+ // Reconnection handlers for visibility
1042
+ pubClient.on('reconnecting', () => {
1043
+ this.logDebug('Socket.IO Redis pubClient reconnecting...');
1044
+ });
1045
+ subClient.on('reconnecting', () => {
1046
+ this.logDebug('Socket.IO Redis subClient reconnecting...');
1047
+ });
1048
+ await Promise.all([
1049
+ pubClient.connect(),
1050
+ subClient.connect()
1051
+ ]);
1052
+ // SECURITY FIX: Use tenant-specific channel prefix for Socket.IO adapter
1053
+ // This ensures each tenant's Socket.IO messages are isolated to their own channels
1054
+ // ACL pattern &{username}#* will only allow access to channels with this prefix
1055
+ const channelPrefix = redisUsername || 'default';
1056
+ this.io.adapter(createAdapter(pubClient, subClient, { key: channelPrefix }));
1057
+ this.logDebug('Socket.IO Redis adapter configured for horizontal scaling', {
1058
+ redisHost,
1059
+ redisPort,
1060
+ channelPrefix,
1061
+ scalingEnabled: true,
1062
+ environment: process.env.APPLICATION_ENV || 'development'
1063
+ });
1064
+ }
1065
+ catch (error) {
1066
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
1067
+ this.logger.error('Failed to setup Redis adapter, falling back to memory adapter', {
1068
+ error: errorMessage,
1069
+ });
1070
+ this.logger.warn('Using memory adapter - horizontal scaling will not work across pods');
1071
+ }
1072
+ }
1073
+ /**
1074
+ * Setup authentication middleware
1075
+ * FACTORIZED: Uses ExecutionContextCreatorBackendService for JWT validation
1076
+ */
1077
+ setupAuthentication() {
1078
+ if (!this.io)
1079
+ return;
1080
+ this.io.use(async (socket, next) => {
1081
+ try {
1082
+ const token = socket.handshake.auth.token ||
1083
+ socket.handshake.headers.authorization?.replace('Bearer ', '');
1084
+ let authResult;
1085
+ if (!token) {
1086
+ // No token = public connection (allowed but limited)
1087
+ authResult = this.executionContextCreator.getPublicSocketAuth();
1088
+ this.logDebug('Public socket connection (no token)');
1089
+ }
1090
+ else {
1091
+ authResult = await this.executionContextCreator.authenticateSocketConnection(token);
1092
+ // W7.3b: Capture consumable token from handshake auth or headers
1093
+ const consumableToken = socket.handshake.auth?.consumableToken
1094
+ || socket.handshake.headers?.[WildoHeaderKeys.CONSUMABLE_TOKEN];
1095
+ if (consumableToken && typeof consumableToken === 'string') {
1096
+ authResult.consumableTokenValue = consumableToken;
1097
+ }
1098
+ this.logDebug('Authenticated socket connection', {
1099
+ executionType: authResult.executionType,
1100
+ userId: authResult.initiatorIds?.userId?.substring(0, 8) + '...',
1101
+ rolesCount: authResult.initiatorRoles.length,
1102
+ hasConsumableToken: !!authResult.consumableTokenValue,
1103
+ });
1104
+ }
1105
+ socket.auth = authResult;
1106
+ next();
1107
+ }
1108
+ catch (error) {
1109
+ this.logger.warn('WebSocket authentication failed', {
1110
+ error: error instanceof Error ? error.message : 'Unknown error'
1111
+ });
1112
+ next(new Error('Authentication failed'));
1113
+ }
1114
+ });
1115
+ }
1116
+ /**
1117
+ * Setup rate limiting middleware
1118
+ * Uses Redis for cross-pod synchronization of rate limit counters
1119
+ */
1120
+ setupRateLimiting() {
1121
+ if (!this.io)
1122
+ return;
1123
+ // Intercept all incoming events with rate limiting
1124
+ this.io.use(async (socket, next) => {
1125
+ // Override socket.on to wrap event handlers with rate limiting
1126
+ const originalOn = socket.on.bind(socket);
1127
+ socket.on = (event, handler) => {
1128
+ // Skip internal Socket.IO events
1129
+ if (event.startsWith('$') || ['connect', 'disconnect', 'error'].includes(event)) {
1130
+ return originalOn(event, handler);
1131
+ }
1132
+ // Wrap handler with rate limiting check
1133
+ return originalOn(event, async (...args) => {
1134
+ const auth = socket.auth;
1135
+ const identifier = auth.initiatorIds?.userId || socket.id;
1136
+ const allowed = await this.checkRateLimit(identifier, event);
1137
+ if (!allowed) {
1138
+ // Rate limit exceeded - emit error and skip handler
1139
+ socket.emit(CoreWebSocketEvent.SYSTEM_ERROR, {
1140
+ code: 'RATE_LIMIT_EXCEEDED',
1141
+ message: `Too many ${event} requests. Please slow down.`,
1142
+ details: { event }
1143
+ });
1144
+ this.logDebug('Rate limit exceeded', {
1145
+ identifier: identifier.substring(0, 8),
1146
+ event
1147
+ });
1148
+ return;
1149
+ }
1150
+ // Call original handler
1151
+ handler(...args);
1152
+ });
1153
+ };
1154
+ next();
1155
+ });
1156
+ }
1157
+ /**
1158
+ * Check rate limit for an event using Redis
1159
+ * Returns true if allowed, false if rate limited
1160
+ *
1161
+ * Uses sliding window algorithm with Redis INCR and EXPIRE
1162
+ */
1163
+ async checkRateLimit(identifier, event) {
1164
+ const config = DEFAULT_RATE_LIMITS[event] || DEFAULT_RATE_LIMITS['default'];
1165
+ const redisClient = this.redisService.getClient();
1166
+ // Fallback to in-memory if Redis unavailable (less accurate cross-pod)
1167
+ if (!redisClient) {
1168
+ return this.checkRateLimitInMemory(identifier, event, config);
1169
+ }
1170
+ try {
1171
+ const prefix = this.redisService.getAppPrefix();
1172
+ const key = `${prefix}ws:ratelimit:${identifier}:${event}`;
1173
+ const windowKey = `${key}:${Math.floor(Date.now() / (config.windowSeconds * 1000))}`;
1174
+ // Increment counter for current window
1175
+ const count = await redisClient.incr(windowKey);
1176
+ // Set expiry on first request in window
1177
+ if (count === 1) {
1178
+ await redisClient.expire(windowKey, config.windowSeconds + 1);
1179
+ }
1180
+ return count <= config.maxEvents;
1181
+ }
1182
+ catch (error) {
1183
+ // On Redis error, allow the request (fail open)
1184
+ this.logger.warn('Rate limit check failed, allowing request', {
1185
+ identifier: identifier.substring(0, 8),
1186
+ event,
1187
+ error: error instanceof Error ? error.message : 'Unknown',
1188
+ });
1189
+ return true;
1190
+ }
1191
+ }
1192
+ /**
1193
+ * In-memory rate limiting fallback (single pod only)
1194
+ */
1195
+ inMemoryRateLimits = new Map();
1196
+ checkRateLimitInMemory(identifier, event, config) {
1197
+ const key = `${identifier}:${event}`;
1198
+ const now = Date.now();
1199
+ const entry = this.inMemoryRateLimits.get(key);
1200
+ if (!entry || now >= entry.resetAt) {
1201
+ // Start new window
1202
+ this.inMemoryRateLimits.set(key, {
1203
+ count: 1,
1204
+ resetAt: now + (config.windowSeconds * 1000),
1205
+ });
1206
+ return true;
1207
+ }
1208
+ if (entry.count >= config.maxEvents) {
1209
+ return false;
1210
+ }
1211
+ entry.count++;
1212
+ return true;
1213
+ }
1214
+ /**
1215
+ * Setup connection handling
1216
+ * Joins user to identity-based rooms based on their roles and IDs
1217
+ * Sets up resource room handlers for collaboration
1218
+ */
1219
+ setupConnectionHandling() {
1220
+ if (!this.io)
1221
+ return;
1222
+ this.io.on('connection', (socket) => {
1223
+ const auth = socket.auth;
1224
+ // Track authenticated socket
1225
+ this.authenticatedSockets.set(socket.id, auth);
1226
+ // === IDENTITY-BASED ROOM ASSIGNMENT ===
1227
+ if (auth.executionType === ExecutionContext_ExecutionType.PUBLIC_EXECUTION) {
1228
+ // Public users only join public room
1229
+ socket.join(WebSocketRoomPrefix.PUBLIC);
1230
+ this.logDebug('Public socket connected', { socketId: socket.id });
1231
+ // Still setup disconnect handler
1232
+ socket.on('disconnect', () => {
1233
+ this.handleSocketDisconnection(socket.id, this.getSocketAuth(socket));
1234
+ });
1235
+ return;
1236
+ }
1237
+ // User: Join organization-based rooms from their roles
1238
+ for (const roleInfo of auth.initiatorRoles) {
1239
+ if (roleInfo.relatedPrimaryScope === ResourcePrimaryScope.ORGANIZATIONS && roleInfo.relatedResourceId) {
1240
+ const orgId = roleInfo.relatedResourceId;
1241
+ // Organization room (receives all org-wide notifications)
1242
+ socket.join(buildOrganizationRoomName(orgId));
1243
+ // Track organization sockets
1244
+ if (!this.organizationSockets.has(orgId)) {
1245
+ this.organizationSockets.set(orgId, new Set());
1246
+ }
1247
+ this.organizationSockets.get(orgId).add(socket.id);
1248
+ // Role-specific rooms (for role-targeted notifications)
1249
+ for (const role of roleInfo.roles || []) {
1250
+ socket.join(buildOrganizationRoleRoomName(orgId, role));
1251
+ }
1252
+ }
1253
+ if (roleInfo.relatedPrimaryScope === ResourcePrimaryScope.APPLICATION && roleInfo.relatedResourceId) {
1254
+ // App-level role room (for app admins, super admins)
1255
+ for (const role of roleInfo.roles || []) {
1256
+ socket.join(buildAppRoleRoomName(role));
1257
+ }
1258
+ }
1259
+ }
1260
+ // User-specific room (for direct messages, personal notifications)
1261
+ if (auth.initiatorIds?.userId) {
1262
+ socket.join(buildUserRoomName(auth.initiatorIds.userId));
1263
+ // Track user sockets for multi-tab support
1264
+ if (!this.userSockets.has(auth.initiatorIds.userId)) {
1265
+ this.userSockets.set(auth.initiatorIds.userId, new Set());
1266
+ }
1267
+ this.userSockets.get(auth.initiatorIds.userId).add(socket.id);
1268
+ }
1269
+ this.logDebug('Socket connected with identity rooms', {
1270
+ socketId: socket.id,
1271
+ executionType: auth.executionType,
1272
+ userId: auth.initiatorIds?.userId?.substring(0, 8),
1273
+ organizationRoles: auth.initiatorRoles.filter(r => r.relatedPrimaryScope === ResourcePrimaryScope.ORGANIZATIONS).length
1274
+ });
1275
+ // === RESOURCE ROOM HANDLERS (for collaboration) ===
1276
+ this.setupResourceRoomHandlers(socket);
1277
+ // === BADGE HANDLERS ===
1278
+ this.setupBadgeHandlers(socket);
1279
+ // === SYSTEM EVENT HANDLERS ===
1280
+ this.setupSystemEventHandlers(socket);
1281
+ // === DISCONNECTION HANDLING ===
1282
+ socket.on('disconnect', () => {
1283
+ this.handleSocketDisconnection(socket.id, this.getSocketAuth(socket));
1284
+ });
1285
+ });
1286
+ }
1287
+ /**
1288
+ * Setup handlers for resource-centric rooms (collaboration, editing locks, custom events)
1289
+ * These rooms are path-independent - same resource = same room regardless of access path
1290
+ */
1291
+ setupResourceRoomHandlers(socket) {
1292
+ // === SUBSCRIBE TO RESOURCE ROOM ===
1293
+ socket.on(CoreWebSocketEvent.RESOURCE_SUBSCRIBE, async (rawPayload) => {
1294
+ // Runtime validation using Zod schema
1295
+ const parseResult = WS_ResourceSubscribePayloadSchema.safeParse(rawPayload);
1296
+ if (!parseResult.success) {
1297
+ socket.emit(CoreWebSocketEvent.RESOURCE_SUBSCRIBED, {
1298
+ roomName: '',
1299
+ success: false,
1300
+ error: `Invalid payload: ${parseResult.error.issues[0]?.message || 'validation failed'}`
1301
+ });
1302
+ return;
1303
+ }
1304
+ const payload = parseResult.data;
1305
+ const { resourceType, resourceId, scopeKey, scopeId, contextResourceIdentifiers } = payload;
1306
+ // Validate contextResourceIdentifiers has at least one entry
1307
+ if (!contextResourceIdentifiers || Object.keys(contextResourceIdentifiers).length === 0) {
1308
+ socket.emit(CoreWebSocketEvent.RESOURCE_SUBSCRIBED, {
1309
+ roomName: '',
1310
+ success: false,
1311
+ error: 'contextResourceIdentifiers is required for authorization'
1312
+ });
1313
+ return;
1314
+ }
1315
+ try {
1316
+ const auth = this.getSocketAuth(socket);
1317
+ // Verify READ access using full context (organization, parent resources, etc.)
1318
+ if (resourceId) {
1319
+ await this.verifyResourceAccess(socket, auth, resourceType, resourceId, contextResourceIdentifiers);
1320
+ }
1321
+ else if (scopeKey && scopeId) {
1322
+ // For collection subscription, verify context access
1323
+ await this.verifyScopeAccess(auth, scopeKey, scopeId, contextResourceIdentifiers);
1324
+ }
1325
+ else {
1326
+ throw this.errorBuilder.buildError(ErrorType.VALIDATION, undefined, {
1327
+ customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,
1328
+ context: { operation: 'resourceSubscribe', message: 'Either resourceId or (scopeKey + scopeId) required' },
1329
+ });
1330
+ }
1331
+ // Build room name
1332
+ const roomName = resourceId
1333
+ ? buildResourceRoomName(resourceType, resourceId)
1334
+ : buildScopeRoomName(resourceType, scopeKey, scopeId);
1335
+ socket.join(roomName);
1336
+ this.trackSocketResourceSubscription(socket.id, {
1337
+ ...payload,
1338
+ roomName,
1339
+ });
1340
+ // Get current editing users for this resource (if subscribing to specific resource)
1341
+ let editingUsers = [];
1342
+ if (resourceId) {
1343
+ editingUsers = await this.getResourceEditingUsers(resourceType, resourceId);
1344
+ }
1345
+ socket.emit(CoreWebSocketEvent.RESOURCE_SUBSCRIBED, {
1346
+ roomName,
1347
+ success: true,
1348
+ editingUsers, // Include current editing users in subscription confirmation
1349
+ });
1350
+ this.logDebug('Socket subscribed to resource room', {
1351
+ socketId: socket.id,
1352
+ roomName,
1353
+ userId: auth.initiatorIds?.userId?.substring(0, 8),
1354
+ contextKeys: Object.keys(contextResourceIdentifiers),
1355
+ editingUsersCount: editingUsers.length
1356
+ });
1357
+ }
1358
+ catch (error) {
1359
+ const roomName = resourceId
1360
+ ? buildResourceRoomName(resourceType, resourceId)
1361
+ : buildScopeRoomName(resourceType, scopeKey || '', scopeId || '');
1362
+ socket.emit(CoreWebSocketEvent.RESOURCE_SUBSCRIBED, {
1363
+ roomName,
1364
+ success: false,
1365
+ error: error instanceof Error ? error.message : 'Access denied'
1366
+ });
1367
+ }
1368
+ });
1369
+ // === UNSUBSCRIBE FROM RESOURCE ROOM ===
1370
+ socket.on(CoreWebSocketEvent.RESOURCE_UNSUBSCRIBE, (rawPayload) => {
1371
+ // Runtime validation using Zod schema
1372
+ const parseResult = WS_ResourceSubscribePayloadSchema.safeParse(rawPayload);
1373
+ if (!parseResult.success) {
1374
+ socket.emit(CoreWebSocketEvent.RESOURCE_UNSUBSCRIBED, {
1375
+ roomName: '',
1376
+ success: false,
1377
+ error: `Invalid payload: ${parseResult.error.issues[0]?.message || 'validation failed'}`
1378
+ });
1379
+ return;
1380
+ }
1381
+ const payload = parseResult.data;
1382
+ const { resourceType, resourceId, scopeKey, scopeId } = payload;
1383
+ const roomName = resourceId
1384
+ ? buildResourceRoomName(resourceType, resourceId)
1385
+ : buildScopeRoomName(resourceType, scopeKey, scopeId);
1386
+ socket.leave(roomName);
1387
+ this.untrackSocketResourceSubscription(socket.id, roomName);
1388
+ socket.emit(CoreWebSocketEvent.RESOURCE_UNSUBSCRIBED, { roomName, success: true });
1389
+ this.logDebug('Socket unsubscribed from resource room', { socketId: socket.id, roomName });
1390
+ });
1391
+ // === START EDITING (LOCK) ===
1392
+ socket.on(CoreWebSocketEvent.RESOURCE_EDITING_START, async (rawPayload) => {
1393
+ // Runtime validation using Zod schema
1394
+ const parseResult = WS_ResourceEditingPayloadSchema.safeParse(rawPayload);
1395
+ if (!parseResult.success) {
1396
+ socket.emit(CoreWebSocketEvent.RESOURCE_EDITING_ERROR, {
1397
+ resourceType: '',
1398
+ resourceId: '',
1399
+ success: false,
1400
+ error: `Invalid payload: ${parseResult.error.issues[0]?.message || 'validation failed'}`
1401
+ });
1402
+ return;
1403
+ }
1404
+ const payload = parseResult.data;
1405
+ const { resourceType, resourceId, contextResourceIdentifiers } = payload;
1406
+ const auth = this.getSocketAuth(socket);
1407
+ const userId = auth.initiatorIds?.userId;
1408
+ if (!userId) {
1409
+ socket.emit(CoreWebSocketEvent.RESOURCE_EDITING_ERROR, {
1410
+ resourceType,
1411
+ resourceId,
1412
+ success: false,
1413
+ error: 'Authentication required for editing'
1414
+ });
1415
+ return;
1416
+ }
1417
+ // Validate contextResourceIdentifiers is provided
1418
+ if (!contextResourceIdentifiers || Object.keys(contextResourceIdentifiers).length === 0) {
1419
+ socket.emit(CoreWebSocketEvent.RESOURCE_EDITING_ERROR, {
1420
+ resourceType,
1421
+ resourceId,
1422
+ success: false,
1423
+ error: 'contextResourceIdentifiers is required for authorization'
1424
+ });
1425
+ return;
1426
+ }
1427
+ try {
1428
+ // Verify user has WRITE access to edit this resource (using UPDATE operation)
1429
+ await this.verifyResourceAccessForEdit(socket, auth, resourceType, resourceId, contextResourceIdentifiers);
1430
+ const roomName = buildResourceRoomName(resourceType, resourceId);
1431
+ // Track editing state in memory + Redis for cross-pod sync
1432
+ await this.trackEditingState(resourceType, resourceId, userId, 'start');
1433
+ // Broadcast to room (exclude sender) - don't include contextResourceIdentifiers in broadcast
1434
+ const eventPayload = {
1435
+ resourceType,
1436
+ resourceId,
1437
+ initiatorUserId: userId,
1438
+ timestamp: new Date(),
1439
+ };
1440
+ socket.to(roomName).emit(CoreWebSocketEvent.RESOURCE_EDITING_START, eventPayload);
1441
+ // Confirm to sender
1442
+ socket.emit(CoreWebSocketEvent.RESOURCE_EDITING_STARTED, { resourceType, resourceId, success: true });
1443
+ this.logDebug('User started editing resource', {
1444
+ userId: userId.substring(0, 8),
1445
+ resourceType,
1446
+ resourceId: resourceId.substring(0, 8)
1447
+ });
1448
+ }
1449
+ catch (error) {
1450
+ socket.emit(CoreWebSocketEvent.RESOURCE_EDITING_ERROR, {
1451
+ resourceType,
1452
+ resourceId,
1453
+ success: false,
1454
+ error: 'Access denied'
1455
+ });
1456
+ }
1457
+ });
1458
+ // === STOP EDITING (UNLOCK) ===
1459
+ socket.on(CoreWebSocketEvent.RESOURCE_EDITING_END, async (rawPayload) => {
1460
+ // Runtime validation using Zod schema
1461
+ const parseResult = WS_ResourceEditingPayloadSchema.safeParse(rawPayload);
1462
+ if (!parseResult.success) {
1463
+ // Silent fail for editing end (not critical)
1464
+ this.logDebug('Invalid editing end payload', {
1465
+ error: parseResult.error.issues[0]?.message
1466
+ });
1467
+ return;
1468
+ }
1469
+ const payload = parseResult.data;
1470
+ const { resourceType, resourceId } = payload;
1471
+ const auth = this.getSocketAuth(socket);
1472
+ const userId = auth.initiatorIds?.userId;
1473
+ if (!userId)
1474
+ return;
1475
+ const roomName = buildResourceRoomName(resourceType, resourceId);
1476
+ // Clear editing state
1477
+ await this.trackEditingState(resourceType, resourceId, userId, 'end');
1478
+ // Broadcast to room (exclude sender)
1479
+ const eventPayload = {
1480
+ resourceType,
1481
+ resourceId,
1482
+ initiatorUserId: userId,
1483
+ timestamp: new Date(),
1484
+ };
1485
+ socket.to(roomName).emit(CoreWebSocketEvent.RESOURCE_EDITING_END, eventPayload);
1486
+ this.logDebug('User stopped editing resource', {
1487
+ userId: userId.substring(0, 8),
1488
+ resourceType,
1489
+ resourceId: resourceId.substring(0, 8)
1490
+ });
1491
+ });
1492
+ // === CUSTOM COLLABORATION EVENT ===
1493
+ socket.on(CoreWebSocketEvent.RESOURCE_CUSTOM, async (rawPayload) => {
1494
+ // Runtime validation using Zod schema
1495
+ const parseResult = WS_ResourceCustomEventPayloadSchema.safeParse(rawPayload);
1496
+ if (!parseResult.success) {
1497
+ socket.emit(CoreWebSocketEvent.RESOURCE_CUSTOM_ERROR, {
1498
+ eventName: '',
1499
+ error: `Invalid payload: ${parseResult.error.issues[0]?.message || 'validation failed'}`
1500
+ });
1501
+ return;
1502
+ }
1503
+ const payload = parseResult.data;
1504
+ const { resourceType, resourceId, eventName, data, includeSelf, contextResourceIdentifiers } = payload;
1505
+ const auth = this.getSocketAuth(socket);
1506
+ const userId = auth.initiatorIds?.userId;
1507
+ // Validate contextResourceIdentifiers is provided
1508
+ if (!contextResourceIdentifiers || Object.keys(contextResourceIdentifiers).length === 0) {
1509
+ socket.emit(CoreWebSocketEvent.RESOURCE_CUSTOM_ERROR, { eventName, error: 'contextResourceIdentifiers is required' });
1510
+ return;
1511
+ }
1512
+ try {
1513
+ // Verify READ access (custom events require at least read access)
1514
+ await this.verifyResourceAccess(socket, auth, resourceType, resourceId, contextResourceIdentifiers);
1515
+ const roomName = buildResourceRoomName(resourceType, resourceId);
1516
+ // Build outgoing event payload (don't include contextResourceIdentifiers in broadcast)
1517
+ const eventPayload = {
1518
+ resourceType,
1519
+ resourceId,
1520
+ eventName,
1521
+ data,
1522
+ initiatorUserId: userId,
1523
+ timestamp: new Date(),
1524
+ // Include resourceData and dataMode if present in the incoming payload
1525
+ resourceData: payload.resourceData,
1526
+ dataMode: payload.dataMode,
1527
+ };
1528
+ // Validate and transform resource data if present
1529
+ if (payload.resourceData) {
1530
+ const dataMode = this.extractDataMode(payload);
1531
+ const validation = this.validateAndTransformResourceData(payload.resourceData, resourceType, undefined, // Custom events don't have operationIdentifier
1532
+ dataMode, 'canonical-read');
1533
+ if (validation.success) {
1534
+ eventPayload.resourceData = validation.data;
1535
+ }
1536
+ else {
1537
+ delete eventPayload.resourceData;
1538
+ delete eventPayload.dataMode;
1539
+ }
1540
+ }
1541
+ // Broadcast to room (include or exclude sender based on flag)
1542
+ if (includeSelf) {
1543
+ this.io.to(roomName).emit(CoreWebSocketEvent.RESOURCE_CUSTOM, eventPayload);
1544
+ }
1545
+ else {
1546
+ socket.to(roomName).emit(CoreWebSocketEvent.RESOURCE_CUSTOM, eventPayload);
1547
+ }
1548
+ }
1549
+ catch (error) {
1550
+ socket.emit(CoreWebSocketEvent.RESOURCE_CUSTOM_ERROR, { eventName, error: 'Access denied' });
1551
+ }
1552
+ });
1553
+ }
1554
+ /**
1555
+ * Setup system event handlers (auth refresh, organization switch)
1556
+ */
1557
+ setupSystemEventHandlers(socket) {
1558
+ // Token refresh handling
1559
+ socket.on(CoreWebSocketEvent.AUTH_REFRESH, async (payload) => {
1560
+ try {
1561
+ const oldAuth = socket.auth;
1562
+ const newAuth = await this.executionContextCreator.authenticateSocketConnection(payload.token);
1563
+ // W7.3b: Carry forward consumable token across auth refreshes
1564
+ if (oldAuth.consumableTokenValue) {
1565
+ newAuth.consumableTokenValue = oldAuth.consumableTokenValue;
1566
+ }
1567
+ socket.auth = newAuth;
1568
+ this.authenticatedSockets.set(socket.id, newAuth);
1569
+ // Re-assign identity rooms based on new auth
1570
+ await this.reassignIdentityRooms(socket, oldAuth, newAuth);
1571
+ await this.revalidateTrackedResourceSubscriptions(socket, newAuth);
1572
+ socket.emit(CoreWebSocketEvent.SYSTEM_TOKEN_REFRESHED, { success: true });
1573
+ this.logDebug('Socket auth refreshed and rooms reassigned', {
1574
+ socketId: socket.id,
1575
+ userId: newAuth.initiatorIds?.userId?.substring(0, 8),
1576
+ newRolesCount: newAuth.initiatorRoles.length
1577
+ });
1578
+ }
1579
+ catch (error) {
1580
+ socket.emit(CoreWebSocketEvent.SYSTEM_ERROR, {
1581
+ code: 'AUTH_REFRESH_FAILED',
1582
+ message: error instanceof Error ? error.message : 'Token refresh failed'
1583
+ });
1584
+ }
1585
+ });
1586
+ // Organization switch handling
1587
+ socket.on(CoreWebSocketEvent.ORGANIZATION_SWITCH, async (payload) => {
1588
+ const auth = this.getSocketAuth(socket);
1589
+ if (!this.hasOrganizationAccess(auth, payload.organizationId)) {
1590
+ socket.emit(CoreWebSocketEvent.SYSTEM_ERROR, {
1591
+ code: 'ORGANIZATION_SWITCH_FORBIDDEN',
1592
+ message: 'Access denied to the requested organization',
1593
+ });
1594
+ return;
1595
+ }
1596
+ // Leave old organization rooms if specified
1597
+ if (payload.previousOrganizationId) {
1598
+ socket.leave(buildOrganizationRoomName(payload.previousOrganizationId));
1599
+ this.organizationSockets.get(payload.previousOrganizationId)?.delete(socket.id);
1600
+ if (this.organizationSockets.get(payload.previousOrganizationId)?.size === 0) {
1601
+ this.organizationSockets.delete(payload.previousOrganizationId);
1602
+ }
1603
+ // Leave role rooms too
1604
+ for (const roleInfo of auth.initiatorRoles) {
1605
+ if (roleInfo.relatedPrimaryScope === ResourcePrimaryScope.ORGANIZATIONS &&
1606
+ roleInfo.relatedResourceId === payload.previousOrganizationId) {
1607
+ for (const role of roleInfo.roles || []) {
1608
+ socket.leave(buildOrganizationRoleRoomName(payload.previousOrganizationId, role));
1609
+ }
1610
+ }
1611
+ }
1612
+ const trackedSubscriptions = Array.from(this.resourceSubscriptionsBySocket.get(socket.id)?.values() ?? []);
1613
+ for (const subscription of trackedSubscriptions) {
1614
+ if (!subscriptionMatchesOrganization(subscription, payload.previousOrganizationId)) {
1615
+ continue;
1616
+ }
1617
+ await this.revokeTrackedResourceSubscription({
1618
+ socket,
1619
+ auth,
1620
+ subscription,
1621
+ reason: 'organization_switch',
1622
+ });
1623
+ }
1624
+ }
1625
+ // Join new organization rooms
1626
+ socket.join(buildOrganizationRoomName(payload.organizationId));
1627
+ if (!this.organizationSockets.has(payload.organizationId)) {
1628
+ this.organizationSockets.set(payload.organizationId, new Set());
1629
+ }
1630
+ this.organizationSockets.get(payload.organizationId).add(socket.id);
1631
+ // Find roles for the new organization and join role rooms
1632
+ for (const roleInfo of auth.initiatorRoles) {
1633
+ if (roleInfo.relatedPrimaryScope === ResourcePrimaryScope.ORGANIZATIONS &&
1634
+ roleInfo.relatedResourceId === payload.organizationId) {
1635
+ for (const role of roleInfo.roles || []) {
1636
+ socket.join(buildOrganizationRoleRoomName(payload.organizationId, role));
1637
+ }
1638
+ }
1639
+ }
1640
+ this.logDebug('Organization switched', {
1641
+ socketId: socket.id,
1642
+ previousOrganizationId: payload.previousOrganizationId?.substring(0, 8),
1643
+ newOrganizationId: payload.organizationId.substring(0, 8)
1644
+ });
1645
+ });
1646
+ }
1647
+ /**
1648
+ * Reassign identity-based rooms when auth is refreshed
1649
+ * Handles role changes, organization membership changes, etc.
1650
+ */
1651
+ async reassignIdentityRooms(socket, oldAuth, newAuth) {
1652
+ // === LEAVE OLD ROOMS ===
1653
+ // Leave old user room if user ID changed (unlikely but possible)
1654
+ if (oldAuth.initiatorIds?.userId && oldAuth.initiatorIds.userId !== newAuth.initiatorIds?.userId) {
1655
+ socket.leave(buildUserRoomName(oldAuth.initiatorIds.userId));
1656
+ // Update user sockets tracking
1657
+ this.userSockets.get(oldAuth.initiatorIds.userId)?.delete(socket.id);
1658
+ }
1659
+ // Build sets of old and new organization rooms for comparison
1660
+ const oldOrgRooms = new Set();
1661
+ const oldRoleRooms = new Set();
1662
+ for (const roleInfo of oldAuth.initiatorRoles) {
1663
+ if (roleInfo.relatedPrimaryScope === ResourcePrimaryScope.ORGANIZATIONS && roleInfo.relatedResourceId) {
1664
+ oldOrgRooms.add(buildOrganizationRoomName(roleInfo.relatedResourceId));
1665
+ for (const role of roleInfo.roles || []) {
1666
+ oldRoleRooms.add(buildOrganizationRoleRoomName(roleInfo.relatedResourceId, role));
1667
+ }
1668
+ }
1669
+ if (roleInfo.relatedPrimaryScope === ResourcePrimaryScope.APPLICATION) {
1670
+ for (const role of roleInfo.roles || []) {
1671
+ oldRoleRooms.add(buildAppRoleRoomName(role));
1672
+ }
1673
+ }
1674
+ }
1675
+ const newOrgRooms = new Set();
1676
+ const newRoleRooms = new Set();
1677
+ for (const roleInfo of newAuth.initiatorRoles) {
1678
+ if (roleInfo.relatedPrimaryScope === ResourcePrimaryScope.ORGANIZATIONS && roleInfo.relatedResourceId) {
1679
+ newOrgRooms.add(buildOrganizationRoomName(roleInfo.relatedResourceId));
1680
+ for (const role of roleInfo.roles || []) {
1681
+ newRoleRooms.add(buildOrganizationRoleRoomName(roleInfo.relatedResourceId, role));
1682
+ }
1683
+ }
1684
+ if (roleInfo.relatedPrimaryScope === ResourcePrimaryScope.APPLICATION) {
1685
+ for (const role of roleInfo.roles || []) {
1686
+ newRoleRooms.add(buildAppRoleRoomName(role));
1687
+ }
1688
+ }
1689
+ }
1690
+ // Leave org rooms that are no longer in new auth
1691
+ for (const room of oldOrgRooms) {
1692
+ if (!newOrgRooms.has(room)) {
1693
+ socket.leave(room);
1694
+ // Update organization sockets tracking
1695
+ const orgId = parseOrganizationRoomName(room);
1696
+ if (orgId) {
1697
+ this.organizationSockets.get(orgId)?.delete(socket.id);
1698
+ }
1699
+ }
1700
+ }
1701
+ // Leave role rooms that are no longer in new auth
1702
+ for (const room of oldRoleRooms) {
1703
+ if (!newRoleRooms.has(room)) {
1704
+ socket.leave(room);
1705
+ }
1706
+ }
1707
+ // Leave public room if was public but now authenticated
1708
+ if (oldAuth.executionType === ExecutionContext_ExecutionType.PUBLIC_EXECUTION &&
1709
+ newAuth.executionType !== ExecutionContext_ExecutionType.PUBLIC_EXECUTION) {
1710
+ socket.leave(WebSocketRoomPrefix.PUBLIC);
1711
+ }
1712
+ // === JOIN NEW ROOMS ===
1713
+ // Join new user room
1714
+ if (newAuth.initiatorIds?.userId) {
1715
+ socket.join(buildUserRoomName(newAuth.initiatorIds.userId));
1716
+ if (!this.userSockets.has(newAuth.initiatorIds.userId)) {
1717
+ this.userSockets.set(newAuth.initiatorIds.userId, new Set());
1718
+ }
1719
+ this.userSockets.get(newAuth.initiatorIds.userId).add(socket.id);
1720
+ }
1721
+ // Join new org rooms
1722
+ for (const room of newOrgRooms) {
1723
+ if (!oldOrgRooms.has(room)) {
1724
+ socket.join(room);
1725
+ const orgId = parseOrganizationRoomName(room);
1726
+ if (orgId) {
1727
+ if (!this.organizationSockets.has(orgId)) {
1728
+ this.organizationSockets.set(orgId, new Set());
1729
+ }
1730
+ this.organizationSockets.get(orgId).add(socket.id);
1731
+ }
1732
+ }
1733
+ }
1734
+ // Join new role rooms
1735
+ for (const room of newRoleRooms) {
1736
+ if (!oldRoleRooms.has(room)) {
1737
+ socket.join(room);
1738
+ }
1739
+ }
1740
+ // Join public room if now public
1741
+ if (newAuth.executionType === ExecutionContext_ExecutionType.PUBLIC_EXECUTION) {
1742
+ socket.join(WebSocketRoomPrefix.PUBLIC);
1743
+ }
1744
+ }
1745
+ /**
1746
+ * Setup badge handlers (badge:get, badge:get-all)
1747
+ * Enables frontend useBadge and useUserBadges hooks
1748
+ */
1749
+ setupBadgeHandlers(socket) {
1750
+ // badge:get - Get single badge count
1751
+ socket.on(CoreWebSocketEvent.BADGE_GET, async (payload, callback) => {
1752
+ if (!callback)
1753
+ return;
1754
+ try {
1755
+ const auth = this.getSocketAuth(socket);
1756
+ // Verify user has access to this scope
1757
+ if (!this.verifyBadgeScopeAccess(auth, payload.scope, payload.scopeId)) {
1758
+ callback({ count: 0 });
1759
+ return;
1760
+ }
1761
+ // Build a minimal execution context for the badge service
1762
+ const appReadOp = this.resourcesRegistry.getOperationFromPath(this.resourcesRegistry.getOperationPathDefault('APPLICATION', CoreResourceOperation.READ));
1763
+ if (!appReadOp) {
1764
+ callback({ count: 0 });
1765
+ return;
1766
+ }
1767
+ const executionContext = await this.executionContextCreator.buildContextFromSocketAuth(auth, appReadOp, {});
1768
+ const count = await this.getBadgeService().getBadgeCount(executionContext, payload.scope, payload.scopeId, payload.identifier);
1769
+ callback({ count });
1770
+ }
1771
+ catch (error) {
1772
+ this.logger.warn('Failed to get badge count', {
1773
+ error: error instanceof Error ? error.message : 'Unknown error'
1774
+ });
1775
+ callback({ count: 0 });
1776
+ }
1777
+ });
1778
+ // badge:get-all - Get all badges for a scope
1779
+ socket.on(CoreWebSocketEvent.BADGE_GET_ALL, async (payload, callback) => {
1780
+ if (!callback)
1781
+ return;
1782
+ try {
1783
+ const auth = this.getSocketAuth(socket);
1784
+ // Verify user has access to this scope
1785
+ if (!this.verifyBadgeScopeAccess(auth, payload.scope, payload.scopeId)) {
1786
+ callback([]);
1787
+ return;
1788
+ }
1789
+ // Build a minimal execution context for the badge service
1790
+ const appReadOp = this.resourcesRegistry.getOperationFromPath(this.resourcesRegistry.getOperationPathDefault('APPLICATION', CoreResourceOperation.READ));
1791
+ if (!appReadOp) {
1792
+ callback([]);
1793
+ return;
1794
+ }
1795
+ const executionContext = await this.executionContextCreator.buildContextFromSocketAuth(auth, appReadOp, {});
1796
+ const badges = await this.getBadgeService().getAllBadges(executionContext, payload.scope, payload.scopeId);
1797
+ callback(badges);
1798
+ }
1799
+ catch (error) {
1800
+ this.logger.warn('Failed to get all badges', {
1801
+ error: error instanceof Error ? error.message : 'Unknown error'
1802
+ });
1803
+ callback([]);
1804
+ }
1805
+ });
1806
+ }
1807
+ /**
1808
+ * Verify user has access to a badge scope
1809
+ */
1810
+ verifyBadgeScopeAccess(auth, scope, scopeId) {
1811
+ // Public users cannot access badges
1812
+ if (auth.executionType === ExecutionContext_ExecutionType.PUBLIC_EXECUTION) {
1813
+ return false;
1814
+ }
1815
+ switch (scope) {
1816
+ case ResourcePrimaryScope.USER_SELF:
1817
+ // User can only access their own badges
1818
+ return auth.initiatorIds?.userId === scopeId;
1819
+ case ResourcePrimaryScope.ORGANIZATIONS:
1820
+ // User must be member of the organization
1821
+ return auth.initiatorRoles.some(r => r.relatedPrimaryScope === ResourcePrimaryScope.ORGANIZATIONS &&
1822
+ r.relatedResourceId === scopeId);
1823
+ case ResourcePrimaryScope.APPLICATION:
1824
+ // Application-level badges - check if user has any app roles
1825
+ return auth.initiatorRoles.some(r => r.relatedPrimaryScope === ResourcePrimaryScope.APPLICATION);
1826
+ default:
1827
+ return false;
1828
+ }
1829
+ }
1830
+ // =====================================================
1831
+ // AUTHORIZATION HELPERS (FACTORIZED with HTTP)
1832
+ // =====================================================
1833
+ /**
1834
+ * Verify user has READ access to a specific resource
1835
+ *
1836
+ * REUSES: AuthorizationsBackendService.authorizeInController()
1837
+ * This is the EXACT same method used by HTTP controllers
1838
+ */
1839
+ async verifyResourceAccess(socket, auth, resourceType, resourceId, contextResourceIdentifiers) {
1840
+ if (auth.executionType === ExecutionContext_ExecutionType.PUBLIC_EXECUTION) {
1841
+ throw this.errorBuilder.buildError(ErrorType.AUTHORIZATION, undefined, {
1842
+ customMessageReference: ErrorCustomMessageReference.AUTHORIZATIONS_ACCESS_DENIED,
1843
+ context: { resourceType, resourceId, message: 'Public connections cannot access resources' },
1844
+ });
1845
+ }
1846
+ await this.authorizeSocketResourceAgainstAnyVariant(auth, resourceType, resourceId, contextResourceIdentifiers, CoreResourceOperation.READ);
1847
+ }
1848
+ /**
1849
+ * Verify user has WRITE access to edit a resource (for editing lock)
1850
+ *
1851
+ * REUSES: AuthorizationsBackendService.authorizeInController() with UPDATE operation
1852
+ */
1853
+ async verifyResourceAccessForEdit(socket, auth, resourceType, resourceId, contextResourceIdentifiers) {
1854
+ if (auth.executionType === ExecutionContext_ExecutionType.PUBLIC_EXECUTION) {
1855
+ throw this.errorBuilder.buildError(ErrorType.AUTHORIZATION, undefined, {
1856
+ customMessageReference: ErrorCustomMessageReference.AUTHORIZATIONS_ACCESS_DENIED,
1857
+ context: { resourceType, resourceId, message: 'Public connections cannot edit resources' },
1858
+ });
1859
+ }
1860
+ await this.authorizeSocketResourceAgainstAnyVariant(auth, resourceType, resourceId, contextResourceIdentifiers, CoreResourceOperation.UPDATE);
1861
+ }
1862
+ /**
1863
+ * Verify user has access to a scope (for collection subscriptions)
1864
+ *
1865
+ * REUSES: Role-based check for organization scope, or AuthorizationsBackendService for parent resources
1866
+ */
1867
+ async verifyScopeAccess(auth, scopeKey, scopeId, contextResourceIdentifiers) {
1868
+ if (auth.executionType === ExecutionContext_ExecutionType.PUBLIC_EXECUTION) {
1869
+ throw this.errorBuilder.buildError(ErrorType.AUTHORIZATION, undefined, {
1870
+ customMessageReference: ErrorCustomMessageReference.AUTHORIZATIONS_ACCESS_DENIED,
1871
+ context: { scopeKey, scopeId, message: 'Public connections cannot access scoped collections' },
1872
+ });
1873
+ }
1874
+ const normalizedScopeKey = scopeKey.trim().toLowerCase();
1875
+ // For organization scope, just check user has role in that org
1876
+ if (normalizedScopeKey === 'org' || normalizedScopeKey === 'organization' || normalizedScopeKey === 'organizationid') {
1877
+ const hasOrgAccess = auth.initiatorRoles.some(r => r.relatedPrimaryScope === ResourcePrimaryScope.ORGANIZATIONS &&
1878
+ r.relatedResourceId === scopeId);
1879
+ if (!hasOrgAccess) {
1880
+ throw this.errorBuilder.buildError(ErrorType.AUTHORIZATION, undefined, {
1881
+ customMessageReference: ErrorCustomMessageReference.AUTHORIZATIONS_ACCESS_DENIED,
1882
+ context: { scopeId, scopeKey, message: 'No access to organization' },
1883
+ });
1884
+ }
1885
+ return;
1886
+ }
1887
+ // For other scopes (e.g., todolist), verify READ access to the parent resource
1888
+ const parentResourceType = this.mapScopeKeyToResourceType(scopeKey);
1889
+ if (!parentResourceType) {
1890
+ throw this.errorBuilder.buildError(ErrorType.AUTHORIZATION, undefined, {
1891
+ customMessageReference: ErrorCustomMessageReference.AUTHORIZATIONS_ACCESS_DENIED,
1892
+ context: { scopeId, scopeKey, message: 'Unknown or unmapped scope key' },
1893
+ });
1894
+ }
1895
+ const scopeResourceId = contextResourceIdentifiers[`${scopeKey}Id`]
1896
+ || contextResourceIdentifiers[`${normalizedScopeKey}Id`]
1897
+ || contextResourceIdentifiers[scopeKey]
1898
+ || contextResourceIdentifiers[normalizedScopeKey]
1899
+ || scopeId;
1900
+ await this.authorizeSocketResourceAgainstAnyVariant(auth, parentResourceType, scopeResourceId, contextResourceIdentifiers, CoreResourceOperation.READ, { scopeKey });
1901
+ }
1902
+ getSocketAuthorizationCandidateOperations(resourceType, coreOperation) {
1903
+ const registry = this.resourcesRegistry.getResourcesRegistry();
1904
+ const resourceConfiguration = registry.resourceConfigurations[resourceType];
1905
+ if (!resourceConfiguration) {
1906
+ throw this.errorBuilder.buildError(ErrorType.NOT_FOUND, undefined, {
1907
+ customMessageReference: ErrorCustomMessageReference.RESOURCES_REGISTRY_OPERATION_PATH_NOT_FOUND,
1908
+ context: { resourceType, operation: coreOperation },
1909
+ });
1910
+ }
1911
+ return resourceConfiguration.operations.filter((operation) => (ResourceOperationsUtils.getCoreResourceOperationFromOperation(operation) === coreOperation
1912
+ && !('isBulkOperation' in operation && operation.isBulkOperation === true)
1913
+ && (operation.variantType === ResourceOperationVariantType.API_CALL
1914
+ || operation.variantType === ResourceOperationVariantType.API_CALL_WITH_CALLBACK)
1915
+ && 'initiatorInfos' in operation
1916
+ && Array.isArray(operation.initiatorInfos)
1917
+ && operation.initiatorInfos.length > 0));
1918
+ }
1919
+ async authorizeSocketResourceAgainstAnyVariant(auth, resourceType, resourceId, contextResourceIdentifiers, coreOperation, extraContext) {
1920
+ const candidateOperations = this.getSocketAuthorizationCandidateOperations(resourceType, coreOperation);
1921
+ let lastAuthorizationError;
1922
+ for (const operation of candidateOperations) {
1923
+ try {
1924
+ const executionContext = await this.executionContextCreator.buildContextFromSocketAuth(auth, operation, contextResourceIdentifiers);
1925
+ await this.authorizationsService.authorizeInController(resourceId, executionContext);
1926
+ this.logDebug('Socket authorization succeeded with operation variant', {
1927
+ resourceType,
1928
+ resourceId,
1929
+ coreOperation,
1930
+ variantKey: operation.variantKey,
1931
+ isOperationDefault: operation.isOperationDefault,
1932
+ ...extraContext,
1933
+ });
1934
+ return;
1935
+ }
1936
+ catch (error) {
1937
+ if (isWildoBackendError(error) && error.type === ErrorType.AUTHORIZATION) {
1938
+ lastAuthorizationError = error;
1939
+ continue;
1940
+ }
1941
+ throw error;
1942
+ }
1943
+ }
1944
+ if (lastAuthorizationError) {
1945
+ throw lastAuthorizationError;
1946
+ }
1947
+ throw this.errorBuilder.buildError(ErrorType.NOT_FOUND, undefined, {
1948
+ customMessageReference: ErrorCustomMessageReference.RESOURCES_REGISTRY_OPERATION_PATH_NOT_FOUND,
1949
+ context: { resourceType, operation: coreOperation, ...extraContext },
1950
+ });
1951
+ }
1952
+ /**
1953
+ * Map scope key to parent resource type using the resources registry
1954
+ *
1955
+ * Scope keys follow the pattern: fieldIdentifier without 'Id' suffix
1956
+ * E.g., 'todolist' → find resource with fieldIdentifier 'todolistId' → TODOLISTS
1957
+ *
1958
+ * Uses the registry's resource configurations to dynamically resolve
1959
+ * without hardcoded mappings.
1960
+ */
1961
+ mapScopeKeyToResourceType(scopeKey) {
1962
+ // Build the expected field identifier
1963
+ const fieldIdentifierVariants = [
1964
+ `${scopeKey}Id`, // todolist → todolistId
1965
+ `${scopeKey.toLowerCase()}Id`, // TodoList → todolistid (case insensitive)
1966
+ ];
1967
+ // Search through all resource configurations
1968
+ const registry = this.resourcesRegistry.getResourcesRegistry();
1969
+ const resourceTypes = Object.keys(registry.resourceConfigurations);
1970
+ for (const resourceType of resourceTypes) {
1971
+ const config = registry.resourceConfigurations[resourceType];
1972
+ const configFieldId = config.resourceFieldIdentifier?.toLowerCase();
1973
+ for (const variant of fieldIdentifierVariants) {
1974
+ if (configFieldId === variant.toLowerCase()) {
1975
+ return resourceType;
1976
+ }
1977
+ }
1978
+ }
1979
+ // Also check if scopeKey is itself a resource type (direct match)
1980
+ if (registry.resourceConfigurations[scopeKey]) {
1981
+ return scopeKey;
1982
+ }
1983
+ // Check for case-insensitive resource type match
1984
+ const lowerScopeKey = scopeKey.toLowerCase();
1985
+ for (const resourceType of resourceTypes) {
1986
+ if (resourceType.toLowerCase() === lowerScopeKey) {
1987
+ return resourceType;
1988
+ }
1989
+ }
1990
+ this.logDebug('Could not map scope key to resource type', { scopeKey });
1991
+ return null;
1992
+ }
1993
+ // =====================================================
1994
+ // EDITING STATE TRACKING (Redis-backed for multi-pod)
1995
+ // =====================================================
1996
+ /**
1997
+ * Track editing state in Redis for cross-pod synchronization
1998
+ */
1999
+ async trackEditingState(resourceType, resourceId, userId, action) {
2000
+ const prefix = this.redisService.getAppPrefix();
2001
+ const key = `${prefix}editing:${resourceType}:${resourceId}`;
2002
+ const redisClient = this.redisService.getClient();
2003
+ if (!redisClient) {
2004
+ // Fallback to in-memory if Redis unavailable
2005
+ if (action === 'start') {
2006
+ if (!this.resourceEditingState.has(key)) {
2007
+ this.resourceEditingState.set(key, new Set());
2008
+ }
2009
+ this.resourceEditingState.get(key).add(userId);
2010
+ }
2011
+ else {
2012
+ this.resourceEditingState.get(key)?.delete(userId);
2013
+ }
2014
+ return;
2015
+ }
2016
+ try {
2017
+ if (action === 'start') {
2018
+ await redisClient.hSet(key, userId, new Date().toISOString());
2019
+ await redisClient.expire(key, 3600); // 1 hour TTL (cleanup stale locks)
2020
+ }
2021
+ else {
2022
+ await redisClient.hDel(key, userId);
2023
+ }
2024
+ }
2025
+ catch (error) {
2026
+ this.logger.warn('Failed to track editing state in Redis', {
2027
+ error: error instanceof Error ? error.message : 'Unknown',
2028
+ resourceType,
2029
+ resourceId: resourceId.substring(0, 8)
2030
+ });
2031
+ }
2032
+ }
2033
+ /**
2034
+ * Cleanup editing states when user disconnects
2035
+ * Cleans both in-memory state AND Redis for immediate consistency across pods
2036
+ *
2037
+ * CROSS-POD SUPPORT: Uses Redis SCAN to find all editing keys across all pods
2038
+ * where this user is editing, ensuring complete cleanup.
2039
+ */
2040
+ async cleanupEditingStatesForUser(userId) {
2041
+ if (!userId)
2042
+ return;
2043
+ const redisClient = this.redisService.getClient();
2044
+ // Cleanup in-memory state on this pod
2045
+ for (const [key, users] of this.resourceEditingState.entries()) {
2046
+ if (users.has(userId)) {
2047
+ users.delete(userId);
2048
+ }
2049
+ }
2050
+ // Cross-pod cleanup: SCAN Redis for all editing:* keys where this user is editing
2051
+ if (redisClient) {
2052
+ try {
2053
+ await this.cleanupUserEditingStatesFromRedis(redisClient, userId);
2054
+ }
2055
+ catch (error) {
2056
+ this.logger.warn('Failed to cleanup Redis editing states on disconnect', {
2057
+ userId: userId.substring(0, 8),
2058
+ error: error instanceof Error ? error.message : 'Unknown',
2059
+ });
2060
+ }
2061
+ }
2062
+ }
2063
+ /**
2064
+ * SCAN Redis for all editing:* keys and remove the user from each
2065
+ * Also broadcasts editing:end to affected resource rooms
2066
+ *
2067
+ * Key format: {appPrefix}editing:{resourceType}:{resourceId}
2068
+ * Example: "wildo-ai-app_local:editing:users:user456"
2069
+ */
2070
+ async cleanupUserEditingStatesFromRedis(redisClient, userId) {
2071
+ if (!redisClient)
2072
+ return;
2073
+ let cursor = '0';
2074
+ const cleanedResources = [];
2075
+ const prefix = this.redisService.getAppPrefix();
2076
+ // SCAN for all editing:* keys scoped to this application
2077
+ do {
2078
+ const result = await redisClient.scan(cursor, {
2079
+ MATCH: `${prefix}editing:*`,
2080
+ COUNT: 100, // Process in batches
2081
+ });
2082
+ cursor = result.cursor;
2083
+ const keys = result.keys;
2084
+ // Check each key for this user and remove if present
2085
+ for (const key of keys) {
2086
+ try {
2087
+ // Check if user is in this hash
2088
+ const exists = await redisClient.hExists(key, userId);
2089
+ if (exists) {
2090
+ // Remove user from this editing state
2091
+ await redisClient.hDel(key, userId);
2092
+ // Parse key to get resource info
2093
+ // Key format: {prefix}editing:{resourceType}:{resourceId}
2094
+ // Remove prefix first, then parse
2095
+ const keyWithoutPrefix = prefix && key.startsWith(prefix)
2096
+ ? key.slice(prefix.length)
2097
+ : key;
2098
+ const parts = keyWithoutPrefix.split(':');
2099
+ // parts[0] = "editing", parts[1] = resourceType, parts[2] = resourceId
2100
+ if (parts.length >= 3 && parts[0] === 'editing') {
2101
+ cleanedResources.push({
2102
+ resourceType: parts[1],
2103
+ resourceId: parts[2],
2104
+ });
2105
+ }
2106
+ }
2107
+ }
2108
+ catch (error) {
2109
+ this.logger.warn('Failed to check/delete editing state for key', {
2110
+ key,
2111
+ userId: userId.substring(0, 8),
2112
+ error: error instanceof Error ? error.message : 'Unknown',
2113
+ });
2114
+ }
2115
+ }
2116
+ } while (cursor !== '0');
2117
+ // Broadcast editing:end to all affected resource rooms
2118
+ for (const resource of cleanedResources) {
2119
+ const roomName = buildResourceRoomName(resource.resourceType, resource.resourceId);
2120
+ this.io?.to(roomName).emit(CoreWebSocketEvent.RESOURCE_EDITING_END, {
2121
+ resourceType: resource.resourceType,
2122
+ resourceId: resource.resourceId,
2123
+ initiatorUserId: userId,
2124
+ reason: 'disconnect',
2125
+ timestamp: new Date(),
2126
+ });
2127
+ }
2128
+ if (cleanedResources.length > 0) {
2129
+ this.logDebug('Cleaned up editing states for disconnected user', {
2130
+ userId: userId.substring(0, 8),
2131
+ cleanedCount: cleanedResources.length,
2132
+ });
2133
+ }
2134
+ }
2135
+ // =====================================================
2136
+ // DISCONNECTION HANDLING
2137
+ // =====================================================
2138
+ /**
2139
+ * Handle socket disconnection - cleanup state and notify rooms
2140
+ */
2141
+ handleSocketDisconnection(socketId, auth) {
2142
+ // Remove from authenticated sockets
2143
+ this.authenticatedSockets.delete(socketId);
2144
+ this.resourceSubscriptionsBySocket.delete(socketId);
2145
+ const userId = auth.initiatorIds?.userId;
2146
+ if (userId) {
2147
+ // Remove from user sockets tracking
2148
+ const userSocketIds = this.userSockets.get(userId);
2149
+ if (userSocketIds) {
2150
+ userSocketIds.delete(socketId);
2151
+ if (userSocketIds.size === 0) {
2152
+ this.userSockets.delete(userId);
2153
+ // User completely disconnected - cleanup editing states
2154
+ this.cleanupEditingStatesForUser(userId);
2155
+ }
2156
+ }
2157
+ }
2158
+ // Remove from organization sockets
2159
+ for (const roleInfo of auth.initiatorRoles) {
2160
+ if (roleInfo.relatedPrimaryScope === ResourcePrimaryScope.ORGANIZATIONS && roleInfo.relatedResourceId) {
2161
+ const orgSocketIds = this.organizationSockets.get(roleInfo.relatedResourceId);
2162
+ if (orgSocketIds) {
2163
+ orgSocketIds.delete(socketId);
2164
+ if (orgSocketIds.size === 0) {
2165
+ this.organizationSockets.delete(roleInfo.relatedResourceId);
2166
+ }
2167
+ }
2168
+ }
2169
+ }
2170
+ this.logDebug('Socket disconnected', {
2171
+ socketId,
2172
+ userId: userId?.substring(0, 8),
2173
+ remainingConnections: this.authenticatedSockets.size
2174
+ });
2175
+ }
2176
+ // =====================================================
2177
+ // CLEANUP
2178
+ // =====================================================
2179
+ /**
2180
+ * Cleanup resources
2181
+ */
2182
+ async cleanup() {
2183
+ try {
2184
+ if (this.io) {
2185
+ this.io.close();
2186
+ this.io = null;
2187
+ }
2188
+ this.authenticatedSockets.clear();
2189
+ this.userSockets.clear();
2190
+ this.organizationSockets.clear();
2191
+ this.rooms.clear();
2192
+ this.resourceEditingState.clear();
2193
+ this.resourceSubscriptionsBySocket.clear();
2194
+ this.logDebug('WebSocket service cleanup completed');
2195
+ }
2196
+ catch (error) {
2197
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
2198
+ this.logger.error('Error during WebSocket cleanup', { error: errorMessage });
2199
+ }
2200
+ }
2201
+ };
2202
+ WebSocketService = __decorate([
2203
+ injectable(),
2204
+ __param(0, inject(SAAS_SERVICE_TYPES.Logger)),
2205
+ __param(1, inject(SAAS_SERVICE_TYPES.AppConfigService)),
2206
+ __param(2, inject(SAAS_SERVICE_TYPES.ErrorBuilderService)),
2207
+ __param(3, inject(SAAS_SERVICE_TYPES.RedisService)),
2208
+ __param(4, inject(SAAS_SERVICE_TYPES.ExecutionContextCreatorBackendService)),
2209
+ __param(5, inject(SAAS_SERVICE_TYPES.AuthorizationsService)),
2210
+ __param(6, inject(SAAS_SERVICE_TYPES.ResourceRegistryService)),
2211
+ __param(7, inject('Container')),
2212
+ __metadata("design:paramtypes", [LoggerService,
2213
+ AppConfigurationService,
2214
+ ErrorBuilderBackendService,
2215
+ RedisService,
2216
+ ExecutionContextCreatorBackendService,
2217
+ AuthorizationsBackendService,
2218
+ ResourcesRegistryBackendService,
2219
+ Container])
2220
+ ], WebSocketService);
2221
+ export { WebSocketService };
2222
+ //# sourceMappingURL=websocket.service.js.map