@wildo-ai/saas-models 1.1.4 → 1.1.5

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 (1032) hide show
  1. package/dist/esm/__tests__/setup.d.ts.map +1 -1
  2. package/dist/esm/_inspect.d.ts.map +1 -1
  3. package/dist/esm/applications/application-metadata.shared.resources-config.schemas.d.ts +1 -1
  4. package/dist/esm/applications/application-metadata.shared.resources-config.schemas.d.ts.map +1 -1
  5. package/dist/esm/applications/application-subject.shared.schemas.d.ts.map +1 -1
  6. package/dist/esm/applications/application-versions.shared.resources-config.schemas.d.ts +1 -1
  7. package/dist/esm/applications/application-versions.shared.resources-config.schemas.d.ts.map +1 -1
  8. package/dist/esm/applications/application-versions.shared.resources-config.schemas.js +2 -2
  9. package/dist/esm/applications/application-versions.shared.resources-config.schemas.js.map +1 -1
  10. package/dist/esm/applications/applications-context.schemas.d.ts +236 -18
  11. package/dist/esm/applications/applications-context.schemas.d.ts.map +1 -1
  12. package/dist/esm/applications/applications.shared.resources-config.schemas.d.ts +1 -0
  13. package/dist/esm/applications/applications.shared.resources-config.schemas.d.ts.map +1 -1
  14. package/dist/esm/applications/applications.shared.resources-config.schemas.js +1 -1
  15. package/dist/esm/applications/applications.shared.resources-config.schemas.js.map +1 -1
  16. package/dist/esm/applications/applications.shared.schemas.d.ts +3 -2
  17. package/dist/esm/applications/applications.shared.schemas.d.ts.map +1 -1
  18. package/dist/esm/applications/applications.shared.schemas.js +40 -5
  19. package/dist/esm/applications/applications.shared.schemas.js.map +1 -1
  20. package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts +1 -2
  21. package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts.map +1 -1
  22. package/dist/esm/billing/billing-account.shared.resources-config.schemas.js +1 -2
  23. package/dist/esm/billing/billing-account.shared.resources-config.schemas.js.map +1 -1
  24. package/dist/esm/billing/billing-account.shared.schemas.d.ts.map +1 -1
  25. package/dist/esm/billing/billing-configuration.shared.schemas.d.ts.map +1 -1
  26. package/dist/esm/billing/billing-configuration.shared.schemas.js.map +1 -1
  27. package/dist/esm/billing/billing-enums.shared.schemas.d.ts +87 -5
  28. package/dist/esm/billing/billing-enums.shared.schemas.d.ts.map +1 -1
  29. package/dist/esm/billing/billing-enums.shared.schemas.js +91 -5
  30. package/dist/esm/billing/billing-enums.shared.schemas.js.map +1 -1
  31. package/dist/esm/billing/billing-types.shared.schemas.d.ts +24 -4
  32. package/dist/esm/billing/billing-types.shared.schemas.d.ts.map +1 -1
  33. package/dist/esm/billing/billing-types.shared.schemas.js +24 -8
  34. package/dist/esm/billing/billing-types.shared.schemas.js.map +1 -1
  35. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts.map +1 -1
  36. package/dist/esm/billing/credit-pool.shared.schemas.d.ts.map +1 -1
  37. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts.map +1 -1
  38. package/dist/esm/billing/invoice-ref.shared.schemas.d.ts.map +1 -1
  39. package/dist/esm/billing/price.shared.resources-config.schemas.d.ts.map +1 -1
  40. package/dist/esm/billing/price.shared.resources-config.schemas.js +32 -2
  41. package/dist/esm/billing/price.shared.resources-config.schemas.js.map +1 -1
  42. package/dist/esm/billing/price.shared.schemas.d.ts.map +1 -1
  43. package/dist/esm/billing/price.shared.schemas.js.map +1 -1
  44. package/dist/esm/billing/product-behavior-policy.shared.schemas.d.ts.map +1 -1
  45. package/dist/esm/billing/product-behavior-policy.shared.schemas.js +1 -1
  46. package/dist/esm/billing/product-behavior-policy.shared.schemas.js.map +1 -1
  47. package/dist/esm/billing/product-definition.shared.schemas.d.ts.map +1 -1
  48. package/dist/esm/billing/product.shared.resources-config.schemas.d.ts.map +1 -1
  49. package/dist/esm/billing/product.shared.resources-config.schemas.js +32 -2
  50. package/dist/esm/billing/product.shared.resources-config.schemas.js.map +1 -1
  51. package/dist/esm/billing/product.shared.schemas.d.ts +1 -0
  52. package/dist/esm/billing/product.shared.schemas.d.ts.map +1 -1
  53. package/dist/esm/billing/product.shared.schemas.js +3 -0
  54. package/dist/esm/billing/product.shared.schemas.js.map +1 -1
  55. package/dist/esm/billing/promotions.shared.resources-config.schemas.d.ts.map +1 -1
  56. package/dist/esm/billing/promotions.shared.resources-config.schemas.js +33 -3
  57. package/dist/esm/billing/promotions.shared.resources-config.schemas.js.map +1 -1
  58. package/dist/esm/billing/promotions.shared.schemas.d.ts.map +1 -1
  59. package/dist/esm/billing/referral.shared.resources-config.schemas.d.ts.map +1 -1
  60. package/dist/esm/billing/referral.shared.resources-config.schemas.js +22 -2
  61. package/dist/esm/billing/referral.shared.resources-config.schemas.js.map +1 -1
  62. package/dist/esm/billing/referral.shared.schemas.d.ts +1 -0
  63. package/dist/esm/billing/referral.shared.schemas.d.ts.map +1 -1
  64. package/dist/esm/billing/referral.shared.schemas.js +3 -0
  65. package/dist/esm/billing/referral.shared.schemas.js.map +1 -1
  66. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +23 -1
  67. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
  68. package/dist/esm/billing/subscription.shared.resources-config.schemas.js +48 -2
  69. package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
  70. package/dist/esm/billing/subscription.shared.schemas.d.ts +1 -0
  71. package/dist/esm/billing/subscription.shared.schemas.d.ts.map +1 -1
  72. package/dist/esm/billing/subscription.shared.schemas.js +3 -0
  73. package/dist/esm/billing/subscription.shared.schemas.js.map +1 -1
  74. package/dist/esm/billing/usage-flush-evidence.shared.schemas.d.ts +49 -0
  75. package/dist/esm/billing/usage-flush-evidence.shared.schemas.d.ts.map +1 -0
  76. package/dist/esm/billing/usage-flush-evidence.shared.schemas.js +48 -0
  77. package/dist/esm/billing/usage-flush-evidence.shared.schemas.js.map +1 -0
  78. package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts.map +1 -1
  79. package/dist/esm/billing/usage-record.shared.schemas.d.ts +1 -0
  80. package/dist/esm/billing/usage-record.shared.schemas.d.ts.map +1 -1
  81. package/dist/esm/billing/usage-record.shared.schemas.js +3 -0
  82. package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
  83. package/dist/esm/charts/aggregation-query.shared.schemas.d.ts.map +1 -1
  84. package/dist/esm/charts/chart-definition-builder.shared.d.ts.map +1 -1
  85. package/dist/esm/companion/provider-discovery.shared.schemas.d.ts +7 -1
  86. package/dist/esm/companion/provider-discovery.shared.schemas.d.ts.map +1 -1
  87. package/dist/esm/companion/provider-discovery.shared.schemas.js.map +1 -1
  88. package/dist/esm/companion/shared-library-companion.shared.definitions.d.ts.map +1 -1
  89. package/dist/esm/companion-exports.d.ts.map +1 -1
  90. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts +14 -3
  91. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
  92. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js +21 -7
  93. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js.map +1 -1
  94. package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.d.ts +450 -0
  95. package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.d.ts.map +1 -0
  96. package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.js +723 -0
  97. package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.js.map +1 -0
  98. package/dist/esm/compliance/audit-trails/audit-log-sink.shared.schemas.d.ts.map +1 -1
  99. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts +2 -2
  100. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
  101. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts +8 -0
  102. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts.map +1 -1
  103. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js +15 -0
  104. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js.map +1 -1
  105. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts +610 -16
  106. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts.map +1 -1
  107. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js +769 -38
  108. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js.map +1 -1
  109. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.d.ts.map +1 -1
  110. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js +29 -0
  111. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
  112. package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.d.ts +463 -0
  113. package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.d.ts.map +1 -0
  114. package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.js +526 -0
  115. package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.js.map +1 -0
  116. package/dist/esm/compliance/documents/governed-documents.shared.schemas.d.ts +539 -15
  117. package/dist/esm/compliance/documents/governed-documents.shared.schemas.d.ts.map +1 -1
  118. package/dist/esm/compliance/documents/governed-documents.shared.schemas.js +402 -14
  119. package/dist/esm/compliance/documents/governed-documents.shared.schemas.js.map +1 -1
  120. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.d.ts +18 -0
  121. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.d.ts.map +1 -0
  122. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.js +89 -0
  123. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.js.map +1 -0
  124. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.d.ts +47 -0
  125. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.d.ts.map +1 -0
  126. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.js +73 -0
  127. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.js.map +1 -0
  128. package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.d.ts +21 -0
  129. package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.d.ts.map +1 -1
  130. package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.js +39 -1
  131. package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.js.map +1 -1
  132. package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.d.ts +33 -0
  133. package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.d.ts.map +1 -0
  134. package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.js +30 -0
  135. package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.js.map +1 -0
  136. package/dist/esm/compliance/privacy/client-storage.shared.schemas.d.ts +6 -5
  137. package/dist/esm/compliance/privacy/client-storage.shared.schemas.d.ts.map +1 -1
  138. package/dist/esm/compliance/privacy/client-storage.shared.schemas.js +15 -5
  139. package/dist/esm/compliance/privacy/client-storage.shared.schemas.js.map +1 -1
  140. package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.d.ts +127 -0
  141. package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.d.ts.map +1 -0
  142. package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.js +94 -0
  143. package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.js.map +1 -0
  144. package/dist/esm/compliance/privacy/consent-purposes.shared.d.ts +125 -0
  145. package/dist/esm/compliance/privacy/consent-purposes.shared.d.ts.map +1 -0
  146. package/dist/esm/compliance/privacy/consent-purposes.shared.js +136 -0
  147. package/dist/esm/compliance/privacy/consent-purposes.shared.js.map +1 -0
  148. package/dist/esm/compliance/privacy/data-retention.shared.schemas.d.ts.map +1 -1
  149. package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.d.ts +91 -0
  150. package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.d.ts.map +1 -0
  151. package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.js +123 -0
  152. package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.js.map +1 -0
  153. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts.map +1 -1
  154. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts.map +1 -1
  155. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -1
  156. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -1
  157. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts +68 -25
  158. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts.map +1 -1
  159. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js +74 -22
  160. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js.map +1 -1
  161. package/dist/esm/compliance/privacy/personal-data-category.shared.schemas.d.ts.map +1 -1
  162. package/dist/esm/compliance/privacy/personal-data-declaration.shared.utils.d.ts.map +1 -1
  163. package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts +9 -17
  164. package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts.map +1 -1
  165. package/dist/esm/compliance/privacy/privacy.shared.schemas.js +74 -31
  166. package/dist/esm/compliance/privacy/privacy.shared.schemas.js.map +1 -1
  167. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts.map +1 -1
  168. package/dist/esm/compliance/privacy/redaction.shared.schemas.js.map +1 -1
  169. package/dist/esm/compliance/privacy/retention-schedule.shared.schemas.d.ts.map +1 -1
  170. package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.d.ts +47 -0
  171. package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.d.ts.map +1 -0
  172. package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.js +98 -0
  173. package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.js.map +1 -0
  174. package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.d.ts +368 -35
  175. package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.d.ts.map +1 -1
  176. package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.js +403 -17
  177. package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.js.map +1 -1
  178. package/dist/esm/compliance/privacy/subject-export-render.shared.utils.d.ts.map +1 -1
  179. package/dist/esm/compliance/privacy/subject-export.shared.schemas.d.ts.map +1 -1
  180. package/dist/esm/compliance/privacy/subject-export.shared.schemas.js.map +1 -1
  181. package/dist/esm/compliance/review-cadence.shared.schemas.d.ts +56 -0
  182. package/dist/esm/compliance/review-cadence.shared.schemas.d.ts.map +1 -0
  183. package/dist/esm/compliance/review-cadence.shared.schemas.js +71 -0
  184. package/dist/esm/compliance/review-cadence.shared.schemas.js.map +1 -0
  185. package/dist/esm/compliance/risk-posture.shared.schemas.d.ts +161 -0
  186. package/dist/esm/compliance/risk-posture.shared.schemas.d.ts.map +1 -0
  187. package/dist/esm/compliance/risk-posture.shared.schemas.js +166 -0
  188. package/dist/esm/compliance/risk-posture.shared.schemas.js.map +1 -0
  189. package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts +4 -3
  190. package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts.map +1 -1
  191. package/dist/esm/config/analytics-value-moments.shared.schemas.js +4 -3
  192. package/dist/esm/config/analytics-value-moments.shared.schemas.js.map +1 -1
  193. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts +222 -9
  194. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
  195. package/dist/esm/config/app-configuration-shared.shared.schemas.js +232 -9
  196. package/dist/esm/config/app-configuration-shared.shared.schemas.js.map +1 -1
  197. package/dist/esm/config/auth-config-resolution.shared.utils.d.ts +75 -3
  198. package/dist/esm/config/auth-config-resolution.shared.utils.d.ts.map +1 -1
  199. package/dist/esm/config/auth-config-resolution.shared.utils.js +93 -4
  200. package/dist/esm/config/auth-config-resolution.shared.utils.js.map +1 -1
  201. package/dist/esm/config/brand-assets.shared.schemas.d.ts +5 -4
  202. package/dist/esm/config/brand-assets.shared.schemas.d.ts.map +1 -1
  203. package/dist/esm/config/brand-assets.shared.schemas.js +14 -4
  204. package/dist/esm/config/brand-assets.shared.schemas.js.map +1 -1
  205. package/dist/esm/config/entity-identity-config.shared.schemas.d.ts +463 -19
  206. package/dist/esm/config/entity-identity-config.shared.schemas.d.ts.map +1 -1
  207. package/dist/esm/config/entity-identity-config.shared.schemas.js +535 -28
  208. package/dist/esm/config/entity-identity-config.shared.schemas.js.map +1 -1
  209. package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts +24 -24
  210. package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts.map +1 -1
  211. package/dist/esm/config/frontend/chart-registration-alignment.shared.d.ts.map +1 -1
  212. package/dist/esm/config/frontend/chart-registration-alignment.shared.js.map +1 -1
  213. package/dist/esm/config/frontend/navigation.shared.schemas.d.ts +21 -17
  214. package/dist/esm/config/frontend/navigation.shared.schemas.d.ts.map +1 -1
  215. package/dist/esm/config/frontend/navigation.shared.schemas.js +58 -40
  216. package/dist/esm/config/frontend/navigation.shared.schemas.js.map +1 -1
  217. package/dist/esm/config/frontend/onboarding.shared.schemas.d.ts +90 -133
  218. package/dist/esm/config/frontend/onboarding.shared.schemas.d.ts.map +1 -1
  219. package/dist/esm/config/frontend/onboarding.shared.schemas.js +148 -100
  220. package/dist/esm/config/frontend/onboarding.shared.schemas.js.map +1 -1
  221. package/dist/esm/config/registration-acquisition-policy.shared.utils.d.ts.map +1 -1
  222. package/dist/esm/config-authoring.entry.d.ts.map +1 -1
  223. package/dist/esm/crdt/crdt-merge.shared.utils.d.ts.map +1 -1
  224. package/dist/esm/data-seeding/data-seeding-config.shared.schemas.d.ts.map +1 -1
  225. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +140 -43
  226. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts.map +1 -1
  227. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js +141 -42
  228. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
  229. package/dist/esm/errors/errors.shared.definitions.d.ts.map +1 -1
  230. package/dist/esm/errors/errors.shared.definitions.js +1 -1
  231. package/dist/esm/errors/errors.shared.definitions.js.map +1 -1
  232. package/dist/esm/errors/errors.shared.schemas.d.ts +29 -40
  233. package/dist/esm/errors/errors.shared.schemas.d.ts.map +1 -1
  234. package/dist/esm/errors/errors.shared.schemas.js +37 -54
  235. package/dist/esm/errors/errors.shared.schemas.js.map +1 -1
  236. package/dist/esm/errors/errors.shared.utils.d.ts +24 -0
  237. package/dist/esm/errors/errors.shared.utils.d.ts.map +1 -1
  238. package/dist/esm/errors/errors.shared.utils.js +39 -0
  239. package/dist/esm/errors/errors.shared.utils.js.map +1 -1
  240. package/dist/esm/errors/thrown-value-description.shared.utils.d.ts +27 -0
  241. package/dist/esm/errors/thrown-value-description.shared.utils.d.ts.map +1 -0
  242. package/dist/esm/errors/thrown-value-description.shared.utils.js +67 -0
  243. package/dist/esm/errors/thrown-value-description.shared.utils.js.map +1 -0
  244. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts +48 -73
  245. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts.map +1 -1
  246. package/dist/esm/external-data/external-data-pipeline.shared.schemas.js +103 -9
  247. package/dist/esm/external-data/external-data-pipeline.shared.schemas.js.map +1 -1
  248. package/dist/esm/external-data.exports.d.ts +1 -0
  249. package/dist/esm/external-data.exports.d.ts.map +1 -1
  250. package/dist/esm/external-data.exports.js +1 -0
  251. package/dist/esm/external-data.exports.js.map +1 -1
  252. package/dist/esm/external-providers/compose-provider-registry.shared.d.ts.map +1 -1
  253. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +11 -12
  254. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
  255. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +11 -12
  256. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js.map +1 -1
  257. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts +5 -3
  258. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts.map +1 -1
  259. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js +5 -3
  260. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js.map +1 -1
  261. package/dist/esm/external-providers/engine-capability-surface.shared.d.ts +77 -0
  262. package/dist/esm/external-providers/engine-capability-surface.shared.d.ts.map +1 -0
  263. package/dist/esm/external-providers/engine-capability-surface.shared.js +173 -0
  264. package/dist/esm/external-providers/engine-capability-surface.shared.js.map +1 -0
  265. package/dist/esm/external-providers/external-providers.shared.schemas.d.ts +2 -0
  266. package/dist/esm/external-providers/external-providers.shared.schemas.d.ts.map +1 -1
  267. package/dist/esm/external-providers/external-providers.shared.schemas.js +21 -0
  268. package/dist/esm/external-providers/external-providers.shared.schemas.js.map +1 -1
  269. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +129 -9
  270. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts.map +1 -1
  271. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts +114 -0
  272. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts.map +1 -1
  273. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js +148 -0
  274. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js.map +1 -1
  275. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts.map +1 -1
  276. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js.map +1 -1
  277. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts +54 -3
  278. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts.map +1 -1
  279. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js +58 -1
  280. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js.map +1 -1
  281. package/dist/esm/external-providers/frontend-provider-public-config.shared.d.ts +12 -3
  282. package/dist/esm/external-providers/frontend-provider-public-config.shared.d.ts.map +1 -1
  283. package/dist/esm/external-providers/frontend-provider-public-config.shared.js +14 -5
  284. package/dist/esm/external-providers/frontend-provider-public-config.shared.js.map +1 -1
  285. package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.d.ts +30 -0
  286. package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.d.ts.map +1 -0
  287. package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.js +32 -0
  288. package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.js.map +1 -0
  289. package/dist/esm/external-providers/provider-browser-operations.shared.schemas.d.ts +86 -0
  290. package/dist/esm/external-providers/provider-browser-operations.shared.schemas.d.ts.map +1 -0
  291. package/dist/esm/external-providers/provider-browser-operations.shared.schemas.js +85 -0
  292. package/dist/esm/external-providers/provider-browser-operations.shared.schemas.js.map +1 -0
  293. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +14 -13
  294. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
  295. package/dist/esm/external-providers/provider-capability.shared.schemas.js +10 -10
  296. package/dist/esm/external-providers/provider-capability.shared.schemas.js.map +1 -1
  297. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts.map +1 -1
  298. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js.map +1 -1
  299. package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.d.ts.map +1 -1
  300. package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.js.map +1 -1
  301. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts +7 -5
  302. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts.map +1 -1
  303. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js +7 -5
  304. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js.map +1 -1
  305. package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts +8 -5
  306. package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts.map +1 -1
  307. package/dist/esm/external-providers/provider-metadata.shared.schemas.js +5 -2
  308. package/dist/esm/external-providers/provider-metadata.shared.schemas.js.map +1 -1
  309. package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts.map +1 -1
  310. package/dist/esm/external-providers/provider-protocol.shared.schemas.js.map +1 -1
  311. package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts.map +1 -1
  312. package/dist/esm/external-providers/provider-tier-rule.shared.utils.js.map +1 -1
  313. package/dist/esm/external-providers/provider-usage-pricing.shared.schemas.d.ts.map +1 -1
  314. package/dist/esm/features/application-features.shared.resources-config.schemas.d.ts +2 -0
  315. package/dist/esm/features/application-features.shared.resources-config.schemas.d.ts.map +1 -1
  316. package/dist/esm/features/application-features.shared.resources-config.schemas.js +30 -3
  317. package/dist/esm/features/application-features.shared.resources-config.schemas.js.map +1 -1
  318. package/dist/esm/features/connected-feature.example.d.ts +64 -0
  319. package/dist/esm/features/connected-feature.example.d.ts.map +1 -0
  320. package/dist/esm/features/connected-feature.example.js +86 -0
  321. package/dist/esm/features/connected-feature.example.js.map +1 -0
  322. package/dist/esm/features/core-feature-definitions.shared.d.ts.map +1 -1
  323. package/dist/esm/features/core-feature-definitions.shared.js.map +1 -1
  324. package/dist/esm/features/feature-builders.shared.d.ts.map +1 -1
  325. package/dist/esm/features/feature-builders.shared.js.map +1 -1
  326. package/dist/esm/features/feature-definition.shared.schemas.d.ts.map +1 -1
  327. package/dist/esm/features/feature-registry.shared.d.ts.map +1 -1
  328. package/dist/esm/features/feature-resolution.shared.schemas.d.ts.map +1 -1
  329. package/dist/esm/features/scope-features.shared.schemas.d.ts +53 -0
  330. package/dist/esm/features/scope-features.shared.schemas.d.ts.map +1 -1
  331. package/dist/esm/features/scope-features.shared.schemas.js +37 -0
  332. package/dist/esm/features/scope-features.shared.schemas.js.map +1 -1
  333. package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts +1 -1
  334. package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts.map +1 -1
  335. package/dist/esm/features/user-features.shared.resources-config.schemas.js +34 -52
  336. package/dist/esm/features/user-features.shared.resources-config.schemas.js.map +1 -1
  337. package/dist/esm/files/file-remote-reference-link.shared.schemas.d.ts.map +1 -1
  338. package/dist/esm/files/file-remote-reference-link.shared.schemas.js.map +1 -1
  339. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts.map +1 -1
  340. package/dist/esm/files/file-upload-grant.shared.schemas.js.map +1 -1
  341. package/dist/esm/files/files.shared.resources-config.schemas.d.ts +3 -3
  342. package/dist/esm/files/files.shared.resources-config.schemas.d.ts.map +1 -1
  343. package/dist/esm/files/files.shared.resources-config.schemas.js +3 -3
  344. package/dist/esm/files/files.shared.resources-config.schemas.js.map +1 -1
  345. package/dist/esm/files/files.shared.schemas.d.ts.map +1 -1
  346. package/dist/esm/files/files.shared.schemas.js.map +1 -1
  347. package/dist/esm/files/files.shared.utils.d.ts.map +1 -1
  348. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
  349. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.d.ts.map +1 -1
  350. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts.map +1 -1
  351. package/dist/esm/flows-actors/a2a-token-budget-state.shared.schemas.d.ts.map +1 -1
  352. package/dist/esm/flows-actors/actors.shared.schemas.d.ts +152 -129
  353. package/dist/esm/flows-actors/actors.shared.schemas.d.ts.map +1 -1
  354. package/dist/esm/flows-actors/actors.shared.schemas.js +99 -2
  355. package/dist/esm/flows-actors/actors.shared.schemas.js.map +1 -1
  356. package/dist/esm/flows-actors/agent-traceability.shared.schemas.d.ts +6 -0
  357. package/dist/esm/flows-actors/agent-traceability.shared.schemas.d.ts.map +1 -1
  358. package/dist/esm/flows-actors/agents.shared.schemas.d.ts +3 -3
  359. package/dist/esm/flows-actors/agents.shared.schemas.d.ts.map +1 -1
  360. package/dist/esm/flows-actors/agents.shared.schemas.js +11 -5
  361. package/dist/esm/flows-actors/agents.shared.schemas.js.map +1 -1
  362. package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts +13 -0
  363. package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts.map +1 -1
  364. package/dist/esm/flows-actors/deliberation.shared.schemas.js.map +1 -1
  365. package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.d.ts +45 -0
  366. package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.d.ts.map +1 -0
  367. package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.js +51 -0
  368. package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.js.map +1 -0
  369. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts.map +1 -1
  370. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts +31 -0
  371. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts.map +1 -1
  372. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js +61 -3
  373. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
  374. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts.map +1 -1
  375. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts +2 -2
  376. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts.map +1 -1
  377. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts +16 -8
  378. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts.map +1 -1
  379. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js +23 -11
  380. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js.map +1 -1
  381. package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.d.ts +0 -189
  382. package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.d.ts.map +1 -1
  383. package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.js +14 -50
  384. package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.js.map +1 -1
  385. package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.d.ts +0 -3
  386. package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.d.ts.map +1 -1
  387. package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.js +0 -1
  388. package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.js.map +1 -1
  389. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts.map +1 -1
  390. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js.map +1 -1
  391. package/dist/esm/flows-actors/flows-actors.system.shared.definitions.d.ts.map +1 -1
  392. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.d.ts +1 -67
  393. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.d.ts.map +1 -1
  394. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js +1 -2
  395. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js.map +1 -1
  396. package/dist/esm/flows-actors/flows.shared.schemas.d.ts +0 -1
  397. package/dist/esm/flows-actors/flows.shared.schemas.d.ts.map +1 -1
  398. package/dist/esm/flows-actors/flows.shared.schemas.js.map +1 -1
  399. package/dist/esm/flows-actors/human-decision.shared.schemas.d.ts +121 -0
  400. package/dist/esm/flows-actors/human-decision.shared.schemas.d.ts.map +1 -0
  401. package/dist/esm/flows-actors/human-decision.shared.schemas.js +252 -0
  402. package/dist/esm/flows-actors/human-decision.shared.schemas.js.map +1 -0
  403. package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts.map +1 -1
  404. package/dist/esm/flows-actors/mcp-servers.shared.schemas.js +4 -2
  405. package/dist/esm/flows-actors/mcp-servers.shared.schemas.js.map +1 -1
  406. package/dist/esm/flows-actors/prompt-ir.shared.schemas.d.ts.map +1 -1
  407. package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.d.ts +24 -0
  408. package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.d.ts.map +1 -0
  409. package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.js +80 -0
  410. package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.js.map +1 -0
  411. package/dist/esm/flows-actors/provider-call-records.shared.schemas.d.ts +123 -0
  412. package/dist/esm/flows-actors/provider-call-records.shared.schemas.d.ts.map +1 -0
  413. package/dist/esm/flows-actors/provider-call-records.shared.schemas.js +181 -0
  414. package/dist/esm/flows-actors/provider-call-records.shared.schemas.js.map +1 -0
  415. package/dist/esm/flows-actors/tasks.actors.shared.schemas.d.ts +58 -81
  416. package/dist/esm/flows-actors/tasks.actors.shared.schemas.d.ts.map +1 -1
  417. package/dist/esm/flows-actors/tasks.actors.shared.schemas.js +75 -38
  418. package/dist/esm/flows-actors/tasks.actors.shared.schemas.js.map +1 -1
  419. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.d.ts +106 -1
  420. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.d.ts.map +1 -1
  421. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js +117 -0
  422. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js.map +1 -1
  423. package/dist/esm/guidance/guidance-flow.shared.schemas.d.ts +106 -24
  424. package/dist/esm/guidance/guidance-flow.shared.schemas.d.ts.map +1 -1
  425. package/dist/esm/guidance/guidance-flow.shared.schemas.js +152 -14
  426. package/dist/esm/guidance/guidance-flow.shared.schemas.js.map +1 -1
  427. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts.map +1 -1
  428. package/dist/esm/guidance/guidance-state.shared.schemas.d.ts.map +1 -1
  429. package/dist/esm/guidance/guidance-state.shared.utils.d.ts.map +1 -1
  430. package/dist/esm/guidance/guidance-state.shared.utils.js.map +1 -1
  431. package/dist/esm/guidance/lifecycle-config.shared.schemas.d.ts.map +1 -1
  432. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts.map +1 -1
  433. package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts +0 -6
  434. package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts.map +1 -1
  435. package/dist/esm/guidance/lifecycle-state.shared.schemas.js +0 -19
  436. package/dist/esm/guidance/lifecycle-state.shared.schemas.js.map +1 -1
  437. package/dist/esm/guidance/milestone-builders.shared.d.ts +4 -2
  438. package/dist/esm/guidance/milestone-builders.shared.d.ts.map +1 -1
  439. package/dist/esm/guidance/milestone-builders.shared.js +4 -2
  440. package/dist/esm/guidance/milestone-builders.shared.js.map +1 -1
  441. package/dist/esm/guidance/milestone-definition.shared.schemas.d.ts +66 -4
  442. package/dist/esm/guidance/milestone-definition.shared.schemas.d.ts.map +1 -1
  443. package/dist/esm/guidance/milestone-definition.shared.schemas.js +50 -0
  444. package/dist/esm/guidance/milestone-definition.shared.schemas.js.map +1 -1
  445. package/dist/esm/guidance/progression-presentation.shared.schemas.d.ts +71 -0
  446. package/dist/esm/guidance/progression-presentation.shared.schemas.d.ts.map +1 -0
  447. package/dist/esm/guidance/progression-presentation.shared.schemas.js +72 -0
  448. package/dist/esm/guidance/progression-presentation.shared.schemas.js.map +1 -0
  449. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts +2 -0
  450. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts.map +1 -1
  451. package/dist/esm/guidance/progression-state.shared.schemas.d.ts +4 -0
  452. package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
  453. package/dist/esm/guidance/progression-state.shared.schemas.js +5 -0
  454. package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
  455. package/dist/esm/http-api-binding/http-api-binding-id.shared.utils.d.ts.map +1 -1
  456. package/dist/esm/http-api-binding/http-api-binding-id.shared.utils.js +2 -1
  457. package/dist/esm/http-api-binding/http-api-binding-id.shared.utils.js.map +1 -1
  458. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts +181 -412
  459. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts.map +1 -1
  460. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js +249 -199
  461. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js.map +1 -1
  462. package/dist/esm/http-api-binding/http-api-transport-dialect.shared.d.ts +107 -0
  463. package/dist/esm/http-api-binding/http-api-transport-dialect.shared.d.ts.map +1 -0
  464. package/dist/esm/http-api-binding/http-api-transport-dialect.shared.js +108 -0
  465. package/dist/esm/http-api-binding/http-api-transport-dialect.shared.js.map +1 -0
  466. package/dist/esm/http-api-binding/read-through-engine-anchors.shared.d.ts +38 -0
  467. package/dist/esm/http-api-binding/read-through-engine-anchors.shared.d.ts.map +1 -0
  468. package/dist/esm/http-api-binding/read-through-engine-anchors.shared.js +42 -0
  469. package/dist/esm/http-api-binding/read-through-engine-anchors.shared.js.map +1 -0
  470. package/dist/esm/i18n/labelling.dto.shared.schemas.d.ts.map +1 -1
  471. package/dist/esm/index.d.ts +41 -4
  472. package/dist/esm/index.d.ts.map +1 -1
  473. package/dist/esm/index.js +71 -16
  474. package/dist/esm/index.js.map +1 -1
  475. package/dist/esm/meta-workflows/actions.meta-workflows.shared.schemas.d.ts.map +1 -0
  476. package/dist/esm/meta-workflows/actions.meta-workflows.shared.schemas.js.map +1 -0
  477. package/dist/esm/meta-workflows/catalog.meta-workflows.shared.schemas.d.ts.map +1 -0
  478. package/dist/esm/meta-workflows/catalog.meta-workflows.shared.schemas.js.map +1 -0
  479. package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.d.ts +130 -0
  480. package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.d.ts.map +1 -0
  481. package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.js +104 -0
  482. package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.js.map +1 -0
  483. package/dist/esm/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts.map +1 -0
  484. package/dist/esm/meta-workflows/context-selection.meta-workflows.shared.schemas.js.map +1 -0
  485. package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/decisions.meta-workflows.shared.schemas.d.ts +64 -0
  486. package/dist/esm/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts.map +1 -0
  487. package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/decisions.meta-workflows.shared.schemas.js +47 -0
  488. package/dist/esm/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +1 -0
  489. package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.d.ts +544 -0
  490. package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.d.ts.map +1 -0
  491. package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.js +638 -0
  492. package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.js.map +1 -0
  493. package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/portable-primitives.meta-workflows.shared.schemas.d.ts +15 -8
  494. package/dist/esm/meta-workflows/portable-primitives.meta-workflows.shared.schemas.d.ts.map +1 -0
  495. package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/portable-primitives.meta-workflows.shared.schemas.js +15 -8
  496. package/dist/esm/meta-workflows/portable-primitives.meta-workflows.shared.schemas.js.map +1 -0
  497. package/dist/esm/meta-workflows.exports.d.ts +21 -25
  498. package/dist/esm/meta-workflows.exports.d.ts.map +1 -1
  499. package/dist/esm/meta-workflows.exports.js +21 -25
  500. package/dist/esm/meta-workflows.exports.js.map +1 -1
  501. package/dist/esm/monitoring/monitoring.shared.schemas.d.ts.map +1 -1
  502. package/dist/esm/notifications/email/email-context.shared.schemas.d.ts.map +1 -1
  503. package/dist/esm/notifications/email/email-submission.shared.enums.d.ts +16 -0
  504. package/dist/esm/notifications/email/email-submission.shared.enums.d.ts.map +1 -0
  505. package/dist/esm/notifications/email/email-submission.shared.enums.js +17 -0
  506. package/dist/esm/notifications/email/email-submission.shared.enums.js.map +1 -0
  507. package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts +36 -0
  508. package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts.map +1 -1
  509. package/dist/esm/notifications/email/email-template-registry.shared.schemas.js +50 -3
  510. package/dist/esm/notifications/email/email-template-registry.shared.schemas.js.map +1 -1
  511. package/dist/esm/notifications/email/email-template.shared.enums.d.ts.map +1 -1
  512. package/dist/esm/notifications/email/email-template.shared.enums.js.map +1 -1
  513. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts.map +1 -1
  514. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
  515. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.js +4 -1
  516. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.js.map +1 -1
  517. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.d.ts +2 -1
  518. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.d.ts.map +1 -1
  519. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.js +3 -2
  520. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.js.map +1 -1
  521. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts.map +1 -1
  522. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js +44 -3
  523. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js.map +1 -1
  524. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts.map +1 -1
  525. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js.map +1 -1
  526. package/dist/esm/notifications/notification-badges.core.definitions.d.ts.map +1 -1
  527. package/dist/esm/notifications/notification-badges.core.definitions.js.map +1 -1
  528. package/dist/esm/notifications/notification-badges.schemas.d.ts.map +1 -1
  529. package/dist/esm/notifications/notification-badges.schemas.js.map +1 -1
  530. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts +1 -1
  531. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts.map +1 -1
  532. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js +12 -33
  533. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js.map +1 -1
  534. package/dist/esm/notifications/notifications.shared.schemas.d.ts +19 -8
  535. package/dist/esm/notifications/notifications.shared.schemas.d.ts.map +1 -1
  536. package/dist/esm/notifications/notifications.shared.schemas.js +19 -8
  537. package/dist/esm/notifications/notifications.shared.schemas.js.map +1 -1
  538. package/dist/esm/organizations/application-owner-organization.shared.schemas.d.ts +145 -0
  539. package/dist/esm/organizations/application-owner-organization.shared.schemas.d.ts.map +1 -0
  540. package/dist/esm/organizations/application-owner-organization.shared.schemas.js +146 -0
  541. package/dist/esm/organizations/application-owner-organization.shared.schemas.js.map +1 -0
  542. package/dist/esm/organizations/organization-features.shared.resources-config.schemas.d.ts +2 -0
  543. package/dist/esm/organizations/organization-features.shared.resources-config.schemas.d.ts.map +1 -1
  544. package/dist/esm/organizations/organization-features.shared.resources-config.schemas.js +26 -3
  545. package/dist/esm/organizations/organization-features.shared.resources-config.schemas.js.map +1 -1
  546. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts +1 -1
  547. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts.map +1 -1
  548. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js +18 -14
  549. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js.map +1 -1
  550. package/dist/esm/organizations/organization-members.shared.schemas.d.ts +1 -1
  551. package/dist/esm/organizations/organization-members.shared.schemas.d.ts.map +1 -1
  552. package/dist/esm/organizations/organization-members.shared.schemas.js +9 -1
  553. package/dist/esm/organizations/organization-members.shared.schemas.js.map +1 -1
  554. package/dist/esm/organizations/organization-notifications.shared.resources-config.schemas.d.ts.map +1 -1
  555. package/dist/esm/organizations/organization-notifications.shared.schemas.d.ts.map +1 -1
  556. package/dist/esm/organizations/organization-notifications.shared.schemas.js.map +1 -1
  557. package/dist/esm/organizations/organization-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  558. package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts +2 -1
  559. package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts.map +1 -1
  560. package/dist/esm/organizations/organization-preferences.shared.schemas.js +3 -0
  561. package/dist/esm/organizations/organization-preferences.shared.schemas.js.map +1 -1
  562. package/dist/esm/organizations/organization-profile.shared.resources-config.schemas.d.ts.map +1 -1
  563. package/dist/esm/organizations/organization-profile.shared.schemas.d.ts +3 -1
  564. package/dist/esm/organizations/organization-profile.shared.schemas.d.ts.map +1 -1
  565. package/dist/esm/organizations/organization-profile.shared.schemas.js +4 -2
  566. package/dist/esm/organizations/organization-profile.shared.schemas.js.map +1 -1
  567. package/dist/esm/organizations/organization-unit-inheritance.shared.d.ts.map +1 -1
  568. package/dist/esm/organizations/organization-unit-members.shared.resources-config.schemas.d.ts.map +1 -1
  569. package/dist/esm/organizations/organization-unit-members.shared.schemas.d.ts.map +1 -1
  570. package/dist/esm/organizations/organization-unit-narrowing-decision.shared.d.ts.map +1 -1
  571. package/dist/esm/organizations/organization-unit-narrowing.example.d.ts.map +1 -1
  572. package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts +29 -2
  573. package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts.map +1 -1
  574. package/dist/esm/organizations/organization-unit-narrowing.shared.js +27 -0
  575. package/dist/esm/organizations/organization-unit-narrowing.shared.js.map +1 -1
  576. package/dist/esm/organizations/organization-units.shared.resources-config.schemas.d.ts +2 -0
  577. package/dist/esm/organizations/organization-units.shared.resources-config.schemas.d.ts.map +1 -1
  578. package/dist/esm/organizations/organization-units.shared.resources-config.schemas.js +3 -0
  579. package/dist/esm/organizations/organization-units.shared.resources-config.schemas.js.map +1 -1
  580. package/dist/esm/organizations/organization-units.shared.schemas.d.ts +17 -5
  581. package/dist/esm/organizations/organization-units.shared.schemas.d.ts.map +1 -1
  582. package/dist/esm/organizations/organization-units.shared.schemas.js +65 -5
  583. package/dist/esm/organizations/organization-units.shared.schemas.js.map +1 -1
  584. package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts +51 -7
  585. package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
  586. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +151 -7
  587. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
  588. package/dist/esm/organizations/organizations.shared.schemas.d.ts +18 -83
  589. package/dist/esm/organizations/organizations.shared.schemas.d.ts.map +1 -1
  590. package/dist/esm/organizations/organizations.shared.schemas.js +37 -19
  591. package/dist/esm/organizations/organizations.shared.schemas.js.map +1 -1
  592. package/dist/esm/organizations/tenant-teardown-config.shared.schemas.d.ts.map +1 -1
  593. package/dist/esm/organizations/tenant-teardown-config.shared.schemas.js.map +1 -1
  594. package/dist/esm/provider-registration-runtime.exports.d.ts +1 -0
  595. package/dist/esm/provider-registration-runtime.exports.d.ts.map +1 -1
  596. package/dist/esm/provider-registration-runtime.exports.js +1 -0
  597. package/dist/esm/provider-registration-runtime.exports.js.map +1 -1
  598. package/dist/esm/public-runtime/index.d.ts +39 -10
  599. package/dist/esm/public-runtime/index.d.ts.map +1 -1
  600. package/dist/esm/public-runtime/index.js +39 -10
  601. package/dist/esm/public-runtime/index.js.map +1 -1
  602. package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts +7 -8
  603. package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts.map +1 -1
  604. package/dist/esm/queue/jobs.shared.resources-config.schemas.js +30 -6
  605. package/dist/esm/queue/jobs.shared.resources-config.schemas.js.map +1 -1
  606. package/dist/esm/queue/jobs.shared.schemas.d.ts +388 -2
  607. package/dist/esm/queue/jobs.shared.schemas.d.ts.map +1 -1
  608. package/dist/esm/queue/jobs.shared.schemas.js +315 -11
  609. package/dist/esm/queue/jobs.shared.schemas.js.map +1 -1
  610. package/dist/esm/queue/jobs.shared.utils.d.ts +6 -4
  611. package/dist/esm/queue/jobs.shared.utils.d.ts.map +1 -1
  612. package/dist/esm/queue/jobs.shared.utils.js +5 -4
  613. package/dist/esm/queue/jobs.shared.utils.js.map +1 -1
  614. package/dist/esm/queue/queues.shared.schemas.d.ts +20 -8
  615. package/dist/esm/queue/queues.shared.schemas.d.ts.map +1 -1
  616. package/dist/esm/queue/queues.shared.schemas.js +23 -18
  617. package/dist/esm/queue/queues.shared.schemas.js.map +1 -1
  618. package/dist/esm/queue/queues.shared.utils.d.ts +4 -2
  619. package/dist/esm/queue/queues.shared.utils.d.ts.map +1 -1
  620. package/dist/esm/queue/queues.shared.utils.js +4 -2
  621. package/dist/esm/queue/queues.shared.utils.js.map +1 -1
  622. package/dist/esm/rag/rag-retrieval-health.shared.d.ts +27 -0
  623. package/dist/esm/rag/rag-retrieval-health.shared.d.ts.map +1 -0
  624. package/dist/esm/rag/rag-retrieval-health.shared.js +29 -0
  625. package/dist/esm/rag/rag-retrieval-health.shared.js.map +1 -0
  626. package/dist/esm/requests/header-keys.shared.d.ts +6 -0
  627. package/dist/esm/requests/header-keys.shared.d.ts.map +1 -1
  628. package/dist/esm/requests/header-keys.shared.js +7 -0
  629. package/dist/esm/requests/header-keys.shared.js.map +1 -1
  630. package/dist/esm/requests/idempotency-key.shared.d.ts +76 -0
  631. package/dist/esm/requests/idempotency-key.shared.d.ts.map +1 -0
  632. package/dist/esm/requests/idempotency-key.shared.js +112 -0
  633. package/dist/esm/requests/idempotency-key.shared.js.map +1 -0
  634. package/dist/esm/requests/manual-controllers-routes-documentation.d.ts.map +1 -1
  635. package/dist/esm/requests/manual-controllers-routes-documentation.js +218 -17
  636. package/dist/esm/requests/manual-controllers-routes-documentation.js.map +1 -1
  637. package/dist/esm/requests/manual-controllers-routes-urls.d.ts +87 -0
  638. package/dist/esm/requests/manual-controllers-routes-urls.d.ts.map +1 -1
  639. package/dist/esm/requests/manual-controllers-routes-urls.js +102 -0
  640. package/dist/esm/requests/manual-controllers-routes-urls.js.map +1 -1
  641. package/dist/esm/requests/rate-limits.shared.schemas.d.ts.map +1 -1
  642. package/dist/esm/requests/rate-limits.shared.schemas.js.map +1 -1
  643. package/dist/esm/requests/websocket.shared.schemas.d.ts +200 -24
  644. package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
  645. package/dist/esm/requests/websocket.shared.schemas.js +219 -5
  646. package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
  647. package/dist/esm/resources/child-operations.shared.schemas.d.ts +56 -5
  648. package/dist/esm/resources/child-operations.shared.schemas.d.ts.map +1 -1
  649. package/dist/esm/resources/child-operations.shared.schemas.js +97 -5
  650. package/dist/esm/resources/child-operations.shared.schemas.js.map +1 -1
  651. package/dist/esm/resources/context-policy.shared.schemas.d.ts +20 -0
  652. package/dist/esm/resources/context-policy.shared.schemas.d.ts.map +1 -1
  653. package/dist/esm/resources/context-policy.shared.schemas.js +3 -0
  654. package/dist/esm/resources/context-policy.shared.schemas.js.map +1 -1
  655. package/dist/esm/resources/relationship-display.shared.schemas.d.ts.map +1 -1
  656. package/dist/esm/resources/resources-config.shared.factory.d.ts.map +1 -1
  657. package/dist/esm/resources/resources-config.shared.factory.js +498 -29
  658. package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
  659. package/dist/esm/resources/resources-config.shared.schemas.d.ts +623 -45
  660. package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
  661. package/dist/esm/resources/resources-config.shared.schemas.js +315 -22
  662. package/dist/esm/resources/resources-config.shared.schemas.js.map +1 -1
  663. package/dist/esm/resources/resources-registry.shared.core.definitions.d.ts.map +1 -1
  664. package/dist/esm/resources/resources-registry.shared.core.definitions.js +377 -69
  665. package/dist/esm/resources/resources-registry.shared.core.definitions.js.map +1 -1
  666. package/dist/esm/resources/resources-relationships.shared.factory.d.ts.map +1 -1
  667. package/dist/esm/resources/resources-relationships.shared.factory.js.map +1 -1
  668. package/dist/esm/resources/resources-serialization.shared.schemas.d.ts.map +1 -1
  669. package/dist/esm/resources/resources.shared.core.definitions.d.ts +19 -0
  670. package/dist/esm/resources/resources.shared.core.definitions.d.ts.map +1 -1
  671. package/dist/esm/resources/resources.shared.core.definitions.js +28 -0
  672. package/dist/esm/resources/resources.shared.core.definitions.js.map +1 -1
  673. package/dist/esm/resources/resources.shared.schemas.d.ts +256 -10
  674. package/dist/esm/resources/resources.shared.schemas.d.ts.map +1 -1
  675. package/dist/esm/resources/resources.shared.schemas.js +209 -9
  676. package/dist/esm/resources/resources.shared.schemas.js.map +1 -1
  677. package/dist/esm/resources/resources.shared.utils.d.ts +3 -2
  678. package/dist/esm/resources/resources.shared.utils.d.ts.map +1 -1
  679. package/dist/esm/resources/resources.shared.utils.js +38 -6
  680. package/dist/esm/resources/resources.shared.utils.js.map +1 -1
  681. package/dist/esm/resources/utils/collection-export.shared.utils.d.ts.map +1 -1
  682. package/dist/esm/resources/utils/composition-cascade-deletability.validation.d.ts +44 -12
  683. package/dist/esm/resources/utils/composition-cascade-deletability.validation.d.ts.map +1 -1
  684. package/dist/esm/resources/utils/composition-cascade-deletability.validation.js +46 -23
  685. package/dist/esm/resources/utils/composition-cascade-deletability.validation.js.map +1 -1
  686. package/dist/esm/resources/utils/composition-seedability.validation.d.ts.map +1 -1
  687. package/dist/esm/resources/utils/context-addressed-composition-singleton.shared.utils.d.ts.map +1 -1
  688. package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.d.ts +61 -0
  689. package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.d.ts.map +1 -0
  690. package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.js +79 -0
  691. package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.js.map +1 -0
  692. package/dist/esm/resources/utils/duplicate-relationship-registration.validation.d.ts.map +1 -1
  693. package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts.map +1 -1
  694. package/dist/esm/resources/utils/field-value-disclosure.utils.js.map +1 -1
  695. package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.d.ts +60 -0
  696. package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.d.ts.map +1 -0
  697. package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.js +80 -0
  698. package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.js.map +1 -0
  699. package/dist/esm/resources/utils/persistence-adapter-discrimination.shared.utils.d.ts.map +1 -1
  700. package/dist/esm/resources/utils/populated-file-fields.shared.utils.d.ts +21 -0
  701. package/dist/esm/resources/utils/populated-file-fields.shared.utils.d.ts.map +1 -0
  702. package/dist/esm/resources/utils/populated-file-fields.shared.utils.js +159 -0
  703. package/dist/esm/resources/utils/populated-file-fields.shared.utils.js.map +1 -0
  704. package/dist/esm/resources/utils/repository-dto-builder.utils.d.ts.map +1 -1
  705. package/dist/esm/resources/utils/required-fk-fillability.validation.d.ts.map +1 -1
  706. package/dist/esm/resources/utils/resource-operation-type-guards.utils.d.ts.map +1 -1
  707. package/dist/esm/resources/utils/resource-polymorphism.factory.d.ts.map +1 -1
  708. package/dist/esm/resources/utils/resource-polymorphism.relationships.d.ts.map +1 -1
  709. package/dist/esm/resources/utils/resource-polymorphism.schemas.d.ts.map +1 -1
  710. package/dist/esm/resources/utils/resource-polymorphism.utils.d.ts.map +1 -1
  711. package/dist/esm/resources/utils/resource-subtree.utils.d.ts.map +1 -1
  712. package/dist/esm/resources/utils/resources-config-context-needs.utils.d.ts.map +1 -1
  713. package/dist/esm/resources/utils/resources-config-naming.utils.d.ts +15 -0
  714. package/dist/esm/resources/utils/resources-config-naming.utils.d.ts.map +1 -1
  715. package/dist/esm/resources/utils/resources-config-naming.utils.js +56 -11
  716. package/dist/esm/resources/utils/resources-config-naming.utils.js.map +1 -1
  717. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts +51 -1
  718. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts.map +1 -1
  719. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js +210 -51
  720. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js.map +1 -1
  721. package/dist/esm/resources/utils/resources-config-operations.path.utils.d.ts.map +1 -1
  722. package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.d.ts +34 -0
  723. package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.d.ts.map +1 -1
  724. package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.js +45 -1
  725. package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.js.map +1 -1
  726. package/dist/esm/resources/utils/resources-config-operations.utils.d.ts.map +1 -1
  727. package/dist/esm/resources/utils/resources-serialization.utils.d.ts.map +1 -1
  728. package/dist/esm/resources/utils/resources-summary.utils.d.ts.map +1 -1
  729. package/dist/esm/resources/utils/resources-summary.utils.js.map +1 -1
  730. package/dist/esm/resources/utils/schema-family-builder.utils.d.ts.map +1 -1
  731. package/dist/esm/resources/utils/schema-type-inference.utils.d.ts.map +1 -1
  732. package/dist/esm/resources/utils/schema-type-utils.d.ts.map +1 -1
  733. package/dist/esm/resources/utils/schema-variant-resolver.utils.d.ts.map +1 -1
  734. package/dist/esm/resources/utils/shared-persistence-collection.utils.d.ts +29 -0
  735. package/dist/esm/resources/utils/shared-persistence-collection.utils.d.ts.map +1 -1
  736. package/dist/esm/resources/utils/shared-persistence-collection.utils.js +30 -0
  737. package/dist/esm/resources/utils/shared-persistence-collection.utils.js.map +1 -1
  738. package/dist/esm/resources/utils/templatable-file-fields.shared.utils.d.ts.map +1 -1
  739. package/dist/esm/resources/utils/templatable-file-fields.shared.utils.js +49 -11
  740. package/dist/esm/resources/utils/templatable-file-fields.shared.utils.js.map +1 -1
  741. package/dist/esm/runtime/domain-module.shared.definitions.d.ts.map +1 -1
  742. package/dist/esm/runtime/domain-module.shared.definitions.js.map +1 -1
  743. package/dist/esm/runtime/execution-context.shared.schemas.d.ts.map +1 -1
  744. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts.map +1 -1
  745. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js +4 -1
  746. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js.map +1 -1
  747. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts.map +1 -1
  748. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js +4 -1
  749. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js.map +1 -1
  750. package/dist/esm/security/api-keys/api-keys.shared.schemas.d.ts.map +1 -1
  751. package/dist/esm/security/authentications/anonymous-session/anonymous-session.shared.contract.d.ts.map +1 -1
  752. package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts +128 -16
  753. package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts.map +1 -1
  754. package/dist/esm/security/authentications/authentication.shared.dto.schemas.js +160 -6
  755. package/dist/esm/security/authentications/authentication.shared.dto.schemas.js.map +1 -1
  756. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts +324 -9
  757. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts.map +1 -1
  758. package/dist/esm/security/authentications/authentication.shared.schemas.js +411 -8
  759. package/dist/esm/security/authentications/authentication.shared.schemas.js.map +1 -1
  760. package/dist/esm/security/authentications/authentication.shared.utils.d.ts +87 -4
  761. package/dist/esm/security/authentications/authentication.shared.utils.d.ts.map +1 -1
  762. package/dist/esm/security/authentications/authentication.shared.utils.js +95 -6
  763. package/dist/esm/security/authentications/authentication.shared.utils.js.map +1 -1
  764. package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts +23 -1
  765. package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts.map +1 -1
  766. package/dist/esm/security/authentications/consumable-token.shared.schemas.js +23 -1
  767. package/dist/esm/security/authentications/consumable-token.shared.schemas.js.map +1 -1
  768. package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.d.ts +7 -1
  769. package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.d.ts.map +1 -1
  770. package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.js +7 -1
  771. package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.js.map +1 -1
  772. package/dist/esm/security/authentications/password-blocklist.shared.utils.d.ts +74 -0
  773. package/dist/esm/security/authentications/password-blocklist.shared.utils.d.ts.map +1 -0
  774. package/dist/esm/security/authentications/password-blocklist.shared.utils.js +122 -0
  775. package/dist/esm/security/authentications/password-blocklist.shared.utils.js.map +1 -0
  776. package/dist/esm/security/authentications/password-reset.shared.dto.schemas.d.ts.map +1 -1
  777. package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts +88 -2
  778. package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts.map +1 -1
  779. package/dist/esm/security/authentications/registration.shared.dto.schemas.js +149 -2
  780. package/dist/esm/security/authentications/registration.shared.dto.schemas.js.map +1 -1
  781. package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.d.ts +57 -11
  782. package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.d.ts.map +1 -1
  783. package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.js +44 -11
  784. package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.js.map +1 -1
  785. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.d.ts.map +1 -1
  786. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.js +20 -7
  787. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.js.map +1 -1
  788. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts +16 -2
  789. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts.map +1 -1
  790. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js +32 -2
  791. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js.map +1 -1
  792. package/dist/esm/security/authentications/scim/scim-tokens.shared.resources-config.schemas.d.ts.map +1 -1
  793. package/dist/esm/security/authentications/scim/scim-tokens.shared.resources-config.schemas.js +7 -1
  794. package/dist/esm/security/authentications/scim/scim-tokens.shared.resources-config.schemas.js.map +1 -1
  795. package/dist/esm/security/authentications/scim/scim-tokens.shared.schemas.d.ts.map +1 -1
  796. package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.d.ts.map +1 -1
  797. package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.js +4 -1
  798. package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.js.map +1 -1
  799. package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.schemas.d.ts.map +1 -1
  800. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.d.ts +27 -0
  801. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.d.ts.map +1 -0
  802. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.js +109 -0
  803. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.js.map +1 -0
  804. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.d.ts +66 -0
  805. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.d.ts.map +1 -0
  806. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.js +107 -0
  807. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.js.map +1 -0
  808. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts.map +1 -1
  809. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js.map +1 -1
  810. package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.d.ts +19 -0
  811. package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.d.ts.map +1 -1
  812. package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.js +50 -13
  813. package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.js.map +1 -1
  814. package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.d.ts +18 -6
  815. package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.d.ts.map +1 -1
  816. package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.js +133 -4
  817. package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.js.map +1 -1
  818. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts +26 -0
  819. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts.map +1 -1
  820. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js +46 -17
  821. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js.map +1 -1
  822. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts +0 -40
  823. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts.map +1 -1
  824. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js +100 -26
  825. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js.map +1 -1
  826. package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.d.ts +9 -1
  827. package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.d.ts.map +1 -1
  828. package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.js +9 -1
  829. package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.js.map +1 -1
  830. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts +6 -2
  831. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts.map +1 -1
  832. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js +76 -4
  833. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js.map +1 -1
  834. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.d.ts +5 -4
  835. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.d.ts.map +1 -1
  836. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.js +5 -4
  837. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.js.map +1 -1
  838. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.d.ts +4 -0
  839. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
  840. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.js +8 -0
  841. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.js.map +1 -1
  842. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.d.ts +44 -0
  843. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.d.ts.map +1 -1
  844. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.js +52 -0
  845. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.js.map +1 -1
  846. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
  847. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js.map +1 -1
  848. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts.map +1 -1
  849. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
  850. package/dist/esm/security/authorizations/roles.shared.defaults.d.ts.map +1 -1
  851. package/dist/esm/security/authorizations/roles.shared.defaults.js +6 -0
  852. package/dist/esm/security/authorizations/roles.shared.defaults.js.map +1 -1
  853. package/dist/esm/security/authorizations/roles.shared.schemas.d.ts +14 -0
  854. package/dist/esm/security/authorizations/roles.shared.schemas.d.ts.map +1 -1
  855. package/dist/esm/security/authorizations/roles.shared.schemas.js +19 -0
  856. package/dist/esm/security/authorizations/roles.shared.schemas.js.map +1 -1
  857. package/dist/esm/security/authorizations/roles.shared.utils.d.ts.map +1 -1
  858. package/dist/esm/security/authorizations/roles.shared.utils.js +2 -0
  859. package/dist/esm/security/authorizations/roles.shared.utils.js.map +1 -1
  860. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts +4 -1
  861. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts.map +1 -1
  862. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js.map +1 -1
  863. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts +5 -2
  864. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts.map +1 -1
  865. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js +13 -42
  866. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js.map +1 -1
  867. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts +201 -14
  868. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts.map +1 -1
  869. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js +237 -49
  870. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js.map +1 -1
  871. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts +6 -3
  872. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts.map +1 -1
  873. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js +74 -4
  874. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js.map +1 -1
  875. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts +5 -2
  876. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts.map +1 -1
  877. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js +105 -3
  878. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js.map +1 -1
  879. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts.map +1 -1
  880. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js.map +1 -1
  881. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts.map +1 -1
  882. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts.map +1 -1
  883. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js.map +1 -1
  884. package/dist/esm/security/oauth-clients/oauth-resource-server.shared.schemas.d.ts.map +1 -1
  885. package/dist/esm/security/outbound-target-control.shared.schemas.d.ts +67 -0
  886. package/dist/esm/security/outbound-target-control.shared.schemas.d.ts.map +1 -0
  887. package/dist/esm/security/outbound-target-control.shared.schemas.js +69 -0
  888. package/dist/esm/security/outbound-target-control.shared.schemas.js.map +1 -0
  889. package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.d.ts +159 -0
  890. package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.d.ts.map +1 -0
  891. package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.js +164 -0
  892. package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.js.map +1 -0
  893. package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.d.ts +209 -0
  894. package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.d.ts.map +1 -0
  895. package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.js +150 -0
  896. package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.js.map +1 -0
  897. package/dist/esm/systems-of-record/system-of-record-env.shared.d.ts +79 -0
  898. package/dist/esm/systems-of-record/system-of-record-env.shared.d.ts.map +1 -0
  899. package/dist/esm/systems-of-record/system-of-record-env.shared.js +116 -0
  900. package/dist/esm/systems-of-record/system-of-record-env.shared.js.map +1 -0
  901. package/dist/esm/systems-of-record/system-of-record-error-codes.shared.d.ts +145 -0
  902. package/dist/esm/systems-of-record/system-of-record-error-codes.shared.d.ts.map +1 -0
  903. package/dist/esm/systems-of-record/system-of-record-error-codes.shared.js +146 -0
  904. package/dist/esm/systems-of-record/system-of-record-error-codes.shared.js.map +1 -0
  905. package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.d.ts +478 -0
  906. package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.d.ts.map +1 -0
  907. package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.js +619 -0
  908. package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.js.map +1 -0
  909. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.d.ts +31 -0
  910. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.d.ts.map +1 -0
  911. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.js +232 -0
  912. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.js.map +1 -0
  913. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.d.ts +127 -0
  914. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.d.ts.map +1 -0
  915. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.js +204 -0
  916. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.js.map +1 -0
  917. package/dist/esm/testing/resource-config-builders.d.ts.map +1 -1
  918. package/dist/esm/testing/resource-config-builders.js +10 -4
  919. package/dist/esm/testing/resource-config-builders.js.map +1 -1
  920. package/dist/esm/testing.d.ts.map +1 -1
  921. package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.d.ts +2 -1
  922. package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.d.ts.map +1 -1
  923. package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.js +2 -1
  924. package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.js.map +1 -1
  925. package/dist/esm/users/anonymous-users.shared.resources-config.schemas.d.ts +139 -24
  926. package/dist/esm/users/anonymous-users.shared.resources-config.schemas.d.ts.map +1 -1
  927. package/dist/esm/users/anonymous-users.shared.resources-config.schemas.js +255 -0
  928. package/dist/esm/users/anonymous-users.shared.resources-config.schemas.js.map +1 -1
  929. package/dist/esm/users/anonymous-users.shared.schema.d.ts +5 -3
  930. package/dist/esm/users/anonymous-users.shared.schema.d.ts.map +1 -1
  931. package/dist/esm/users/anonymous-users.shared.schema.js +18 -1
  932. package/dist/esm/users/anonymous-users.shared.schema.js.map +1 -1
  933. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts +2 -1
  934. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts.map +1 -1
  935. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js +23 -0
  936. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js.map +1 -1
  937. package/dist/esm/users/inbound-contacts.shared.schemas.d.ts +2 -1
  938. package/dist/esm/users/inbound-contacts.shared.schemas.d.ts.map +1 -1
  939. package/dist/esm/users/user-consent-decision.shared.utils.d.ts +127 -0
  940. package/dist/esm/users/user-consent-decision.shared.utils.d.ts.map +1 -0
  941. package/dist/esm/users/user-consent-decision.shared.utils.js +189 -0
  942. package/dist/esm/users/user-consent-decision.shared.utils.js.map +1 -0
  943. package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts.map +1 -1
  944. package/dist/esm/users/user-credentials.shared.schemas.d.ts.map +1 -1
  945. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts +1 -0
  946. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts.map +1 -1
  947. package/dist/esm/users/user-identity-links.shared.schemas.d.ts +1 -0
  948. package/dist/esm/users/user-identity-links.shared.schemas.d.ts.map +1 -1
  949. package/dist/esm/users/user-identity-links.shared.schemas.js +30 -0
  950. package/dist/esm/users/user-identity-links.shared.schemas.js.map +1 -1
  951. package/dist/esm/users/user-preferences-reset.shared.utils.d.ts +6 -6
  952. package/dist/esm/users/user-preferences-reset.shared.utils.d.ts.map +1 -1
  953. package/dist/esm/users/user-preferences-reset.shared.utils.js +6 -6
  954. package/dist/esm/users/user-preferences-reset.shared.utils.js.map +1 -1
  955. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +74 -29
  956. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  957. package/dist/esm/users/user-preferences.shared.resources-config.schemas.js +99 -0
  958. package/dist/esm/users/user-preferences.shared.resources-config.schemas.js.map +1 -1
  959. package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  960. package/dist/esm/users/user-profiles.shared.resources-config.schemas.js +25 -9
  961. package/dist/esm/users/user-profiles.shared.resources-config.schemas.js.map +1 -1
  962. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +4 -4
  963. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  964. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js +12 -1
  965. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js.map +1 -1
  966. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  967. package/dist/esm/users/user-self.shared.resources-config.schemas.d.ts +1 -0
  968. package/dist/esm/users/user-self.shared.resources-config.schemas.d.ts.map +1 -1
  969. package/dist/esm/users/user-self.shared.resources-config.schemas.js +2 -2
  970. package/dist/esm/users/user-self.shared.resources-config.schemas.js.map +1 -1
  971. package/dist/esm/users/users.shared.resources-config.schemas.d.ts +1 -0
  972. package/dist/esm/users/users.shared.resources-config.schemas.d.ts.map +1 -1
  973. package/dist/esm/users/users.shared.resources-config.schemas.js +2 -2
  974. package/dist/esm/users/users.shared.resources-config.schemas.js.map +1 -1
  975. package/dist/esm/users/users.shared.schemas.d.ts +11 -9
  976. package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
  977. package/dist/esm/users/users.shared.schemas.js +68 -9
  978. package/dist/esm/users/users.shared.schemas.js.map +1 -1
  979. package/dist/tsconfig.build.tsbuildinfo +1 -1
  980. package/package.json +14 -35
  981. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.d.ts +0 -19
  982. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.d.ts.map +0 -1
  983. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.js +0 -35
  984. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.js.map +0 -1
  985. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.d.ts +0 -213
  986. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.d.ts.map +0 -1
  987. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.js +0 -287
  988. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.js.map +0 -1
  989. package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.d.ts +0 -236
  990. package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.d.ts.map +0 -1
  991. package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.js +0 -212
  992. package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.js.map +0 -1
  993. package/dist/esm/flows-actors/meta-workflows/actions.meta-workflows.shared.schemas.d.ts.map +0 -1
  994. package/dist/esm/flows-actors/meta-workflows/actions.meta-workflows.shared.schemas.js.map +0 -1
  995. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts +0 -17
  996. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts.map +0 -1
  997. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js +0 -31
  998. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js.map +0 -1
  999. package/dist/esm/flows-actors/meta-workflows/catalog.meta-workflows.shared.schemas.d.ts.map +0 -1
  1000. package/dist/esm/flows-actors/meta-workflows/catalog.meta-workflows.shared.schemas.js.map +0 -1
  1001. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts.map +0 -1
  1002. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js.map +0 -1
  1003. package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.d.ts +0 -28
  1004. package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.d.ts.map +0 -1
  1005. package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.js +0 -28
  1006. package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.js.map +0 -1
  1007. package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts.map +0 -1
  1008. package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +0 -1
  1009. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts +0 -100
  1010. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts.map +0 -1
  1011. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js +0 -232
  1012. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js.map +0 -1
  1013. package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.d.ts +0 -29
  1014. package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.d.ts.map +0 -1
  1015. package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.js +0 -58
  1016. package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.js.map +0 -1
  1017. package/dist/esm/flows-actors/meta-workflows/portable-primitives.meta-workflows.shared.schemas.d.ts.map +0 -1
  1018. package/dist/esm/flows-actors/meta-workflows/portable-primitives.meta-workflows.shared.schemas.js.map +0 -1
  1019. package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.d.ts +0 -81
  1020. package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.d.ts.map +0 -1
  1021. package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.js +0 -82
  1022. package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.js.map +0 -1
  1023. package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.d.ts +0 -2
  1024. package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.d.ts.map +0 -1
  1025. package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.js +0 -1
  1026. package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.js.map +0 -1
  1027. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/actions.meta-workflows.shared.schemas.d.ts +0 -0
  1028. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/actions.meta-workflows.shared.schemas.js +0 -0
  1029. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/catalog.meta-workflows.shared.schemas.d.ts +0 -0
  1030. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/catalog.meta-workflows.shared.schemas.js +0 -0
  1031. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/context-selection.meta-workflows.shared.schemas.d.ts +0 -0
  1032. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/context-selection.meta-workflows.shared.schemas.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"resources-config-operations.path.utils.d.ts","sourceRoot":"","sources":["../../../../src/resources/utils/resources-config-operations.path.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,mCAAmC,EACnC,6CAA6C,EAC9C,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAI3F,eAAO,MAAM,mCAAmC,cAAc,CAAC;AAC/D,eAAO,MAAM,sCAAsC,iBAAiB,CAAC;AAGrE,KAAK,qBAAqB,GAAG;IAC3B,kBAAkB,EAAE,YAAY,GAAG,MAAM,CAAC;IAC1C,mBAAmB,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5E,WAAW,EAAE,4BAA4B,CAAC;IAC1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAYF,qBAAa,kCAAkC;IAC7C,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAKnC;;OAEG;WACW,oBAAoB,CAChC,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GACzC,mCAAmC,CAAC,GAAG,EAAE,GAAG,CAAC;WAqBlC,kCAAkC,CAAC,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,MAAM;IAKpG;;;OAGG;WACW,sBAAsB,CAClC,aAAa,EAAE;QACb,kBAAkB,EAAE,YAAY,GAAG,MAAM,CAAC;QAC1C,mBAAmB,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAC5E,WAAW,EAAE,4BAA4B,CAAC;QAC1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GACA,MAAM;IAiCT;;;OAGG;WACW,qBAAqB,CAAC,mBAAmB,EAAE,MAAM,GAAG,mCAAmC,CAAC,GAAG,EAAE,GAAG,CAAC;IA2B/G;;;OAGG;WACW,mCAAmC,CAAC,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,MAAM;IAKrG;;OAEG;WACW,8BAA8B,CAC1C,oBAAoB,SAAS,YAAY,GAAG,SAAS,EACrD,kBAAkB,SAAS,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,EAErE,SAAS,EAAE,+BAA+B,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,GAAG,CAAC,GACxF,6CAA6C;IA6BhD;;;OAGG;WACW,gCAAgC,CAC5C,uBAAuB,EAAE,6CAA6C,GACrE,MAAM;IAiBT;;;OAGG;WACW,+BAA+B,CAAC,6BAA6B,EAAE,MAAM,GAAG,6CAA6C;IAmBnI;;;OAGG;WACW,6CAA6C,CACzD,oBAAoB,SAAS,YAAY,GAAG,SAAS,EACrD,kBAAkB,SAAS,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,EAErE,SAAS,EAAE,+BAA+B,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,GAAG,CAAC,GACxF,MAAM;IAKT;;;OAGG;WACW,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAqDtE;;;OAGG;WACW,kCAAkC,CAAC,0BAA0B,EAAE,MAAM,GAAG,IAAI;CAmD3F"}
1
+ {"version":3,"file":"resources-config-operations.path.utils.d.ts","sourceRoot":"","sources":["../../../../../src/resources/utils/resources-config-operations.path.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,mCAAmC,EACnC,6CAA6C,EAC9C,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAI3F,eAAO,MAAM,mCAAmC,cAAc,CAAC;AAC/D,eAAO,MAAM,sCAAsC,iBAAiB,CAAC;AAGrE,KAAK,qBAAqB,GAAG;IAC3B,kBAAkB,EAAE,YAAY,GAAG,MAAM,CAAC;IAC1C,mBAAmB,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5E,WAAW,EAAE,4BAA4B,CAAC;IAC1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAYF,qBAAa,kCAAkC;IAC7C,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAKnC;;OAEG;WACW,oBAAoB,CAChC,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GACzC,mCAAmC,CAAC,GAAG,EAAE,GAAG,CAAC;WAqBlC,kCAAkC,CAAC,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,MAAM;IAKpG;;;OAGG;WACW,sBAAsB,CAClC,aAAa,EAAE;QACb,kBAAkB,EAAE,YAAY,GAAG,MAAM,CAAC;QAC1C,mBAAmB,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAC5E,WAAW,EAAE,4BAA4B,CAAC;QAC1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GACA,MAAM;IAiCT;;;OAGG;WACW,qBAAqB,CAAC,mBAAmB,EAAE,MAAM,GAAG,mCAAmC,CAAC,GAAG,EAAE,GAAG,CAAC;IA2B/G;;;OAGG;WACW,mCAAmC,CAAC,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,MAAM;IAKrG;;OAEG;WACW,8BAA8B,CAC1C,oBAAoB,SAAS,YAAY,GAAG,SAAS,EACrD,kBAAkB,SAAS,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,EAErE,SAAS,EAAE,+BAA+B,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,GAAG,CAAC,GACxF,6CAA6C;IA6BhD;;;OAGG;WACW,gCAAgC,CAC5C,uBAAuB,EAAE,6CAA6C,GACrE,MAAM;IAiBT;;;OAGG;WACW,+BAA+B,CAAC,6BAA6B,EAAE,MAAM,GAAG,6CAA6C;IAmBnI;;;OAGG;WACW,6CAA6C,CACzD,oBAAoB,SAAS,YAAY,GAAG,SAAS,EACrD,kBAAkB,SAAS,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,EAErE,SAAS,EAAE,+BAA+B,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,GAAG,CAAC,GACxF,MAAM;IAKT;;;OAGG;WACW,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAqDtE;;;OAGG;WACW,kCAAkC,CAAC,0BAA0B,EAAE,MAAM,GAAG,IAAI;CAmD3F"}
@@ -248,6 +248,40 @@ export declare class ResourcesConfigOperationsUrlsBuilderUtils {
248
248
  * - OPTIONAL_CONTEXT: Can be included or not in parent context (generates multiple URL paths)
249
249
  * - STANDALONE: Never included in URL path - resource is accessed independently
250
250
  * (the relationship exists for data model purposes, but not for URL routing)
251
+ *
252
+ * ## The nesting ceiling: a resource's DIRECT parents only (#1095)
253
+ *
254
+ * `parentInfos` holds the resource's OWN parent relationships. A parent's own optional parents are
255
+ * never chained: with `TODO_LISTS → TODOS` and `TODOS → TASKS` both OPTIONAL_CONTEXT, tasks mount
256
+ * under `/organizations/{org}/tasks` and `/organizations/{org}/todos/{todo}/tasks`, and the
257
+ * four-level `/organizations/{org}/todo-lists/{list}/todos/{todo}/tasks` does NOT exist — the
258
+ * grandparent contributes nothing to the grandchild's URL set. So the deepest route an application
259
+ * can reach is primary scope + one level of direct parents, and a lane asserting a deeper chain is
260
+ * asserting a route the framework never generates (pinned by
261
+ * `examples/wonder-todos/e2e/resource-relationships.e2e.ts`, A4b).
262
+ *
263
+ * This is a design ceiling rather than an oversight, and it is deliberately NOT lifted here: chaining
264
+ * optional parents transitively multiplies the route set per level and asks the URL parent coherence
265
+ * check to reconcile a grandparent it has no FK for.
266
+ *
267
+ * ## DECIDED 2026-09-17 (#1121): the ceiling STAYS
268
+ *
269
+ * Measured before deciding rather than argued from the cost alone. Navigation, breadcrumbs and
270
+ * context loading read the ancestor chain from `parentResourcesRequirements` — the resource context
271
+ * — and not from URL depth (`useNavigationController.ts`), so nothing renders differently for the
272
+ * absence of the deeper route. Wonder Todos declares exactly the shape that would use it
273
+ * (`TODO_LISTS → TODOS → TASKS`, both hops OPTIONAL_CONTEXT) and has run against this ceiling
274
+ * throughout.
275
+ *
276
+ * Both alternatives were real and both were refused for the same reason: they buy a capability with
277
+ * no consumer. Chaining every hop needs a DEFINED answer — 404 or a coherence 400 — for a todo whose
278
+ * `todoListId` disagrees with the `{list}` in the URL, at every depth, and the coherence check has
279
+ * no FK to reconcile the grandparent with. Opting in per relationship adds a declarative authoring
280
+ * surface for a case nobody has asked for, which is the thing a framework should add last.
281
+ *
282
+ * So the rule is unchanged and now has a reason attached: do not widen this builder until an
283
+ * application needs deeper addressing, and when one does, the FIRST thing owed is the coherence
284
+ * answer, not the route generation.
251
285
  */
252
286
  private static generateParentCombinations;
253
287
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"resources-config-operations.urls-builder.utils.d.ts","sourceRoot":"","sources":["../../../../src/resources/utils/resources-config-operations.urls-builder.utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources-config-operations.urls-builder.utils.d.ts","sourceRoot":"","sources":["../../../../../src/resources/utils/resources-config-operations.urls-builder.utils.ts"],"names":[],"mappings":"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"}
@@ -483,7 +483,17 @@ export class ResourcesConfigOperationsUrlsBuilderUtils {
483
483
  if (relationship.accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.STANDALONE) {
484
484
  continue;
485
485
  }
486
- throw new Error(`Cannot generate URL parent info for "${resourceType}" without a registered field identifier or relationship foreignKeyField.`);
486
+ /*
487
+ * Name the CHILD, not only the parent. The parent alone ("organizations") is true of most
488
+ * resources in a registry, so the message sent a reader to grep for a type that is
489
+ * everywhere while saying nothing about which relationship is unresolvable — measured
490
+ * 2026-09-21 on a companion OpenAPI generation that refused with no way to locate it.
491
+ */
492
+ throw new Error(`Cannot generate URL parent info for parent "${resourceType}" of child `
493
+ + `"${relationship.resourceType2}" (relationship nature ${String(relationship.nature)}, `
494
+ + `accessScopeStrategy ${String(relationship.accessScopeStrategy)}) without a registered `
495
+ + 'field identifier or relationship foreignKeyField. The parent type is usually absent from '
496
+ + '`allResourceFieldIdentifiers` because feature gating excluded it from this registry.');
487
497
  }
488
498
  parentInfos.push({
489
499
  resourceType,
@@ -598,6 +608,40 @@ export class ResourcesConfigOperationsUrlsBuilderUtils {
598
608
  * - OPTIONAL_CONTEXT: Can be included or not in parent context (generates multiple URL paths)
599
609
  * - STANDALONE: Never included in URL path - resource is accessed independently
600
610
  * (the relationship exists for data model purposes, but not for URL routing)
611
+ *
612
+ * ## The nesting ceiling: a resource's DIRECT parents only (#1095)
613
+ *
614
+ * `parentInfos` holds the resource's OWN parent relationships. A parent's own optional parents are
615
+ * never chained: with `TODO_LISTS → TODOS` and `TODOS → TASKS` both OPTIONAL_CONTEXT, tasks mount
616
+ * under `/organizations/{org}/tasks` and `/organizations/{org}/todos/{todo}/tasks`, and the
617
+ * four-level `/organizations/{org}/todo-lists/{list}/todos/{todo}/tasks` does NOT exist — the
618
+ * grandparent contributes nothing to the grandchild's URL set. So the deepest route an application
619
+ * can reach is primary scope + one level of direct parents, and a lane asserting a deeper chain is
620
+ * asserting a route the framework never generates (pinned by
621
+ * `examples/wonder-todos/e2e/resource-relationships.e2e.ts`, A4b).
622
+ *
623
+ * This is a design ceiling rather than an oversight, and it is deliberately NOT lifted here: chaining
624
+ * optional parents transitively multiplies the route set per level and asks the URL parent coherence
625
+ * check to reconcile a grandparent it has no FK for.
626
+ *
627
+ * ## DECIDED 2026-09-17 (#1121): the ceiling STAYS
628
+ *
629
+ * Measured before deciding rather than argued from the cost alone. Navigation, breadcrumbs and
630
+ * context loading read the ancestor chain from `parentResourcesRequirements` — the resource context
631
+ * — and not from URL depth (`useNavigationController.ts`), so nothing renders differently for the
632
+ * absence of the deeper route. Wonder Todos declares exactly the shape that would use it
633
+ * (`TODO_LISTS → TODOS → TASKS`, both hops OPTIONAL_CONTEXT) and has run against this ceiling
634
+ * throughout.
635
+ *
636
+ * Both alternatives were real and both were refused for the same reason: they buy a capability with
637
+ * no consumer. Chaining every hop needs a DEFINED answer — 404 or a coherence 400 — for a todo whose
638
+ * `todoListId` disagrees with the `{list}` in the URL, at every depth, and the coherence check has
639
+ * no FK to reconcile the grandparent with. Opting in per relationship adds a declarative authoring
640
+ * surface for a case nobody has asked for, which is the thing a framework should add last.
641
+ *
642
+ * So the rule is unchanged and now has a reason attached: do not widen this builder until an
643
+ * application needs deeper addressing, and when one does, the FIRST thing owed is the coherence
644
+ * answer, not the route generation.
601
645
  */
602
646
  static generateParentCombinations(parentInfos) {
603
647
  // Filter out STANDALONE relationships - they are NEVER included in URL paths
@@ -1 +1 @@
1
- {"version":3,"file":"resources-config-operations.urls-builder.utils.js","sourceRoot":"","sources":["../../../../../src/resources/utils/resources-config-operations.urls-builder.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/** URL Generation Examples:\n * \n * Collection-Level Operations (no entity ID):\n * - LIST: GET /api/v1/organizations/{organizationId}/organization-features \n * - CREATE: POST /api/v1/organizations/{organizationId}/organization-features\n * - CREATE_MANY: POST /api/v1/organizations/{organizationId}/organization-features (differentiated by request body)\n * - UPDATE_MANY: PUT /api/v1/organizations/{organizationId}/organization-features\n * - DELETE_MANY: DELETE /api/v1/organizations/{organizationId}/organization-features\n * - SEARCH: GET /api/v1/organizations/{organizationId}/organization-features/search\n * - COUNT: GET /api/v1/organizations/{organizationId}/organization-features/count\n * - Custom collection operations (with resourceOperationLike pointing to collection op): \n * PUT /api/v1/organizations/{organizationId}/organization-features/reset-features\n * \n * Entity-Level Operations:\n * - Regular resources include their entity ID in the route.\n * - Parent-owned composition singletons and complete M:N paths omit the child /\n * junction ID because the declared relationship path uniquely identifies it.\n * - READ: GET /api/v1/organizations/{organizationId}/organization-features\n * - UPDATE: PUT /api/v1/organizations/{organizationId}/organization-features\n * - DELETE: DELETE /api/v1/organizations/{organizationId}/organization-features\n * - Custom entity operations follow the same entity-id rule as their effective\n * core operation: regular entity resources include the id, while\n * parent-owned composition singletons and complete M:N paths omit it.\n * \n * Variant Keys (for role-based variants):\n * - LIST admin variant: GET /api/v1/organizations/{organizationId}/organization-features/admin\n * - READ admin variant on regular entity resources:\n * GET /api/v1/organizations/{organizationId}/organization-features/{id}/admin\n * - READ admin variant on parent-owned composition singletons or complete M:N\n * paths omits the child/junction ID:\n * GET /api/v1/organizations/{organizationId}/organization-features/admin\n * - SEARCH admin variant: GET /api/v1/organizations/{organizationId}/organization-features/search/admin\n * \n * Bulk Operations (collection-level, no entity ID):\n * - DELETE bulk: DELETE /api/v1/organizations/{organizationId}/organization-features/bulk\n * - DELETE bulk admin: DELETE /api/v1/organizations/{organizationId}/organization-features/bulk/admin\n * \n * Access Scope Strategy (determines URL path generation):\n * - REQUIRES_CONTEXT: Always in URL path (mandatory parent)\n * - OPTIONAL_CONTEXT: Generates multiple URLs with/without parent\n * - STANDALONE: NEVER in URL path - resource accessed independently (data relationship only)\n * Example: APPLICATION → ORGANIZATIONS with STANDALONE means /organizations not /applications/{id}/organizations\n * \n * Foreign Key Relationships (foreignKeyField):\n * - FK relationships like TODOS → USERS with assignedToUserId are transformed to parent relationships\n * - They use OPTIONAL_CONTEXT to generate alternative URL paths\n * - Example: /assigned-to-users/{assignedToUserId}/todos (prefix derived from FK field name)\n * \n * Many-to-Many Relationships (via junction table):\n * - Junction table (e.g., ORGANIZATION_MEMBERS) can be accessed from BOTH sides\n * - Both parents use OPTIONAL_CONTEXT to generate independent paths\n * - Example: /organizations/{orgId}/organization-members\n * - Example: /users/{userId}/organization-members\n * - Combined: /organizations/{orgId}/users/{userId}/organization-member (singular, unique record)\n */\n\nimport { \n ResourceConfiguration, \n AnyResourceConfiguration,\n ResourceConfiguration_Operation_ApiCall,\n ResourceConfiguration_Operation_ApiCallWithCallback,\n ResourcesRegistry,\n ResourceConfiguration_Operation_UrlParameterInfo,\n ResourceConfiguration_Operation_UrlInitiatorInfo,\n ResourceConfiguration_Operation,\n ResourceGeneratedOperationKind,\n getParentDirectionRelationships,\n getChildDirectionRelationships,\n type ResourceConfiguration_ResourceRelationships,\n} from '../resources-config.shared.schemas';\nimport { z } from 'zod';\n\nimport { \n ResourceRelationship,\n ResourceRelationshipDeclaration,\n RelationshipNature,\n ResourceParentResourceRequirement,\n ResourceOperationVariantType,\n ResourceRelationshipAccessScopeStrategy,\n ResourceRelationshipCardinality,\n isOneToOneCardinality,\n} from '../resources.shared.schemas';\nimport { \n ResourceType,\n ResourceFieldIdentifier,\n ALL_COLLECTION_OPERATIONS,\n CoreResourceOperation\n} from '../resources.shared.core.definitions';\nimport { ResourcesConfigNamingUtils } from './resources-config-naming.utils';\nimport { Resources_SharedUtils } from '../resources.shared.utils';\nimport { EnumLikeType } from '@wildo-ai/zod-decorators';\nimport { ResourcesConfig_OperationPathUtils } from './resources-config-operations.path.utils';\nimport { MAIN_API_BASE_PATH } from '../../requests/manual-controllers-routes-urls';\n\nexport interface URLGenerationResult {\n initiatorInfos: ResourceConfiguration_Operation_UrlInitiatorInfo[];\n metadata: {\n operation: string;\n variantKey?: string;\n isBulk: boolean;\n isSearch: boolean;\n isCount: boolean;\n parentCombinations: string[][];\n };\n}\n\nexport interface ParentResourceInfo {\n resourceType: ResourceType;\n fieldIdentifier: string;\n isPrimaryScope: boolean;\n isOptional: boolean;\n accessScopeStrategy: ResourceRelationshipAccessScopeStrategy;\n /** Foreign key field for disambiguation or non-standard naming */\n foreignKeyField?: string;\n /** Child-side FK proven by resolved persistence semantics for singleton URL omission. */\n childForeignKeyField?: string;\n relationshipNature?: RelationshipNature;\n jointResourceType?: ResourceType;\n /** Scope-via-junction tag (scope-required reference search) — propagated to the URL param. */\n scopeViaJunction?: ResourceType;\n cardinality1?: ResourceRelationshipCardinality;\n cardinality2: ResourceRelationshipCardinality; // Cardinality from parent to child\n order: number;\n}\n\nexport type ResourceConfiguration_Operation_Urlisable<TCustomOperationEnum extends EnumLikeType | undefined, TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined> = \n ResourceConfiguration_Operation_ApiCall<TCustomOperationEnum, TCoreOperationEnum, z.ZodTypeAny> \n | ResourceConfiguration_Operation_ApiCallWithCallback<TCustomOperationEnum, TCoreOperationEnum, z.ZodTypeAny>;\n\n\nexport class ResourcesConfigOperationsUrlsBuilderUtils {\n \n \n public static buildUrlsForResourceConfiguration( resourceConfig: AnyResourceConfiguration, allResourceFieldIdentifiers: Record<string, string> ): Record<string, URLGenerationResult> {\n\n const results: Record<string, URLGenerationResult> = {};\n const apiCallOperations = resourceConfig.operations.filter( (op): op is ResourceConfiguration_Operation_Urlisable<any, any> => this.isUrlisable(op.variantType));\n \n for (const operation of apiCallOperations) {\n const operationKey = this.getOperationKey(operation);\n results[operationKey] = this.buildUrlsForOperation( operation, resourceConfig, allResourceFieldIdentifiers);\n }\n \n return results;\n }\n\n\n\n\n /**\n * Build URLs for all API_CALL and API_CALL_WITH_CALLBACK operations in a resource configuration\n */\n public static updateOperationUrls( resourceConfig: AnyResourceConfiguration, allResourceFieldIdentifiers: Record<string, string> ): void {\n const urlResults = this.buildUrlsForResourceConfiguration( resourceConfig, allResourceFieldIdentifiers);\n \n // Update URLs in API_CALL and API_CALL_WITH_CALLBACK operations\n for (const operation of resourceConfig.operations) {\n if (this.isUrlisable(operation.variantType)) {\n\n const apiCallOp = operation as ResourceConfiguration_Operation_Urlisable<any, any>;\n const operationKey = this.getOperationKey(apiCallOp);\n const urlResult = urlResults[operationKey];\n \n if (urlResult) {\n apiCallOp.initiatorInfos = urlResult.initiatorInfos;\n }\n }\n }\n }\n \n /**\n * Return the full parent edge set that can legitimately address a resource in URLs.\n *\n * This includes:\n * - real parent/self relationships from the active operation relationship\n * view, falling back to the compiled resource model\n * - synthetic FK-reference parents used to expose alternative nested paths for\n * non-standard FK fields without polluting the stored relationship graph\n *\n * Frontend navigation and form/runtime consumers should reuse this helper when\n * they need to stay aligned with URL addressability semantics.\n *\n * Note that URL parent addressability is intentionally broader than\n * context-addressed mutation eligibility: self relationships can contribute\n * navigable tree routes, but singleton mutation target resolution only trusts\n * compiled `parentRelationships`.\n */\n public static getUrlAddressableParentRelationships(\n resourceConfig: AnyResourceConfiguration,\n allResourceFieldIdentifiers: Record<string, string>,\n resourceRelationshipsOverride?: ResourceConfiguration_ResourceRelationships,\n ): ResourceRelationship[] {\n const realParents = getParentDirectionRelationships(\n resourceRelationshipsOverride ?? resourceConfig.resourceRelationships,\n ).filter(\n (relationship) =>\n !this.isInboundFkReferenceParent(relationship, allResourceFieldIdentifiers),\n );\n // The SAME inbound-FK guard must run over the synthetic parents, not only the real ones.\n //\n // {@link isInboundFkReferenceParent} was written to stop a resource being nested under something\n // that holds an FK pointing AT it — its JSDoc names the symptom exactly: \"phantom routes […]\n // that require an id the target has no notion of and that no controller registers — a guaranteed\n // 404 for every consumer of the target resource's own routes\". But it was applied only to\n // `realParents`, while {@link generateSyntheticFKParents} appends parents built by REVERSING a\n // child relationship — which is precisely how an inbound FK reference gets in.\n //\n // That gap took the whole `users` API surface off the air on 2026-08-06. Adding\n // `PLATFORM_ACCESS_GRANTS` with `foreignKeyField: 'operatorUserId'` (non-standard, since USERS'\n // identifier is `userId`) synthesised a reversed parent, and every users route became\n // `/operator-user-platform-access-grants/{operatorUserId}/users/{userId}` — the bare\n // `/users/{userId}` disappeared entirely and the resource 404'd. `applications` was already\n // broken the same way by `appId` on application-features/metadata/versions (7 phantom\n // combinations, no bare `/applications`); nobody had noticed because nothing called it.\n //\n // Measured over the full core catalogue, this filter changes 4 resources and removes ONLY\n // phantom shapes — `users` and `applications` regain their base paths, and the two\n // `referrer-billing-account-referrals/{referrerBillingAccountId}/…-billing-accounts` variants\n // (addressing a billing account under a billing-account id) go with them. None of the removed\n // shapes had ever been served: 0 occurrences across the last 8 dev logs.\n //\n // WHY THE GENERATOR IS KEPT, and why this filter cannot break its legitimate output.\n //\n // `generateSyntheticFKParents` assumes `resourceType1` is the FK HOLDER. Declared that way — the\n // header example `TODOS → USERS with assignedToUserId` — reversing it yields exactly the intended\n // `/assigned-to-users/{assignedToUserId}/todos`, and the cardinalities (TODOS MANY → USERS ONE)\n // make the synthetic's `cardinality2` MANY, so this guard KEEPS it.\n //\n // The broken cases declare the FK TARGET first instead (`USERS → PLATFORM_ACCESS_GRANTS`,\n // `APPLICATIONS → APPLICATION_FEATURES`). The generator cannot tell the difference from\n // declaration order, but the guard can: it reads FK ownership from CARDINALITY, so a synthetic\n // built from a target-first declaration comes out `cardinality1 === MANY` and is rejected.\n //\n // So the filter separates the two shapes on the only signal that is actually reliable — which is\n // the same reason `isInboundFkReferenceParent` reads cardinality rather than argument order.\n //\n // MEASURED, so the next reader need not guess who this affects: of 335 relationship declarations\n // repo-wide, the holder-first shape this generator serves has exactly EIGHT production\n // consumers, all in one app file (`tasks-manager.relationships.ts`) and all the same idea — a\n // \"who created / who is assigned\" pointer at USERS or ORGANIZATION_UNITS (`createdByUserId`,\n // `assignedToUserId`, `postedByUserId`, `organizationUnitId`). The engine declares ZERO; every\n // one of its 40 core relationships is parent-first.\n //\n // That asymmetry IS the failure story. This generator is an APP-AUTHORING feature the engine had\n // never exercised, so when engine relationships began carrying non-standard FKs\n // (`operatorUserId`, `appId`) they fell into machinery with no engine-side precedent and nothing\n // watching it. Keep that in mind before assuming a change here is engine-only.\n const syntheticFKParents = this.generateSyntheticFKParents(\n resourceConfig,\n allResourceFieldIdentifiers,\n resourceRelationshipsOverride,\n ).filter(\n (relationship) =>\n !this.isInboundFkReferenceParent(relationship, allResourceFieldIdentifiers),\n );\n\n return [...realParents, ...syntheticFKParents];\n }\n\n /**\n * Detect a parent-bucket entry that is actually an INBOUND FK reference —\n * i.e. the *other* resource holds an FK that points at the current resource,\n * so the current resource is the FK **target**, not a routable child.\n *\n * In the parent bucket the current resource is always `resourceType2`. A\n * relationship legitimately nests the current resource under `resourceType1`\n * only when the current resource **holds the foreign key** that references\n * `resourceType1` (e.g. `draftNotes.userId → users`, `userProfiles.userId →\n * users`). When the FK lives on `resourceType1` and points back at the\n * current resource (e.g. `todos.assignedToUserId → users`,\n * `tasks.assignedToUserId → users`), nesting the current resource under\n * `resourceType1` is semantically inverted: it yields phantom routes like\n * `/assigned-to-user-todos/{assignedToUserId}/users/search` that require an\n * id the target has no notion of and that no controller registers — a\n * guaranteed 404 for every consumer of the target resource's own routes.\n *\n * The correct holder-under-target route (`/assigned-to-users/{userId}/todos`)\n * is produced independently by {@link generateSyntheticFKParents} from the\n * FK-holder's child bucket, so excluding the inbound direction here loses no\n * legitimate addressability.\n *\n * FK ownership is read off the relationship shape (no schema access needed):\n * - `cardinality2 === MANY` → the current resource is the many side and holds\n * the FK → genuine child, keep.\n * - `cardinality1 === MANY` (so the current `one` side is referenced by a\n * many holder) → current is the FK target → inbound, drop.\n * - `1:1` → the current resource holds the FK only when the FK is\n * `resourceType1`'s standard identifier (a standard parent reference like\n * `userProfiles.userId`); a non-standard FK (`assignedToUserId`) on a 1:1\n * edge belongs to `resourceType1` and points back at current → inbound,\n * drop.\n *\n * Only `REFERENCE`-nature edges can be inbound; compositions/associations\n * always contain the current resource as a genuine child, and self\n * relationships (`resourceType1 === resourceType2`) are legitimate tree\n * routes — both are never treated as inbound.\n */\n private static isInboundFkReferenceParent(\n relationship: ResourceRelationship,\n allResourceFieldIdentifiers: Record<string, string>,\n ): boolean {\n if (relationship.resourceType1 === relationship.resourceType2) {\n return false;\n }\n if (relationship.nature !== RelationshipNature.REFERENCE) {\n return false;\n }\n\n const currentHoldsForeignKey =\n relationship.cardinality2 === ResourceRelationshipCardinality.MANY\n ? true\n : relationship.cardinality1 === ResourceRelationshipCardinality.MANY\n ? false\n : relationship.foreignKeyField != null\n && relationship.foreignKeyField === allResourceFieldIdentifiers[relationship.resourceType1];\n\n return !currentHoldsForeignKey;\n }\n\n /**\n * Build URLs for a specific operation\n */\n private static buildUrlsForOperation( operation: ResourceConfiguration_Operation_Urlisable<any, any>, resourceConfig: AnyResourceConfiguration, allResourceFieldIdentifiers: Record<string, string> ): URLGenerationResult {\n\n const initiatorInfos: ResourceConfiguration_Operation_UrlInitiatorInfo[] = [];\n \n const coreOperation = this.getCoreOperation(operation);\n\n // Scope-required reference search: an edge tagged with `urlOperationScope`\n // contributes its URL ONLY for the listed core operations (the scope-anchored\n // peer-under-scope edge restricts to SEARCH/LIST). Untagged edges (every\n // normal relationship) are unaffected.\n const allParentsForURLs = this.getUrlAddressableParentRelationships(\n resourceConfig,\n allResourceFieldIdentifiers,\n operation.resourceRelationships,\n ).filter((rel) => !rel.urlOperationScope || rel.urlOperationScope.includes(coreOperation));\n\n // Generate URL paths from all parent combinations\n const parentInfos = this.getParentResourceInfos(allParentsForURLs, allResourceFieldIdentifiers);\n const parentCombinations = this.generateParentCombinations(parentInfos).filter(\n (parentCombo) =>\n coreOperation !== CoreResourceOperation.LIST\n || !this.isCompleteManyToManyPath(parentCombo),\n );\n\n // A complete M:N parent path identifies one junction row: for example,\n // organization + user identifies THE organization-membership. That path is\n // therefore an entity address owned by READ. LIST remains available under\n // either individual parent (members by organization, memberships by user),\n // but must not also claim the complete path with the same GET method. Doing\n // so registers two different operation contracts on one HTTP route and\n // makes router ordering decide which contract is actually served.\n\n for (const parentCombo of parentCombinations) {\n const urlInfo = this.buildUrlForParentCombination( parentCombo, resourceConfig, operation, allResourceFieldIdentifiers, false);\n \n const initiatorInfo: ResourceConfiguration_Operation_UrlInitiatorInfo = {\n url: urlInfo.url,\n parameters: urlInfo.parameters,\n ...(operation.variantType === ResourceOperationVariantType.API_CALL_WITH_CALLBACK && {\n urlCallback: `${urlInfo.url}/callback`\n })\n };\n \n initiatorInfos.push(initiatorInfo);\n }\n\n // W7.3a: Dual initiatorInfos for isAnonymizable resources.\n // For operations that allow APP_ANONYMOUS, generate additional URL patterns\n // with the ANONYMOUS_USERS parent replacing the USER_SELF parent.\n if (resourceConfig.isAnonymizable && (operation as any).roles?.includes('APP_ANONYMOUS')) {\n for (const parentCombo of parentCombinations) {\n const userSelfParentIndex = parentCombo.findIndex(p =>\n p.isPrimaryScope && p.fieldIdentifier === 'userId'\n );\n\n if (userSelfParentIndex >= 0) {\n const anonymousCombo = parentCombo.map((p, i) => {\n if (i === userSelfParentIndex) {\n // Synthesize the ANONYMOUS_USERS parent that masks the USER_SELF\n // primary parent for the anonymous URL variant.\n //\n // `foreignKeyField` MUST become the anonymous user's own FK\n // (`anonymousUserId`), NOT the inherited `userId` from the\n // authenticated parent. `buildUrlForParentCombination` derives\n // BOTH the route param name (`foreignKeyField || fieldIdentifier`)\n // AND the param's `relationshipField` (the child-filter FK) from\n // `foreignKeyField`. Leaving it as `userId` was the W7.3a bug:\n // - the route param bound `req.params.userId`, which\n // `extractInitiatorIds` maps to `initiatorIds.userId` → the\n // ANONYMOUS_SESSION ExecutionContext constructor rejects any\n // authenticated identity field → 500 at\n // `handleAnonymousSessionInit`; and\n // - the nested-LIST child filter keyed on `userId` (null for\n // anonymous rows), never on the `anonymousUserId` column that\n // actually stores the session handle.\n // With `anonymousUserId`, the param is ignored by\n // `extractInitiatorIds` (the session id is set from the\n // `x-anonymous-session-init` header), the coherence check pins the\n // URL uuid to the session uuid (defense in depth), and the child\n // filter targets the correct column.\n //\n // The URL segment stays honest: `anonymousUserId` IS the standard\n // identifier of `anonymous_users`, so `extractRelationshipPrefix`\n // strips it → no redundant prefix → `/anonymous-users/…`, parallel\n // to the authenticated `/users/{userId}/…` route.\n return {\n ...p,\n resourceType: 'anonymous_users' as ResourceType,\n fieldIdentifier: 'anonymousUserId',\n foreignKeyField: 'anonymousUserId',\n };\n }\n return p;\n });\n\n const urlInfo = this.buildUrlForParentCombination(\n anonymousCombo, resourceConfig, operation, allResourceFieldIdentifiers, false\n );\n\n const anonInitiatorInfo: ResourceConfiguration_Operation_UrlInitiatorInfo = {\n url: urlInfo.url,\n parameters: urlInfo.parameters,\n ...(operation.variantType === ResourceOperationVariantType.API_CALL_WITH_CALLBACK && {\n urlCallback: `${urlInfo.url}/callback`\n })\n };\n\n initiatorInfos.push(anonInitiatorInfo);\n }\n }\n }\n \n return {\n initiatorInfos,\n metadata: {\n operation: String(operation.operationIdentifier),\n variantKey: operation.variantKey,\n isBulk: operation.isBulkOperation,\n isCount : coreOperation === CoreResourceOperation.COUNT,\n isSearch: coreOperation === CoreResourceOperation.SEARCH,\n // Informational only: initiatorInfos.parameters remain the canonical\n // source for FK/relationship-field route evidence.\n parentCombinations: parentCombinations.map(combo =>\n combo.map(parent => parent.resourceType)\n )\n }\n };\n }\n\n public static buildOperationFrontendRoutePaths( \n resourceConfig: AnyResourceConfiguration, \n operation: ResourceConfiguration_Operation_Urlisable<any, any>, \n allResourceFieldIdentifiers: Record<string, string>\n ): { url: string; parameters: ResourceConfiguration_Operation_UrlParameterInfo[] }[] {\n \n if (!this.isUrlisable(operation.variantType))\n return []; // other presets are not routable\n\n // Mirror buildUrlsForOperation's `urlOperationScope` filter so frontend route\n // generation and backend route registration stay in lock-step.\n const coreOperation = this.getCoreOperation(operation);\n const allParentsForURLs = this.getUrlAddressableParentRelationships(\n resourceConfig,\n allResourceFieldIdentifiers,\n operation.resourceRelationships,\n ).filter((rel) => !rel.urlOperationScope || rel.urlOperationScope.includes(coreOperation));\n\n const parentInfos = this.getParentResourceInfos(allParentsForURLs, allResourceFieldIdentifiers);\n const parentCombinations = this.generateParentCombinations(parentInfos);\n const frontendRoutePaths: { url: string; parameters: ResourceConfiguration_Operation_UrlParameterInfo[] }[] = [];\n \n for (const parentCombo of parentCombinations) {\n const routePath = this.buildUrlForParentCombination( parentCombo, resourceConfig, operation, allResourceFieldIdentifiers, true);\n frontendRoutePaths.push(routePath);\n }\n \n return frontendRoutePaths;\n }\n\n /**\n * Build a resource-integrated file upload route from a concrete operation route.\n *\n * File uploads should stay aligned with the operation route family they extend.\n * For CREATE-like uploads, the collection route is sufficient. For UPDATE-like\n * uploads, the target resource id must appear exactly once:\n * - if the operation route already addresses the entity, reuse it as-is\n * - if the operation route intentionally omits the entity id (for unique nested\n * addresses such as one-to-one or complete many-to-many paths), append the\n * target resource placeholder before the `/files/:field` suffix\n *\n * The returned `parameters` array mirrors the final route shape so backend\n * request-context extraction and frontend placeholder resolution stay in sync.\n */\n public static buildFileUploadRouteForOperation(params: {\n operationRouteUrl: string;\n operationParameters: ResourceConfiguration_Operation_UrlParameterInfo[];\n targetResourceType: ResourceType;\n targetResourceFieldIdentifier: ResourceFieldIdentifier;\n fieldName: string;\n requiresTargetResourceId: boolean;\n isFrontend: boolean;\n }): { url: string; parameters: ResourceConfiguration_Operation_UrlParameterInfo[] } {\n const parameters = [...params.operationParameters];\n const hasTargetResourceIdParameter = parameters.some(\n (parameter) => parameter.fieldIdentifier === params.targetResourceFieldIdentifier,\n );\n\n let url = params.operationRouteUrl;\n if (params.requiresTargetResourceId && !hasTargetResourceIdParameter) {\n const targetPlaceholder = params.isFrontend\n ? `:${params.targetResourceFieldIdentifier}`\n : `{${params.targetResourceFieldIdentifier}}`;\n url = `${url}/${targetPlaceholder}`;\n parameters.push({\n fieldIdentifier: params.targetResourceFieldIdentifier,\n resourceType: params.targetResourceType,\n });\n }\n\n const fileRouteSegment = ResourcesConfigNamingUtils.toKebabCase(params.fieldName.replace(/\\./g, '-'));\n return {\n url: `${url}/files/${fileRouteSegment}`,\n parameters,\n };\n }\n\n /**\n * Build the resource-integrated file **serve** (GET) route for an operation.\n *\n * Symmetric to `buildFileUploadRouteForOperation`, but always entity-addressed and\n * terminated by the specific `fileId`:\n * `{operationRoute}/{resourceId}/files/{fieldSegment}/{fileId}`.\n *\n * The serve route inherits authorization from the parent resource's READ\n * operation (the `{resourceId}` identifies the record whose access is checked),\n * so the URL is single-sourced here for BOTH the backend Express route\n * registration and the frontend fetch URL. The trailing `fileId` is a plain path\n * param resolved in the serve handler (NOT a resource-identifying parameter), so\n * it is intentionally not added to `parameters` — those stay the resource/parent\n * identifiers the execution context needs. Reuses the upload builder to append\n * the entity id + `/files/<field>`.\n */\n public static buildFileServeRouteForOperation(params: {\n operationRouteUrl: string;\n operationParameters: ResourceConfiguration_Operation_UrlParameterInfo[];\n targetResourceType: ResourceType;\n targetResourceFieldIdentifier: ResourceFieldIdentifier;\n fieldName: string;\n isFrontend: boolean;\n }): { url: string; parameters: ResourceConfiguration_Operation_UrlParameterInfo[] } {\n const base = this.buildFileUploadRouteForOperation({\n operationRouteUrl: params.operationRouteUrl,\n operationParameters: params.operationParameters,\n targetResourceType: params.targetResourceType,\n targetResourceFieldIdentifier: params.targetResourceFieldIdentifier,\n fieldName: params.fieldName,\n requiresTargetResourceId: true,\n isFrontend: params.isFrontend,\n });\n const fileIdPlaceholder = params.isFrontend ? ':fileId' : '{fileId}';\n return {\n url: `${base.url}/${fileIdPlaceholder}`,\n parameters: base.parameters,\n };\n }\n\n // ===========================================================================================\n // PARENT RELATIONSHIP MANAGEMENT\n // =========================================================================================\n \n /**\n * Build URL for a specific parent combination\n * \n * When a parent has a foreignKeyField (like assignedToUserId), the prefix\n * is applied to the PARENT resource name, not the child:\n * - /assigned-to-users/{assignedToUserId}/todos (prefix on parent)\n * - NOT /users/{userId}/assigned-to-todos (prefix on child)\n */\n public static buildUrlForParentCombination(\n parentCombo: ParentResourceInfo[],\n resourceConfig: AnyResourceConfiguration,\n operation: ResourceConfiguration_Operation_Urlisable<any, any>,\n allResourceFieldIdentifiers: Record<string, string>,\n isFrontend: boolean = false\n ): { url: string; parameters: ResourceConfiguration_Operation_UrlParameterInfo[] } {\n \n const segments: string[] = !isFrontend ? [MAIN_API_BASE_PATH] : [];\n const parameters: ResourceConfiguration_Operation_UrlParameterInfo[] = [];\n \n // For frontend routes (React Router), use :paramName format\n // For backend routes (Express), use {paramName} format\n const formatParam = (paramName: string) => isFrontend ? `:${paramName}` : `{${paramName}}`;\n \n // Add parent resource segments\n for (const parent of parentCombo) {\n let resourcePath = ResourcesConfigNamingUtils.toKebabCase(parent.resourceType);\n \n // For FK relationships, use the FK field as the parameter name (e.g., assignedToUserId)\n // For standard relationships, use the standard field identifier (e.g., userId)\n // This avoids confusion and makes URLs self-documenting\n const parameterName = parent.foreignKeyField || parent.fieldIdentifier;\n \n // If parent has a foreignKeyField, apply the prefix to the parent resource name\n // Example: assignedToUserId with parent=users → \"assigned-to-users\" instead of just \"users\"\n if (parent.foreignKeyField) {\n const relationshipPrefix = this.extractRelationshipPrefix(parent.foreignKeyField, parent.resourceType);\n if (relationshipPrefix) {\n resourcePath = `${relationshipPrefix}-${resourcePath}`;\n }\n }\n \n segments.push(resourcePath);\n segments.push(formatParam(parameterName));\n parameters.push({\n fieldIdentifier: parameterName,\n resourceType: parent.resourceType,\n relationshipField: parent.foreignKeyField,\n scopeViaJunction: parent.scopeViaJunction,\n });\n }\n \n // Add main resource segment (no longer modified by relationship context - prefix is on parent)\n const mainResourcePath = this.generateMainResourcePath(resourceConfig.resourceIdentifier, parentCombo);\n segments.push(mainResourcePath);\n \n // Add operation-specific segments\n const operationSegments = this.getOperationSegments(\n operation,\n resourceConfig,\n allResourceFieldIdentifiers,\n parentCombo,\n isFrontend,\n );\n segments.push(...operationSegments.segments);\n parameters.push(...operationSegments.parameterInfos);\n \n const prefix = isFrontend ? '/' : '';\n return {\n url: prefix + segments.join('/').replace(/\\/+/g, '/'),\n parameters\n };\n }\n \n \n /**\n * Get parent resource information with ordering\n */\n public static getParentResourceInfos(\n parentRelationships: ResourceRelationship[],\n allResourceFieldIdentifiers: Record<string, string>\n ): ParentResourceInfo[] {\n const parentInfos: ParentResourceInfo[] = [];\n \n for (const relationship of parentRelationships) {\n const compiledRelationship = Resources_SharedUtils.ensureCompiledRelationship(\n relationship,\n allResourceFieldIdentifiers,\n );\n const resourceType = relationship.resourceType1;\n const fieldIdentifier = allResourceFieldIdentifiers[resourceType] ?? relationship.foreignKeyField;\n if (!fieldIdentifier) {\n /*\n * A STANDALONE parent is NEVER part of a URL, so it cannot need a name in one.\n *\n * `generateParentCombinations` filters STANDALONE parents out before any segment is built,\n * and the only consumer of `fieldIdentifier` is the parameter name at that point — so\n * demanding one here refuses a configuration over data the URL provably discards. Skipping\n * changes nothing downstream: such a parent is dropped a few steps later regardless.\n *\n * What it fixes is severe and silent. `initializeResources` DELETES an excluded type's field\n * identifier, so a surviving resource anchored to an excluded parent threw here — and\n * `generateUrlsForApiCallOperations` CATCHES that and `console.error`s it, leaving the\n * registry \"built successfully\" with every operation carrying no url. Measured on the\n * application-creation workbench, whose resources anchor to APPLICATION through exactly this\n * STANDALONE shape: excluding every core type gave 1 resource, 1 logged error and\n * `listUrl: undefined`, while every unit test that stubbed the transport passed.\n *\n * A NON-standalone parent still throws: that URL genuinely needs the parent's name, so an\n * unresolvable one is a real configuration defect rather than a discarded input.\n */\n if (relationship.accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.STANDALONE) {\n continue;\n }\n throw new Error(\n `Cannot generate URL parent info for \"${resourceType}\" without a registered field identifier or relationship foreignKeyField.`,\n );\n }\n \n parentInfos.push({\n resourceType,\n fieldIdentifier,\n isPrimaryScope: relationship.isPrimaryScope || false,\n isOptional: relationship.parentResourceRequirement === ResourceParentResourceRequirement.OPTIONAL,\n accessScopeStrategy: relationship.accessScopeStrategy,\n foreignKeyField: relationship.foreignKeyField,\n childForeignKeyField: compiledRelationship.resolvedSemantics.persistence.foreignKey?.fieldIdentifier,\n relationshipNature: relationship.nature,\n jointResourceType: relationship.jointResourceType,\n scopeViaJunction: relationship.scopeViaJunction,\n cardinality1: relationship.cardinality1,\n cardinality2: relationship.cardinality2,\n order: 0 // Will be calculated later\n });\n }\n \n // Collapse multiple parents that resolve to the SAME resourceType down to a\n // single URL parent, preferring the ROUTABLE one. A resource can carry both\n // a STANDALONE primary anchor (which declares `resourcePrimaryScope` but is\n // intentionally inert for URL routing — see the primary-scope derivation in\n // the config factory) AND a routable peer of the same type (e.g. an M:N\n // junction's OPTIONAL_CONTEXT side). Without this collapse,\n // `orderParentResourceInfos`' per-resourceType dedup keeps whichever sorts\n // first — the STANDALONE anchor (primary sorts first) — and then\n // `generateParentCombinations` drops it as STANDALONE, so the route is lost\n // entirely. That is the exact bug that left ORGANIZATION_MEMBERS unreachable\n // under `/organizations/{organizationId}/organization-members` while it still\n // routed under `/users/{userId}/...`. We keep the routable peer's OWN flags\n // (notably its non-primary, OPTIONAL_CONTEXT scope) so the route stays\n // optional — preserving BOTH the org-side and user-side URLs of the junction.\n const collapsedByResourceType = new Map<ResourceType, ParentResourceInfo>();\n for (const info of parentInfos) {\n const existing = collapsedByResourceType.get(info.resourceType);\n if (!existing || this.isMoreUrlRoutableParent(info, existing)) {\n collapsedByResourceType.set(info.resourceType, info);\n }\n }\n\n // Order by dependency chain, then alphabetically\n return this.orderParentResourceInfos([...collapsedByResourceType.values()], parentRelationships);\n }\n\n /**\n * Rank a candidate URL parent against the one currently kept for the same\n * resourceType. A routable (non-STANDALONE) parent always beats a STANDALONE\n * anchor — a STANDALONE relationship is by definition off the URL surface, so\n * it must never shadow a peer that DOES route. Two equally-routable (or two\n * equally-STANDALONE) parents keep the first encountered (stable).\n */\n private static isMoreUrlRoutableParent(candidate: ParentResourceInfo, existing: ParentResourceInfo): boolean {\n const candidateRoutable = candidate.accessScopeStrategy !== ResourceRelationshipAccessScopeStrategy.STANDALONE;\n const existingRoutable = existing.accessScopeStrategy !== ResourceRelationshipAccessScopeStrategy.STANDALONE;\n return candidateRoutable && !existingRoutable;\n }\n \n /**\n * Order parent resources by dependency chain and alphabetically\n */\n private static orderParentResourceInfos(\n parentInfos: ParentResourceInfo[],\n allRelationships: ResourceRelationship[]\n ): ParentResourceInfo[] {\n // Create dependency map\n const dependencyMap = new Map<ResourceType, Set<ResourceType>>();\n \n for (const info of parentInfos) {\n dependencyMap.set(info.resourceType, new Set());\n }\n \n // Build dependency chains\n for (const relationship of allRelationships) {\n if (dependencyMap.has(relationship.resourceType2) && \n dependencyMap.has(relationship.resourceType1)) {\n dependencyMap.get(relationship.resourceType2)!.add(relationship.resourceType1);\n }\n }\n \n // Topological sort with primary scope priority\n const sorted: ParentResourceInfo[] = [];\n const visited = new Set<ResourceType>();\n const visiting = new Set<ResourceType>();\n \n const visit = (info: ParentResourceInfo) => {\n if (visiting.has(info.resourceType)) {\n // Circular dependency, sort alphabetically\n return;\n }\n if (visited.has(info.resourceType)) {\n return;\n }\n \n visiting.add(info.resourceType);\n \n // Visit dependencies first\n const dependencies = dependencyMap.get(info.resourceType) || new Set();\n const depInfos = parentInfos.filter(p => dependencies.has(p.resourceType));\n depInfos.sort((a, b) => a.resourceType.localeCompare(b.resourceType));\n \n for (const depInfo of depInfos) {\n visit(depInfo);\n }\n \n visiting.delete(info.resourceType);\n visited.add(info.resourceType);\n sorted.push(info);\n };\n \n // Sort by priority: primary scope first, then alphabetically\n const sortedInfos = [...parentInfos].sort((a, b) => {\n if (a.isPrimaryScope && !b.isPrimaryScope) return -1;\n if (!a.isPrimaryScope && b.isPrimaryScope) return 1;\n return a.resourceType.localeCompare(b.resourceType);\n });\n \n for (const info of sortedInfos) {\n visit(info);\n }\n \n return sorted;\n }\n \n /**\n * Generate all possible parent combinations based on accessScopeStrategy\n * \n * Access Scope Strategy Rules:\n * - REQUIRES_CONTEXT: Always included in parent context (mandatory in URL path)\n * - OPTIONAL_CONTEXT: Can be included or not in parent context (generates multiple URL paths)\n * - STANDALONE: Never included in URL path - resource is accessed independently\n * (the relationship exists for data model purposes, but not for URL routing)\n */\n private static generateParentCombinations(\n parentInfos: ParentResourceInfo[]\n ): ParentResourceInfo[][] {\n \n // Filter out STANDALONE relationships - they are NEVER included in URL paths\n const urlParents = parentInfos.filter(p =>\n p.accessScopeStrategy !== ResourceRelationshipAccessScopeStrategy.STANDALONE\n );\n\n // Scope-anchored peer-under-scope edges (scope-required reference search) are\n // ADDITIVE access paths: each adds a single-parent scoped route (e.g.\n // /organizations/{org}/users/search) WITHOUT altering the target's normal\n // addressability — in particular it must NOT suppress the target's bare/global\n // route (the empty combination is skipped below whenever any parent exists, so\n // a scope-anchored edge folded into the normal powerset would silently drop\n // /users/search). Handle them separately, appended as their own routes.\n const scopeAnchoredParents = urlParents.filter(p => p.scopeViaJunction);\n const standardParents = urlParents.filter(p => !p.scopeViaJunction);\n\n const primaryScope = standardParents.filter(p => p.isPrimaryScope);\n const mandatoryContext = standardParents.filter(p =>\n !p.isPrimaryScope &&\n p.accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.REQUIRES_CONTEXT\n );\n // OPTIONAL_CONTEXT generates optional URL paths (with and without parent)\n const optionalContext = standardParents.filter(p =>\n p.accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT &&\n !p.isPrimaryScope\n );\n\n // Generate all combinations of optional context parents\n const optionalCombinations = this.generateOptionalCombinations(optionalContext);\n\n const allCombinations: ParentResourceInfo[][] = [];\n\n for (const optionalCombo of optionalCombinations) {\n const combination = [...primaryScope, ...mandatoryContext, ...optionalCombo];\n if (combination.length > 0) {\n allCombinations.push(combination);\n }\n }\n\n // If no standard combinations, at least return the empty (bare) combination.\n if (allCombinations.length === 0) {\n allCombinations.push([]);\n }\n\n // Append each scope-anchored edge as its OWN single-parent route, on top of\n // the normal addressability above (additive — never suppresses the bare).\n for (const scopeAnchoredParent of scopeAnchoredParents) {\n allCombinations.push([scopeAnchoredParent]);\n }\n\n return allCombinations;\n }\n \n /**\n * Generate all possible combinations of optional items\n */\n private static generateOptionalCombinations<T>(optionalItems: T[]): T[][] {\n const combinations: T[][] = [[]]; // Start with empty combination\n \n for (const item of optionalItems) {\n const currentLength = combinations.length;\n for (let i = 0; i < currentLength; i++) {\n combinations.push([...combinations[i], item]);\n }\n }\n \n return combinations;\n }\n \n\n /**\n * Get operation-specific URL segments\n * \n * URL Pattern Rules:\n * - Core collection operations (LIST, CREATE, etc.): No operation suffix, differentiated by HTTP method\n * - SEARCH: /search suffix (single occurrence)\n * - COUNT: /count suffix (single occurrence)\n * - Custom collection operations: Add operation name (e.g., /reset-features)\n * - Core entity operations (READ, UPDATE, DELETE): No suffix after the entity\n * target. Regular resources include an entity ID; relationship-unique\n * singleton and complete M:N paths omit it.\n * - Custom entity operations: Add the operation name after the entity target\n * (e.g., /{id}/rotate on regular resources, or /rotate on id-less\n * singleton / complete M:N paths).\n */\n \n private static getOperationSegments(\n operation: ResourceConfiguration_Operation_Urlisable<any, any>,\n resourceConfig: AnyResourceConfiguration,\n allResourceFieldIdentifiers: Record<string, string>,\n parentCombo: ParentResourceInfo[],\n isFrontend: boolean = false\n ): { segments: string[]; parameterInfos: ResourceConfiguration_Operation_UrlParameterInfo[] } {\n \n const segments: string[] = [];\n const parameterInfos: ResourceConfiguration_Operation_UrlParameterInfo[] = [];\n const operationName = String(operation.operationIdentifier);\n const isCollectionLevelOperation = this.isCollectionLevelOperation(operation, operationName);\n \n // For frontend routes (React Router), use :paramName format\n // For backend routes (Express), use {paramName} format\n const formatParam = (paramName: string) => isFrontend ? `:${paramName}` : `{${paramName}}`;\n const generatedRegenerate = operation.generatedOperation?.kind === ResourceGeneratedOperationKind.GENERATED_FILE_REGENERATE\n ? operation.generatedOperation\n : undefined;\n const generatedCollectionExport = operation.generatedOperation?.kind === ResourceGeneratedOperationKind.GENERATED_COLLECTION_EXPORT;\n \n // Determine if this is a custom operation (not a core operation)\n const isCustomOperation = !Object.values(CoreResourceOperation).includes(operationName as CoreResourceOperation);\n \n if (isCollectionLevelOperation) {\n // For custom collection operations, add the operation name segment\n if (isCustomOperation) {\n // The export companion is the one custom collection operation that must NOT be named here.\n // Its identifier (`collectionExport:list`) would kebab-case into a segment, and it needs the\n // `search` segment its SOURCE gets — which is appended further down, from\n // `resourceOperationLike`. So the literal `export` segment is pushed AFTER that, and this\n // branch contributes nothing.\n if (!generatedCollectionExport) {\n const operationSegment = ResourcesConfigNamingUtils.toKebabCase(operationName);\n segments.push(operationSegment);\n }\n }\n // Core collection operations (LIST, CREATE, etc.) don't add an operation\n // name on the BACKEND — they differentiate by HTTP method (GET for LIST,\n // POST for CREATE). FRONTEND routes carry no HTTP method, so an addressable\n // core CREATE must carry an explicit `create` segment or it resolves to the\n // bare collection path and collides with LIST — shadowing the listing on a\n // cold load / refresh. Mirrors the `search`/`count` disambiguation below.\n // (LIST stays at the bare collection path; SEARCH/COUNT/CREATE disambiguate.)\n else if (isFrontend && this.getCoreOperation(operation) === CoreResourceOperation.CREATE) {\n segments.push('create');\n }\n } else {\n // Entity-level operations\n // Skip resource ID when the parent combination uniquely identifies the resource:\n // - One-to-one: only one instance per parent (e.g., organization-preference)\n // - Complete many-to-many: both foreign keys specified (e.g., org + user = unique membership)\n if (generatedRegenerate || (!this.isOneToOneRelationship(parentCombo) && !this.isCompleteManyToManyPath(parentCombo))) {\n const resourceParam = allResourceFieldIdentifiers[resourceConfig.resourceIdentifier];\n segments.push(formatParam(resourceParam));\n\n parameterInfos.push({\n fieldIdentifier: resourceParam,\n resourceType: resourceConfig.resourceIdentifier as ResourceType\n });\n }\n \n // For custom entity operations, add the operation name after the entity target.\n if (isCustomOperation) {\n if (generatedRegenerate) {\n segments.push('files', ResourcesConfigNamingUtils.toKebabCase(generatedRegenerate.fieldName.replace(/\\./g, '-')), 'regenerate');\n } else {\n const operationSegment = ResourcesConfigNamingUtils.toKebabCase(operationName);\n segments.push(operationSegment);\n }\n }\n }\n \n // Add bulk suffix if needed\n if (operation.isBulkOperation) {\n segments.push('bulk');\n }\n\n const coreOperation = this.getCoreOperation(operation);\n\n // Add search segment when the operation carries SEARCH semantics.\n if (coreOperation === CoreResourceOperation.SEARCH) {\n segments.push('search');\n }\n\n // Add count segment when the operation carries COUNT semantics.\n if (coreOperation === CoreResourceOperation.COUNT) {\n segments.push('count');\n }\n\n // The export companion sits one segment BELOW the listing it exports, so it inherits that\n // listing's whole path — every parent combination, and the `search` disambiguator above:\n // LIST → /organizations/{org}/todos/export\n // SEARCH → /organizations/{org}/todos/search/export\n // A resource exporting both verbs therefore gets two distinct routes without a naming scheme,\n // and neither can shadow the listing itself (a literal segment, appended last).\n if (generatedCollectionExport) {\n segments.push('export');\n }\n \n // Add variant key if exists\n if (operation.variantKey) {\n segments.push(operation.variantKey);\n }\n \n return { segments, parameterInfos };\n }\n\n\n \n /**\n * Generate main resource path segment\n * \n * Note: The relationship prefix (like \"assigned-to\") is now applied to the PARENT resource\n * in buildUrlForParentCombination, not to the child resource here.\n * \n * Examples:\n * - /assigned-to-users/{userId}/todos (prefix on parent \"users\")\n * - /created-by-users/{userId}/todos (prefix on parent \"users\")\n * - /organizations/{orgId}/todos (no relationship field, no prefix)\n * - /organizations/{orgId}/organization-preference (singular for one-to-one)\n * - /organizations/{orgId}/users/{userId}/organization-member (singular for complete many-to-many)\n */\n private static generateMainResourcePath(mainResourceIdentifier: string, parentCombo: ParentResourceInfo[]): string {\n\n // Check if this is a one-to-one relationship OR a complete many-to-many path - use singular form\n const baseResourcePath = (this.isOneToOneRelationship(parentCombo) || this.isCompleteManyToManyPath(parentCombo)) \n ? ResourcesConfigNamingUtils.toKebabCase(ResourcesConfigNamingUtils.singularize(mainResourceIdentifier)) \n : ResourcesConfigNamingUtils.toKebabCase(mainResourceIdentifier);\n \n return baseResourcePath;\n }\n \n /**\n * Extract relationship prefix from a relationship field, excluding the parent resource type.\n * \n * Pattern: {relationshipDescriptor}{ParentResourceType}Id\n * - assignedToUserId with parentType=users → assignedTo → assigned-to\n * - createdByUserId with parentType=users → createdBy → created-by\n * \n * @param relationshipField - The relationship field name (e.g., assignedToUserId)\n * @param parentResourceType - The parent resource type (e.g., users) - optional, if provided will be stripped\n */\n public static extractRelationshipPrefix(relationshipField: string, parentResourceType?: ResourceType): string {\n // Get base name without Id/Ids suffix\n let baseName = ResourcesConfigNamingUtils.extractBaseName(relationshipField);\n \n // If parent resource type is provided, remove it from the end of base name\n // e.g., \"assignedToUser\" with parent \"users\" → \"assignedTo\"\n if (parentResourceType) {\n // Get singular form of parent resource type (e.g., \"users\" → \"user\").\n const parentSingular = ResourcesConfigNamingUtils.singularize(parentResourceType);\n // Compare using WORD-BOUNDARY-SAFE camelCase forms so that multi-word\n // snake_case resource types work identically to single-word ones. The FK\n // base name is always camelCase (e.g. \"anonymousUserId\" → \"anonymousUser\"),\n // while a snake_case parent singular is \"anonymous_user\"; comparing the raw\n // forms (\"Anonymous_user\" / \"anonymous_user\") misses the strip and emits a\n // redundant prefix (\"anonymous-user-anonymous-users\"). PascalCase folds both\n // to \"AnonymousUser\" so `endsWith` matches on the word boundary, and a\n // separator-stripped lowercase compare catches the exact standard-FK case.\n const parentSingularPascal = ResourcesConfigNamingUtils.toPascalCase(parentSingular);\n const stripSeparators = (value: string): string => value.replace(/[_\\-\\s]/g, '').toLowerCase();\n\n if (stripSeparators(baseName) === stripSeparators(parentSingular)) {\n // Exact match for a standard FK: the base name IS the parent's own\n // identifier (e.g. \"userId\"→\"users\", \"anonymousUserId\"→\"anonymous_users\")\n // → no prefix needed.\n baseName = '';\n } else if (baseName.endsWith(parentSingularPascal)) {\n // Non-standard FK carrying the parent type as a trailing word\n // (e.g. \"assignedToUser\"/\"approvedByManager\" end with \"User\"/\"Manager\").\n baseName = baseName.slice(0, -parentSingularPascal.length);\n }\n }\n \n // If baseName is empty after stripping, return empty (no prefix needed)\n if (!baseName) return '';\n \n return ResourcesConfigNamingUtils.toKebabCase(baseName);\n }\n\n private static getOperationKey(operation: ResourceConfiguration_Operation_Urlisable<any, any>): string {\n return ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation);\n }\n\n\n\n private static getCoreOperation(\n operation: ResourceConfiguration_Operation_Urlisable<any, any>)\n : CoreResourceOperation {\n if (operation.resourceOperationLike) {\n return operation.resourceOperationLike as CoreResourceOperation;\n } else {\n return operation.operationIdentifier as CoreResourceOperation;\n }\n }\n\n // ================================\n // CHECK HELPERS\n // ================================\n \n private static isUrlisable(variantType: ResourceOperationVariantType): boolean {\n return variantType === ResourceOperationVariantType.API_CALL || variantType === ResourceOperationVariantType.API_CALL_WITH_CALLBACK;\n }\n /**\n * Determines if an operation should be at collection level (no entity ID) or entity level\n * \n * Collection-level operations include:\n * - Core collection operations (LIST, CREATE, CREATE_MANY, UPDATE_MANY, DELETE_MANY, SEARCH, COUNT)\n * - Custom operations with resourceOperationLike pointing to a collection operation\n * - Bulk operations (isBulkOperation = true) - they operate on multiple entities\n */\n private static isCollectionLevelOperation(operation: ResourceConfiguration_Operation_Urlisable<any, any>, operationName: string ): boolean {\n\n // Bulk operations are always collection-level (no entity ID)\n if (operation.isBulkOperation) {\n return true;\n }\n\n if (ALL_COLLECTION_OPERATIONS.includes(operationName as any)) {\n return true;\n }\n \n if (operation.resourceOperationLike) {\n const resourceOperationLikeName = String(operation.resourceOperationLike);\n if (ALL_COLLECTION_OPERATIONS.includes(resourceOperationLikeName as any)) {\n return true;\n }\n }\n \n return false;\n }\n\n \n /**\n * Check if this resource has a one-to-one relationship with its parent\n * Used to determine if resource should use singular naming and no entity ID\n */\n private static isOneToOneRelationship(parentCombo: ParentResourceInfo[]): boolean {\n if (parentCombo.length === 1) {\n const parent = parentCombo[0];\n return parent.relationshipNature === RelationshipNature.COMPOSITION\n && parent.cardinality1 === ResourceRelationshipCardinality.ONE\n && isOneToOneCardinality(parent.cardinality2)\n && parent.accessScopeStrategy !== ResourceRelationshipAccessScopeStrategy.STANDALONE\n && Boolean(parent.childForeignKeyField);\n }\n \n return false;\n }\n \n /**\n * Check if this represents a complete many-to-many path (both entities specified)\n * For junction tables, when both foreign keys are specified in the path,\n * there can only be one matching record, so we use singular form and no entity ID\n * \n * Example: /organizations/{orgId}/users/{userId}/organization-member\n * This uniquely identifies THE membership between this org and user\n * \n * Important: This should NOT match hierarchical relationships with optional\n * parents. Factory-generated junction parents are OPTIONAL_CONTEXT so each\n * side can also expose an independent URL, but the complete path is proven by\n * the association semantics plus shared jointResourceType, not by requiredness.\n */\n private static isCompleteManyToManyPath(parentCombo: ParentResourceInfo[]): boolean {\n // For a complete many-to-many path, we need exactly two association parents\n // that both point at the same junction resource. Do not require\n // REQUIRES_CONTEXT here: factory-real M:N junction parents are intentionally\n // OPTIONAL_CONTEXT so each side can generate independent URLs as well.\n \n if (parentCombo.length === 2) {\n const jointResourceTypes = parentCombo\n .map((parent) => parent.jointResourceType)\n .filter((jointResourceType): jointResourceType is ResourceType => Boolean(jointResourceType));\n return jointResourceTypes.length === 2\n && new Set(jointResourceTypes).size === 1\n && new Set(parentCombo.map((parent) => parent.foreignKeyField || parent.fieldIdentifier)).size === parentCombo.length\n && parentCombo.every((parent) =>\n parent.relationshipNature === RelationshipNature.ASSOCIATION\n && parent.cardinality1 === ResourceRelationshipCardinality.ONE\n && parent.cardinality2 === ResourceRelationshipCardinality.MANY\n );\n }\n \n return false;\n }\n\n /**\n * Generate synthetic parent relationships for FK reference URL paths.\n * \n * These synthetic relationships are created ON-THE-FLY during URL generation\n * and do NOT pollute the data model's parentRelationships.\n * \n * Purpose: Enable alternative URL access patterns for resources with non-standard FK fields.\n * Example: TODOS → USERS with 'assignedToUserId' creates /assigned-to-users/{userId}/todos\n * \n * This method replaces the FK transformation that was previously done in the factory,\n * which incorrectly modified the relationship model and broke context fetching/population.\n * \n * Edge Cases Handled:\n * - M:N relationships: Excluded (not in childRelationships)\n * - Self-referencing: Filtered out before synthetic parent creation\n * - Missing standard FK: Skipped gracefully when the parent resource is unknown\n * - Standard FK (e.g., USER_SELF with userId): Correctly identified and skipped\n * \n * Known Minor Inefficiency:\n * - Multiple non-standard FKs to same resource type (e.g., assignedToUserId + createdByUserId)\n * creates extra URL combinations including both FKs in one path.\n * Not harmful, just generates unused URL patterns. Can be optimized later.\n * \n * @param resourceConfig - Resource configuration with clean relationship model\n * @param allResourceFieldIdentifiers - Map of resourceType → standard field identifier\n * @returns Array of synthetic parent relationships (for URL generation ONLY)\n */\n private static generateSyntheticFKParents(\n resourceConfig: AnyResourceConfiguration,\n allResourceFieldIdentifiers: Record<string, string>,\n resourceRelationshipsOverride?: ResourceConfiguration_ResourceRelationships,\n ): ResourceRelationship[] {\n const syntheticParents: ResourceRelationship[] = [];\n const resourceIdentifier = resourceConfig.resourceIdentifier;\n const childRelationships = getChildDirectionRelationships(\n resourceRelationshipsOverride ?? resourceConfig.resourceRelationships,\n );\n \n // Scan child relationships (where current resource is resourceType1/parent)\n for (const rel of childRelationships) {\n // Only process relationships with explicit FK field\n if (!rel.foreignKeyField) continue;\n \n // Skip self-referencing relationships\n if (rel.resourceType2 === resourceIdentifier) continue;\n \n // Get standard FK for the parent (current resource = resourceType1)\n const parentStandardFK = allResourceFieldIdentifiers[rel.resourceType1];\n if (!parentStandardFK) {\n // No standard FK defined - skip\n continue;\n }\n \n // Check if this FK is standard or non-standard\n // Standard: FK matches the parent's standard field identifier\n // Non-standard: FK differs (e.g., assignedToUserId instead of userId)\n const isStandardFK = rel.foreignKeyField === parentStandardFK;\n \n if (!isStandardFK) {\n // Non-standard FK found!\n // Original relationship: CURRENT → REFERENCED with non-standard FK\n // Create synthetic: REFERENCED → CURRENT for URL generation\n // This enables URL pattern: /fk-prefix-referenced/{fkValue}/current\n \n const syntheticParent = Resources_SharedUtils.compileRelationshipDeclaration({\n // Reverse the relationship for URL nesting\n resourceType1: rel.resourceType2, // Referenced resource becomes \"parent\" for URL\n resourceType2: resourceIdentifier, // Current resource becomes \"child\" for URL\n cardinality1: rel.cardinality2,\n cardinality2: rel.cardinality1,\n \n // FK reference relationships are never primary scope\n isPrimaryScope: false,\n primaryScope: undefined,\n \n // Optional parent - generates alternative URL path\n parentResourceRequirement: ResourceParentResourceRequirement.OPTIONAL,\n \n // OPTIONAL_CONTEXT ensures URL path is generated\n // (STANDALONE would skip, REQUIRES_CONTEXT would make it mandatory)\n accessScopeStrategy: ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT,\n \n // Basic flags\n isDisabled: false,\n allowCycle: false,\n jointResourceType: undefined,\n \n // Keep foreignKeyField - URL builder uses this for custom prefix\n // Example: assignedToUserId → /assigned-to-users/ prefix\n foreignKeyField: rel.foreignKeyField,\n \n // DO NOT copy contextPolicy/childOperations - these are for data model.\n // Synthetic relationships exist ONLY for URL generation.\n contextPolicy: undefined,\n nature: RelationshipNature.REFERENCE,\n childOperations: undefined,\n // discriminator and condition are explicitly set to undefined because\n // synthetic FK parents are structural (for URL path generation), not\n // data-dependent. They must not carry runtime conditions from the\n // original relationship — conditions are evaluated elsewhere (in\n // ResourceContext, ServicesRegistryHandler, ContainerNested) when\n // processing the real relationship.\n discriminator: undefined,\n condition: undefined,\n display: undefined,\n } satisfies ResourceRelationshipDeclaration);\n \n syntheticParents.push(syntheticParent);\n }\n }\n \n return syntheticParents;\n }\n}\n"]}
1
+ {"version":3,"file":"resources-config-operations.urls-builder.utils.js","sourceRoot":"","sources":["../../../../../src/resources/utils/resources-config-operations.urls-builder.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/** URL Generation Examples:\n * \n * Collection-Level Operations (no entity ID):\n * - LIST: GET /api/v1/organizations/{organizationId}/organization-features \n * - CREATE: POST /api/v1/organizations/{organizationId}/organization-features\n * - CREATE_MANY: POST /api/v1/organizations/{organizationId}/organization-features (differentiated by request body)\n * - UPDATE_MANY: PUT /api/v1/organizations/{organizationId}/organization-features\n * - DELETE_MANY: DELETE /api/v1/organizations/{organizationId}/organization-features\n * - SEARCH: GET /api/v1/organizations/{organizationId}/organization-features/search\n * - COUNT: GET /api/v1/organizations/{organizationId}/organization-features/count\n * - Custom collection operations (with resourceOperationLike pointing to collection op): \n * PUT /api/v1/organizations/{organizationId}/organization-features/reset-features\n * \n * Entity-Level Operations:\n * - Regular resources include their entity ID in the route.\n * - Parent-owned composition singletons and complete M:N paths omit the child /\n * junction ID because the declared relationship path uniquely identifies it.\n * - READ: GET /api/v1/organizations/{organizationId}/organization-features\n * - UPDATE: PUT /api/v1/organizations/{organizationId}/organization-features\n * - DELETE: DELETE /api/v1/organizations/{organizationId}/organization-features\n * - Custom entity operations follow the same entity-id rule as their effective\n * core operation: regular entity resources include the id, while\n * parent-owned composition singletons and complete M:N paths omit it.\n * \n * Variant Keys (for role-based variants):\n * - LIST admin variant: GET /api/v1/organizations/{organizationId}/organization-features/admin\n * - READ admin variant on regular entity resources:\n * GET /api/v1/organizations/{organizationId}/organization-features/{id}/admin\n * - READ admin variant on parent-owned composition singletons or complete M:N\n * paths omits the child/junction ID:\n * GET /api/v1/organizations/{organizationId}/organization-features/admin\n * - SEARCH admin variant: GET /api/v1/organizations/{organizationId}/organization-features/search/admin\n * \n * Bulk Operations (collection-level, no entity ID):\n * - DELETE bulk: DELETE /api/v1/organizations/{organizationId}/organization-features/bulk\n * - DELETE bulk admin: DELETE /api/v1/organizations/{organizationId}/organization-features/bulk/admin\n * \n * Access Scope Strategy (determines URL path generation):\n * - REQUIRES_CONTEXT: Always in URL path (mandatory parent)\n * - OPTIONAL_CONTEXT: Generates multiple URLs with/without parent\n * - STANDALONE: NEVER in URL path - resource accessed independently (data relationship only)\n * Example: APPLICATION → ORGANIZATIONS with STANDALONE means /organizations not /applications/{id}/organizations\n * \n * Foreign Key Relationships (foreignKeyField):\n * - FK relationships like TODOS → USERS with assignedToUserId are transformed to parent relationships\n * - They use OPTIONAL_CONTEXT to generate alternative URL paths\n * - Example: /assigned-to-users/{assignedToUserId}/todos (prefix derived from FK field name)\n * \n * Many-to-Many Relationships (via junction table):\n * - Junction table (e.g., ORGANIZATION_MEMBERS) can be accessed from BOTH sides\n * - Both parents use OPTIONAL_CONTEXT to generate independent paths\n * - Example: /organizations/{orgId}/organization-members\n * - Example: /users/{userId}/organization-members\n * - Combined: /organizations/{orgId}/users/{userId}/organization-member (singular, unique record)\n */\n\nimport { \n ResourceConfiguration, \n AnyResourceConfiguration,\n ResourceConfiguration_Operation_ApiCall,\n ResourceConfiguration_Operation_ApiCallWithCallback,\n ResourcesRegistry,\n ResourceConfiguration_Operation_UrlParameterInfo,\n ResourceConfiguration_Operation_UrlInitiatorInfo,\n ResourceConfiguration_Operation,\n ResourceGeneratedOperationKind,\n getParentDirectionRelationships,\n getChildDirectionRelationships,\n type ResourceConfiguration_ResourceRelationships,\n} from '../resources-config.shared.schemas';\nimport { z } from 'zod';\n\nimport { \n ResourceRelationship,\n ResourceRelationshipDeclaration,\n RelationshipNature,\n ResourceParentResourceRequirement,\n ResourceOperationVariantType,\n ResourceRelationshipAccessScopeStrategy,\n ResourceRelationshipCardinality,\n isOneToOneCardinality,\n} from '../resources.shared.schemas';\nimport { \n ResourceType,\n ResourceFieldIdentifier,\n ALL_COLLECTION_OPERATIONS,\n CoreResourceOperation\n} from '../resources.shared.core.definitions';\nimport { ResourcesConfigNamingUtils } from './resources-config-naming.utils';\nimport { Resources_SharedUtils } from '../resources.shared.utils';\nimport { EnumLikeType } from '@wildo-ai/zod-decorators';\nimport { ResourcesConfig_OperationPathUtils } from './resources-config-operations.path.utils';\nimport { MAIN_API_BASE_PATH } from '../../requests/manual-controllers-routes-urls';\n\nexport interface URLGenerationResult {\n initiatorInfos: ResourceConfiguration_Operation_UrlInitiatorInfo[];\n metadata: {\n operation: string;\n variantKey?: string;\n isBulk: boolean;\n isSearch: boolean;\n isCount: boolean;\n parentCombinations: string[][];\n };\n}\n\nexport interface ParentResourceInfo {\n resourceType: ResourceType;\n fieldIdentifier: string;\n isPrimaryScope: boolean;\n isOptional: boolean;\n accessScopeStrategy: ResourceRelationshipAccessScopeStrategy;\n /** Foreign key field for disambiguation or non-standard naming */\n foreignKeyField?: string;\n /** Child-side FK proven by resolved persistence semantics for singleton URL omission. */\n childForeignKeyField?: string;\n relationshipNature?: RelationshipNature;\n jointResourceType?: ResourceType;\n /** Scope-via-junction tag (scope-required reference search) — propagated to the URL param. */\n scopeViaJunction?: ResourceType;\n cardinality1?: ResourceRelationshipCardinality;\n cardinality2: ResourceRelationshipCardinality; // Cardinality from parent to child\n order: number;\n}\n\nexport type ResourceConfiguration_Operation_Urlisable<TCustomOperationEnum extends EnumLikeType | undefined, TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined> = \n ResourceConfiguration_Operation_ApiCall<TCustomOperationEnum, TCoreOperationEnum, z.ZodTypeAny> \n | ResourceConfiguration_Operation_ApiCallWithCallback<TCustomOperationEnum, TCoreOperationEnum, z.ZodTypeAny>;\n\n\nexport class ResourcesConfigOperationsUrlsBuilderUtils {\n \n \n public static buildUrlsForResourceConfiguration( resourceConfig: AnyResourceConfiguration, allResourceFieldIdentifiers: Record<string, string> ): Record<string, URLGenerationResult> {\n\n const results: Record<string, URLGenerationResult> = {};\n const apiCallOperations = resourceConfig.operations.filter( (op): op is ResourceConfiguration_Operation_Urlisable<any, any> => this.isUrlisable(op.variantType));\n \n for (const operation of apiCallOperations) {\n const operationKey = this.getOperationKey(operation);\n results[operationKey] = this.buildUrlsForOperation( operation, resourceConfig, allResourceFieldIdentifiers);\n }\n \n return results;\n }\n\n\n\n\n /**\n * Build URLs for all API_CALL and API_CALL_WITH_CALLBACK operations in a resource configuration\n */\n public static updateOperationUrls( resourceConfig: AnyResourceConfiguration, allResourceFieldIdentifiers: Record<string, string> ): void {\n const urlResults = this.buildUrlsForResourceConfiguration( resourceConfig, allResourceFieldIdentifiers);\n \n // Update URLs in API_CALL and API_CALL_WITH_CALLBACK operations\n for (const operation of resourceConfig.operations) {\n if (this.isUrlisable(operation.variantType)) {\n\n const apiCallOp = operation as ResourceConfiguration_Operation_Urlisable<any, any>;\n const operationKey = this.getOperationKey(apiCallOp);\n const urlResult = urlResults[operationKey];\n \n if (urlResult) {\n apiCallOp.initiatorInfos = urlResult.initiatorInfos;\n }\n }\n }\n }\n \n /**\n * Return the full parent edge set that can legitimately address a resource in URLs.\n *\n * This includes:\n * - real parent/self relationships from the active operation relationship\n * view, falling back to the compiled resource model\n * - synthetic FK-reference parents used to expose alternative nested paths for\n * non-standard FK fields without polluting the stored relationship graph\n *\n * Frontend navigation and form/runtime consumers should reuse this helper when\n * they need to stay aligned with URL addressability semantics.\n *\n * Note that URL parent addressability is intentionally broader than\n * context-addressed mutation eligibility: self relationships can contribute\n * navigable tree routes, but singleton mutation target resolution only trusts\n * compiled `parentRelationships`.\n */\n public static getUrlAddressableParentRelationships(\n resourceConfig: AnyResourceConfiguration,\n allResourceFieldIdentifiers: Record<string, string>,\n resourceRelationshipsOverride?: ResourceConfiguration_ResourceRelationships,\n ): ResourceRelationship[] {\n const realParents = getParentDirectionRelationships(\n resourceRelationshipsOverride ?? resourceConfig.resourceRelationships,\n ).filter(\n (relationship) =>\n !this.isInboundFkReferenceParent(relationship, allResourceFieldIdentifiers),\n );\n // The SAME inbound-FK guard must run over the synthetic parents, not only the real ones.\n //\n // {@link isInboundFkReferenceParent} was written to stop a resource being nested under something\n // that holds an FK pointing AT it — its JSDoc names the symptom exactly: \"phantom routes […]\n // that require an id the target has no notion of and that no controller registers — a guaranteed\n // 404 for every consumer of the target resource's own routes\". But it was applied only to\n // `realParents`, while {@link generateSyntheticFKParents} appends parents built by REVERSING a\n // child relationship — which is precisely how an inbound FK reference gets in.\n //\n // That gap took the whole `users` API surface off the air on 2026-08-06. Adding\n // `PLATFORM_ACCESS_GRANTS` with `foreignKeyField: 'operatorUserId'` (non-standard, since USERS'\n // identifier is `userId`) synthesised a reversed parent, and every users route became\n // `/operator-user-platform-access-grants/{operatorUserId}/users/{userId}` — the bare\n // `/users/{userId}` disappeared entirely and the resource 404'd. `applications` was already\n // broken the same way by `appId` on application-features/metadata/versions (7 phantom\n // combinations, no bare `/applications`); nobody had noticed because nothing called it.\n //\n // Measured over the full core catalogue, this filter changes 4 resources and removes ONLY\n // phantom shapes — `users` and `applications` regain their base paths, and the two\n // `referrer-billing-account-referrals/{referrerBillingAccountId}/…-billing-accounts` variants\n // (addressing a billing account under a billing-account id) go with them. None of the removed\n // shapes had ever been served: 0 occurrences across the last 8 dev logs.\n //\n // WHY THE GENERATOR IS KEPT, and why this filter cannot break its legitimate output.\n //\n // `generateSyntheticFKParents` assumes `resourceType1` is the FK HOLDER. Declared that way — the\n // header example `TODOS → USERS with assignedToUserId` — reversing it yields exactly the intended\n // `/assigned-to-users/{assignedToUserId}/todos`, and the cardinalities (TODOS MANY → USERS ONE)\n // make the synthetic's `cardinality2` MANY, so this guard KEEPS it.\n //\n // The broken cases declare the FK TARGET first instead (`USERS → PLATFORM_ACCESS_GRANTS`,\n // `APPLICATIONS → APPLICATION_FEATURES`). The generator cannot tell the difference from\n // declaration order, but the guard can: it reads FK ownership from CARDINALITY, so a synthetic\n // built from a target-first declaration comes out `cardinality1 === MANY` and is rejected.\n //\n // So the filter separates the two shapes on the only signal that is actually reliable — which is\n // the same reason `isInboundFkReferenceParent` reads cardinality rather than argument order.\n //\n // MEASURED, so the next reader need not guess who this affects: of 335 relationship declarations\n // repo-wide, the holder-first shape this generator serves has exactly EIGHT production\n // consumers, all in one app file (`tasks-manager.relationships.ts`) and all the same idea — a\n // \"who created / who is assigned\" pointer at USERS or ORGANIZATION_UNITS (`createdByUserId`,\n // `assignedToUserId`, `postedByUserId`, `organizationUnitId`). The engine declares ZERO; every\n // one of its 40 core relationships is parent-first.\n //\n // That asymmetry IS the failure story. This generator is an APP-AUTHORING feature the engine had\n // never exercised, so when engine relationships began carrying non-standard FKs\n // (`operatorUserId`, `appId`) they fell into machinery with no engine-side precedent and nothing\n // watching it. Keep that in mind before assuming a change here is engine-only.\n const syntheticFKParents = this.generateSyntheticFKParents(\n resourceConfig,\n allResourceFieldIdentifiers,\n resourceRelationshipsOverride,\n ).filter(\n (relationship) =>\n !this.isInboundFkReferenceParent(relationship, allResourceFieldIdentifiers),\n );\n\n return [...realParents, ...syntheticFKParents];\n }\n\n /**\n * Detect a parent-bucket entry that is actually an INBOUND FK reference —\n * i.e. the *other* resource holds an FK that points at the current resource,\n * so the current resource is the FK **target**, not a routable child.\n *\n * In the parent bucket the current resource is always `resourceType2`. A\n * relationship legitimately nests the current resource under `resourceType1`\n * only when the current resource **holds the foreign key** that references\n * `resourceType1` (e.g. `draftNotes.userId → users`, `userProfiles.userId →\n * users`). When the FK lives on `resourceType1` and points back at the\n * current resource (e.g. `todos.assignedToUserId → users`,\n * `tasks.assignedToUserId → users`), nesting the current resource under\n * `resourceType1` is semantically inverted: it yields phantom routes like\n * `/assigned-to-user-todos/{assignedToUserId}/users/search` that require an\n * id the target has no notion of and that no controller registers — a\n * guaranteed 404 for every consumer of the target resource's own routes.\n *\n * The correct holder-under-target route (`/assigned-to-users/{userId}/todos`)\n * is produced independently by {@link generateSyntheticFKParents} from the\n * FK-holder's child bucket, so excluding the inbound direction here loses no\n * legitimate addressability.\n *\n * FK ownership is read off the relationship shape (no schema access needed):\n * - `cardinality2 === MANY` → the current resource is the many side and holds\n * the FK → genuine child, keep.\n * - `cardinality1 === MANY` (so the current `one` side is referenced by a\n * many holder) → current is the FK target → inbound, drop.\n * - `1:1` → the current resource holds the FK only when the FK is\n * `resourceType1`'s standard identifier (a standard parent reference like\n * `userProfiles.userId`); a non-standard FK (`assignedToUserId`) on a 1:1\n * edge belongs to `resourceType1` and points back at current → inbound,\n * drop.\n *\n * Only `REFERENCE`-nature edges can be inbound; compositions/associations\n * always contain the current resource as a genuine child, and self\n * relationships (`resourceType1 === resourceType2`) are legitimate tree\n * routes — both are never treated as inbound.\n */\n private static isInboundFkReferenceParent(\n relationship: ResourceRelationship,\n allResourceFieldIdentifiers: Record<string, string>,\n ): boolean {\n if (relationship.resourceType1 === relationship.resourceType2) {\n return false;\n }\n if (relationship.nature !== RelationshipNature.REFERENCE) {\n return false;\n }\n\n const currentHoldsForeignKey =\n relationship.cardinality2 === ResourceRelationshipCardinality.MANY\n ? true\n : relationship.cardinality1 === ResourceRelationshipCardinality.MANY\n ? false\n : relationship.foreignKeyField != null\n && relationship.foreignKeyField === allResourceFieldIdentifiers[relationship.resourceType1];\n\n return !currentHoldsForeignKey;\n }\n\n /**\n * Build URLs for a specific operation\n */\n private static buildUrlsForOperation( operation: ResourceConfiguration_Operation_Urlisable<any, any>, resourceConfig: AnyResourceConfiguration, allResourceFieldIdentifiers: Record<string, string> ): URLGenerationResult {\n\n const initiatorInfos: ResourceConfiguration_Operation_UrlInitiatorInfo[] = [];\n \n const coreOperation = this.getCoreOperation(operation);\n\n // Scope-required reference search: an edge tagged with `urlOperationScope`\n // contributes its URL ONLY for the listed core operations (the scope-anchored\n // peer-under-scope edge restricts to SEARCH/LIST). Untagged edges (every\n // normal relationship) are unaffected.\n const allParentsForURLs = this.getUrlAddressableParentRelationships(\n resourceConfig,\n allResourceFieldIdentifiers,\n operation.resourceRelationships,\n ).filter((rel) => !rel.urlOperationScope || rel.urlOperationScope.includes(coreOperation));\n\n // Generate URL paths from all parent combinations\n const parentInfos = this.getParentResourceInfos(allParentsForURLs, allResourceFieldIdentifiers);\n const parentCombinations = this.generateParentCombinations(parentInfos).filter(\n (parentCombo) =>\n coreOperation !== CoreResourceOperation.LIST\n || !this.isCompleteManyToManyPath(parentCombo),\n );\n\n // A complete M:N parent path identifies one junction row: for example,\n // organization + user identifies THE organization-membership. That path is\n // therefore an entity address owned by READ. LIST remains available under\n // either individual parent (members by organization, memberships by user),\n // but must not also claim the complete path with the same GET method. Doing\n // so registers two different operation contracts on one HTTP route and\n // makes router ordering decide which contract is actually served.\n\n for (const parentCombo of parentCombinations) {\n const urlInfo = this.buildUrlForParentCombination( parentCombo, resourceConfig, operation, allResourceFieldIdentifiers, false);\n \n const initiatorInfo: ResourceConfiguration_Operation_UrlInitiatorInfo = {\n url: urlInfo.url,\n parameters: urlInfo.parameters,\n ...(operation.variantType === ResourceOperationVariantType.API_CALL_WITH_CALLBACK && {\n urlCallback: `${urlInfo.url}/callback`\n })\n };\n \n initiatorInfos.push(initiatorInfo);\n }\n\n // W7.3a: Dual initiatorInfos for isAnonymizable resources.\n // For operations that allow APP_ANONYMOUS, generate additional URL patterns\n // with the ANONYMOUS_USERS parent replacing the USER_SELF parent.\n if (resourceConfig.isAnonymizable && (operation as any).roles?.includes('APP_ANONYMOUS')) {\n for (const parentCombo of parentCombinations) {\n const userSelfParentIndex = parentCombo.findIndex(p =>\n p.isPrimaryScope && p.fieldIdentifier === 'userId'\n );\n\n if (userSelfParentIndex >= 0) {\n const anonymousCombo = parentCombo.map((p, i) => {\n if (i === userSelfParentIndex) {\n // Synthesize the ANONYMOUS_USERS parent that masks the USER_SELF\n // primary parent for the anonymous URL variant.\n //\n // `foreignKeyField` MUST become the anonymous user's own FK\n // (`anonymousUserId`), NOT the inherited `userId` from the\n // authenticated parent. `buildUrlForParentCombination` derives\n // BOTH the route param name (`foreignKeyField || fieldIdentifier`)\n // AND the param's `relationshipField` (the child-filter FK) from\n // `foreignKeyField`. Leaving it as `userId` was the W7.3a bug:\n // - the route param bound `req.params.userId`, which\n // `extractInitiatorIds` maps to `initiatorIds.userId` → the\n // ANONYMOUS_SESSION ExecutionContext constructor rejects any\n // authenticated identity field → 500 at\n // `handleAnonymousSessionInit`; and\n // - the nested-LIST child filter keyed on `userId` (null for\n // anonymous rows), never on the `anonymousUserId` column that\n // actually stores the session handle.\n // With `anonymousUserId`, the param is ignored by\n // `extractInitiatorIds` (the session id is set from the\n // `x-anonymous-session-init` header), the coherence check pins the\n // URL uuid to the session uuid (defense in depth), and the child\n // filter targets the correct column.\n //\n // The URL segment stays honest: `anonymousUserId` IS the standard\n // identifier of `anonymous_users`, so `extractRelationshipPrefix`\n // strips it → no redundant prefix → `/anonymous-users/…`, parallel\n // to the authenticated `/users/{userId}/…` route.\n return {\n ...p,\n resourceType: 'anonymous_users' as ResourceType,\n fieldIdentifier: 'anonymousUserId',\n foreignKeyField: 'anonymousUserId',\n };\n }\n return p;\n });\n\n const urlInfo = this.buildUrlForParentCombination(\n anonymousCombo, resourceConfig, operation, allResourceFieldIdentifiers, false\n );\n\n const anonInitiatorInfo: ResourceConfiguration_Operation_UrlInitiatorInfo = {\n url: urlInfo.url,\n parameters: urlInfo.parameters,\n ...(operation.variantType === ResourceOperationVariantType.API_CALL_WITH_CALLBACK && {\n urlCallback: `${urlInfo.url}/callback`\n })\n };\n\n initiatorInfos.push(anonInitiatorInfo);\n }\n }\n }\n \n return {\n initiatorInfos,\n metadata: {\n operation: String(operation.operationIdentifier),\n variantKey: operation.variantKey,\n isBulk: operation.isBulkOperation,\n isCount : coreOperation === CoreResourceOperation.COUNT,\n isSearch: coreOperation === CoreResourceOperation.SEARCH,\n // Informational only: initiatorInfos.parameters remain the canonical\n // source for FK/relationship-field route evidence.\n parentCombinations: parentCombinations.map(combo =>\n combo.map(parent => parent.resourceType)\n )\n }\n };\n }\n\n public static buildOperationFrontendRoutePaths( \n resourceConfig: AnyResourceConfiguration, \n operation: ResourceConfiguration_Operation_Urlisable<any, any>, \n allResourceFieldIdentifiers: Record<string, string>\n ): { url: string; parameters: ResourceConfiguration_Operation_UrlParameterInfo[] }[] {\n \n if (!this.isUrlisable(operation.variantType))\n return []; // other presets are not routable\n\n // Mirror buildUrlsForOperation's `urlOperationScope` filter so frontend route\n // generation and backend route registration stay in lock-step.\n const coreOperation = this.getCoreOperation(operation);\n const allParentsForURLs = this.getUrlAddressableParentRelationships(\n resourceConfig,\n allResourceFieldIdentifiers,\n operation.resourceRelationships,\n ).filter((rel) => !rel.urlOperationScope || rel.urlOperationScope.includes(coreOperation));\n\n const parentInfos = this.getParentResourceInfos(allParentsForURLs, allResourceFieldIdentifiers);\n const parentCombinations = this.generateParentCombinations(parentInfos);\n const frontendRoutePaths: { url: string; parameters: ResourceConfiguration_Operation_UrlParameterInfo[] }[] = [];\n \n for (const parentCombo of parentCombinations) {\n const routePath = this.buildUrlForParentCombination( parentCombo, resourceConfig, operation, allResourceFieldIdentifiers, true);\n frontendRoutePaths.push(routePath);\n }\n \n return frontendRoutePaths;\n }\n\n /**\n * Build a resource-integrated file upload route from a concrete operation route.\n *\n * File uploads should stay aligned with the operation route family they extend.\n * For CREATE-like uploads, the collection route is sufficient. For UPDATE-like\n * uploads, the target resource id must appear exactly once:\n * - if the operation route already addresses the entity, reuse it as-is\n * - if the operation route intentionally omits the entity id (for unique nested\n * addresses such as one-to-one or complete many-to-many paths), append the\n * target resource placeholder before the `/files/:field` suffix\n *\n * The returned `parameters` array mirrors the final route shape so backend\n * request-context extraction and frontend placeholder resolution stay in sync.\n */\n public static buildFileUploadRouteForOperation(params: {\n operationRouteUrl: string;\n operationParameters: ResourceConfiguration_Operation_UrlParameterInfo[];\n targetResourceType: ResourceType;\n targetResourceFieldIdentifier: ResourceFieldIdentifier;\n fieldName: string;\n requiresTargetResourceId: boolean;\n isFrontend: boolean;\n }): { url: string; parameters: ResourceConfiguration_Operation_UrlParameterInfo[] } {\n const parameters = [...params.operationParameters];\n const hasTargetResourceIdParameter = parameters.some(\n (parameter) => parameter.fieldIdentifier === params.targetResourceFieldIdentifier,\n );\n\n let url = params.operationRouteUrl;\n if (params.requiresTargetResourceId && !hasTargetResourceIdParameter) {\n const targetPlaceholder = params.isFrontend\n ? `:${params.targetResourceFieldIdentifier}`\n : `{${params.targetResourceFieldIdentifier}}`;\n url = `${url}/${targetPlaceholder}`;\n parameters.push({\n fieldIdentifier: params.targetResourceFieldIdentifier,\n resourceType: params.targetResourceType,\n });\n }\n\n const fileRouteSegment = ResourcesConfigNamingUtils.toKebabCase(params.fieldName.replace(/\\./g, '-'));\n return {\n url: `${url}/files/${fileRouteSegment}`,\n parameters,\n };\n }\n\n /**\n * Build the resource-integrated file **serve** (GET) route for an operation.\n *\n * Symmetric to `buildFileUploadRouteForOperation`, but always entity-addressed and\n * terminated by the specific `fileId`:\n * `{operationRoute}/{resourceId}/files/{fieldSegment}/{fileId}`.\n *\n * The serve route inherits authorization from the parent resource's READ\n * operation (the `{resourceId}` identifies the record whose access is checked),\n * so the URL is single-sourced here for BOTH the backend Express route\n * registration and the frontend fetch URL. The trailing `fileId` is a plain path\n * param resolved in the serve handler (NOT a resource-identifying parameter), so\n * it is intentionally not added to `parameters` — those stay the resource/parent\n * identifiers the execution context needs. Reuses the upload builder to append\n * the entity id + `/files/<field>`.\n */\n public static buildFileServeRouteForOperation(params: {\n operationRouteUrl: string;\n operationParameters: ResourceConfiguration_Operation_UrlParameterInfo[];\n targetResourceType: ResourceType;\n targetResourceFieldIdentifier: ResourceFieldIdentifier;\n fieldName: string;\n isFrontend: boolean;\n }): { url: string; parameters: ResourceConfiguration_Operation_UrlParameterInfo[] } {\n const base = this.buildFileUploadRouteForOperation({\n operationRouteUrl: params.operationRouteUrl,\n operationParameters: params.operationParameters,\n targetResourceType: params.targetResourceType,\n targetResourceFieldIdentifier: params.targetResourceFieldIdentifier,\n fieldName: params.fieldName,\n requiresTargetResourceId: true,\n isFrontend: params.isFrontend,\n });\n const fileIdPlaceholder = params.isFrontend ? ':fileId' : '{fileId}';\n return {\n url: `${base.url}/${fileIdPlaceholder}`,\n parameters: base.parameters,\n };\n }\n\n // ===========================================================================================\n // PARENT RELATIONSHIP MANAGEMENT\n // =========================================================================================\n \n /**\n * Build URL for a specific parent combination\n * \n * When a parent has a foreignKeyField (like assignedToUserId), the prefix\n * is applied to the PARENT resource name, not the child:\n * - /assigned-to-users/{assignedToUserId}/todos (prefix on parent)\n * - NOT /users/{userId}/assigned-to-todos (prefix on child)\n */\n public static buildUrlForParentCombination(\n parentCombo: ParentResourceInfo[],\n resourceConfig: AnyResourceConfiguration,\n operation: ResourceConfiguration_Operation_Urlisable<any, any>,\n allResourceFieldIdentifiers: Record<string, string>,\n isFrontend: boolean = false\n ): { url: string; parameters: ResourceConfiguration_Operation_UrlParameterInfo[] } {\n \n const segments: string[] = !isFrontend ? [MAIN_API_BASE_PATH] : [];\n const parameters: ResourceConfiguration_Operation_UrlParameterInfo[] = [];\n \n // For frontend routes (React Router), use :paramName format\n // For backend routes (Express), use {paramName} format\n const formatParam = (paramName: string) => isFrontend ? `:${paramName}` : `{${paramName}}`;\n \n // Add parent resource segments\n for (const parent of parentCombo) {\n let resourcePath = ResourcesConfigNamingUtils.toKebabCase(parent.resourceType);\n \n // For FK relationships, use the FK field as the parameter name (e.g., assignedToUserId)\n // For standard relationships, use the standard field identifier (e.g., userId)\n // This avoids confusion and makes URLs self-documenting\n const parameterName = parent.foreignKeyField || parent.fieldIdentifier;\n \n // If parent has a foreignKeyField, apply the prefix to the parent resource name\n // Example: assignedToUserId with parent=users → \"assigned-to-users\" instead of just \"users\"\n if (parent.foreignKeyField) {\n const relationshipPrefix = this.extractRelationshipPrefix(parent.foreignKeyField, parent.resourceType);\n if (relationshipPrefix) {\n resourcePath = `${relationshipPrefix}-${resourcePath}`;\n }\n }\n \n segments.push(resourcePath);\n segments.push(formatParam(parameterName));\n parameters.push({\n fieldIdentifier: parameterName,\n resourceType: parent.resourceType,\n relationshipField: parent.foreignKeyField,\n scopeViaJunction: parent.scopeViaJunction,\n });\n }\n \n // Add main resource segment (no longer modified by relationship context - prefix is on parent)\n const mainResourcePath = this.generateMainResourcePath(resourceConfig.resourceIdentifier, parentCombo);\n segments.push(mainResourcePath);\n \n // Add operation-specific segments\n const operationSegments = this.getOperationSegments(\n operation,\n resourceConfig,\n allResourceFieldIdentifiers,\n parentCombo,\n isFrontend,\n );\n segments.push(...operationSegments.segments);\n parameters.push(...operationSegments.parameterInfos);\n \n const prefix = isFrontend ? '/' : '';\n return {\n url: prefix + segments.join('/').replace(/\\/+/g, '/'),\n parameters\n };\n }\n \n \n /**\n * Get parent resource information with ordering\n */\n public static getParentResourceInfos(\n parentRelationships: ResourceRelationship[],\n allResourceFieldIdentifiers: Record<string, string>\n ): ParentResourceInfo[] {\n const parentInfos: ParentResourceInfo[] = [];\n \n for (const relationship of parentRelationships) {\n const compiledRelationship = Resources_SharedUtils.ensureCompiledRelationship(\n relationship,\n allResourceFieldIdentifiers,\n );\n const resourceType = relationship.resourceType1;\n const fieldIdentifier = allResourceFieldIdentifiers[resourceType] ?? relationship.foreignKeyField;\n if (!fieldIdentifier) {\n /*\n * A STANDALONE parent is NEVER part of a URL, so it cannot need a name in one.\n *\n * `generateParentCombinations` filters STANDALONE parents out before any segment is built,\n * and the only consumer of `fieldIdentifier` is the parameter name at that point — so\n * demanding one here refuses a configuration over data the URL provably discards. Skipping\n * changes nothing downstream: such a parent is dropped a few steps later regardless.\n *\n * What it fixes is severe and silent. `initializeResources` DELETES an excluded type's field\n * identifier, so a surviving resource anchored to an excluded parent threw here — and\n * `generateUrlsForApiCallOperations` CATCHES that and `console.error`s it, leaving the\n * registry \"built successfully\" with every operation carrying no url. Measured on the\n * application-creation workbench, whose resources anchor to APPLICATION through exactly this\n * STANDALONE shape: excluding every core type gave 1 resource, 1 logged error and\n * `listUrl: undefined`, while every unit test that stubbed the transport passed.\n *\n * A NON-standalone parent still throws: that URL genuinely needs the parent's name, so an\n * unresolvable one is a real configuration defect rather than a discarded input.\n */\n if (relationship.accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.STANDALONE) {\n continue;\n }\n /*\n * Name the CHILD, not only the parent. The parent alone (\"organizations\") is true of most\n * resources in a registry, so the message sent a reader to grep for a type that is\n * everywhere while saying nothing about which relationship is unresolvable — measured\n * 2026-09-21 on a companion OpenAPI generation that refused with no way to locate it.\n */\n throw new Error(\n `Cannot generate URL parent info for parent \"${resourceType}\" of child `\n + `\"${relationship.resourceType2}\" (relationship nature ${String(relationship.nature)}, `\n + `accessScopeStrategy ${String(relationship.accessScopeStrategy)}) without a registered `\n + 'field identifier or relationship foreignKeyField. The parent type is usually absent from '\n + '`allResourceFieldIdentifiers` because feature gating excluded it from this registry.',\n );\n }\n \n parentInfos.push({\n resourceType,\n fieldIdentifier,\n isPrimaryScope: relationship.isPrimaryScope || false,\n isOptional: relationship.parentResourceRequirement === ResourceParentResourceRequirement.OPTIONAL,\n accessScopeStrategy: relationship.accessScopeStrategy,\n foreignKeyField: relationship.foreignKeyField,\n childForeignKeyField: compiledRelationship.resolvedSemantics.persistence.foreignKey?.fieldIdentifier,\n relationshipNature: relationship.nature,\n jointResourceType: relationship.jointResourceType,\n scopeViaJunction: relationship.scopeViaJunction,\n cardinality1: relationship.cardinality1,\n cardinality2: relationship.cardinality2,\n order: 0 // Will be calculated later\n });\n }\n \n // Collapse multiple parents that resolve to the SAME resourceType down to a\n // single URL parent, preferring the ROUTABLE one. A resource can carry both\n // a STANDALONE primary anchor (which declares `resourcePrimaryScope` but is\n // intentionally inert for URL routing — see the primary-scope derivation in\n // the config factory) AND a routable peer of the same type (e.g. an M:N\n // junction's OPTIONAL_CONTEXT side). Without this collapse,\n // `orderParentResourceInfos`' per-resourceType dedup keeps whichever sorts\n // first — the STANDALONE anchor (primary sorts first) — and then\n // `generateParentCombinations` drops it as STANDALONE, so the route is lost\n // entirely. That is the exact bug that left ORGANIZATION_MEMBERS unreachable\n // under `/organizations/{organizationId}/organization-members` while it still\n // routed under `/users/{userId}/...`. We keep the routable peer's OWN flags\n // (notably its non-primary, OPTIONAL_CONTEXT scope) so the route stays\n // optional — preserving BOTH the org-side and user-side URLs of the junction.\n const collapsedByResourceType = new Map<ResourceType, ParentResourceInfo>();\n for (const info of parentInfos) {\n const existing = collapsedByResourceType.get(info.resourceType);\n if (!existing || this.isMoreUrlRoutableParent(info, existing)) {\n collapsedByResourceType.set(info.resourceType, info);\n }\n }\n\n // Order by dependency chain, then alphabetically\n return this.orderParentResourceInfos([...collapsedByResourceType.values()], parentRelationships);\n }\n\n /**\n * Rank a candidate URL parent against the one currently kept for the same\n * resourceType. A routable (non-STANDALONE) parent always beats a STANDALONE\n * anchor — a STANDALONE relationship is by definition off the URL surface, so\n * it must never shadow a peer that DOES route. Two equally-routable (or two\n * equally-STANDALONE) parents keep the first encountered (stable).\n */\n private static isMoreUrlRoutableParent(candidate: ParentResourceInfo, existing: ParentResourceInfo): boolean {\n const candidateRoutable = candidate.accessScopeStrategy !== ResourceRelationshipAccessScopeStrategy.STANDALONE;\n const existingRoutable = existing.accessScopeStrategy !== ResourceRelationshipAccessScopeStrategy.STANDALONE;\n return candidateRoutable && !existingRoutable;\n }\n \n /**\n * Order parent resources by dependency chain and alphabetically\n */\n private static orderParentResourceInfos(\n parentInfos: ParentResourceInfo[],\n allRelationships: ResourceRelationship[]\n ): ParentResourceInfo[] {\n // Create dependency map\n const dependencyMap = new Map<ResourceType, Set<ResourceType>>();\n \n for (const info of parentInfos) {\n dependencyMap.set(info.resourceType, new Set());\n }\n \n // Build dependency chains\n for (const relationship of allRelationships) {\n if (dependencyMap.has(relationship.resourceType2) && \n dependencyMap.has(relationship.resourceType1)) {\n dependencyMap.get(relationship.resourceType2)!.add(relationship.resourceType1);\n }\n }\n \n // Topological sort with primary scope priority\n const sorted: ParentResourceInfo[] = [];\n const visited = new Set<ResourceType>();\n const visiting = new Set<ResourceType>();\n \n const visit = (info: ParentResourceInfo) => {\n if (visiting.has(info.resourceType)) {\n // Circular dependency, sort alphabetically\n return;\n }\n if (visited.has(info.resourceType)) {\n return;\n }\n \n visiting.add(info.resourceType);\n \n // Visit dependencies first\n const dependencies = dependencyMap.get(info.resourceType) || new Set();\n const depInfos = parentInfos.filter(p => dependencies.has(p.resourceType));\n depInfos.sort((a, b) => a.resourceType.localeCompare(b.resourceType));\n \n for (const depInfo of depInfos) {\n visit(depInfo);\n }\n \n visiting.delete(info.resourceType);\n visited.add(info.resourceType);\n sorted.push(info);\n };\n \n // Sort by priority: primary scope first, then alphabetically\n const sortedInfos = [...parentInfos].sort((a, b) => {\n if (a.isPrimaryScope && !b.isPrimaryScope) return -1;\n if (!a.isPrimaryScope && b.isPrimaryScope) return 1;\n return a.resourceType.localeCompare(b.resourceType);\n });\n \n for (const info of sortedInfos) {\n visit(info);\n }\n \n return sorted;\n }\n \n /**\n * Generate all possible parent combinations based on accessScopeStrategy\n * \n * Access Scope Strategy Rules:\n * - REQUIRES_CONTEXT: Always included in parent context (mandatory in URL path)\n * - OPTIONAL_CONTEXT: Can be included or not in parent context (generates multiple URL paths)\n * - STANDALONE: Never included in URL path - resource is accessed independently\n * (the relationship exists for data model purposes, but not for URL routing)\n *\n * ## The nesting ceiling: a resource's DIRECT parents only (#1095)\n *\n * `parentInfos` holds the resource's OWN parent relationships. A parent's own optional parents are\n * never chained: with `TODO_LISTS → TODOS` and `TODOS → TASKS` both OPTIONAL_CONTEXT, tasks mount\n * under `/organizations/{org}/tasks` and `/organizations/{org}/todos/{todo}/tasks`, and the\n * four-level `/organizations/{org}/todo-lists/{list}/todos/{todo}/tasks` does NOT exist — the\n * grandparent contributes nothing to the grandchild's URL set. So the deepest route an application\n * can reach is primary scope + one level of direct parents, and a lane asserting a deeper chain is\n * asserting a route the framework never generates (pinned by\n * `examples/wonder-todos/e2e/resource-relationships.e2e.ts`, A4b).\n *\n * This is a design ceiling rather than an oversight, and it is deliberately NOT lifted here: chaining\n * optional parents transitively multiplies the route set per level and asks the URL parent coherence\n * check to reconcile a grandparent it has no FK for.\n *\n * ## DECIDED 2026-09-17 (#1121): the ceiling STAYS\n *\n * Measured before deciding rather than argued from the cost alone. Navigation, breadcrumbs and\n * context loading read the ancestor chain from `parentResourcesRequirements` — the resource context\n * — and not from URL depth (`useNavigationController.ts`), so nothing renders differently for the\n * absence of the deeper route. Wonder Todos declares exactly the shape that would use it\n * (`TODO_LISTS → TODOS → TASKS`, both hops OPTIONAL_CONTEXT) and has run against this ceiling\n * throughout.\n *\n * Both alternatives were real and both were refused for the same reason: they buy a capability with\n * no consumer. Chaining every hop needs a DEFINED answer — 404 or a coherence 400 — for a todo whose\n * `todoListId` disagrees with the `{list}` in the URL, at every depth, and the coherence check has\n * no FK to reconcile the grandparent with. Opting in per relationship adds a declarative authoring\n * surface for a case nobody has asked for, which is the thing a framework should add last.\n *\n * So the rule is unchanged and now has a reason attached: do not widen this builder until an\n * application needs deeper addressing, and when one does, the FIRST thing owed is the coherence\n * answer, not the route generation.\n */\n private static generateParentCombinations(\n parentInfos: ParentResourceInfo[]\n ): ParentResourceInfo[][] {\n \n // Filter out STANDALONE relationships - they are NEVER included in URL paths\n const urlParents = parentInfos.filter(p =>\n p.accessScopeStrategy !== ResourceRelationshipAccessScopeStrategy.STANDALONE\n );\n\n // Scope-anchored peer-under-scope edges (scope-required reference search) are\n // ADDITIVE access paths: each adds a single-parent scoped route (e.g.\n // /organizations/{org}/users/search) WITHOUT altering the target's normal\n // addressability — in particular it must NOT suppress the target's bare/global\n // route (the empty combination is skipped below whenever any parent exists, so\n // a scope-anchored edge folded into the normal powerset would silently drop\n // /users/search). Handle them separately, appended as their own routes.\n const scopeAnchoredParents = urlParents.filter(p => p.scopeViaJunction);\n const standardParents = urlParents.filter(p => !p.scopeViaJunction);\n\n const primaryScope = standardParents.filter(p => p.isPrimaryScope);\n const mandatoryContext = standardParents.filter(p =>\n !p.isPrimaryScope &&\n p.accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.REQUIRES_CONTEXT\n );\n // OPTIONAL_CONTEXT generates optional URL paths (with and without parent)\n const optionalContext = standardParents.filter(p =>\n p.accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT &&\n !p.isPrimaryScope\n );\n\n // Generate all combinations of optional context parents\n const optionalCombinations = this.generateOptionalCombinations(optionalContext);\n\n const allCombinations: ParentResourceInfo[][] = [];\n\n for (const optionalCombo of optionalCombinations) {\n const combination = [...primaryScope, ...mandatoryContext, ...optionalCombo];\n if (combination.length > 0) {\n allCombinations.push(combination);\n }\n }\n\n // If no standard combinations, at least return the empty (bare) combination.\n if (allCombinations.length === 0) {\n allCombinations.push([]);\n }\n\n // Append each scope-anchored edge as its OWN single-parent route, on top of\n // the normal addressability above (additive — never suppresses the bare).\n for (const scopeAnchoredParent of scopeAnchoredParents) {\n allCombinations.push([scopeAnchoredParent]);\n }\n\n return allCombinations;\n }\n \n /**\n * Generate all possible combinations of optional items\n */\n private static generateOptionalCombinations<T>(optionalItems: T[]): T[][] {\n const combinations: T[][] = [[]]; // Start with empty combination\n \n for (const item of optionalItems) {\n const currentLength = combinations.length;\n for (let i = 0; i < currentLength; i++) {\n combinations.push([...combinations[i], item]);\n }\n }\n \n return combinations;\n }\n \n\n /**\n * Get operation-specific URL segments\n * \n * URL Pattern Rules:\n * - Core collection operations (LIST, CREATE, etc.): No operation suffix, differentiated by HTTP method\n * - SEARCH: /search suffix (single occurrence)\n * - COUNT: /count suffix (single occurrence)\n * - Custom collection operations: Add operation name (e.g., /reset-features)\n * - Core entity operations (READ, UPDATE, DELETE): No suffix after the entity\n * target. Regular resources include an entity ID; relationship-unique\n * singleton and complete M:N paths omit it.\n * - Custom entity operations: Add the operation name after the entity target\n * (e.g., /{id}/rotate on regular resources, or /rotate on id-less\n * singleton / complete M:N paths).\n */\n \n private static getOperationSegments(\n operation: ResourceConfiguration_Operation_Urlisable<any, any>,\n resourceConfig: AnyResourceConfiguration,\n allResourceFieldIdentifiers: Record<string, string>,\n parentCombo: ParentResourceInfo[],\n isFrontend: boolean = false\n ): { segments: string[]; parameterInfos: ResourceConfiguration_Operation_UrlParameterInfo[] } {\n \n const segments: string[] = [];\n const parameterInfos: ResourceConfiguration_Operation_UrlParameterInfo[] = [];\n const operationName = String(operation.operationIdentifier);\n const isCollectionLevelOperation = this.isCollectionLevelOperation(operation, operationName);\n \n // For frontend routes (React Router), use :paramName format\n // For backend routes (Express), use {paramName} format\n const formatParam = (paramName: string) => isFrontend ? `:${paramName}` : `{${paramName}}`;\n const generatedRegenerate = operation.generatedOperation?.kind === ResourceGeneratedOperationKind.GENERATED_FILE_REGENERATE\n ? operation.generatedOperation\n : undefined;\n const generatedCollectionExport = operation.generatedOperation?.kind === ResourceGeneratedOperationKind.GENERATED_COLLECTION_EXPORT;\n \n // Determine if this is a custom operation (not a core operation)\n const isCustomOperation = !Object.values(CoreResourceOperation).includes(operationName as CoreResourceOperation);\n \n if (isCollectionLevelOperation) {\n // For custom collection operations, add the operation name segment\n if (isCustomOperation) {\n // The export companion is the one custom collection operation that must NOT be named here.\n // Its identifier (`collectionExport:list`) would kebab-case into a segment, and it needs the\n // `search` segment its SOURCE gets — which is appended further down, from\n // `resourceOperationLike`. So the literal `export` segment is pushed AFTER that, and this\n // branch contributes nothing.\n if (!generatedCollectionExport) {\n const operationSegment = ResourcesConfigNamingUtils.toKebabCase(operationName);\n segments.push(operationSegment);\n }\n }\n // Core collection operations (LIST, CREATE, etc.) don't add an operation\n // name on the BACKEND — they differentiate by HTTP method (GET for LIST,\n // POST for CREATE). FRONTEND routes carry no HTTP method, so an addressable\n // core CREATE must carry an explicit `create` segment or it resolves to the\n // bare collection path and collides with LIST — shadowing the listing on a\n // cold load / refresh. Mirrors the `search`/`count` disambiguation below.\n // (LIST stays at the bare collection path; SEARCH/COUNT/CREATE disambiguate.)\n else if (isFrontend && this.getCoreOperation(operation) === CoreResourceOperation.CREATE) {\n segments.push('create');\n }\n } else {\n // Entity-level operations\n // Skip resource ID when the parent combination uniquely identifies the resource:\n // - One-to-one: only one instance per parent (e.g., organization-preference)\n // - Complete many-to-many: both foreign keys specified (e.g., org + user = unique membership)\n if (generatedRegenerate || (!this.isOneToOneRelationship(parentCombo) && !this.isCompleteManyToManyPath(parentCombo))) {\n const resourceParam = allResourceFieldIdentifiers[resourceConfig.resourceIdentifier];\n segments.push(formatParam(resourceParam));\n\n parameterInfos.push({\n fieldIdentifier: resourceParam,\n resourceType: resourceConfig.resourceIdentifier as ResourceType\n });\n }\n \n // For custom entity operations, add the operation name after the entity target.\n if (isCustomOperation) {\n if (generatedRegenerate) {\n segments.push('files', ResourcesConfigNamingUtils.toKebabCase(generatedRegenerate.fieldName.replace(/\\./g, '-')), 'regenerate');\n } else {\n const operationSegment = ResourcesConfigNamingUtils.toKebabCase(operationName);\n segments.push(operationSegment);\n }\n }\n }\n \n // Add bulk suffix if needed\n if (operation.isBulkOperation) {\n segments.push('bulk');\n }\n\n const coreOperation = this.getCoreOperation(operation);\n\n // Add search segment when the operation carries SEARCH semantics.\n if (coreOperation === CoreResourceOperation.SEARCH) {\n segments.push('search');\n }\n\n // Add count segment when the operation carries COUNT semantics.\n if (coreOperation === CoreResourceOperation.COUNT) {\n segments.push('count');\n }\n\n // The export companion sits one segment BELOW the listing it exports, so it inherits that\n // listing's whole path — every parent combination, and the `search` disambiguator above:\n // LIST → /organizations/{org}/todos/export\n // SEARCH → /organizations/{org}/todos/search/export\n // A resource exporting both verbs therefore gets two distinct routes without a naming scheme,\n // and neither can shadow the listing itself (a literal segment, appended last).\n if (generatedCollectionExport) {\n segments.push('export');\n }\n \n // Add variant key if exists\n if (operation.variantKey) {\n segments.push(operation.variantKey);\n }\n \n return { segments, parameterInfos };\n }\n\n\n \n /**\n * Generate main resource path segment\n * \n * Note: The relationship prefix (like \"assigned-to\") is now applied to the PARENT resource\n * in buildUrlForParentCombination, not to the child resource here.\n * \n * Examples:\n * - /assigned-to-users/{userId}/todos (prefix on parent \"users\")\n * - /created-by-users/{userId}/todos (prefix on parent \"users\")\n * - /organizations/{orgId}/todos (no relationship field, no prefix)\n * - /organizations/{orgId}/organization-preference (singular for one-to-one)\n * - /organizations/{orgId}/users/{userId}/organization-member (singular for complete many-to-many)\n */\n private static generateMainResourcePath(mainResourceIdentifier: string, parentCombo: ParentResourceInfo[]): string {\n\n // Check if this is a one-to-one relationship OR a complete many-to-many path - use singular form\n const baseResourcePath = (this.isOneToOneRelationship(parentCombo) || this.isCompleteManyToManyPath(parentCombo)) \n ? ResourcesConfigNamingUtils.toKebabCase(ResourcesConfigNamingUtils.singularize(mainResourceIdentifier)) \n : ResourcesConfigNamingUtils.toKebabCase(mainResourceIdentifier);\n \n return baseResourcePath;\n }\n \n /**\n * Extract relationship prefix from a relationship field, excluding the parent resource type.\n * \n * Pattern: {relationshipDescriptor}{ParentResourceType}Id\n * - assignedToUserId with parentType=users → assignedTo → assigned-to\n * - createdByUserId with parentType=users → createdBy → created-by\n * \n * @param relationshipField - The relationship field name (e.g., assignedToUserId)\n * @param parentResourceType - The parent resource type (e.g., users) - optional, if provided will be stripped\n */\n public static extractRelationshipPrefix(relationshipField: string, parentResourceType?: ResourceType): string {\n // Get base name without Id/Ids suffix\n let baseName = ResourcesConfigNamingUtils.extractBaseName(relationshipField);\n \n // If parent resource type is provided, remove it from the end of base name\n // e.g., \"assignedToUser\" with parent \"users\" → \"assignedTo\"\n if (parentResourceType) {\n // Get singular form of parent resource type (e.g., \"users\" → \"user\").\n const parentSingular = ResourcesConfigNamingUtils.singularize(parentResourceType);\n // Compare using WORD-BOUNDARY-SAFE camelCase forms so that multi-word\n // snake_case resource types work identically to single-word ones. The FK\n // base name is always camelCase (e.g. \"anonymousUserId\" → \"anonymousUser\"),\n // while a snake_case parent singular is \"anonymous_user\"; comparing the raw\n // forms (\"Anonymous_user\" / \"anonymous_user\") misses the strip and emits a\n // redundant prefix (\"anonymous-user-anonymous-users\"). PascalCase folds both\n // to \"AnonymousUser\" so `endsWith` matches on the word boundary, and a\n // separator-stripped lowercase compare catches the exact standard-FK case.\n const parentSingularPascal = ResourcesConfigNamingUtils.toPascalCase(parentSingular);\n const stripSeparators = (value: string): string => value.replace(/[_\\-\\s]/g, '').toLowerCase();\n\n if (stripSeparators(baseName) === stripSeparators(parentSingular)) {\n // Exact match for a standard FK: the base name IS the parent's own\n // identifier (e.g. \"userId\"→\"users\", \"anonymousUserId\"→\"anonymous_users\")\n // → no prefix needed.\n baseName = '';\n } else if (baseName.endsWith(parentSingularPascal)) {\n // Non-standard FK carrying the parent type as a trailing word\n // (e.g. \"assignedToUser\"/\"approvedByManager\" end with \"User\"/\"Manager\").\n baseName = baseName.slice(0, -parentSingularPascal.length);\n }\n }\n \n // If baseName is empty after stripping, return empty (no prefix needed)\n if (!baseName) return '';\n \n return ResourcesConfigNamingUtils.toKebabCase(baseName);\n }\n\n private static getOperationKey(operation: ResourceConfiguration_Operation_Urlisable<any, any>): string {\n return ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation);\n }\n\n\n\n private static getCoreOperation(\n operation: ResourceConfiguration_Operation_Urlisable<any, any>)\n : CoreResourceOperation {\n if (operation.resourceOperationLike) {\n return operation.resourceOperationLike as CoreResourceOperation;\n } else {\n return operation.operationIdentifier as CoreResourceOperation;\n }\n }\n\n // ================================\n // CHECK HELPERS\n // ================================\n \n private static isUrlisable(variantType: ResourceOperationVariantType): boolean {\n return variantType === ResourceOperationVariantType.API_CALL || variantType === ResourceOperationVariantType.API_CALL_WITH_CALLBACK;\n }\n /**\n * Determines if an operation should be at collection level (no entity ID) or entity level\n * \n * Collection-level operations include:\n * - Core collection operations (LIST, CREATE, CREATE_MANY, UPDATE_MANY, DELETE_MANY, SEARCH, COUNT)\n * - Custom operations with resourceOperationLike pointing to a collection operation\n * - Bulk operations (isBulkOperation = true) - they operate on multiple entities\n */\n private static isCollectionLevelOperation(operation: ResourceConfiguration_Operation_Urlisable<any, any>, operationName: string ): boolean {\n\n // Bulk operations are always collection-level (no entity ID)\n if (operation.isBulkOperation) {\n return true;\n }\n\n if (ALL_COLLECTION_OPERATIONS.includes(operationName as any)) {\n return true;\n }\n \n if (operation.resourceOperationLike) {\n const resourceOperationLikeName = String(operation.resourceOperationLike);\n if (ALL_COLLECTION_OPERATIONS.includes(resourceOperationLikeName as any)) {\n return true;\n }\n }\n \n return false;\n }\n\n \n /**\n * Check if this resource has a one-to-one relationship with its parent\n * Used to determine if resource should use singular naming and no entity ID\n */\n private static isOneToOneRelationship(parentCombo: ParentResourceInfo[]): boolean {\n if (parentCombo.length === 1) {\n const parent = parentCombo[0];\n return parent.relationshipNature === RelationshipNature.COMPOSITION\n && parent.cardinality1 === ResourceRelationshipCardinality.ONE\n && isOneToOneCardinality(parent.cardinality2)\n && parent.accessScopeStrategy !== ResourceRelationshipAccessScopeStrategy.STANDALONE\n && Boolean(parent.childForeignKeyField);\n }\n \n return false;\n }\n \n /**\n * Check if this represents a complete many-to-many path (both entities specified)\n * For junction tables, when both foreign keys are specified in the path,\n * there can only be one matching record, so we use singular form and no entity ID\n * \n * Example: /organizations/{orgId}/users/{userId}/organization-member\n * This uniquely identifies THE membership between this org and user\n * \n * Important: This should NOT match hierarchical relationships with optional\n * parents. Factory-generated junction parents are OPTIONAL_CONTEXT so each\n * side can also expose an independent URL, but the complete path is proven by\n * the association semantics plus shared jointResourceType, not by requiredness.\n */\n private static isCompleteManyToManyPath(parentCombo: ParentResourceInfo[]): boolean {\n // For a complete many-to-many path, we need exactly two association parents\n // that both point at the same junction resource. Do not require\n // REQUIRES_CONTEXT here: factory-real M:N junction parents are intentionally\n // OPTIONAL_CONTEXT so each side can generate independent URLs as well.\n \n if (parentCombo.length === 2) {\n const jointResourceTypes = parentCombo\n .map((parent) => parent.jointResourceType)\n .filter((jointResourceType): jointResourceType is ResourceType => Boolean(jointResourceType));\n return jointResourceTypes.length === 2\n && new Set(jointResourceTypes).size === 1\n && new Set(parentCombo.map((parent) => parent.foreignKeyField || parent.fieldIdentifier)).size === parentCombo.length\n && parentCombo.every((parent) =>\n parent.relationshipNature === RelationshipNature.ASSOCIATION\n && parent.cardinality1 === ResourceRelationshipCardinality.ONE\n && parent.cardinality2 === ResourceRelationshipCardinality.MANY\n );\n }\n \n return false;\n }\n\n /**\n * Generate synthetic parent relationships for FK reference URL paths.\n * \n * These synthetic relationships are created ON-THE-FLY during URL generation\n * and do NOT pollute the data model's parentRelationships.\n * \n * Purpose: Enable alternative URL access patterns for resources with non-standard FK fields.\n * Example: TODOS → USERS with 'assignedToUserId' creates /assigned-to-users/{userId}/todos\n * \n * This method replaces the FK transformation that was previously done in the factory,\n * which incorrectly modified the relationship model and broke context fetching/population.\n * \n * Edge Cases Handled:\n * - M:N relationships: Excluded (not in childRelationships)\n * - Self-referencing: Filtered out before synthetic parent creation\n * - Missing standard FK: Skipped gracefully when the parent resource is unknown\n * - Standard FK (e.g., USER_SELF with userId): Correctly identified and skipped\n * \n * Known Minor Inefficiency:\n * - Multiple non-standard FKs to same resource type (e.g., assignedToUserId + createdByUserId)\n * creates extra URL combinations including both FKs in one path.\n * Not harmful, just generates unused URL patterns. Can be optimized later.\n * \n * @param resourceConfig - Resource configuration with clean relationship model\n * @param allResourceFieldIdentifiers - Map of resourceType → standard field identifier\n * @returns Array of synthetic parent relationships (for URL generation ONLY)\n */\n private static generateSyntheticFKParents(\n resourceConfig: AnyResourceConfiguration,\n allResourceFieldIdentifiers: Record<string, string>,\n resourceRelationshipsOverride?: ResourceConfiguration_ResourceRelationships,\n ): ResourceRelationship[] {\n const syntheticParents: ResourceRelationship[] = [];\n const resourceIdentifier = resourceConfig.resourceIdentifier;\n const childRelationships = getChildDirectionRelationships(\n resourceRelationshipsOverride ?? resourceConfig.resourceRelationships,\n );\n \n // Scan child relationships (where current resource is resourceType1/parent)\n for (const rel of childRelationships) {\n // Only process relationships with explicit FK field\n if (!rel.foreignKeyField) continue;\n \n // Skip self-referencing relationships\n if (rel.resourceType2 === resourceIdentifier) continue;\n \n // Get standard FK for the parent (current resource = resourceType1)\n const parentStandardFK = allResourceFieldIdentifiers[rel.resourceType1];\n if (!parentStandardFK) {\n // No standard FK defined - skip\n continue;\n }\n \n // Check if this FK is standard or non-standard\n // Standard: FK matches the parent's standard field identifier\n // Non-standard: FK differs (e.g., assignedToUserId instead of userId)\n const isStandardFK = rel.foreignKeyField === parentStandardFK;\n \n if (!isStandardFK) {\n // Non-standard FK found!\n // Original relationship: CURRENT → REFERENCED with non-standard FK\n // Create synthetic: REFERENCED → CURRENT for URL generation\n // This enables URL pattern: /fk-prefix-referenced/{fkValue}/current\n \n const syntheticParent = Resources_SharedUtils.compileRelationshipDeclaration({\n // Reverse the relationship for URL nesting\n resourceType1: rel.resourceType2, // Referenced resource becomes \"parent\" for URL\n resourceType2: resourceIdentifier, // Current resource becomes \"child\" for URL\n cardinality1: rel.cardinality2,\n cardinality2: rel.cardinality1,\n \n // FK reference relationships are never primary scope\n isPrimaryScope: false,\n primaryScope: undefined,\n \n // Optional parent - generates alternative URL path\n parentResourceRequirement: ResourceParentResourceRequirement.OPTIONAL,\n \n // OPTIONAL_CONTEXT ensures URL path is generated\n // (STANDALONE would skip, REQUIRES_CONTEXT would make it mandatory)\n accessScopeStrategy: ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT,\n \n // Basic flags\n isDisabled: false,\n allowCycle: false,\n jointResourceType: undefined,\n \n // Keep foreignKeyField - URL builder uses this for custom prefix\n // Example: assignedToUserId → /assigned-to-users/ prefix\n foreignKeyField: rel.foreignKeyField,\n \n // DO NOT copy contextPolicy/childOperations - these are for data model.\n // Synthetic relationships exist ONLY for URL generation.\n contextPolicy: undefined,\n nature: RelationshipNature.REFERENCE,\n childOperations: undefined,\n // discriminator and condition are explicitly set to undefined because\n // synthetic FK parents are structural (for URL path generation), not\n // data-dependent. They must not carry runtime conditions from the\n // original relationship — conditions are evaluated elsewhere (in\n // ResourceContext, ServicesRegistryHandler, ContainerNested) when\n // processing the real relationship.\n discriminator: undefined,\n condition: undefined,\n display: undefined,\n } satisfies ResourceRelationshipDeclaration);\n \n syntheticParents.push(syntheticParent);\n }\n }\n \n return syntheticParents;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"resources-config-operations.utils.d.ts","sourceRoot":"","sources":["../../../../src/resources/utils/resources-config-operations.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAA2C,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACxI,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,qBAAa,uBAAuB;WAClB,qCAAqC,CAAC,SAAS,EAAE,+BAA+B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,qBAAqB,GAAG,SAAS;IAUjJ;;;;;;;;;OASG;IACH,MAAM,CAAC,uBAAuB,CAC5B,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GACnC,QAAQ,GAAG,SAAS;IAcvB;;;;;;;;OAQG;IACH,MAAM,CAAC,eAAe,CACpB,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,GAAG,SAAS,EAC9D,YAAY,CAAC,EAAE,QAAQ,EACvB,eAAe,GAAE,QAAuB,GACvC,QAAQ;IAuBX;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAIrD;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;CAG/D"}
1
+ {"version":3,"file":"resources-config-operations.utils.d.ts","sourceRoot":"","sources":["../../../../../src/resources/utils/resources-config-operations.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAA2C,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACxI,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,qBAAa,uBAAuB;WAClB,qCAAqC,CAAC,SAAS,EAAE,+BAA+B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,qBAAqB,GAAG,SAAS;IAUjJ;;;;;;;;;OASG;IACH,MAAM,CAAC,uBAAuB,CAC5B,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GACnC,QAAQ,GAAG,SAAS;IAcvB;;;;;;;;OAQG;IACH,MAAM,CAAC,eAAe,CACpB,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,GAAG,SAAS,EAC9D,YAAY,CAAC,EAAE,QAAQ,EACvB,eAAe,GAAE,QAAuB,GACvC,QAAQ;IAuBX;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAIrD;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;CAG/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"resources-serialization.utils.d.ts","sourceRoot":"","sources":["../../../../src/resources/utils/resources-serialization.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mCAAmC,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,yBAAyB,EACzB,oCAAoC,EACrC,MAAM,gDAAgD,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C,aAAa,EAAE,8BAA8B,CAAC;IAC9C,YAAY,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACnD,cAAc,EAAE,yBAAyB,EAAE,CAAC;IAC5C,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACnE,oBAAoB,CAAC,EAAE,oCAAoC,EAAE,CAAC;CAC/D;AAED;;;GAGG;AACH,qBAAa,0BAA0B;IAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2DG;IACH,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAIpE;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAIlE;;;;;;OAMG;IACH,MAAM,CAAC,sBAAsB,CAAC,aAAa,EAAE,mCAAmC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM;IAWnG;;;;;OAKG;IACH,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,mCAAmC,CAAC,GAAG,EAAE,GAAG,CAAC;IAI5F;;;;;;;;;OASG;IACH,MAAM,CAAC,yBAAyB,CAAC,GAAG,EAAE;QACpC,aAAa,EAAE,8BAA8B,CAAC;QAC9C,YAAY,EAAE,6BAA6B,GAAG,IAAI,CAAC;QACnD,cAAc,EAAE,yBAAyB,EAAE,CAAC;QAC5C,qBAAqB,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;QACpE,oBAAoB,EAAE,oCAAoC,EAAE,CAAC;KAC9D,GAAG,MAAM;IAgBV;;;;;;;OAOG;IACH,MAAM,CAAC,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,8BAA8B;IAIpF;;;;;;OAMG;IACH,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,6BAA6B,GAAG,IAAI;CAS3F"}
1
+ {"version":3,"file":"resources-serialization.utils.d.ts","sourceRoot":"","sources":["../../../../../src/resources/utils/resources-serialization.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mCAAmC,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,yBAAyB,EACzB,oCAAoC,EACrC,MAAM,gDAAgD,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C,aAAa,EAAE,8BAA8B,CAAC;IAC9C,YAAY,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACnD,cAAc,EAAE,yBAAyB,EAAE,CAAC;IAC5C,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACnE,oBAAoB,CAAC,EAAE,oCAAoC,EAAE,CAAC;CAC/D;AAED;;;GAGG;AACH,qBAAa,0BAA0B;IAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2DG;IACH,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAIpE;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAIlE;;;;;;OAMG;IACH,MAAM,CAAC,sBAAsB,CAAC,aAAa,EAAE,mCAAmC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM;IAWnG;;;;;OAKG;IACH,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,mCAAmC,CAAC,GAAG,EAAE,GAAG,CAAC;IAI5F;;;;;;;;;OASG;IACH,MAAM,CAAC,yBAAyB,CAAC,GAAG,EAAE;QACpC,aAAa,EAAE,8BAA8B,CAAC;QAC9C,YAAY,EAAE,6BAA6B,GAAG,IAAI,CAAC;QACnD,cAAc,EAAE,yBAAyB,EAAE,CAAC;QAC5C,qBAAqB,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;QACpE,oBAAoB,EAAE,oCAAoC,EAAE,CAAC;KAC9D,GAAG,MAAM;IAgBV;;;;;;;OAOG;IACH,MAAM,CAAC,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,8BAA8B;IAIpF;;;;;;OAMG;IACH,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,6BAA6B,GAAG,IAAI;CAS3F"}