@wildo-ai/saas-models 1.1.4 → 1.1.6

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 (1399) 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 +4 -3
  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 +412 -20
  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 +4 -3
  15. package/dist/esm/applications/applications.shared.resources-config.schemas.js.map +1 -1
  16. package/dist/esm/applications/applications.shared.schemas.d.ts +10 -7
  17. package/dist/esm/applications/applications.shared.schemas.d.ts.map +1 -1
  18. package/dist/esm/applications/applications.shared.schemas.js +46 -9
  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 +11 -3
  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 +50 -17
  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-account.shared.schemas.js +2 -2
  26. package/dist/esm/billing/billing-account.shared.schemas.js.map +1 -1
  27. package/dist/esm/billing/billing-configuration.shared.schemas.d.ts +25 -0
  28. package/dist/esm/billing/billing-configuration.shared.schemas.d.ts.map +1 -1
  29. package/dist/esm/billing/billing-configuration.shared.schemas.js +19 -0
  30. package/dist/esm/billing/billing-configuration.shared.schemas.js.map +1 -1
  31. package/dist/esm/billing/billing-enums.shared.schemas.d.ts +114 -10
  32. package/dist/esm/billing/billing-enums.shared.schemas.d.ts.map +1 -1
  33. package/dist/esm/billing/billing-enums.shared.schemas.js +121 -9
  34. package/dist/esm/billing/billing-enums.shared.schemas.js.map +1 -1
  35. package/dist/esm/billing/billing-types.shared.schemas.d.ts +61 -15
  36. package/dist/esm/billing/billing-types.shared.schemas.d.ts.map +1 -1
  37. package/dist/esm/billing/billing-types.shared.schemas.js +54 -26
  38. package/dist/esm/billing/billing-types.shared.schemas.js.map +1 -1
  39. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts +2 -0
  40. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts.map +1 -1
  41. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.js +18 -7
  42. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.js.map +1 -1
  43. package/dist/esm/billing/credit-pool.shared.schemas.d.ts +2 -0
  44. package/dist/esm/billing/credit-pool.shared.schemas.d.ts.map +1 -1
  45. package/dist/esm/billing/credit-pool.shared.schemas.js +7 -1
  46. package/dist/esm/billing/credit-pool.shared.schemas.js.map +1 -1
  47. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts.map +1 -1
  48. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js +6 -6
  49. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js.map +1 -1
  50. package/dist/esm/billing/invoice-ref.shared.schemas.d.ts.map +1 -1
  51. package/dist/esm/billing/invoice-ref.shared.schemas.js +1 -1
  52. package/dist/esm/billing/invoice-ref.shared.schemas.js.map +1 -1
  53. package/dist/esm/billing/price.shared.resources-config.schemas.d.ts.map +1 -1
  54. package/dist/esm/billing/price.shared.resources-config.schemas.js +32 -2
  55. package/dist/esm/billing/price.shared.resources-config.schemas.js.map +1 -1
  56. package/dist/esm/billing/price.shared.schemas.d.ts.map +1 -1
  57. package/dist/esm/billing/price.shared.schemas.js +5 -3
  58. package/dist/esm/billing/price.shared.schemas.js.map +1 -1
  59. package/dist/esm/billing/product-behavior-policy.shared.schemas.d.ts +11 -1
  60. package/dist/esm/billing/product-behavior-policy.shared.schemas.d.ts.map +1 -1
  61. package/dist/esm/billing/product-behavior-policy.shared.schemas.js +39 -23
  62. package/dist/esm/billing/product-behavior-policy.shared.schemas.js.map +1 -1
  63. package/dist/esm/billing/product-definition.shared.schemas.d.ts +30 -2
  64. package/dist/esm/billing/product-definition.shared.schemas.d.ts.map +1 -1
  65. package/dist/esm/billing/product-definition.shared.schemas.js +35 -0
  66. package/dist/esm/billing/product-definition.shared.schemas.js.map +1 -1
  67. package/dist/esm/billing/product.shared.resources-config.schemas.d.ts +6 -3
  68. package/dist/esm/billing/product.shared.resources-config.schemas.d.ts.map +1 -1
  69. package/dist/esm/billing/product.shared.resources-config.schemas.js +32 -2
  70. package/dist/esm/billing/product.shared.resources-config.schemas.js.map +1 -1
  71. package/dist/esm/billing/product.shared.schemas.d.ts +8 -3
  72. package/dist/esm/billing/product.shared.schemas.d.ts.map +1 -1
  73. package/dist/esm/billing/product.shared.schemas.js +25 -7
  74. package/dist/esm/billing/product.shared.schemas.js.map +1 -1
  75. package/dist/esm/billing/promotions.shared.resources-config.schemas.d.ts.map +1 -1
  76. package/dist/esm/billing/promotions.shared.resources-config.schemas.js +41 -11
  77. package/dist/esm/billing/promotions.shared.resources-config.schemas.js.map +1 -1
  78. package/dist/esm/billing/promotions.shared.schemas.d.ts.map +1 -1
  79. package/dist/esm/billing/public-pricing-catalog.shared.atoms.d.ts +135 -0
  80. package/dist/esm/billing/public-pricing-catalog.shared.atoms.d.ts.map +1 -0
  81. package/dist/esm/billing/public-pricing-catalog.shared.atoms.js +112 -0
  82. package/dist/esm/billing/public-pricing-catalog.shared.atoms.js.map +1 -0
  83. package/dist/esm/billing/public-pricing-catalog.shared.d.ts +30 -0
  84. package/dist/esm/billing/public-pricing-catalog.shared.d.ts.map +1 -0
  85. package/dist/esm/billing/public-pricing-catalog.shared.js +53 -0
  86. package/dist/esm/billing/public-pricing-catalog.shared.js.map +1 -0
  87. package/dist/esm/billing/referral-reward.shared.schemas.d.ts +51 -0
  88. package/dist/esm/billing/referral-reward.shared.schemas.d.ts.map +1 -0
  89. package/dist/esm/billing/referral-reward.shared.schemas.js +92 -0
  90. package/dist/esm/billing/referral-reward.shared.schemas.js.map +1 -0
  91. package/dist/esm/billing/referral.shared.resources-config.schemas.d.ts +54 -33
  92. package/dist/esm/billing/referral.shared.resources-config.schemas.d.ts.map +1 -1
  93. package/dist/esm/billing/referral.shared.resources-config.schemas.js +76 -2
  94. package/dist/esm/billing/referral.shared.resources-config.schemas.js.map +1 -1
  95. package/dist/esm/billing/referral.shared.schemas.d.ts +23 -37
  96. package/dist/esm/billing/referral.shared.schemas.d.ts.map +1 -1
  97. package/dist/esm/billing/referral.shared.schemas.js +27 -44
  98. package/dist/esm/billing/referral.shared.schemas.js.map +1 -1
  99. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +32 -2
  100. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
  101. package/dist/esm/billing/subscription.shared.resources-config.schemas.js +95 -16
  102. package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
  103. package/dist/esm/billing/subscription.shared.schemas.d.ts +81 -5
  104. package/dist/esm/billing/subscription.shared.schemas.d.ts.map +1 -1
  105. package/dist/esm/billing/subscription.shared.schemas.js +88 -25
  106. package/dist/esm/billing/subscription.shared.schemas.js.map +1 -1
  107. package/dist/esm/billing/usage-flush-evidence.shared.schemas.d.ts +49 -0
  108. package/dist/esm/billing/usage-flush-evidence.shared.schemas.d.ts.map +1 -0
  109. package/dist/esm/billing/usage-flush-evidence.shared.schemas.js +48 -0
  110. package/dist/esm/billing/usage-flush-evidence.shared.schemas.js.map +1 -0
  111. package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts.map +1 -1
  112. package/dist/esm/billing/usage-record.shared.schemas.d.ts +1 -0
  113. package/dist/esm/billing/usage-record.shared.schemas.d.ts.map +1 -1
  114. package/dist/esm/billing/usage-record.shared.schemas.js +8 -5
  115. package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
  116. package/dist/esm/charts/aggregation-query.shared.schemas.d.ts.map +1 -1
  117. package/dist/esm/charts/chart-definition-builder.shared.d.ts.map +1 -1
  118. package/dist/esm/companion/provider-discovery.shared.schemas.d.ts +150 -3
  119. package/dist/esm/companion/provider-discovery.shared.schemas.d.ts.map +1 -1
  120. package/dist/esm/companion/provider-discovery.shared.schemas.js +84 -1
  121. package/dist/esm/companion/provider-discovery.shared.schemas.js.map +1 -1
  122. package/dist/esm/companion/shared-library-companion.shared.definitions.d.ts.map +1 -1
  123. package/dist/esm/companion-exports.d.ts.map +1 -1
  124. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts +28 -4
  125. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
  126. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js +25 -7
  127. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js.map +1 -1
  128. package/dist/esm/compliance/audit-trails/audit-actor.shared.schemas.d.ts +70 -0
  129. package/dist/esm/compliance/audit-trails/audit-actor.shared.schemas.d.ts.map +1 -1
  130. package/dist/esm/compliance/audit-trails/audit-actor.shared.schemas.js +87 -0
  131. package/dist/esm/compliance/audit-trails/audit-actor.shared.schemas.js.map +1 -1
  132. package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.d.ts +484 -0
  133. package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.d.ts.map +1 -0
  134. package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.js +857 -0
  135. package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.js.map +1 -0
  136. package/dist/esm/compliance/audit-trails/audit-log-sink.shared.schemas.d.ts +7 -0
  137. package/dist/esm/compliance/audit-trails/audit-log-sink.shared.schemas.d.ts.map +1 -1
  138. package/dist/esm/compliance/audit-trails/audit-log-sink.shared.schemas.js.map +1 -1
  139. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts +30 -4
  140. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
  141. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.js +29 -8
  142. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.js.map +1 -1
  143. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts +37 -6
  144. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts.map +1 -1
  145. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js +53 -9
  146. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js.map +1 -1
  147. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts +2432 -162
  148. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts.map +1 -1
  149. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js +2545 -124
  150. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js.map +1 -1
  151. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.d.ts +10 -0
  152. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.d.ts.map +1 -1
  153. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js +177 -7
  154. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
  155. package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.d.ts +463 -0
  156. package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.d.ts.map +1 -0
  157. package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.js +526 -0
  158. package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.js.map +1 -0
  159. package/dist/esm/compliance/documents/governed-documents.shared.schemas.d.ts +539 -15
  160. package/dist/esm/compliance/documents/governed-documents.shared.schemas.d.ts.map +1 -1
  161. package/dist/esm/compliance/documents/governed-documents.shared.schemas.js +402 -14
  162. package/dist/esm/compliance/documents/governed-documents.shared.schemas.js.map +1 -1
  163. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.d.ts +18 -0
  164. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.d.ts.map +1 -0
  165. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.js +89 -0
  166. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.js.map +1 -0
  167. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.d.ts +47 -0
  168. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.d.ts.map +1 -0
  169. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.js +73 -0
  170. package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.js.map +1 -0
  171. package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.d.ts +23 -0
  172. package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.d.ts.map +1 -1
  173. package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.js +41 -1
  174. package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.js.map +1 -1
  175. package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.d.ts +33 -0
  176. package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.d.ts.map +1 -0
  177. package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.js +30 -0
  178. package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.js.map +1 -0
  179. package/dist/esm/compliance/privacy/client-storage.shared.schemas.d.ts +6 -5
  180. package/dist/esm/compliance/privacy/client-storage.shared.schemas.d.ts.map +1 -1
  181. package/dist/esm/compliance/privacy/client-storage.shared.schemas.js +15 -5
  182. package/dist/esm/compliance/privacy/client-storage.shared.schemas.js.map +1 -1
  183. package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.d.ts +127 -0
  184. package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.d.ts.map +1 -0
  185. package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.js +94 -0
  186. package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.js.map +1 -0
  187. package/dist/esm/compliance/privacy/consent-purposes.shared.d.ts +125 -0
  188. package/dist/esm/compliance/privacy/consent-purposes.shared.d.ts.map +1 -0
  189. package/dist/esm/compliance/privacy/consent-purposes.shared.js +136 -0
  190. package/dist/esm/compliance/privacy/consent-purposes.shared.js.map +1 -0
  191. package/dist/esm/compliance/privacy/data-retention.shared.schemas.d.ts +0 -8
  192. package/dist/esm/compliance/privacy/data-retention.shared.schemas.d.ts.map +0 -1
  193. package/dist/esm/compliance/privacy/data-retention.shared.schemas.js.map +0 -1
  194. package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.d.ts +100 -0
  195. package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.d.ts.map +1 -0
  196. package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.js +146 -0
  197. package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.js.map +1 -0
  198. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts.map +1 -1
  199. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts +38 -0
  200. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts.map +1 -1
  201. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js +39 -0
  202. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js.map +1 -1
  203. package/dist/esm/compliance/privacy/legal-hold-subject-attribution.shared.utils.d.ts +35 -0
  204. package/dist/esm/compliance/privacy/legal-hold-subject-attribution.shared.utils.d.ts.map +1 -0
  205. package/dist/esm/compliance/privacy/legal-hold-subject-attribution.shared.utils.js +82 -0
  206. package/dist/esm/compliance/privacy/legal-hold-subject-attribution.shared.utils.js.map +1 -0
  207. package/dist/esm/compliance/privacy/legal-holds.shared.resources-config.schemas.d.ts +37 -0
  208. package/dist/esm/compliance/privacy/legal-holds.shared.resources-config.schemas.d.ts.map +1 -0
  209. package/dist/esm/compliance/privacy/legal-holds.shared.resources-config.schemas.js +223 -0
  210. package/dist/esm/compliance/privacy/legal-holds.shared.resources-config.schemas.js.map +1 -0
  211. package/dist/esm/compliance/privacy/legal-holds.shared.schemas.d.ts +222 -0
  212. package/dist/esm/compliance/privacy/legal-holds.shared.schemas.d.ts.map +1 -0
  213. package/dist/esm/compliance/privacy/legal-holds.shared.schemas.js +331 -0
  214. package/dist/esm/compliance/privacy/legal-holds.shared.schemas.js.map +1 -0
  215. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -1
  216. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -1
  217. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts +105 -28
  218. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts.map +1 -1
  219. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js +107 -26
  220. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js.map +1 -1
  221. package/dist/esm/compliance/privacy/personal-data-category.shared.schemas.d.ts.map +1 -1
  222. package/dist/esm/compliance/privacy/personal-data-declaration.shared.utils.d.ts.map +1 -1
  223. package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts +9 -17
  224. package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts.map +1 -1
  225. package/dist/esm/compliance/privacy/privacy.shared.schemas.js +74 -31
  226. package/dist/esm/compliance/privacy/privacy.shared.schemas.js.map +1 -1
  227. package/dist/esm/compliance/privacy/provider-capability-disclosure.shared.schemas.d.ts +52 -0
  228. package/dist/esm/compliance/privacy/provider-capability-disclosure.shared.schemas.d.ts.map +1 -0
  229. package/dist/esm/compliance/privacy/provider-capability-disclosure.shared.schemas.js +116 -0
  230. package/dist/esm/compliance/privacy/provider-capability-disclosure.shared.schemas.js.map +1 -0
  231. package/dist/esm/compliance/privacy/purpose-ref.shared.schemas.d.ts +11 -0
  232. package/dist/esm/compliance/privacy/purpose-ref.shared.schemas.d.ts.map +1 -0
  233. package/dist/esm/compliance/privacy/purpose-ref.shared.schemas.js +11 -0
  234. package/dist/esm/compliance/privacy/purpose-ref.shared.schemas.js.map +1 -0
  235. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts.map +1 -1
  236. package/dist/esm/compliance/privacy/redaction.shared.schemas.js.map +1 -1
  237. package/dist/esm/compliance/privacy/retention-binding.shared.utils.d.ts +93 -0
  238. package/dist/esm/compliance/privacy/retention-binding.shared.utils.d.ts.map +1 -0
  239. package/dist/esm/compliance/privacy/retention-binding.shared.utils.js +149 -0
  240. package/dist/esm/compliance/privacy/retention-binding.shared.utils.js.map +1 -0
  241. package/dist/esm/compliance/privacy/retention-enforcement-records.shared.resources-config.schemas.d.ts +43 -0
  242. package/dist/esm/compliance/privacy/retention-enforcement-records.shared.resources-config.schemas.d.ts.map +1 -0
  243. package/dist/esm/compliance/privacy/retention-enforcement-records.shared.resources-config.schemas.js +106 -0
  244. package/dist/esm/compliance/privacy/retention-enforcement-records.shared.resources-config.schemas.js.map +1 -0
  245. package/dist/esm/compliance/privacy/retention-enforcement-records.shared.schemas.d.ts +209 -0
  246. package/dist/esm/compliance/privacy/retention-enforcement-records.shared.schemas.d.ts.map +1 -0
  247. package/dist/esm/compliance/privacy/retention-enforcement-records.shared.schemas.js +226 -0
  248. package/dist/esm/compliance/privacy/retention-enforcement-records.shared.schemas.js.map +1 -0
  249. package/dist/esm/compliance/privacy/retention-schedule.shared.schemas.d.ts +129 -5
  250. package/dist/esm/compliance/privacy/retention-schedule.shared.schemas.d.ts.map +1 -1
  251. package/dist/esm/compliance/privacy/retention-schedule.shared.schemas.js +128 -4
  252. package/dist/esm/compliance/privacy/retention-schedule.shared.schemas.js.map +1 -1
  253. package/dist/esm/compliance/privacy/retention-scope-deleted.shared.utils.d.ts +53 -0
  254. package/dist/esm/compliance/privacy/retention-scope-deleted.shared.utils.d.ts.map +1 -0
  255. package/dist/esm/compliance/privacy/retention-scope-deleted.shared.utils.js +74 -0
  256. package/dist/esm/compliance/privacy/retention-scope-deleted.shared.utils.js.map +1 -0
  257. package/dist/esm/compliance/privacy/subject-data-recipients.shared.schemas.d.ts +311 -0
  258. package/dist/esm/compliance/privacy/subject-data-recipients.shared.schemas.d.ts.map +1 -0
  259. package/dist/esm/compliance/privacy/subject-data-recipients.shared.schemas.js +355 -0
  260. package/dist/esm/compliance/privacy/subject-data-recipients.shared.schemas.js.map +1 -0
  261. package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.d.ts +47 -0
  262. package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.d.ts.map +1 -0
  263. package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.js +98 -0
  264. package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.js.map +1 -0
  265. package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.d.ts +507 -35
  266. package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.d.ts.map +1 -1
  267. package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.js +513 -17
  268. package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.js.map +1 -1
  269. package/dist/esm/compliance/privacy/subject-export-render.shared.utils.d.ts.map +1 -1
  270. package/dist/esm/compliance/privacy/subject-export-render.shared.utils.js +26 -0
  271. package/dist/esm/compliance/privacy/subject-export-render.shared.utils.js.map +1 -1
  272. package/dist/esm/compliance/privacy/subject-export.shared.schemas.d.ts +9 -0
  273. package/dist/esm/compliance/privacy/subject-export.shared.schemas.d.ts.map +1 -1
  274. package/dist/esm/compliance/privacy/subject-export.shared.schemas.js.map +1 -1
  275. package/dist/esm/compliance/review-cadence.shared.schemas.d.ts +56 -0
  276. package/dist/esm/compliance/review-cadence.shared.schemas.d.ts.map +1 -0
  277. package/dist/esm/compliance/review-cadence.shared.schemas.js +71 -0
  278. package/dist/esm/compliance/review-cadence.shared.schemas.js.map +1 -0
  279. package/dist/esm/compliance/risk-posture.shared.schemas.d.ts +161 -0
  280. package/dist/esm/compliance/risk-posture.shared.schemas.d.ts.map +1 -0
  281. package/dist/esm/compliance/risk-posture.shared.schemas.js +166 -0
  282. package/dist/esm/compliance/risk-posture.shared.schemas.js.map +1 -0
  283. package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts +4 -3
  284. package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts.map +1 -1
  285. package/dist/esm/config/analytics-value-moments.shared.schemas.js +4 -3
  286. package/dist/esm/config/analytics-value-moments.shared.schemas.js.map +1 -1
  287. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts +331 -10
  288. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
  289. package/dist/esm/config/app-configuration-shared.shared.schemas.js +289 -9
  290. package/dist/esm/config/app-configuration-shared.shared.schemas.js.map +1 -1
  291. package/dist/esm/config/auth-config-resolution.shared.utils.d.ts +75 -3
  292. package/dist/esm/config/auth-config-resolution.shared.utils.d.ts.map +1 -1
  293. package/dist/esm/config/auth-config-resolution.shared.utils.js +93 -4
  294. package/dist/esm/config/auth-config-resolution.shared.utils.js.map +1 -1
  295. package/dist/esm/config/brand-assets.shared.schemas.d.ts +5 -4
  296. package/dist/esm/config/brand-assets.shared.schemas.d.ts.map +1 -1
  297. package/dist/esm/config/brand-assets.shared.schemas.js +14 -4
  298. package/dist/esm/config/brand-assets.shared.schemas.js.map +1 -1
  299. package/dist/esm/config/entity-identity-config.shared.schemas.d.ts +532 -19
  300. package/dist/esm/config/entity-identity-config.shared.schemas.d.ts.map +1 -1
  301. package/dist/esm/config/entity-identity-config.shared.schemas.js +628 -28
  302. package/dist/esm/config/entity-identity-config.shared.schemas.js.map +1 -1
  303. package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts +32 -32
  304. package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts.map +1 -1
  305. package/dist/esm/config/frontend/chart-registration-alignment.shared.d.ts.map +1 -1
  306. package/dist/esm/config/frontend/chart-registration-alignment.shared.js.map +1 -1
  307. package/dist/esm/config/frontend/navigation.shared.schemas.d.ts +180 -77
  308. package/dist/esm/config/frontend/navigation.shared.schemas.d.ts.map +1 -1
  309. package/dist/esm/config/frontend/navigation.shared.schemas.js +354 -104
  310. package/dist/esm/config/frontend/navigation.shared.schemas.js.map +1 -1
  311. package/dist/esm/config/frontend/onboarding.shared.schemas.d.ts +90 -133
  312. package/dist/esm/config/frontend/onboarding.shared.schemas.d.ts.map +1 -1
  313. package/dist/esm/config/frontend/onboarding.shared.schemas.js +148 -100
  314. package/dist/esm/config/frontend/onboarding.shared.schemas.js.map +1 -1
  315. package/dist/esm/config/registration-acquisition-policy.shared.utils.d.ts.map +1 -1
  316. package/dist/esm/config-authoring.entry.d.ts.map +1 -1
  317. package/dist/esm/crdt/crdt-merge.shared.utils.d.ts.map +1 -1
  318. package/dist/esm/data-seeding/data-seeding-config.shared.schemas.d.ts.map +1 -1
  319. package/dist/esm/errors/caught-error-description.shared.utils.d.ts +69 -0
  320. package/dist/esm/errors/caught-error-description.shared.utils.d.ts.map +1 -0
  321. package/dist/esm/errors/caught-error-description.shared.utils.js +77 -0
  322. package/dist/esm/errors/caught-error-description.shared.utils.js.map +1 -0
  323. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +212 -42
  324. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts.map +1 -1
  325. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js +214 -41
  326. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
  327. package/dist/esm/errors/errors.shared.definitions.d.ts.map +1 -1
  328. package/dist/esm/errors/errors.shared.definitions.js +1 -1
  329. package/dist/esm/errors/errors.shared.definitions.js.map +1 -1
  330. package/dist/esm/errors/errors.shared.schemas.d.ts +49 -41
  331. package/dist/esm/errors/errors.shared.schemas.d.ts.map +1 -1
  332. package/dist/esm/errors/errors.shared.schemas.js +52 -62
  333. package/dist/esm/errors/errors.shared.schemas.js.map +1 -1
  334. package/dist/esm/errors/errors.shared.utils.d.ts.map +1 -1
  335. package/dist/esm/errors/thrown-value-description.shared.utils.d.ts +26 -0
  336. package/dist/esm/errors/thrown-value-description.shared.utils.d.ts.map +1 -0
  337. package/dist/esm/errors/thrown-value-description.shared.utils.js +66 -0
  338. package/dist/esm/errors/thrown-value-description.shared.utils.js.map +1 -0
  339. package/dist/esm/external-data/external-data-pipeline-description.shared.d.ts +70 -0
  340. package/dist/esm/external-data/external-data-pipeline-description.shared.d.ts.map +1 -0
  341. package/dist/esm/external-data/external-data-pipeline-description.shared.js +92 -0
  342. package/dist/esm/external-data/external-data-pipeline-description.shared.js.map +1 -0
  343. package/dist/esm/external-data/external-data-pipeline-pass-mode.shared.d.ts +154 -0
  344. package/dist/esm/external-data/external-data-pipeline-pass-mode.shared.d.ts.map +1 -0
  345. package/dist/esm/external-data/external-data-pipeline-pass-mode.shared.js +161 -0
  346. package/dist/esm/external-data/external-data-pipeline-pass-mode.shared.js.map +1 -0
  347. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts +1118 -95
  348. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts.map +1 -1
  349. package/dist/esm/external-data/external-data-pipeline.shared.schemas.js +1166 -24
  350. package/dist/esm/external-data/external-data-pipeline.shared.schemas.js.map +1 -1
  351. package/dist/esm/external-data/external-data-provenance.shared.d.ts +71 -0
  352. package/dist/esm/external-data/external-data-provenance.shared.d.ts.map +1 -0
  353. package/dist/esm/external-data/external-data-provenance.shared.js +88 -0
  354. package/dist/esm/external-data/external-data-provenance.shared.js.map +1 -0
  355. package/dist/esm/external-data.exports.d.ts +6 -0
  356. package/dist/esm/external-data.exports.d.ts.map +1 -1
  357. package/dist/esm/external-data.exports.js +12 -0
  358. package/dist/esm/external-data.exports.js.map +1 -1
  359. package/dist/esm/external-providers/compose-provider-registry.shared.d.ts.map +1 -1
  360. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +28 -14
  361. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
  362. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +33 -16
  363. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js.map +1 -1
  364. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts +5 -3
  365. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts.map +1 -1
  366. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js +8 -3
  367. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js.map +1 -1
  368. package/dist/esm/external-providers/engine-capability-surface.shared.d.ts +77 -0
  369. package/dist/esm/external-providers/engine-capability-surface.shared.d.ts.map +1 -0
  370. package/dist/esm/external-providers/engine-capability-surface.shared.js +175 -0
  371. package/dist/esm/external-providers/engine-capability-surface.shared.js.map +1 -0
  372. package/dist/esm/external-providers/external-providers.shared.schemas.d.ts +2 -0
  373. package/dist/esm/external-providers/external-providers.shared.schemas.d.ts.map +1 -1
  374. package/dist/esm/external-providers/external-providers.shared.schemas.js +21 -0
  375. package/dist/esm/external-providers/external-providers.shared.schemas.js.map +1 -1
  376. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +281 -10
  377. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts.map +1 -1
  378. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts +115 -0
  379. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts.map +1 -1
  380. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js +149 -0
  381. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js.map +1 -1
  382. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts +45 -0
  383. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts.map +1 -1
  384. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js +14 -0
  385. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js.map +1 -1
  386. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts +242 -7
  387. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts.map +1 -1
  388. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js +127 -3
  389. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js.map +1 -1
  390. package/dist/esm/external-providers/frontend-provider-public-config.shared.d.ts +187 -36
  391. package/dist/esm/external-providers/frontend-provider-public-config.shared.d.ts.map +1 -1
  392. package/dist/esm/external-providers/frontend-provider-public-config.shared.js +261 -47
  393. package/dist/esm/external-providers/frontend-provider-public-config.shared.js.map +1 -1
  394. package/dist/esm/external-providers/model-cost-accounting-config.shared.schemas.d.ts +53 -0
  395. package/dist/esm/external-providers/model-cost-accounting-config.shared.schemas.d.ts.map +1 -0
  396. package/dist/esm/external-providers/model-cost-accounting-config.shared.schemas.js +41 -0
  397. package/dist/esm/external-providers/model-cost-accounting-config.shared.schemas.js.map +1 -0
  398. package/dist/esm/external-providers/provider-address-lookup-contract.shared.types.d.ts +150 -0
  399. package/dist/esm/external-providers/provider-address-lookup-contract.shared.types.d.ts.map +1 -0
  400. package/dist/esm/external-providers/provider-address-lookup-contract.shared.types.js +22 -0
  401. package/dist/esm/external-providers/provider-address-lookup-contract.shared.types.js.map +1 -0
  402. package/dist/esm/external-providers/provider-augmentation-opt-ins.shared.schemas.d.ts +42 -0
  403. package/dist/esm/external-providers/provider-augmentation-opt-ins.shared.schemas.d.ts.map +1 -0
  404. package/dist/esm/external-providers/provider-augmentation-opt-ins.shared.schemas.js +49 -0
  405. package/dist/esm/external-providers/provider-augmentation-opt-ins.shared.schemas.js.map +1 -0
  406. package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.d.ts +30 -0
  407. package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.d.ts.map +1 -0
  408. package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.js +32 -0
  409. package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.js.map +1 -0
  410. package/dist/esm/external-providers/provider-browser-operations.shared.schemas.d.ts +139 -0
  411. package/dist/esm/external-providers/provider-browser-operations.shared.schemas.d.ts.map +1 -0
  412. package/dist/esm/external-providers/provider-browser-operations.shared.schemas.js +141 -0
  413. package/dist/esm/external-providers/provider-browser-operations.shared.schemas.js.map +1 -0
  414. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +48 -13
  415. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
  416. package/dist/esm/external-providers/provider-capability.shared.schemas.js +44 -10
  417. package/dist/esm/external-providers/provider-capability.shared.schemas.js.map +1 -1
  418. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts +341 -4
  419. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts.map +1 -1
  420. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js +270 -20
  421. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js.map +1 -1
  422. package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.d.ts +6 -2
  423. package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.d.ts.map +1 -1
  424. package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.js +6 -2
  425. package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.js.map +1 -1
  426. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts +181 -6
  427. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts.map +1 -1
  428. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js +132 -5
  429. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js.map +1 -1
  430. package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts +5 -2
  431. package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts.map +1 -1
  432. package/dist/esm/external-providers/provider-metadata.shared.schemas.js +5 -2
  433. package/dist/esm/external-providers/provider-metadata.shared.schemas.js.map +1 -1
  434. package/dist/esm/external-providers/provider-package-allow-list.shared.schemas.d.ts +42 -0
  435. package/dist/esm/external-providers/provider-package-allow-list.shared.schemas.d.ts.map +1 -0
  436. package/dist/esm/external-providers/provider-package-allow-list.shared.schemas.js +57 -0
  437. package/dist/esm/external-providers/provider-package-allow-list.shared.schemas.js.map +1 -0
  438. package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts +6 -0
  439. package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts.map +1 -1
  440. package/dist/esm/external-providers/provider-protocol.shared.schemas.js +6 -0
  441. package/dist/esm/external-providers/provider-protocol.shared.schemas.js.map +1 -1
  442. package/dist/esm/external-providers/provider-scope-reauthorization.shared.schemas.d.ts +58 -0
  443. package/dist/esm/external-providers/provider-scope-reauthorization.shared.schemas.d.ts.map +1 -0
  444. package/dist/esm/external-providers/provider-scope-reauthorization.shared.schemas.js +35 -0
  445. package/dist/esm/external-providers/provider-scope-reauthorization.shared.schemas.js.map +1 -0
  446. package/dist/esm/external-providers/provider-shared-connections.shared.schemas.d.ts +115 -0
  447. package/dist/esm/external-providers/provider-shared-connections.shared.schemas.d.ts.map +1 -0
  448. package/dist/esm/external-providers/provider-shared-connections.shared.schemas.js +137 -0
  449. package/dist/esm/external-providers/provider-shared-connections.shared.schemas.js.map +1 -0
  450. package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts.map +1 -1
  451. package/dist/esm/external-providers/provider-tier-rule.shared.utils.js.map +1 -1
  452. package/dist/esm/external-providers/provider-usage-cost.shared.d.ts +73 -0
  453. package/dist/esm/external-providers/provider-usage-cost.shared.d.ts.map +1 -0
  454. package/dist/esm/external-providers/provider-usage-cost.shared.js +171 -0
  455. package/dist/esm/external-providers/provider-usage-cost.shared.js.map +1 -0
  456. package/dist/esm/external-providers/provider-usage-pricing.example.d.ts +12 -0
  457. package/dist/esm/external-providers/provider-usage-pricing.example.d.ts.map +1 -0
  458. package/dist/esm/external-providers/provider-usage-pricing.example.js +40 -0
  459. package/dist/esm/external-providers/provider-usage-pricing.example.js.map +1 -0
  460. package/dist/esm/external-providers/provider-usage-pricing.shared.schemas.d.ts +68 -32
  461. package/dist/esm/external-providers/provider-usage-pricing.shared.schemas.d.ts.map +1 -1
  462. package/dist/esm/external-providers/provider-usage-pricing.shared.schemas.js +63 -52
  463. package/dist/esm/external-providers/provider-usage-pricing.shared.schemas.js.map +1 -1
  464. package/dist/esm/features/application-features.shared.resources-config.schemas.d.ts +7 -5
  465. package/dist/esm/features/application-features.shared.resources-config.schemas.d.ts.map +1 -1
  466. package/dist/esm/features/application-features.shared.resources-config.schemas.js +43 -8
  467. package/dist/esm/features/application-features.shared.resources-config.schemas.js.map +1 -1
  468. package/dist/esm/features/connected-feature.example.d.ts +64 -0
  469. package/dist/esm/features/connected-feature.example.d.ts.map +1 -0
  470. package/dist/esm/features/connected-feature.example.js +87 -0
  471. package/dist/esm/features/connected-feature.example.js.map +1 -0
  472. package/dist/esm/features/core-feature-definitions.shared.d.ts.map +1 -1
  473. package/dist/esm/features/core-feature-definitions.shared.js +2 -1
  474. package/dist/esm/features/core-feature-definitions.shared.js.map +1 -1
  475. package/dist/esm/features/feature-builders.shared.d.ts.map +1 -1
  476. package/dist/esm/features/feature-builders.shared.js.map +1 -1
  477. package/dist/esm/features/feature-definition.shared.schemas.d.ts +2 -11
  478. package/dist/esm/features/feature-definition.shared.schemas.d.ts.map +1 -1
  479. package/dist/esm/features/feature-definition.shared.schemas.js +0 -12
  480. package/dist/esm/features/feature-definition.shared.schemas.js.map +1 -1
  481. package/dist/esm/features/feature-registry.shared.d.ts.map +1 -1
  482. package/dist/esm/features/feature-resolution.shared.schemas.d.ts.map +1 -1
  483. package/dist/esm/features/scope-features.shared.schemas.d.ts +74 -7
  484. package/dist/esm/features/scope-features.shared.schemas.d.ts.map +1 -1
  485. package/dist/esm/features/scope-features.shared.schemas.js +64 -5
  486. package/dist/esm/features/scope-features.shared.schemas.js.map +1 -1
  487. package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts +6 -6
  488. package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts.map +1 -1
  489. package/dist/esm/features/user-features.shared.resources-config.schemas.js +34 -52
  490. package/dist/esm/features/user-features.shared.resources-config.schemas.js.map +1 -1
  491. package/dist/esm/files/file-remote-reference-link.shared.schemas.d.ts.map +1 -1
  492. package/dist/esm/files/file-remote-reference-link.shared.schemas.js.map +1 -1
  493. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts.map +1 -1
  494. package/dist/esm/files/file-upload-grant.shared.schemas.js.map +1 -1
  495. package/dist/esm/files/files.shared.resources-config.schemas.d.ts +3 -3
  496. package/dist/esm/files/files.shared.resources-config.schemas.d.ts.map +1 -1
  497. package/dist/esm/files/files.shared.resources-config.schemas.js +3 -3
  498. package/dist/esm/files/files.shared.resources-config.schemas.js.map +1 -1
  499. package/dist/esm/files/files.shared.schemas.d.ts.map +1 -1
  500. package/dist/esm/files/files.shared.schemas.js.map +1 -1
  501. package/dist/esm/files/files.shared.utils.d.ts.map +1 -1
  502. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
  503. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.d.ts.map +1 -1
  504. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts.map +1 -1
  505. package/dist/esm/flows-actors/a2a-token-budget-state.shared.schemas.d.ts.map +1 -1
  506. package/dist/esm/flows-actors/actors.shared.schemas.d.ts +279 -140
  507. package/dist/esm/flows-actors/actors.shared.schemas.d.ts.map +1 -1
  508. package/dist/esm/flows-actors/actors.shared.schemas.js +130 -2
  509. package/dist/esm/flows-actors/actors.shared.schemas.js.map +1 -1
  510. package/dist/esm/flows-actors/agent-traceability.shared.schemas.d.ts +22 -0
  511. package/dist/esm/flows-actors/agent-traceability.shared.schemas.d.ts.map +1 -1
  512. package/dist/esm/flows-actors/agent-traceability.shared.schemas.js +7 -0
  513. package/dist/esm/flows-actors/agent-traceability.shared.schemas.js.map +1 -1
  514. package/dist/esm/flows-actors/agent-work-decisions.shared.resources-config.schemas.d.ts +68 -0
  515. package/dist/esm/flows-actors/agent-work-decisions.shared.resources-config.schemas.d.ts.map +1 -0
  516. package/dist/esm/flows-actors/agent-work-decisions.shared.resources-config.schemas.js +276 -0
  517. package/dist/esm/flows-actors/agent-work-decisions.shared.resources-config.schemas.js.map +1 -0
  518. package/dist/esm/flows-actors/agent-work-decisions.shared.schemas.d.ts +468 -0
  519. package/dist/esm/flows-actors/agent-work-decisions.shared.schemas.d.ts.map +1 -0
  520. package/dist/esm/flows-actors/agent-work-decisions.shared.schemas.js +472 -0
  521. package/dist/esm/flows-actors/agent-work-decisions.shared.schemas.js.map +1 -0
  522. package/dist/esm/flows-actors/agents.shared.schemas.d.ts +3 -3
  523. package/dist/esm/flows-actors/agents.shared.schemas.d.ts.map +1 -1
  524. package/dist/esm/flows-actors/agents.shared.schemas.js +11 -5
  525. package/dist/esm/flows-actors/agents.shared.schemas.js.map +1 -1
  526. package/dist/esm/flows-actors/autonomous-agents.shared.schemas.d.ts +118 -0
  527. package/dist/esm/flows-actors/autonomous-agents.shared.schemas.d.ts.map +1 -0
  528. package/dist/esm/flows-actors/autonomous-agents.shared.schemas.js +144 -0
  529. package/dist/esm/flows-actors/autonomous-agents.shared.schemas.js.map +1 -0
  530. package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts +13 -0
  531. package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts.map +1 -1
  532. package/dist/esm/flows-actors/deliberation.shared.schemas.js.map +1 -1
  533. package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.d.ts +45 -0
  534. package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.d.ts.map +1 -0
  535. package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.js +51 -0
  536. package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.js.map +1 -0
  537. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts.map +1 -1
  538. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts +173 -8
  539. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts.map +1 -1
  540. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js +269 -13
  541. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
  542. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts.map +1 -1
  543. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts +2 -2
  544. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts.map +1 -1
  545. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts +51 -8
  546. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts.map +1 -1
  547. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js +51 -11
  548. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js.map +1 -1
  549. package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.d.ts +0 -200
  550. package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.d.ts.map +1 -1
  551. package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.js +25 -54
  552. package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.js.map +1 -1
  553. package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.d.ts +45 -9
  554. package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.d.ts.map +1 -1
  555. package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.js +31 -6
  556. package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.js.map +1 -1
  557. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts.map +1 -1
  558. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js +30 -30
  559. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js.map +1 -1
  560. package/dist/esm/flows-actors/flows-actors.system.shared.definitions.d.ts.map +1 -1
  561. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.d.ts +16 -74
  562. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.d.ts.map +1 -1
  563. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js +1 -2
  564. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js.map +1 -1
  565. package/dist/esm/flows-actors/flows.shared.schemas.d.ts +15 -1
  566. package/dist/esm/flows-actors/flows.shared.schemas.d.ts.map +1 -1
  567. package/dist/esm/flows-actors/flows.shared.schemas.js.map +1 -1
  568. package/dist/esm/flows-actors/human-decision.shared.schemas.d.ts +627 -0
  569. package/dist/esm/flows-actors/human-decision.shared.schemas.d.ts.map +1 -0
  570. package/dist/esm/flows-actors/human-decision.shared.schemas.js +754 -0
  571. package/dist/esm/flows-actors/human-decision.shared.schemas.js.map +1 -0
  572. package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts.map +1 -1
  573. package/dist/esm/flows-actors/mcp-servers.shared.schemas.js +4 -2
  574. package/dist/esm/flows-actors/mcp-servers.shared.schemas.js.map +1 -1
  575. package/dist/esm/flows-actors/model-call-attributions.shared.resources-config.schemas.d.ts +46 -0
  576. package/dist/esm/flows-actors/model-call-attributions.shared.resources-config.schemas.d.ts.map +1 -0
  577. package/dist/esm/flows-actors/model-call-attributions.shared.resources-config.schemas.js +65 -0
  578. package/dist/esm/flows-actors/model-call-attributions.shared.resources-config.schemas.js.map +1 -0
  579. package/dist/esm/flows-actors/model-call-attributions.shared.schemas.d.ts +120 -0
  580. package/dist/esm/flows-actors/model-call-attributions.shared.schemas.d.ts.map +1 -0
  581. package/dist/esm/flows-actors/model-call-attributions.shared.schemas.js +165 -0
  582. package/dist/esm/flows-actors/model-call-attributions.shared.schemas.js.map +1 -0
  583. package/dist/esm/flows-actors/model-cost-period-aggregates.shared.resources-config.schemas.d.ts +45 -0
  584. package/dist/esm/flows-actors/model-cost-period-aggregates.shared.resources-config.schemas.d.ts.map +1 -0
  585. package/dist/esm/flows-actors/model-cost-period-aggregates.shared.resources-config.schemas.js +127 -0
  586. package/dist/esm/flows-actors/model-cost-period-aggregates.shared.resources-config.schemas.js.map +1 -0
  587. package/dist/esm/flows-actors/model-cost-period-aggregates.shared.schemas.d.ts +83 -0
  588. package/dist/esm/flows-actors/model-cost-period-aggregates.shared.schemas.d.ts.map +1 -0
  589. package/dist/esm/flows-actors/model-cost-period-aggregates.shared.schemas.js +97 -0
  590. package/dist/esm/flows-actors/model-cost-period-aggregates.shared.schemas.js.map +1 -0
  591. package/dist/esm/flows-actors/model-cost-summary.shared.schemas.d.ts +136 -0
  592. package/dist/esm/flows-actors/model-cost-summary.shared.schemas.d.ts.map +1 -0
  593. package/dist/esm/flows-actors/model-cost-summary.shared.schemas.js +90 -0
  594. package/dist/esm/flows-actors/model-cost-summary.shared.schemas.js.map +1 -0
  595. package/dist/esm/flows-actors/prompt-ir.shared.schemas.d.ts.map +1 -1
  596. package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.d.ts +28 -0
  597. package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.d.ts.map +1 -0
  598. package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.js +95 -0
  599. package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.js.map +1 -0
  600. package/dist/esm/flows-actors/provider-call-records.shared.schemas.d.ts +121 -0
  601. package/dist/esm/flows-actors/provider-call-records.shared.schemas.d.ts.map +1 -0
  602. package/dist/esm/flows-actors/provider-call-records.shared.schemas.js +194 -0
  603. package/dist/esm/flows-actors/provider-call-records.shared.schemas.js.map +1 -0
  604. package/dist/esm/flows-actors/review-deadlines.shared.schemas.d.ts +268 -0
  605. package/dist/esm/flows-actors/review-deadlines.shared.schemas.d.ts.map +1 -0
  606. package/dist/esm/flows-actors/review-deadlines.shared.schemas.js +576 -0
  607. package/dist/esm/flows-actors/review-deadlines.shared.schemas.js.map +1 -0
  608. package/dist/esm/flows-actors/tasks.actors.shared.schemas.d.ts +88 -81
  609. package/dist/esm/flows-actors/tasks.actors.shared.schemas.d.ts.map +1 -1
  610. package/dist/esm/flows-actors/tasks.actors.shared.schemas.js +75 -38
  611. package/dist/esm/flows-actors/tasks.actors.shared.schemas.js.map +1 -1
  612. package/dist/esm/flows-actors/work-attribution.shared.schemas.d.ts +129 -0
  613. package/dist/esm/flows-actors/work-attribution.shared.schemas.d.ts.map +1 -0
  614. package/dist/esm/flows-actors/work-attribution.shared.schemas.js +141 -0
  615. package/dist/esm/flows-actors/work-attribution.shared.schemas.js.map +1 -0
  616. package/dist/esm/frontend-definitions/frontend-notification-custom-message-ref.definitions.d.ts +22 -1
  617. package/dist/esm/frontend-definitions/frontend-notification-custom-message-ref.definitions.d.ts.map +1 -1
  618. package/dist/esm/frontend-definitions/frontend-notification-custom-message-ref.definitions.js +23 -0
  619. package/dist/esm/frontend-definitions/frontend-notification-custom-message-ref.definitions.js.map +1 -1
  620. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.d.ts +167 -1
  621. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.d.ts.map +1 -1
  622. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js +178 -0
  623. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js.map +1 -1
  624. package/dist/esm/guidance/guidance-flow.shared.schemas.d.ts +106 -24
  625. package/dist/esm/guidance/guidance-flow.shared.schemas.d.ts.map +1 -1
  626. package/dist/esm/guidance/guidance-flow.shared.schemas.js +152 -14
  627. package/dist/esm/guidance/guidance-flow.shared.schemas.js.map +1 -1
  628. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts.map +1 -1
  629. package/dist/esm/guidance/guidance-state.shared.schemas.d.ts.map +1 -1
  630. package/dist/esm/guidance/guidance-state.shared.schemas.js +11 -10
  631. package/dist/esm/guidance/guidance-state.shared.schemas.js.map +1 -1
  632. package/dist/esm/guidance/guidance-state.shared.utils.d.ts.map +1 -1
  633. package/dist/esm/guidance/guidance-state.shared.utils.js.map +1 -1
  634. package/dist/esm/guidance/lifecycle-config.shared.schemas.d.ts.map +1 -1
  635. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts.map +1 -1
  636. package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts +0 -6
  637. package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts.map +1 -1
  638. package/dist/esm/guidance/lifecycle-state.shared.schemas.js +6 -25
  639. package/dist/esm/guidance/lifecycle-state.shared.schemas.js.map +1 -1
  640. package/dist/esm/guidance/milestone-builders.shared.d.ts +4 -2
  641. package/dist/esm/guidance/milestone-builders.shared.d.ts.map +1 -1
  642. package/dist/esm/guidance/milestone-builders.shared.js +4 -2
  643. package/dist/esm/guidance/milestone-builders.shared.js.map +1 -1
  644. package/dist/esm/guidance/milestone-definition.shared.schemas.d.ts +66 -4
  645. package/dist/esm/guidance/milestone-definition.shared.schemas.d.ts.map +1 -1
  646. package/dist/esm/guidance/milestone-definition.shared.schemas.js +50 -0
  647. package/dist/esm/guidance/milestone-definition.shared.schemas.js.map +1 -1
  648. package/dist/esm/guidance/progression-presentation.shared.schemas.d.ts +71 -0
  649. package/dist/esm/guidance/progression-presentation.shared.schemas.d.ts.map +1 -0
  650. package/dist/esm/guidance/progression-presentation.shared.schemas.js +72 -0
  651. package/dist/esm/guidance/progression-presentation.shared.schemas.js.map +1 -0
  652. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts +2 -0
  653. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts.map +1 -1
  654. package/dist/esm/guidance/progression-state.shared.schemas.d.ts +4 -0
  655. package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
  656. package/dist/esm/guidance/progression-state.shared.schemas.js +12 -6
  657. package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
  658. package/dist/esm/http-api-binding/http-api-binding-id.shared.utils.d.ts.map +1 -1
  659. package/dist/esm/http-api-binding/http-api-binding-id.shared.utils.js +2 -1
  660. package/dist/esm/http-api-binding/http-api-binding-id.shared.utils.js.map +1 -1
  661. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts +730 -441
  662. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts.map +1 -1
  663. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js +747 -233
  664. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js.map +1 -1
  665. package/dist/esm/http-api-binding/http-api-erasure-stance.shared.d.ts +62 -0
  666. package/dist/esm/http-api-binding/http-api-erasure-stance.shared.d.ts.map +1 -0
  667. package/dist/esm/http-api-binding/http-api-erasure-stance.shared.js +66 -0
  668. package/dist/esm/http-api-binding/http-api-erasure-stance.shared.js.map +1 -0
  669. package/dist/esm/http-api-binding/http-api-rest-write-operations.shared.schemas.d.ts +133 -0
  670. package/dist/esm/http-api-binding/http-api-rest-write-operations.shared.schemas.d.ts.map +1 -0
  671. package/dist/esm/http-api-binding/http-api-rest-write-operations.shared.schemas.js +191 -0
  672. package/dist/esm/http-api-binding/http-api-rest-write-operations.shared.schemas.js.map +1 -0
  673. package/dist/esm/http-api-binding/http-api-transport-dialect.shared.d.ts +138 -0
  674. package/dist/esm/http-api-binding/http-api-transport-dialect.shared.d.ts.map +1 -0
  675. package/dist/esm/http-api-binding/http-api-transport-dialect.shared.js +139 -0
  676. package/dist/esm/http-api-binding/http-api-transport-dialect.shared.js.map +1 -0
  677. package/dist/esm/http-api-binding/read-through-engine-anchors.shared.d.ts +38 -0
  678. package/dist/esm/http-api-binding/read-through-engine-anchors.shared.d.ts.map +1 -0
  679. package/dist/esm/http-api-binding/read-through-engine-anchors.shared.js +42 -0
  680. package/dist/esm/http-api-binding/read-through-engine-anchors.shared.js.map +1 -0
  681. package/dist/esm/i18n/application-config-vocabulary.shared.d.ts +36 -0
  682. package/dist/esm/i18n/application-config-vocabulary.shared.d.ts.map +1 -0
  683. package/dist/esm/i18n/application-config-vocabulary.shared.js +39 -0
  684. package/dist/esm/i18n/application-config-vocabulary.shared.js.map +1 -0
  685. package/dist/esm/i18n/engine-open-vocabulary-values.shared.d.ts +11 -0
  686. package/dist/esm/i18n/engine-open-vocabulary-values.shared.d.ts.map +1 -0
  687. package/dist/esm/i18n/engine-open-vocabulary-values.shared.js +14 -0
  688. package/dist/esm/i18n/engine-open-vocabulary-values.shared.js.map +1 -0
  689. package/dist/esm/i18n/engine-open-vocabulary.shared.d.ts +20 -0
  690. package/dist/esm/i18n/engine-open-vocabulary.shared.d.ts.map +1 -0
  691. package/dist/esm/i18n/engine-open-vocabulary.shared.js +21 -0
  692. package/dist/esm/i18n/engine-open-vocabulary.shared.js.map +1 -0
  693. package/dist/esm/i18n/labelling.dto.shared.schemas.d.ts.map +1 -1
  694. package/dist/esm/inbound/conversation-threads.shared.resources-config.schemas.d.ts +94 -0
  695. package/dist/esm/inbound/conversation-threads.shared.resources-config.schemas.d.ts.map +1 -0
  696. package/dist/esm/inbound/conversation-threads.shared.resources-config.schemas.js +206 -0
  697. package/dist/esm/inbound/conversation-threads.shared.resources-config.schemas.js.map +1 -0
  698. package/dist/esm/inbound/conversation-threads.shared.schemas.d.ts +169 -0
  699. package/dist/esm/inbound/conversation-threads.shared.schemas.d.ts.map +1 -0
  700. package/dist/esm/inbound/conversation-threads.shared.schemas.js +231 -0
  701. package/dist/esm/inbound/conversation-threads.shared.schemas.js.map +1 -0
  702. package/dist/esm/inbound/inbound-channels.shared.schemas.d.ts +195 -0
  703. package/dist/esm/inbound/inbound-channels.shared.schemas.d.ts.map +1 -0
  704. package/dist/esm/inbound/inbound-channels.shared.schemas.js +244 -0
  705. package/dist/esm/inbound/inbound-channels.shared.schemas.js.map +1 -0
  706. package/dist/esm/inbound/inbound-delivery.shared.resources-config.schemas.d.ts +36 -0
  707. package/dist/esm/inbound/inbound-delivery.shared.resources-config.schemas.d.ts.map +1 -0
  708. package/dist/esm/inbound/inbound-delivery.shared.resources-config.schemas.js +169 -0
  709. package/dist/esm/inbound/inbound-delivery.shared.resources-config.schemas.js.map +1 -0
  710. package/dist/esm/inbound/inbound-delivery.shared.schemas.d.ts +404 -0
  711. package/dist/esm/inbound/inbound-delivery.shared.schemas.d.ts.map +1 -0
  712. package/dist/esm/inbound/inbound-delivery.shared.schemas.js +449 -0
  713. package/dist/esm/inbound/inbound-delivery.shared.schemas.js.map +1 -0
  714. package/dist/esm/inbound/inbound-endpoint-env.shared.d.ts +46 -0
  715. package/dist/esm/inbound/inbound-endpoint-env.shared.d.ts.map +1 -0
  716. package/dist/esm/inbound/inbound-endpoint-env.shared.js +57 -0
  717. package/dist/esm/inbound/inbound-endpoint-env.shared.js.map +1 -0
  718. package/dist/esm/index.d.ts +99 -5
  719. package/dist/esm/index.d.ts.map +1 -1
  720. package/dist/esm/index.js +138 -17
  721. package/dist/esm/index.js.map +1 -1
  722. package/dist/esm/meta-workflows/actions.meta-workflows.shared.schemas.d.ts.map +1 -0
  723. package/dist/esm/meta-workflows/actions.meta-workflows.shared.schemas.js.map +1 -0
  724. package/dist/esm/meta-workflows/catalog.meta-workflows.shared.schemas.d.ts.map +1 -0
  725. package/dist/esm/meta-workflows/catalog.meta-workflows.shared.schemas.js.map +1 -0
  726. package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.d.ts +130 -0
  727. package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.d.ts.map +1 -0
  728. package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.js +104 -0
  729. package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.js.map +1 -0
  730. package/dist/esm/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts.map +1 -0
  731. package/dist/esm/meta-workflows/context-selection.meta-workflows.shared.schemas.js.map +1 -0
  732. package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/decisions.meta-workflows.shared.schemas.d.ts +92 -0
  733. package/dist/esm/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts.map +1 -0
  734. package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/decisions.meta-workflows.shared.schemas.js +76 -0
  735. package/dist/esm/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +1 -0
  736. package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.d.ts +638 -0
  737. package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.d.ts.map +1 -0
  738. package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.js +759 -0
  739. package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.js.map +1 -0
  740. package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/portable-primitives.meta-workflows.shared.schemas.d.ts +15 -8
  741. package/dist/esm/meta-workflows/portable-primitives.meta-workflows.shared.schemas.d.ts.map +1 -0
  742. package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/portable-primitives.meta-workflows.shared.schemas.js +15 -8
  743. package/dist/esm/meta-workflows/portable-primitives.meta-workflows.shared.schemas.js.map +1 -0
  744. package/dist/esm/meta-workflows.exports.d.ts +21 -26
  745. package/dist/esm/meta-workflows.exports.d.ts.map +1 -1
  746. package/dist/esm/meta-workflows.exports.js +21 -26
  747. package/dist/esm/meta-workflows.exports.js.map +1 -1
  748. package/dist/esm/monitoring/monitoring.shared.schemas.d.ts.map +1 -1
  749. package/dist/esm/notifications/email/email-context.shared.schemas.d.ts.map +1 -1
  750. package/dist/esm/notifications/email/email-submission.shared.enums.d.ts +16 -0
  751. package/dist/esm/notifications/email/email-submission.shared.enums.d.ts.map +1 -0
  752. package/dist/esm/notifications/email/email-submission.shared.enums.js +17 -0
  753. package/dist/esm/notifications/email/email-submission.shared.enums.js.map +1 -0
  754. package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts +43 -1
  755. package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts.map +1 -1
  756. package/dist/esm/notifications/email/email-template-registry.shared.schemas.js +85 -3
  757. package/dist/esm/notifications/email/email-template-registry.shared.schemas.js.map +1 -1
  758. package/dist/esm/notifications/email/email-template.shared.enums.d.ts.map +1 -1
  759. package/dist/esm/notifications/email/email-template.shared.enums.js.map +1 -1
  760. package/dist/esm/notifications/inbound-email/inbound-email.shared.resources-config.schemas.d.ts +131 -0
  761. package/dist/esm/notifications/inbound-email/inbound-email.shared.resources-config.schemas.d.ts.map +1 -0
  762. package/dist/esm/notifications/inbound-email/inbound-email.shared.resources-config.schemas.js +258 -0
  763. package/dist/esm/notifications/inbound-email/inbound-email.shared.resources-config.schemas.js.map +1 -0
  764. package/dist/esm/notifications/inbound-email/inbound-email.shared.schemas.d.ts +448 -0
  765. package/dist/esm/notifications/inbound-email/inbound-email.shared.schemas.d.ts.map +1 -0
  766. package/dist/esm/notifications/inbound-email/inbound-email.shared.schemas.js +530 -0
  767. package/dist/esm/notifications/inbound-email/inbound-email.shared.schemas.js.map +1 -0
  768. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts.map +1 -1
  769. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
  770. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.js +8 -4
  771. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.js.map +1 -1
  772. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.d.ts +2 -1
  773. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.d.ts.map +1 -1
  774. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.js +3 -2
  775. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.js.map +1 -1
  776. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts +16 -1
  777. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts.map +1 -1
  778. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js +86 -15
  779. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js.map +1 -1
  780. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts +19 -12
  781. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts.map +1 -1
  782. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js +77 -12
  783. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js.map +1 -1
  784. package/dist/esm/notifications/notification-badges.core.definitions.d.ts.map +1 -1
  785. package/dist/esm/notifications/notification-badges.core.definitions.js.map +1 -1
  786. package/dist/esm/notifications/notification-badges.schemas.d.ts +35 -3
  787. package/dist/esm/notifications/notification-badges.schemas.d.ts.map +1 -1
  788. package/dist/esm/notifications/notification-badges.schemas.js +43 -3
  789. package/dist/esm/notifications/notification-badges.schemas.js.map +1 -1
  790. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts +1 -1
  791. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts.map +1 -1
  792. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js +12 -33
  793. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js.map +1 -1
  794. package/dist/esm/notifications/notifications.shared.schemas.d.ts +85 -407
  795. package/dist/esm/notifications/notifications.shared.schemas.d.ts.map +1 -1
  796. package/dist/esm/notifications/notifications.shared.schemas.js +130 -66
  797. package/dist/esm/notifications/notifications.shared.schemas.js.map +1 -1
  798. package/dist/esm/organizations/application-owner-organization.shared.schemas.d.ts +145 -0
  799. package/dist/esm/organizations/application-owner-organization.shared.schemas.d.ts.map +1 -0
  800. package/dist/esm/organizations/application-owner-organization.shared.schemas.js +146 -0
  801. package/dist/esm/organizations/application-owner-organization.shared.schemas.js.map +1 -0
  802. package/dist/esm/organizations/organization-features.shared.resources-config.schemas.d.ts +7 -5
  803. package/dist/esm/organizations/organization-features.shared.resources-config.schemas.d.ts.map +1 -1
  804. package/dist/esm/organizations/organization-features.shared.resources-config.schemas.js +32 -9
  805. package/dist/esm/organizations/organization-features.shared.resources-config.schemas.js.map +1 -1
  806. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts +4 -1
  807. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts.map +1 -1
  808. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js +78 -28
  809. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js.map +1 -1
  810. package/dist/esm/organizations/organization-members.shared.schemas.d.ts +4 -1
  811. package/dist/esm/organizations/organization-members.shared.schemas.d.ts.map +1 -1
  812. package/dist/esm/organizations/organization-members.shared.schemas.js +39 -1
  813. package/dist/esm/organizations/organization-members.shared.schemas.js.map +1 -1
  814. package/dist/esm/organizations/organization-notifications.shared.resources-config.schemas.d.ts.map +1 -1
  815. package/dist/esm/organizations/organization-notifications.shared.schemas.d.ts.map +1 -1
  816. package/dist/esm/organizations/organization-notifications.shared.schemas.js +9 -9
  817. package/dist/esm/organizations/organization-notifications.shared.schemas.js.map +1 -1
  818. package/dist/esm/organizations/organization-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  819. package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts +2 -1
  820. package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts.map +1 -1
  821. package/dist/esm/organizations/organization-preferences.shared.schemas.js +7 -4
  822. package/dist/esm/organizations/organization-preferences.shared.schemas.js.map +1 -1
  823. package/dist/esm/organizations/organization-profile.shared.resources-config.schemas.d.ts +0 -1
  824. package/dist/esm/organizations/organization-profile.shared.resources-config.schemas.d.ts.map +1 -1
  825. package/dist/esm/organizations/organization-profile.shared.schemas.d.ts +8 -6
  826. package/dist/esm/organizations/organization-profile.shared.schemas.d.ts.map +1 -1
  827. package/dist/esm/organizations/organization-profile.shared.schemas.js +19 -12
  828. package/dist/esm/organizations/organization-profile.shared.schemas.js.map +1 -1
  829. package/dist/esm/organizations/organization-unit-inheritance.shared.d.ts.map +1 -1
  830. package/dist/esm/organizations/organization-unit-members.shared.resources-config.schemas.d.ts.map +1 -1
  831. package/dist/esm/organizations/organization-unit-members.shared.resources-config.schemas.js +1 -1
  832. package/dist/esm/organizations/organization-unit-members.shared.resources-config.schemas.js.map +1 -1
  833. package/dist/esm/organizations/organization-unit-members.shared.schemas.d.ts.map +1 -1
  834. package/dist/esm/organizations/organization-unit-members.shared.schemas.js +2 -1
  835. package/dist/esm/organizations/organization-unit-members.shared.schemas.js.map +1 -1
  836. package/dist/esm/organizations/organization-unit-narrowing-decision.shared.d.ts +63 -1
  837. package/dist/esm/organizations/organization-unit-narrowing-decision.shared.d.ts.map +1 -1
  838. package/dist/esm/organizations/organization-unit-narrowing-decision.shared.js +106 -5
  839. package/dist/esm/organizations/organization-unit-narrowing-decision.shared.js.map +1 -1
  840. package/dist/esm/organizations/organization-unit-narrowing.example.d.ts.map +1 -1
  841. package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts +29 -2
  842. package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts.map +1 -1
  843. package/dist/esm/organizations/organization-unit-narrowing.shared.js +36 -0
  844. package/dist/esm/organizations/organization-unit-narrowing.shared.js.map +1 -1
  845. package/dist/esm/organizations/organization-units.shared.resources-config.schemas.d.ts +2 -0
  846. package/dist/esm/organizations/organization-units.shared.resources-config.schemas.d.ts.map +1 -1
  847. package/dist/esm/organizations/organization-units.shared.resources-config.schemas.js +10 -2
  848. package/dist/esm/organizations/organization-units.shared.resources-config.schemas.js.map +1 -1
  849. package/dist/esm/organizations/organization-units.shared.schemas.d.ts +17 -5
  850. package/dist/esm/organizations/organization-units.shared.schemas.d.ts.map +1 -1
  851. package/dist/esm/organizations/organization-units.shared.schemas.js +65 -5
  852. package/dist/esm/organizations/organization-units.shared.schemas.js.map +1 -1
  853. package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts +53 -7
  854. package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
  855. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +162 -14
  856. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
  857. package/dist/esm/organizations/organizations.shared.schemas.d.ts +23 -83
  858. package/dist/esm/organizations/organizations.shared.schemas.d.ts.map +1 -1
  859. package/dist/esm/organizations/organizations.shared.schemas.js +87 -19
  860. package/dist/esm/organizations/organizations.shared.schemas.js.map +1 -1
  861. package/dist/esm/organizations/service-provider-activity-feed.shared.resources-config.schemas.d.ts +58 -0
  862. package/dist/esm/organizations/service-provider-activity-feed.shared.resources-config.schemas.d.ts.map +1 -0
  863. package/dist/esm/organizations/service-provider-activity-feed.shared.resources-config.schemas.js +188 -0
  864. package/dist/esm/organizations/service-provider-activity-feed.shared.resources-config.schemas.js.map +1 -0
  865. package/dist/esm/organizations/service-provider-activity-feed.shared.schemas.d.ts +122 -0
  866. package/dist/esm/organizations/service-provider-activity-feed.shared.schemas.d.ts.map +1 -0
  867. package/dist/esm/organizations/service-provider-activity-feed.shared.schemas.js +136 -0
  868. package/dist/esm/organizations/service-provider-activity-feed.shared.schemas.js.map +1 -0
  869. package/dist/esm/organizations/service-provider-capability-grants.shared.resources-config.schemas.d.ts +36 -0
  870. package/dist/esm/organizations/service-provider-capability-grants.shared.resources-config.schemas.d.ts.map +1 -0
  871. package/dist/esm/organizations/service-provider-capability-grants.shared.resources-config.schemas.js +155 -0
  872. package/dist/esm/organizations/service-provider-capability-grants.shared.resources-config.schemas.js.map +1 -0
  873. package/dist/esm/organizations/service-provider-capability-grants.shared.schemas.d.ts +229 -0
  874. package/dist/esm/organizations/service-provider-capability-grants.shared.schemas.d.ts.map +1 -0
  875. package/dist/esm/organizations/service-provider-capability-grants.shared.schemas.js +290 -0
  876. package/dist/esm/organizations/service-provider-capability-grants.shared.schemas.js.map +1 -0
  877. package/dist/esm/organizations/service-provider-client-controls.shared.schemas.d.ts +48 -0
  878. package/dist/esm/organizations/service-provider-client-controls.shared.schemas.d.ts.map +1 -0
  879. package/dist/esm/organizations/service-provider-client-controls.shared.schemas.js +50 -0
  880. package/dist/esm/organizations/service-provider-client-controls.shared.schemas.js.map +1 -0
  881. package/dist/esm/organizations/service-provider-relationships.shared.resources-config.schemas.d.ts +97 -0
  882. package/dist/esm/organizations/service-provider-relationships.shared.resources-config.schemas.d.ts.map +1 -0
  883. package/dist/esm/organizations/service-provider-relationships.shared.resources-config.schemas.js +572 -0
  884. package/dist/esm/organizations/service-provider-relationships.shared.resources-config.schemas.js.map +1 -0
  885. package/dist/esm/organizations/service-provider-relationships.shared.schemas.d.ts +590 -0
  886. package/dist/esm/organizations/service-provider-relationships.shared.schemas.d.ts.map +1 -0
  887. package/dist/esm/organizations/service-provider-relationships.shared.schemas.js +869 -0
  888. package/dist/esm/organizations/service-provider-relationships.shared.schemas.js.map +1 -0
  889. package/dist/esm/organizations/tenant-teardown-config.shared.schemas.d.ts +36 -6
  890. package/dist/esm/organizations/tenant-teardown-config.shared.schemas.d.ts.map +1 -1
  891. package/dist/esm/organizations/tenant-teardown-config.shared.schemas.js +57 -16
  892. package/dist/esm/organizations/tenant-teardown-config.shared.schemas.js.map +1 -1
  893. package/dist/esm/provider-registration-runtime.exports.d.ts +1 -1
  894. package/dist/esm/provider-registration-runtime.exports.d.ts.map +1 -1
  895. package/dist/esm/provider-registration-runtime.exports.js +1 -1
  896. package/dist/esm/provider-registration-runtime.exports.js.map +1 -1
  897. package/dist/esm/public-runtime/index.d.ts +65 -17
  898. package/dist/esm/public-runtime/index.d.ts.map +1 -1
  899. package/dist/esm/public-runtime/index.js +65 -17
  900. package/dist/esm/public-runtime/index.js.map +1 -1
  901. package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts +7 -8
  902. package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts.map +1 -1
  903. package/dist/esm/queue/jobs.shared.resources-config.schemas.js +30 -6
  904. package/dist/esm/queue/jobs.shared.resources-config.schemas.js.map +1 -1
  905. package/dist/esm/queue/jobs.shared.schemas.d.ts +416 -2
  906. package/dist/esm/queue/jobs.shared.schemas.d.ts.map +1 -1
  907. package/dist/esm/queue/jobs.shared.schemas.js +327 -11
  908. package/dist/esm/queue/jobs.shared.schemas.js.map +1 -1
  909. package/dist/esm/queue/jobs.shared.utils.d.ts +6 -4
  910. package/dist/esm/queue/jobs.shared.utils.d.ts.map +1 -1
  911. package/dist/esm/queue/jobs.shared.utils.js +5 -4
  912. package/dist/esm/queue/jobs.shared.utils.js.map +1 -1
  913. package/dist/esm/queue/queues.shared.schemas.d.ts +20 -8
  914. package/dist/esm/queue/queues.shared.schemas.d.ts.map +1 -1
  915. package/dist/esm/queue/queues.shared.schemas.js +23 -18
  916. package/dist/esm/queue/queues.shared.schemas.js.map +1 -1
  917. package/dist/esm/queue/queues.shared.utils.d.ts +4 -2
  918. package/dist/esm/queue/queues.shared.utils.d.ts.map +1 -1
  919. package/dist/esm/queue/queues.shared.utils.js +4 -2
  920. package/dist/esm/queue/queues.shared.utils.js.map +1 -1
  921. package/dist/esm/rag/rag-retrieval-health.shared.d.ts +27 -0
  922. package/dist/esm/rag/rag-retrieval-health.shared.d.ts.map +1 -0
  923. package/dist/esm/rag/rag-retrieval-health.shared.js +29 -0
  924. package/dist/esm/rag/rag-retrieval-health.shared.js.map +1 -0
  925. package/dist/esm/requests/header-keys.shared.d.ts +12 -0
  926. package/dist/esm/requests/header-keys.shared.d.ts.map +1 -1
  927. package/dist/esm/requests/header-keys.shared.js +14 -0
  928. package/dist/esm/requests/header-keys.shared.js.map +1 -1
  929. package/dist/esm/requests/idempotency-key.shared.d.ts +76 -0
  930. package/dist/esm/requests/idempotency-key.shared.d.ts.map +1 -0
  931. package/dist/esm/requests/idempotency-key.shared.js +112 -0
  932. package/dist/esm/requests/idempotency-key.shared.js.map +1 -0
  933. package/dist/esm/requests/manual-controllers-routes-documentation.d.ts.map +1 -1
  934. package/dist/esm/requests/manual-controllers-routes-documentation.js +365 -25
  935. package/dist/esm/requests/manual-controllers-routes-documentation.js.map +1 -1
  936. package/dist/esm/requests/manual-controllers-routes-urls.d.ts +138 -23
  937. package/dist/esm/requests/manual-controllers-routes-urls.d.ts.map +1 -1
  938. package/dist/esm/requests/manual-controllers-routes-urls.js +166 -0
  939. package/dist/esm/requests/manual-controllers-routes-urls.js.map +1 -1
  940. package/dist/esm/requests/rate-limits.shared.schemas.d.ts.map +1 -1
  941. package/dist/esm/requests/rate-limits.shared.schemas.js.map +1 -1
  942. package/dist/esm/requests/websocket.shared.schemas.d.ts +267 -26
  943. package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
  944. package/dist/esm/requests/websocket.shared.schemas.js +310 -23
  945. package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
  946. package/dist/esm/resources/child-operations.shared.schemas.d.ts +56 -5
  947. package/dist/esm/resources/child-operations.shared.schemas.d.ts.map +1 -1
  948. package/dist/esm/resources/child-operations.shared.schemas.js +97 -5
  949. package/dist/esm/resources/child-operations.shared.schemas.js.map +1 -1
  950. package/dist/esm/resources/context-policy.shared.schemas.d.ts +20 -0
  951. package/dist/esm/resources/context-policy.shared.schemas.d.ts.map +1 -1
  952. package/dist/esm/resources/context-policy.shared.schemas.js +3 -0
  953. package/dist/esm/resources/context-policy.shared.schemas.js.map +1 -1
  954. package/dist/esm/resources/embedded-resource-mark.shared.utils.d.ts +21 -0
  955. package/dist/esm/resources/embedded-resource-mark.shared.utils.d.ts.map +1 -0
  956. package/dist/esm/resources/embedded-resource-mark.shared.utils.js +22 -0
  957. package/dist/esm/resources/embedded-resource-mark.shared.utils.js.map +1 -0
  958. package/dist/esm/resources/relationship-display.shared.schemas.d.ts.map +1 -1
  959. package/dist/esm/resources/resources-config.shared.factory.d.ts.map +1 -1
  960. package/dist/esm/resources/resources-config.shared.factory.js +1296 -47
  961. package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
  962. package/dist/esm/resources/resources-config.shared.schemas.d.ts +866 -92
  963. package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
  964. package/dist/esm/resources/resources-config.shared.schemas.js +460 -33
  965. package/dist/esm/resources/resources-config.shared.schemas.js.map +1 -1
  966. package/dist/esm/resources/resources-registry.shared.core.definitions.d.ts.map +1 -1
  967. package/dist/esm/resources/resources-registry.shared.core.definitions.js +730 -81
  968. package/dist/esm/resources/resources-registry.shared.core.definitions.js.map +1 -1
  969. package/dist/esm/resources/resources-relationships.shared.factory.d.ts.map +1 -1
  970. package/dist/esm/resources/resources-relationships.shared.factory.js.map +1 -1
  971. package/dist/esm/resources/resources-serialization.shared.schemas.d.ts.map +1 -1
  972. package/dist/esm/resources/resources.shared.core.definitions.d.ts +64 -0
  973. package/dist/esm/resources/resources.shared.core.definitions.d.ts.map +1 -1
  974. package/dist/esm/resources/resources.shared.core.definitions.js +120 -0
  975. package/dist/esm/resources/resources.shared.core.definitions.js.map +1 -1
  976. package/dist/esm/resources/resources.shared.schemas.d.ts +258 -27
  977. package/dist/esm/resources/resources.shared.schemas.d.ts.map +1 -1
  978. package/dist/esm/resources/resources.shared.schemas.js +233 -29
  979. package/dist/esm/resources/resources.shared.schemas.js.map +1 -1
  980. package/dist/esm/resources/resources.shared.utils.d.ts +18 -9
  981. package/dist/esm/resources/resources.shared.utils.d.ts.map +1 -1
  982. package/dist/esm/resources/resources.shared.utils.js +54 -14
  983. package/dist/esm/resources/resources.shared.utils.js.map +1 -1
  984. package/dist/esm/resources/utils/collection-export.shared.utils.d.ts +2 -2
  985. package/dist/esm/resources/utils/collection-export.shared.utils.d.ts.map +1 -1
  986. package/dist/esm/resources/utils/collection-export.shared.utils.js +4 -2
  987. package/dist/esm/resources/utils/collection-export.shared.utils.js.map +1 -1
  988. package/dist/esm/resources/utils/composition-cascade-deletability.validation.d.ts +44 -12
  989. package/dist/esm/resources/utils/composition-cascade-deletability.validation.d.ts.map +1 -1
  990. package/dist/esm/resources/utils/composition-cascade-deletability.validation.js +46 -23
  991. package/dist/esm/resources/utils/composition-cascade-deletability.validation.js.map +1 -1
  992. package/dist/esm/resources/utils/composition-seedability.validation.d.ts.map +1 -1
  993. package/dist/esm/resources/utils/context-addressed-composition-singleton.shared.utils.d.ts.map +1 -1
  994. package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.d.ts +61 -0
  995. package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.d.ts.map +1 -0
  996. package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.js +79 -0
  997. package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.js.map +1 -0
  998. package/dist/esm/resources/utils/duplicate-relationship-registration.validation.d.ts.map +1 -1
  999. package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts.map +1 -1
  1000. package/dist/esm/resources/utils/field-value-disclosure.utils.js.map +1 -1
  1001. package/dist/esm/resources/utils/http-api-write-declaration.shared.utils.d.ts +103 -0
  1002. package/dist/esm/resources/utils/http-api-write-declaration.shared.utils.d.ts.map +1 -0
  1003. package/dist/esm/resources/utils/http-api-write-declaration.shared.utils.js +275 -0
  1004. package/dist/esm/resources/utils/http-api-write-declaration.shared.utils.js.map +1 -0
  1005. package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.d.ts +60 -0
  1006. package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.d.ts.map +1 -0
  1007. package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.js +80 -0
  1008. package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.js.map +1 -0
  1009. package/dist/esm/resources/utils/no-subject-data-stance-coherence.shared.utils.d.ts +51 -0
  1010. package/dist/esm/resources/utils/no-subject-data-stance-coherence.shared.utils.d.ts.map +1 -0
  1011. package/dist/esm/resources/utils/no-subject-data-stance-coherence.shared.utils.js +28 -0
  1012. package/dist/esm/resources/utils/no-subject-data-stance-coherence.shared.utils.js.map +1 -0
  1013. package/dist/esm/resources/utils/persistence-adapter-discrimination.shared.utils.d.ts.map +1 -1
  1014. package/dist/esm/resources/utils/populated-file-fields.shared.utils.d.ts +21 -0
  1015. package/dist/esm/resources/utils/populated-file-fields.shared.utils.d.ts.map +1 -0
  1016. package/dist/esm/resources/utils/populated-file-fields.shared.utils.js +170 -0
  1017. package/dist/esm/resources/utils/populated-file-fields.shared.utils.js.map +1 -0
  1018. package/dist/esm/resources/utils/repository-dto-builder.utils.d.ts.map +1 -1
  1019. package/dist/esm/resources/utils/request-schema-field-carriage.shared.utils.d.ts +2 -0
  1020. package/dist/esm/resources/utils/request-schema-field-carriage.shared.utils.d.ts.map +1 -0
  1021. package/dist/esm/resources/utils/request-schema-field-carriage.shared.utils.js +33 -0
  1022. package/dist/esm/resources/utils/request-schema-field-carriage.shared.utils.js.map +1 -0
  1023. package/dist/esm/resources/utils/required-fk-fillability.validation.d.ts.map +1 -1
  1024. package/dist/esm/resources/utils/resource-operation-type-guards.utils.d.ts.map +1 -1
  1025. package/dist/esm/resources/utils/resource-polymorphism.factory.d.ts +15 -0
  1026. package/dist/esm/resources/utils/resource-polymorphism.factory.d.ts.map +1 -1
  1027. package/dist/esm/resources/utils/resource-polymorphism.factory.js +6 -1
  1028. package/dist/esm/resources/utils/resource-polymorphism.factory.js.map +1 -1
  1029. package/dist/esm/resources/utils/resource-polymorphism.relationships.d.ts.map +1 -1
  1030. package/dist/esm/resources/utils/resource-polymorphism.schemas.d.ts.map +1 -1
  1031. package/dist/esm/resources/utils/resource-polymorphism.schemas.js +30 -4
  1032. package/dist/esm/resources/utils/resource-polymorphism.schemas.js.map +1 -1
  1033. package/dist/esm/resources/utils/resource-polymorphism.utils.d.ts.map +1 -1
  1034. package/dist/esm/resources/utils/resource-subtree.utils.d.ts.map +1 -1
  1035. package/dist/esm/resources/utils/resources-config-context-needs.utils.d.ts.map +1 -1
  1036. package/dist/esm/resources/utils/resources-config-naming.utils.d.ts +15 -0
  1037. package/dist/esm/resources/utils/resources-config-naming.utils.d.ts.map +1 -1
  1038. package/dist/esm/resources/utils/resources-config-naming.utils.js +56 -11
  1039. package/dist/esm/resources/utils/resources-config-naming.utils.js.map +1 -1
  1040. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts +97 -1
  1041. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts.map +1 -1
  1042. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js +402 -60
  1043. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js.map +1 -1
  1044. package/dist/esm/resources/utils/resources-config-operations.path.utils.d.ts.map +1 -1
  1045. package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.d.ts +34 -0
  1046. package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.d.ts.map +1 -1
  1047. package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.js +45 -1
  1048. package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.js.map +1 -1
  1049. package/dist/esm/resources/utils/resources-config-operations.utils.d.ts.map +1 -1
  1050. package/dist/esm/resources/utils/resources-serialization.utils.d.ts +19 -2
  1051. package/dist/esm/resources/utils/resources-serialization.utils.d.ts.map +1 -1
  1052. package/dist/esm/resources/utils/resources-serialization.utils.js +4 -0
  1053. package/dist/esm/resources/utils/resources-serialization.utils.js.map +1 -1
  1054. package/dist/esm/resources/utils/resources-summary.utils.d.ts.map +1 -1
  1055. package/dist/esm/resources/utils/resources-summary.utils.js.map +1 -1
  1056. package/dist/esm/resources/utils/schema-family-builder.utils.d.ts.map +1 -1
  1057. package/dist/esm/resources/utils/schema-type-inference.utils.d.ts.map +1 -1
  1058. package/dist/esm/resources/utils/schema-type-utils.d.ts.map +1 -1
  1059. package/dist/esm/resources/utils/schema-variant-resolver.utils.d.ts.map +1 -1
  1060. package/dist/esm/resources/utils/shared-persistence-collection.utils.d.ts +29 -0
  1061. package/dist/esm/resources/utils/shared-persistence-collection.utils.d.ts.map +1 -1
  1062. package/dist/esm/resources/utils/shared-persistence-collection.utils.js +45 -9
  1063. package/dist/esm/resources/utils/shared-persistence-collection.utils.js.map +1 -1
  1064. package/dist/esm/resources/utils/templatable-file-fields.shared.utils.d.ts.map +1 -1
  1065. package/dist/esm/resources/utils/templatable-file-fields.shared.utils.js +49 -11
  1066. package/dist/esm/resources/utils/templatable-file-fields.shared.utils.js.map +1 -1
  1067. package/dist/esm/resources/work-unit.shared.schemas.d.ts +20 -0
  1068. package/dist/esm/resources/work-unit.shared.schemas.d.ts.map +1 -0
  1069. package/dist/esm/resources/work-unit.shared.schemas.js +19 -0
  1070. package/dist/esm/resources/work-unit.shared.schemas.js.map +1 -0
  1071. package/dist/esm/runtime/domain-module.shared.definitions.d.ts.map +1 -1
  1072. package/dist/esm/runtime/domain-module.shared.definitions.js.map +1 -1
  1073. package/dist/esm/runtime/execution-context.shared.schemas.d.ts +48 -1
  1074. package/dist/esm/runtime/execution-context.shared.schemas.d.ts.map +1 -1
  1075. package/dist/esm/runtime/execution-context.shared.schemas.js +101 -9
  1076. package/dist/esm/runtime/execution-context.shared.schemas.js.map +1 -1
  1077. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts +1 -0
  1078. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts.map +1 -1
  1079. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js +41 -21
  1080. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js.map +1 -1
  1081. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts +1 -0
  1082. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts.map +1 -1
  1083. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js +65 -49
  1084. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js.map +1 -1
  1085. package/dist/esm/security/api-keys/api-keys.shared.schemas.d.ts +26 -0
  1086. package/dist/esm/security/api-keys/api-keys.shared.schemas.d.ts.map +1 -1
  1087. package/dist/esm/security/api-keys/api-keys.shared.schemas.js +39 -5
  1088. package/dist/esm/security/api-keys/api-keys.shared.schemas.js.map +1 -1
  1089. package/dist/esm/security/authentications/anonymous-session/anonymous-session.shared.contract.d.ts.map +1 -1
  1090. package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts +133 -19
  1091. package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts.map +1 -1
  1092. package/dist/esm/security/authentications/authentication.shared.dto.schemas.js +166 -6
  1093. package/dist/esm/security/authentications/authentication.shared.dto.schemas.js.map +1 -1
  1094. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts +324 -9
  1095. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts.map +1 -1
  1096. package/dist/esm/security/authentications/authentication.shared.schemas.js +411 -8
  1097. package/dist/esm/security/authentications/authentication.shared.schemas.js.map +1 -1
  1098. package/dist/esm/security/authentications/authentication.shared.utils.d.ts +87 -4
  1099. package/dist/esm/security/authentications/authentication.shared.utils.d.ts.map +1 -1
  1100. package/dist/esm/security/authentications/authentication.shared.utils.js +95 -6
  1101. package/dist/esm/security/authentications/authentication.shared.utils.js.map +1 -1
  1102. package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts +23 -1
  1103. package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts.map +1 -1
  1104. package/dist/esm/security/authentications/consumable-token.shared.schemas.js +23 -1
  1105. package/dist/esm/security/authentications/consumable-token.shared.schemas.js.map +1 -1
  1106. package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.d.ts +7 -1
  1107. package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.d.ts.map +1 -1
  1108. package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.js +7 -1
  1109. package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.js.map +1 -1
  1110. package/dist/esm/security/authentications/password-blocklist.shared.utils.d.ts +74 -0
  1111. package/dist/esm/security/authentications/password-blocklist.shared.utils.d.ts.map +1 -0
  1112. package/dist/esm/security/authentications/password-blocklist.shared.utils.js +122 -0
  1113. package/dist/esm/security/authentications/password-blocklist.shared.utils.js.map +1 -0
  1114. package/dist/esm/security/authentications/password-reset.shared.dto.schemas.d.ts.map +1 -1
  1115. package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts +88 -2
  1116. package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts.map +1 -1
  1117. package/dist/esm/security/authentications/registration.shared.dto.schemas.js +149 -2
  1118. package/dist/esm/security/authentications/registration.shared.dto.schemas.js.map +1 -1
  1119. package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.d.ts +57 -11
  1120. package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.d.ts.map +1 -1
  1121. package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.js +46 -13
  1122. package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.js.map +1 -1
  1123. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.d.ts +11 -0
  1124. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.d.ts.map +1 -1
  1125. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.js +34 -10
  1126. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.js.map +1 -1
  1127. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts +16 -2
  1128. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts.map +1 -1
  1129. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js +36 -6
  1130. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js.map +1 -1
  1131. package/dist/esm/security/authentications/scim/scim-tokens.shared.resources-config.schemas.d.ts.map +1 -1
  1132. package/dist/esm/security/authentications/scim/scim-tokens.shared.resources-config.schemas.js +18 -12
  1133. package/dist/esm/security/authentications/scim/scim-tokens.shared.resources-config.schemas.js.map +1 -1
  1134. package/dist/esm/security/authentications/scim/scim-tokens.shared.schemas.d.ts +2 -0
  1135. package/dist/esm/security/authentications/scim/scim-tokens.shared.schemas.d.ts.map +1 -1
  1136. package/dist/esm/security/authentications/scim/scim-tokens.shared.schemas.js +9 -0
  1137. package/dist/esm/security/authentications/scim/scim-tokens.shared.schemas.js.map +1 -1
  1138. package/dist/esm/security/authentications/service-provider-client-authentication.shared.schemas.d.ts +169 -0
  1139. package/dist/esm/security/authentications/service-provider-client-authentication.shared.schemas.d.ts.map +1 -0
  1140. package/dist/esm/security/authentications/service-provider-client-authentication.shared.schemas.js +162 -0
  1141. package/dist/esm/security/authentications/service-provider-client-authentication.shared.schemas.js.map +1 -0
  1142. package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.d.ts.map +1 -1
  1143. package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.js +14 -9
  1144. package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.js.map +1 -1
  1145. package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.schemas.d.ts.map +1 -1
  1146. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.d.ts +27 -0
  1147. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.d.ts.map +1 -0
  1148. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.js +109 -0
  1149. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.js.map +1 -0
  1150. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.d.ts +66 -0
  1151. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.d.ts.map +1 -0
  1152. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.js +107 -0
  1153. package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.js.map +1 -0
  1154. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts.map +1 -1
  1155. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js.map +1 -1
  1156. package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.d.ts +19 -0
  1157. package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.d.ts.map +1 -1
  1158. package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.js +50 -13
  1159. package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.js.map +1 -1
  1160. package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.d.ts +18 -6
  1161. package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.d.ts.map +1 -1
  1162. package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.js +139 -10
  1163. package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.js.map +1 -1
  1164. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts +26 -0
  1165. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts.map +1 -1
  1166. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js +63 -33
  1167. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js.map +1 -1
  1168. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts +0 -40
  1169. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts.map +1 -1
  1170. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js +127 -50
  1171. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js.map +1 -1
  1172. package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.d.ts +26 -7
  1173. package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.d.ts.map +1 -1
  1174. package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.js +98 -38
  1175. package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.js.map +1 -1
  1176. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts +6 -26
  1177. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts.map +1 -1
  1178. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js +153 -70
  1179. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js.map +1 -1
  1180. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.d.ts +13 -5
  1181. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.d.ts.map +1 -1
  1182. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.js +12 -4
  1183. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.js.map +1 -1
  1184. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.d.ts +4 -0
  1185. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
  1186. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.js +9 -1
  1187. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.js.map +1 -1
  1188. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.d.ts +44 -0
  1189. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.d.ts.map +1 -1
  1190. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.js +52 -0
  1191. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.js.map +1 -1
  1192. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
  1193. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js +7 -7
  1194. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js.map +1 -1
  1195. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts.map +1 -1
  1196. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
  1197. package/dist/esm/security/authorizations/roles.shared.defaults.d.ts.map +1 -1
  1198. package/dist/esm/security/authorizations/roles.shared.defaults.js +62 -0
  1199. package/dist/esm/security/authorizations/roles.shared.defaults.js.map +1 -1
  1200. package/dist/esm/security/authorizations/roles.shared.schemas.d.ts +91 -1
  1201. package/dist/esm/security/authorizations/roles.shared.schemas.d.ts.map +1 -1
  1202. package/dist/esm/security/authorizations/roles.shared.schemas.js +109 -0
  1203. package/dist/esm/security/authorizations/roles.shared.schemas.js.map +1 -1
  1204. package/dist/esm/security/authorizations/roles.shared.utils.d.ts.map +1 -1
  1205. package/dist/esm/security/authorizations/roles.shared.utils.js +2 -0
  1206. package/dist/esm/security/authorizations/roles.shared.utils.js.map +1 -1
  1207. package/dist/esm/security/connected-accounts/provider-connection-listing.shared.schemas.d.ts +86 -0
  1208. package/dist/esm/security/connected-accounts/provider-connection-listing.shared.schemas.d.ts.map +1 -0
  1209. package/dist/esm/security/connected-accounts/provider-connection-listing.shared.schemas.js +40 -0
  1210. package/dist/esm/security/connected-accounts/provider-connection-listing.shared.schemas.js.map +1 -0
  1211. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts +6 -2
  1212. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts.map +1 -1
  1213. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js +2 -1
  1214. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js.map +1 -1
  1215. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts +7 -3
  1216. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts.map +1 -1
  1217. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js +15 -43
  1218. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js.map +1 -1
  1219. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts +242 -23
  1220. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts.map +1 -1
  1221. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js +310 -62
  1222. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js.map +1 -1
  1223. package/dist/esm/security/credential-rotation-grace.shared.utils.d.ts +69 -0
  1224. package/dist/esm/security/credential-rotation-grace.shared.utils.d.ts.map +1 -0
  1225. package/dist/esm/security/credential-rotation-grace.shared.utils.js +77 -0
  1226. package/dist/esm/security/credential-rotation-grace.shared.utils.js.map +1 -0
  1227. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts +6 -3
  1228. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts.map +1 -1
  1229. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js +102 -12
  1230. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js.map +1 -1
  1231. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts +8 -3
  1232. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts.map +1 -1
  1233. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js +194 -17
  1234. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js.map +1 -1
  1235. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts +1 -0
  1236. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts.map +1 -1
  1237. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js +25 -4
  1238. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js.map +1 -1
  1239. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts.map +1 -1
  1240. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts.map +1 -1
  1241. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js.map +1 -1
  1242. package/dist/esm/security/oauth-clients/oauth-resource-server.shared.schemas.d.ts.map +1 -1
  1243. package/dist/esm/security/outbound-target-control.shared.schemas.d.ts +73 -0
  1244. package/dist/esm/security/outbound-target-control.shared.schemas.d.ts.map +1 -0
  1245. package/dist/esm/security/outbound-target-control.shared.schemas.js +75 -0
  1246. package/dist/esm/security/outbound-target-control.shared.schemas.js.map +1 -0
  1247. package/dist/esm/security/submission-challenge/submission-challenge.shared.d.ts +143 -0
  1248. package/dist/esm/security/submission-challenge/submission-challenge.shared.d.ts.map +1 -0
  1249. package/dist/esm/security/submission-challenge/submission-challenge.shared.js +123 -0
  1250. package/dist/esm/security/submission-challenge/submission-challenge.shared.js.map +1 -0
  1251. package/dist/esm/systems-of-record/system-of-record-actions.shared.schemas.d.ts +384 -0
  1252. package/dist/esm/systems-of-record/system-of-record-actions.shared.schemas.d.ts.map +1 -0
  1253. package/dist/esm/systems-of-record/system-of-record-actions.shared.schemas.js +327 -0
  1254. package/dist/esm/systems-of-record/system-of-record-actions.shared.schemas.js.map +1 -0
  1255. package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.d.ts +159 -0
  1256. package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.d.ts.map +1 -0
  1257. package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.js +164 -0
  1258. package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.js.map +1 -0
  1259. package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.d.ts +322 -0
  1260. package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.d.ts.map +1 -0
  1261. package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.js +229 -0
  1262. package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.js.map +1 -0
  1263. package/dist/esm/systems-of-record/system-of-record-env.shared.d.ts +79 -0
  1264. package/dist/esm/systems-of-record/system-of-record-env.shared.d.ts.map +1 -0
  1265. package/dist/esm/systems-of-record/system-of-record-env.shared.js +116 -0
  1266. package/dist/esm/systems-of-record/system-of-record-env.shared.js.map +1 -0
  1267. package/dist/esm/systems-of-record/system-of-record-error-codes.shared.d.ts +403 -0
  1268. package/dist/esm/systems-of-record/system-of-record-error-codes.shared.d.ts.map +1 -0
  1269. package/dist/esm/systems-of-record/system-of-record-error-codes.shared.js +430 -0
  1270. package/dist/esm/systems-of-record/system-of-record-error-codes.shared.js.map +1 -0
  1271. package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.d.ts +788 -0
  1272. package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.d.ts.map +1 -0
  1273. package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.js +985 -0
  1274. package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.js.map +1 -0
  1275. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.d.ts +31 -0
  1276. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.d.ts.map +1 -0
  1277. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.js +233 -0
  1278. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.js.map +1 -0
  1279. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.d.ts +127 -0
  1280. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.d.ts.map +1 -0
  1281. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.js +204 -0
  1282. package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.js.map +1 -0
  1283. package/dist/esm/testing/resource-config-builders.d.ts.map +1 -1
  1284. package/dist/esm/testing/resource-config-builders.js +10 -4
  1285. package/dist/esm/testing/resource-config-builders.js.map +1 -1
  1286. package/dist/esm/testing.d.ts.map +1 -1
  1287. package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.d.ts +2 -1
  1288. package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.d.ts.map +1 -1
  1289. package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.js +2 -1
  1290. package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.js.map +1 -1
  1291. package/dist/esm/users/anonymous-users.shared.resources-config.schemas.d.ts +141 -24
  1292. package/dist/esm/users/anonymous-users.shared.resources-config.schemas.d.ts.map +1 -1
  1293. package/dist/esm/users/anonymous-users.shared.resources-config.schemas.js +264 -0
  1294. package/dist/esm/users/anonymous-users.shared.resources-config.schemas.js.map +1 -1
  1295. package/dist/esm/users/anonymous-users.shared.schema.d.ts +5 -3
  1296. package/dist/esm/users/anonymous-users.shared.schema.d.ts.map +1 -1
  1297. package/dist/esm/users/anonymous-users.shared.schema.js +18 -1
  1298. package/dist/esm/users/anonymous-users.shared.schema.js.map +1 -1
  1299. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts +2 -1
  1300. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts.map +1 -1
  1301. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js +29 -0
  1302. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js.map +1 -1
  1303. package/dist/esm/users/inbound-contacts.shared.schemas.d.ts +2 -1
  1304. package/dist/esm/users/inbound-contacts.shared.schemas.d.ts.map +1 -1
  1305. package/dist/esm/users/user-consent-decision.shared.utils.d.ts +127 -0
  1306. package/dist/esm/users/user-consent-decision.shared.utils.d.ts.map +1 -0
  1307. package/dist/esm/users/user-consent-decision.shared.utils.js +189 -0
  1308. package/dist/esm/users/user-consent-decision.shared.utils.js.map +1 -0
  1309. package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts.map +1 -1
  1310. package/dist/esm/users/user-credentials.shared.schemas.d.ts.map +1 -1
  1311. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts +1 -0
  1312. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts.map +1 -1
  1313. package/dist/esm/users/user-identity-links.shared.schemas.d.ts +1 -0
  1314. package/dist/esm/users/user-identity-links.shared.schemas.d.ts.map +1 -1
  1315. package/dist/esm/users/user-identity-links.shared.schemas.js +30 -0
  1316. package/dist/esm/users/user-identity-links.shared.schemas.js.map +1 -1
  1317. package/dist/esm/users/user-preferences-reset.shared.utils.d.ts +6 -6
  1318. package/dist/esm/users/user-preferences-reset.shared.utils.d.ts.map +1 -1
  1319. package/dist/esm/users/user-preferences-reset.shared.utils.js +8 -8
  1320. package/dist/esm/users/user-preferences-reset.shared.utils.js.map +1 -1
  1321. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +71 -29
  1322. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  1323. package/dist/esm/users/user-preferences.shared.resources-config.schemas.js +99 -0
  1324. package/dist/esm/users/user-preferences.shared.resources-config.schemas.js.map +1 -1
  1325. package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  1326. package/dist/esm/users/user-profiles.shared.resources-config.schemas.js +25 -9
  1327. package/dist/esm/users/user-profiles.shared.resources-config.schemas.js.map +1 -1
  1328. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +4 -7
  1329. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  1330. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js +12 -1
  1331. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js.map +1 -1
  1332. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  1333. package/dist/esm/users/user-self.shared.resources-config.schemas.d.ts +1 -0
  1334. package/dist/esm/users/user-self.shared.resources-config.schemas.d.ts.map +1 -1
  1335. package/dist/esm/users/user-self.shared.resources-config.schemas.js +3 -3
  1336. package/dist/esm/users/user-self.shared.resources-config.schemas.js.map +1 -1
  1337. package/dist/esm/users/users.shared.resources-config.schemas.d.ts +1 -0
  1338. package/dist/esm/users/users.shared.resources-config.schemas.d.ts.map +1 -1
  1339. package/dist/esm/users/users.shared.resources-config.schemas.js +84 -22
  1340. package/dist/esm/users/users.shared.resources-config.schemas.js.map +1 -1
  1341. package/dist/esm/users/users.shared.schemas.d.ts +23 -18
  1342. package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
  1343. package/dist/esm/users/users.shared.schemas.js +117 -27
  1344. package/dist/esm/users/users.shared.schemas.js.map +1 -1
  1345. package/package.json +14 -35
  1346. package/dist/esm/compliance/privacy/data-retention.shared.schemas.js +0 -7
  1347. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.d.ts +0 -19
  1348. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.d.ts.map +0 -1
  1349. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.js +0 -35
  1350. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.js.map +0 -1
  1351. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.d.ts +0 -213
  1352. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.d.ts.map +0 -1
  1353. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.js +0 -287
  1354. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.js.map +0 -1
  1355. package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.d.ts +0 -236
  1356. package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.d.ts.map +0 -1
  1357. package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.js +0 -212
  1358. package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.js.map +0 -1
  1359. package/dist/esm/flows-actors/meta-workflows/actions.meta-workflows.shared.schemas.d.ts.map +0 -1
  1360. package/dist/esm/flows-actors/meta-workflows/actions.meta-workflows.shared.schemas.js.map +0 -1
  1361. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts +0 -17
  1362. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts.map +0 -1
  1363. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js +0 -31
  1364. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js.map +0 -1
  1365. package/dist/esm/flows-actors/meta-workflows/catalog.meta-workflows.shared.schemas.d.ts.map +0 -1
  1366. package/dist/esm/flows-actors/meta-workflows/catalog.meta-workflows.shared.schemas.js.map +0 -1
  1367. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts.map +0 -1
  1368. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js.map +0 -1
  1369. package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.d.ts +0 -28
  1370. package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.d.ts.map +0 -1
  1371. package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.js +0 -28
  1372. package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.js.map +0 -1
  1373. package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts.map +0 -1
  1374. package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +0 -1
  1375. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts +0 -100
  1376. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts.map +0 -1
  1377. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js +0 -232
  1378. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js.map +0 -1
  1379. package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.d.ts +0 -29
  1380. package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.d.ts.map +0 -1
  1381. package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.js +0 -58
  1382. package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.js.map +0 -1
  1383. package/dist/esm/flows-actors/meta-workflows/portable-primitives.meta-workflows.shared.schemas.d.ts.map +0 -1
  1384. package/dist/esm/flows-actors/meta-workflows/portable-primitives.meta-workflows.shared.schemas.js.map +0 -1
  1385. package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.d.ts +0 -81
  1386. package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.d.ts.map +0 -1
  1387. package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.js +0 -82
  1388. package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.js.map +0 -1
  1389. package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.d.ts +0 -2
  1390. package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.d.ts.map +0 -1
  1391. package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.js +0 -1
  1392. package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.js.map +0 -1
  1393. package/dist/tsconfig.build.tsbuildinfo +0 -1
  1394. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/actions.meta-workflows.shared.schemas.d.ts +0 -0
  1395. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/actions.meta-workflows.shared.schemas.js +0 -0
  1396. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/catalog.meta-workflows.shared.schemas.d.ts +0 -0
  1397. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/catalog.meta-workflows.shared.schemas.js +0 -0
  1398. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/context-selection.meta-workflows.shared.schemas.d.ts +0 -0
  1399. /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/context-selection.meta-workflows.shared.schemas.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"resource-polymorphism.factory.js","sourceRoot":"","sources":["../../../../../src/resources/utils/resource-polymorphism.factory.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Resource Polymorphism — Factory Configuration (Phase 3)\n *\n * Provides `createPolymorphicResourceConfigurations()` which takes a polymorphic\n * declaration + shared resource configuration, and produces N factory functions\n * (one per variant) that can be spread into the resource configurations factory map.\n *\n * Key transformation: `polymorphicRole` on operation variants is resolved to\n * standard `roles` for each variant's scope.\n *\n * @see polymorphic-scope-approach-A-expansion.md — Phase 3\n */\n\nimport { z } from 'zod';\nimport { createResourceConfiguration_Initialization } from '../resources-config.shared.factory';\nimport type {\n ResourceConfiguration_BuilderParameters,\n ResourceConfiguration_InitializationFactory,\n ResourceConfiguration_Operation_BuilderParameters,\n ResourceConfiguration_OperationVariant_BuilderParameters,\n CollectionViewFields_Search,\n} from '../resources-config.shared.schemas';\nimport type { ResourceType, CoreResourceOperation } from '../resources.shared.core.definitions';\nimport type { EnumLikeType } from '@wildo-ai/zod-decorators';\nimport type { PolymorphicSchemaDeclaration, PolymorphicResolvedVariant } from './resource-polymorphism.schemas';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Distributive Omit — preserves union members individually.\n * Standard `Omit<A | B, K>` collapses to common keys only, losing per-member properties.\n * This helper distributes the Omit over each union member, preserving all variant-specific fields.\n */\ntype DistributiveOmit<T, K extends PropertyKey> = T extends any ? Omit<T, K> : never;\n\n/**\n * Operation variant with `polymorphicRole` support.\n * Extends the standard variant by adding `polymorphicRole` as an alternative to `roles`.\n *\n * - `polymorphicRole`: `Record<ResourceType, string[]>` — role mapping per parent resource type.\n * The factory resolves this to standard `roles` for each generated variant.\n * - `roles`: standard roles array — used directly (e.g., for admin variants).\n *\n * If both `polymorphicRole` and `roles` are provided, `polymorphicRole` takes precedence\n * for the matching parent resource type. If the parent isn't in `polymorphicRole`, `roles` is used as fallback.\n */\n/**\n * Polymorphic variant type. Intersects with CollectionViewFields_Search so that\n * SEARCH operation variants (including REPOSITORY_ONLY) can specify isSearchable,\n * searchableFields, filterFields, sortFields, etc. All fields are optional.\n */\nexport type PolymorphicOperationVariant<TMainSchema extends z.ZodTypeAny = z.ZodTypeAny> =\n DistributiveOmit<ResourceConfiguration_OperationVariant_BuilderParameters<TMainSchema>, 'roles'> &\n CollectionViewFields_Search & {\n /**\n * Role mapping per parent resource type.\n * The factory resolves this into standard `roles` for each generated variant.\n *\n * ⚠️ An EMPTY array is NOT \"skip the role check\" — it is fail-CLOSED. The\n * authorization gate evaluates `operationRoles.some(...)`, and `[].some()`\n * is always `false`, so an empty array denies EVERY caller (403). For the\n * user-self scope, list the baseline authenticated role (`APP_USER`); role\n * membership is the floor, while row ownership is enforced separately by the\n * USER_SELF scope authorizer.\n *\n * @example\n * polymorphicRole: {\n * 'organizations': ['ORG_OWNER', 'ORG_ADMIN'],\n * 'users': ['APP_USER'], // user-self: any authenticated user (ownership checked by scope)\n * }\n */\n polymorphicRole?: Record<string, string[]>;\n /** Standard roles — used directly or as fallback when polymorphicRole doesn't have the parent */\n roles?: string[];\n };\n\n/**\n * Operation configuration with polymorphic role support.\n */\nexport type PolymorphicOperationConfig<TMainSchema extends z.ZodTypeAny = z.ZodAny> = Omit<\n ResourceConfiguration_Operation_BuilderParameters<TMainSchema>,\n 'variants'\n> & {\n variants: PolymorphicOperationVariant<TMainSchema>[];\n};\n\n/**\n * Keys the polymorphic factory derives PER VARIANT — the only things a shared config cannot supply.\n * Everything else is shared, and is now inherited structurally (see {@link PolymorphicResourceConfig}).\n */\ntype PolymorphicPerVariantKeys =\n | 'mainSchema' // derived per variant from the declaration\n | 'resourceIdentifier' // derived per variant\n | 'resourceFieldIdentifier' // derived per variant\n | 'resourceRelationships' // provided at factory call time by the registry\n | 'operationsConfiguration';// replaced by the polymorphicRole-aware shape below\n\n/**\n * Shared resource configuration for polymorphic resources — everything common across all variants.\n *\n * ⚠️ DERIVED FROM `ResourceConfiguration_BuilderParameters`, deliberately. This used to be a\n * hand-maintained whitelist of forwarded fields, and it silently DROPPED every resource-level\n * capability axis added after it was written (`isAnonymizable`, `transpositionPolicy`,\n * `retentionPolicy`). The failure mode was invisible: a polymorphic resource could ASK for a\n * capability and simply not get it — no type error, no runtime error, the opt-in just evaporated.\n * Because the type is now an `Omit` of the real parameter surface and the values are spread through,\n * ANY capability added to the builder parameters is automatically available to polymorphic resources\n * and forwarded — there is no list left to forget.\n *\n * Per-variant keys are omitted (see {@link PolymorphicPerVariantKeys}); `operationsConfiguration` is\n * re-declared with the `polymorphicRole`-aware variant shape.\n *\n * NOTE ON SEMANTICS: a capability declared here applies to EVERY generated variant (that is the point\n * — e.g. all billing scopes retain identically). A capability that is invalid for one variant's scope\n * fails loud in that variant's factory call, which is the correct outcome; per-variant capability\n * overrides are intentionally NOT modelled (no consumer needs them, and they would reintroduce the\n * \"which variant actually got it?\" ambiguity this contract removes).\n */\nexport type PolymorphicResourceConfig<\n TCustomOperationEnum extends EnumLikeType | undefined = undefined,\n TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined = undefined,\n TMainSchema extends z.ZodTypeAny = z.ZodAny,\n> = Omit<\n ResourceConfiguration_BuilderParameters<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>,\n PolymorphicPerVariantKeys\n> & {\n /** Operations configuration — supports `polymorphicRole` on variants. */\n operationsConfiguration: Record<string, PolymorphicOperationConfig<TMainSchema>>;\n};\n\n// =============================================================================\n// MAIN FUNCTION\n// =============================================================================\n\n/**\n * Create N resource configuration factories from a polymorphic declaration.\n *\n * For each variant in the declaration, produces a standard\n * `ResourceConfiguration_InitializationFactory` that can be registered in the factory map.\n *\n * The key transformation: `polymorphicRole` on operation variants is resolved to\n * standard `roles` for each variant's parent resource type.\n *\n * @returns Record mapping variant resource type → factory function\n *\n * @example\n * ```typescript\n * const billingAccountFactories = createPolymorphicResourceConfigurations(\n * billingAccountsPolymorphicDeclaration,\n * {\n * coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST, ...],\n * operationsConfiguration: {\n * [CoreResourceOperation.READ]: {\n * variants: [{\n * variantType: ResourceOperationVariantType.API_CALL,\n * isDefault: true,\n * polymorphicRole: {\n * 'organizations': [CORE_ORG_ROLES.ORG_OWNER],\n * 'users': [CORE_APP_ROLES.APP_USER], // never [] — empty is fail-closed (403)\n * },\n * riskLevel: ResourceOperationRiskLevel.LOW,\n * }],\n * },\n * },\n * },\n * );\n * // → {\n * // 'organizationBillingAccounts': (rels) => ResourceConfiguration,\n * // 'userBillingAccounts': (rels) => ResourceConfiguration,\n * // }\n * ```\n */\nexport function createPolymorphicResourceConfigurations<\n TCustomOperationEnum extends EnumLikeType | undefined = undefined,\n TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined = undefined,\n TMainSchema extends z.ZodTypeAny = z.ZodAny,\n>(\n declaration: PolymorphicSchemaDeclaration<TMainSchema>,\n sharedConfig: PolymorphicResourceConfig<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>,\n): Record<string, ResourceConfiguration_InitializationFactory<TCustomOperationEnum, TCoreOperationEnum, any>> {\n const result: Record<string, ResourceConfiguration_InitializationFactory<TCustomOperationEnum, TCoreOperationEnum, any>> = {};\n\n for (const [, variant] of declaration.variants) {\n const resolvedOpsConfig = resolveOperationsForVariant(\n sharedConfig.operationsConfiguration,\n variant,\n );\n\n // Determine the schema for this variant:\n // - If SchemaFamily, use the rebuilt union\n // - If plain ZodObject, use the variant schema directly\n const variantMainSchema = variant.schema;\n\n // Determine inheritenceSchemaDefinition:\n // - If SchemaFamily, use the rebuilt family's inheritenceSchemaDefinition\n // - Otherwise, use the shared config's (if any)\n const inheritenceSchemaDefinition = variant.schemaFamily\n ? variant.schemaFamily.inheritenceSchemaDefinition as any\n : sharedConfig.inheritenceSchemaDefinition;\n\n // Lazy factory: relationships are provided at registry call time, not at declaration time.\n // SPREAD the shared config rather than re-listing its fields: that is what makes every current\n // AND FUTURE resource-level capability (retentionPolicy, isAnonymizable, transpositionPolicy, …)\n // reach the generated variants automatically. Re-listing is how those three were silently lost.\n // Only the genuinely per-variant keys are overridden below.\n result[variant.resourceType] = (resourcesRelationships) =>\n createResourceConfiguration_Initialization({\n ...(sharedConfig as any),\n mainSchema: variantMainSchema,\n resourceIdentifier: variant.resourceType as ResourceType,\n resourceFieldIdentifier: variant.fieldIdentifier,\n resourceRelationships: resourcesRelationships,\n // A variant carrying its own SchemaFamily overrides the shared definition.\n inheritenceSchemaDefinition,\n operationsConfiguration: resolvedOpsConfig as any,\n });\n }\n\n return result;\n}\n\n// =============================================================================\n// INTERNALS\n// =============================================================================\n\n/**\n * Resolve `polymorphicRole` → `roles` for each operation variant for a specific scope variant.\n */\nfunction resolveOperationsForVariant<TMainSchema extends z.ZodTypeAny>(\n operationsConfiguration: Record<string, PolymorphicOperationConfig<TMainSchema>>,\n variant: PolymorphicResolvedVariant<TMainSchema>,\n): Record<string, ResourceConfiguration_Operation_BuilderParameters<TMainSchema>> {\n const resolved: Record<string, ResourceConfiguration_Operation_BuilderParameters<TMainSchema>> = {};\n\n for (const [operationKey, opConfig] of Object.entries(operationsConfiguration)) {\n const resolvedVariants: ResourceConfiguration_OperationVariant_BuilderParameters<TMainSchema>[] = [];\n\n for (const opVariant of opConfig.variants) {\n const { polymorphicRole, roles: fallbackRoles, ...rest } = opVariant;\n\n let resolvedRoles: string[];\n\n if (polymorphicRole) {\n // Resolve from polymorphicRole map using the parent resource type\n const parentType = variant.parentResourceType as string;\n if (parentType in polymorphicRole) {\n resolvedRoles = polymorphicRole[parentType]!;\n } else if (fallbackRoles) {\n resolvedRoles = fallbackRoles;\n } else {\n throw new Error(\n `[PolymorphicFactory] Operation \"${operationKey}\" variant has polymorphicRole but no entry ` +\n `for parentResourceType=\"${parentType}\" and no fallback roles. ` +\n `Either add \"${parentType}\" to polymorphicRole or provide fallback roles.`\n );\n }\n } else if (fallbackRoles) {\n resolvedRoles = fallbackRoles;\n } else {\n throw new Error(\n `[PolymorphicFactory] Operation \"${operationKey}\" variant has neither polymorphicRole nor roles.`\n );\n }\n\n resolvedVariants.push({\n ...rest,\n roles: resolvedRoles,\n } as ResourceConfiguration_OperationVariant_BuilderParameters<TMainSchema>);\n }\n\n resolved[operationKey] = {\n ...opConfig,\n variants: resolvedVariants,\n };\n }\n\n return resolved;\n}\n"]}
1
+ {"version":3,"file":"resource-polymorphism.factory.js","sourceRoot":"","sources":["../../../../../src/resources/utils/resource-polymorphism.factory.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Resource Polymorphism — Factory Configuration (Phase 3)\n *\n * Provides `createPolymorphicResourceConfigurations()` which takes a polymorphic\n * declaration + shared resource configuration, and produces N factory functions\n * (one per variant) that can be spread into the resource configurations factory map.\n *\n * Key transformation: `polymorphicRole` on operation variants is resolved to\n * standard `roles` for each variant's scope.\n *\n * @see polymorphic-scope-approach-A-expansion.md — Phase 3\n */\n\nimport { z } from 'zod';\nimport { createResourceConfiguration_Initialization } from '../resources-config.shared.factory';\nimport type {\n ResourceConfiguration_BuilderParameters,\n ResourceConfiguration_InitializationFactory,\n ResourceConfiguration_Operation_BuilderParameters,\n ResourceConfiguration_OperationVariant_BuilderParameters,\n CollectionViewFields_Search,\n} from '../resources-config.shared.schemas';\nimport type { ResourceType, CoreResourceOperation } from '../resources.shared.core.definitions';\nimport type { EnumLikeType } from '@wildo-ai/zod-decorators';\nimport type { PolymorphicSchemaDeclaration, PolymorphicResolvedVariant } from './resource-polymorphism.schemas';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Distributive Omit — preserves union members individually.\n * Standard `Omit<A | B, K>` collapses to common keys only, losing per-member properties.\n * This helper distributes the Omit over each union member, preserving all variant-specific fields.\n */\ntype DistributiveOmit<T, K extends PropertyKey> = T extends any ? Omit<T, K> : never;\n\n/**\n * Operation variant with `polymorphicRole` support.\n * Extends the standard variant by adding `polymorphicRole` as an alternative to `roles`.\n *\n * - `polymorphicRole`: `Record<ResourceType, string[]>` — role mapping per parent resource type.\n * The factory resolves this to standard `roles` for each generated variant.\n * - `roles`: standard roles array — used directly (e.g., for admin variants).\n *\n * If both `polymorphicRole` and `roles` are provided, `polymorphicRole` takes precedence\n * for the matching parent resource type. If the parent isn't in `polymorphicRole`, `roles` is used as fallback.\n */\n/**\n * Polymorphic variant type. Intersects with CollectionViewFields_Search so that\n * SEARCH operation variants (including REPOSITORY_ONLY) can specify isSearchable,\n * searchableFields, filterFields, sortFields, etc. All fields are optional.\n */\nexport type PolymorphicOperationVariant<TMainSchema extends z.ZodTypeAny = z.ZodTypeAny> =\n DistributiveOmit<ResourceConfiguration_OperationVariant_BuilderParameters<TMainSchema>, 'roles'> &\n CollectionViewFields_Search & {\n /**\n * Role mapping per parent resource type.\n * The factory resolves this into standard `roles` for each generated variant.\n *\n * ⚠️ An EMPTY array is NOT \"skip the role check\" — it is fail-CLOSED. The\n * authorization gate evaluates `operationRoles.some(...)`, and `[].some()`\n * is always `false`, so an empty array denies EVERY caller (403). For the\n * user-self scope, list the baseline authenticated role (`APP_USER`); role\n * membership is the floor, while row ownership is enforced separately by the\n * USER_SELF scope authorizer.\n *\n * @example\n * polymorphicRole: {\n * 'organizations': ['ORG_OWNER', 'ORG_ADMIN'],\n * 'users': ['APP_USER'], // user-self: any authenticated user (ownership checked by scope)\n * }\n */\n polymorphicRole?: Record<string, string[]>;\n /** Standard roles — used directly or as fallback when polymorphicRole doesn't have the parent */\n roles?: string[];\n /**\n * A response DTO built from EACH variant's own main schema, for a response that must carry that variant's\n * fields — above all its scope foreign key (`organizationId` on the organization variant, `applicationId`\n * on the application variant), which only the variant schema has. A static `customResponseDto` built from\n * the shared base schema silently drops it (#1596 review N4).\n *\n * Resolved per variant into `customResponseDto`; declaring both is refused, since only one can win.\n *\n * @example\n * polymorphicCustomResponseDto: (variantSchema) => z.object({\n * data: z.array((variantSchema as z.ZodObject<z.ZodRawShape>).omit({ rawBody: true })),\n * pagination: createPaginationResponseMetadataSchema(DEFAULT_LIST_PAGE_CEILING),\n * }),\n */\n polymorphicCustomResponseDto?: (variantMainSchema: TMainSchema) => z.ZodTypeAny;\n };\n\n/**\n * Operation configuration with polymorphic role support.\n */\nexport type PolymorphicOperationConfig<TMainSchema extends z.ZodTypeAny = z.ZodAny> = Omit<\n ResourceConfiguration_Operation_BuilderParameters<TMainSchema>,\n 'variants'\n> & {\n variants: PolymorphicOperationVariant<TMainSchema>[];\n};\n\n/**\n * Keys the polymorphic factory derives PER VARIANT — the only things a shared config cannot supply.\n * Everything else is shared, and is now inherited structurally (see {@link PolymorphicResourceConfig}).\n */\ntype PolymorphicPerVariantKeys =\n | 'mainSchema' // derived per variant from the declaration\n | 'resourceIdentifier' // derived per variant\n | 'resourceFieldIdentifier' // derived per variant\n | 'resourceRelationships' // provided at factory call time by the registry\n | 'operationsConfiguration';// replaced by the polymorphicRole-aware shape below\n\n/**\n * Shared resource configuration for polymorphic resources — everything common across all variants.\n *\n * ⚠️ DERIVED FROM `ResourceConfiguration_BuilderParameters`, deliberately. This used to be a\n * hand-maintained whitelist of forwarded fields, and it silently DROPPED every resource-level\n * capability axis added after it was written (`isAnonymizable`, `transpositionPolicy`,\n * `retentionPolicy`). The failure mode was invisible: a polymorphic resource could ASK for a\n * capability and simply not get it — no type error, no runtime error, the opt-in just evaporated.\n * Because the type is now an `Omit` of the real parameter surface and the values are spread through,\n * ANY capability added to the builder parameters is automatically available to polymorphic resources\n * and forwarded — there is no list left to forget.\n *\n * Per-variant keys are omitted (see {@link PolymorphicPerVariantKeys}); `operationsConfiguration` is\n * re-declared with the `polymorphicRole`-aware variant shape.\n *\n * NOTE ON SEMANTICS: a capability declared here applies to EVERY generated variant (that is the point\n * — e.g. all billing scopes retain identically). A capability that is invalid for one variant's scope\n * fails loud in that variant's factory call, which is the correct outcome; per-variant capability\n * overrides are intentionally NOT modelled (no consumer needs them, and they would reintroduce the\n * \"which variant actually got it?\" ambiguity this contract removes).\n */\nexport type PolymorphicResourceConfig<\n TCustomOperationEnum extends EnumLikeType | undefined = undefined,\n TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined = undefined,\n TMainSchema extends z.ZodTypeAny = z.ZodAny,\n> = Omit<\n ResourceConfiguration_BuilderParameters<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>,\n PolymorphicPerVariantKeys\n> & {\n /** Operations configuration — supports `polymorphicRole` on variants. */\n operationsConfiguration: Record<string, PolymorphicOperationConfig<TMainSchema>>;\n};\n\n// =============================================================================\n// MAIN FUNCTION\n// =============================================================================\n\n/**\n * Create N resource configuration factories from a polymorphic declaration.\n *\n * For each variant in the declaration, produces a standard\n * `ResourceConfiguration_InitializationFactory` that can be registered in the factory map.\n *\n * The key transformation: `polymorphicRole` on operation variants is resolved to\n * standard `roles` for each variant's parent resource type.\n *\n * @returns Record mapping variant resource type → factory function\n *\n * @example\n * ```typescript\n * const billingAccountFactories = createPolymorphicResourceConfigurations(\n * billingAccountsPolymorphicDeclaration,\n * {\n * coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST, ...],\n * operationsConfiguration: {\n * [CoreResourceOperation.READ]: {\n * variants: [{\n * variantType: ResourceOperationVariantType.API_CALL,\n * isDefault: true,\n * polymorphicRole: {\n * 'organizations': [CORE_ORG_ROLES.ORG_OWNER],\n * 'users': [CORE_APP_ROLES.APP_USER], // never [] — empty is fail-closed (403)\n * },\n * riskLevel: ResourceOperationRiskLevel.LOW,\n * }],\n * },\n * },\n * },\n * );\n * // → {\n * // 'organizationBillingAccounts': (rels) => ResourceConfiguration,\n * // 'userBillingAccounts': (rels) => ResourceConfiguration,\n * // }\n * ```\n */\nexport function createPolymorphicResourceConfigurations<\n TCustomOperationEnum extends EnumLikeType | undefined = undefined,\n TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined = undefined,\n TMainSchema extends z.ZodTypeAny = z.ZodAny,\n>(\n declaration: PolymorphicSchemaDeclaration<TMainSchema>,\n sharedConfig: PolymorphicResourceConfig<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>,\n): Record<string, ResourceConfiguration_InitializationFactory<TCustomOperationEnum, TCoreOperationEnum, any>> {\n const result: Record<string, ResourceConfiguration_InitializationFactory<TCustomOperationEnum, TCoreOperationEnum, any>> = {};\n\n for (const [, variant] of declaration.variants) {\n const resolvedOpsConfig = resolveOperationsForVariant(\n sharedConfig.operationsConfiguration,\n variant,\n );\n\n // Determine the schema for this variant:\n // - If SchemaFamily, use the rebuilt union\n // - If plain ZodObject, use the variant schema directly\n const variantMainSchema = variant.schema;\n\n // Determine inheritenceSchemaDefinition:\n // - If SchemaFamily, use the rebuilt family's inheritenceSchemaDefinition\n // - Otherwise, use the shared config's (if any)\n const inheritenceSchemaDefinition = variant.schemaFamily\n ? variant.schemaFamily.inheritenceSchemaDefinition as any\n : sharedConfig.inheritenceSchemaDefinition;\n\n // Lazy factory: relationships are provided at registry call time, not at declaration time.\n // SPREAD the shared config rather than re-listing its fields: that is what makes every current\n // AND FUTURE resource-level capability (retentionPolicy, isAnonymizable, transpositionPolicy, …)\n // reach the generated variants automatically. Re-listing is how those three were silently lost.\n // Only the genuinely per-variant keys are overridden below.\n result[variant.resourceType] = (resourcesRelationships) =>\n createResourceConfiguration_Initialization({\n ...(sharedConfig as any),\n mainSchema: variantMainSchema,\n resourceIdentifier: variant.resourceType as ResourceType,\n resourceFieldIdentifier: variant.fieldIdentifier,\n resourceRelationships: resourcesRelationships,\n // A variant carrying its own SchemaFamily overrides the shared definition.\n inheritenceSchemaDefinition,\n operationsConfiguration: resolvedOpsConfig as any,\n });\n }\n\n return result;\n}\n\n// =============================================================================\n// INTERNALS\n// =============================================================================\n\n/**\n * Resolve `polymorphicRole` → `roles` for each operation variant for a specific scope variant.\n */\nfunction resolveOperationsForVariant<TMainSchema extends z.ZodTypeAny>(\n operationsConfiguration: Record<string, PolymorphicOperationConfig<TMainSchema>>,\n variant: PolymorphicResolvedVariant<TMainSchema>,\n): Record<string, ResourceConfiguration_Operation_BuilderParameters<TMainSchema>> {\n const resolved: Record<string, ResourceConfiguration_Operation_BuilderParameters<TMainSchema>> = {};\n\n for (const [operationKey, opConfig] of Object.entries(operationsConfiguration)) {\n const resolvedVariants: ResourceConfiguration_OperationVariant_BuilderParameters<TMainSchema>[] = [];\n\n for (const opVariant of opConfig.variants) {\n const { polymorphicRole, roles: fallbackRoles, polymorphicCustomResponseDto, ...rest } = opVariant;\n if (polymorphicCustomResponseDto && (rest as { customResponseDto?: unknown }).customResponseDto !== undefined) {\n throw new Error(\n `[PolymorphicFactory] Operation \"${operationKey}\" variant declares both customResponseDto and polymorphicCustomResponseDto. ` +\n 'Declare one: the per-variant form when the response must carry the variant schema\\'s own fields.'\n );\n }\n\n let resolvedRoles: string[];\n\n if (polymorphicRole) {\n // Resolve from polymorphicRole map using the parent resource type\n const parentType = variant.parentResourceType as string;\n if (parentType in polymorphicRole) {\n resolvedRoles = polymorphicRole[parentType]!;\n } else if (fallbackRoles) {\n resolvedRoles = fallbackRoles;\n } else {\n throw new Error(\n `[PolymorphicFactory] Operation \"${operationKey}\" variant has polymorphicRole but no entry ` +\n `for parentResourceType=\"${parentType}\" and no fallback roles. ` +\n `Either add \"${parentType}\" to polymorphicRole or provide fallback roles.`\n );\n }\n } else if (fallbackRoles) {\n resolvedRoles = fallbackRoles;\n } else {\n throw new Error(\n `[PolymorphicFactory] Operation \"${operationKey}\" variant has neither polymorphicRole nor roles.`\n );\n }\n\n resolvedVariants.push({\n ...rest,\n roles: resolvedRoles,\n ...(polymorphicCustomResponseDto ? { customResponseDto: polymorphicCustomResponseDto(variant.schema) } : {}),\n } as ResourceConfiguration_OperationVariant_BuilderParameters<TMainSchema>);\n }\n\n resolved[operationKey] = {\n ...opConfig,\n variants: resolvedVariants,\n };\n }\n\n return resolved;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-polymorphism.relationships.d.ts","sourceRoot":"","sources":["../../../../src/resources/utils/resource-polymorphism.relationships.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,+BAA+B,EAC/B,KAAK,+BAA+B,EACrC,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACnH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAMpF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,8BAA8B;IAC7C,2CAA2C;IAC3C,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,kEAAkE;IAClE,MAAM,EAAE,kBAAkB,CAAC;IAC3B,+DAA+D;IAC/D,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,qCAAqC;IACrC,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,qFAAqF;IACrF,aAAa,CAAC,EAAE,iCAAiC,CAAC;IAClD,kFAAkF;IAClF,SAAS,CAAC,EAAE,+BAA+B,CAAC;IAC5C,8EAA8E;IAC9E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mCAAmC,CACjD,WAAW,EAAE,4BAA4B,EACzC,OAAO,EAAE;IACP,yEAAyE;IACzE,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,gDAAgD;IAChD,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,kEAAkE;IAClE,MAAM,EAAE,kBAAkB,CAAC;IAC3B,gDAAgD;IAChD,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,+BAA+B,CAAC;CACpD,GACA,oBAAoB,EAAE,CAyBxB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,8BAA8B,CAC5C,iBAAiB,EAAE,4BAA4B,EAC/C,sBAAsB,EAAE,4BAA4B,GAAG,YAAY,EACnE,iBAAiB,EAAE,+BAA+B,EAClD,gBAAgB,EAAE,+BAA+B,EACjD,OAAO,EAAE,8BAA8B,GACtC,oBAAoB,EAAE,CA8CxB"}
1
+ {"version":3,"file":"resource-polymorphism.relationships.d.ts","sourceRoot":"","sources":["../../../../../src/resources/utils/resource-polymorphism.relationships.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,+BAA+B,EAC/B,KAAK,+BAA+B,EACrC,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACnH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAMpF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,8BAA8B;IAC7C,2CAA2C;IAC3C,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,kEAAkE;IAClE,MAAM,EAAE,kBAAkB,CAAC;IAC3B,+DAA+D;IAC/D,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,qCAAqC;IACrC,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,qFAAqF;IACrF,aAAa,CAAC,EAAE,iCAAiC,CAAC;IAClD,kFAAkF;IAClF,SAAS,CAAC,EAAE,+BAA+B,CAAC;IAC5C,8EAA8E;IAC9E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mCAAmC,CACjD,WAAW,EAAE,4BAA4B,EACzC,OAAO,EAAE;IACP,yEAAyE;IACzE,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,gDAAgD;IAChD,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,kEAAkE;IAClE,MAAM,EAAE,kBAAkB,CAAC;IAC3B,gDAAgD;IAChD,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,+BAA+B,CAAC;CACpD,GACA,oBAAoB,EAAE,CAyBxB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,8BAA8B,CAC5C,iBAAiB,EAAE,4BAA4B,EAC/C,sBAAsB,EAAE,4BAA4B,GAAG,YAAY,EACnE,iBAAiB,EAAE,+BAA+B,EAClD,gBAAgB,EAAE,+BAA+B,EACjD,OAAO,EAAE,8BAA8B,GACtC,oBAAoB,EAAE,CA8CxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-polymorphism.schemas.d.ts","sourceRoot":"","sources":["../../../../src/resources/utils/resource-polymorphism.schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-polymorphism.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/resources/utils/resource-polymorphism.schemas.ts"],"names":[],"mappings":"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"}
@@ -495,6 +495,19 @@ function cloneFieldForBusinessKeyDecoration(value) {
495
495
  * forcing the change to either (a) propagate the outer metadata explicitly
496
496
  * or (b) document why it's safe to drop.
497
497
  *
498
+ * **The one outer decorator that IS propagated: `.businessKeySet([...])`**
499
+ * (#1596). A many-rows-per-scope polymorphic resource whose identity is a
500
+ * COMPOSITE of base fields — the inbound-delivery ledger's
501
+ * `(sourceKey, dedupKey)` — declares it on the base object, and each variant
502
+ * is its own table, so each variant must carry the compound unique index.
503
+ * Dropping it would leave the dedup ledger with no index at all, which is the
504
+ * exact silent loss this guard exists to stop; refusing it would leave a
505
+ * polymorphic resource no way to declare a composite identity. So the set is
506
+ * re-applied to the fresh wrapper, after checking every named field still
507
+ * exists on the post-injection, post-rename shape (a renamed field would
508
+ * otherwise produce an index over a column that does not exist). Every OTHER
509
+ * outer key still fails loud, for the reason above.
510
+ *
498
511
  * @param schema The post-injection, post-rename variant ZodObject.
499
512
  * @param fieldNames Field names (post-rename) to mark with `.isBusinessKey()`.
500
513
  * @param baseResourceType For error context (the polymorphic base name).
@@ -509,18 +522,31 @@ function applyBusinessKeyMarkers(schema, fieldNames, baseResourceType, parentRes
509
522
  // because no current call site needs it; instead we fail loud so the next
510
523
  // caller that DOES need it has to make a deliberate design decision.
511
524
  const outerMetadata = getFieldMetadata(schema);
512
- if (outerMetadata && Object.keys(outerMetadata).length > 0) {
525
+ const propagatedBusinessKeySet = outerMetadata?.[ZodDecorator.OBJECT_BUSINESS_KEY_SET];
526
+ const unpropagatedOuterKeys = Object.keys(outerMetadata ?? {}).filter((key) => key !== ZodDecorator.OBJECT_BUSINESS_KEY_SET);
527
+ if (unpropagatedOuterKeys.length > 0) {
513
528
  throw new Error(`[PolymorphicSchemas] baseResourceType="${baseResourceType}" parentResourceType="${parentResourceType}": ` +
514
529
  `applyBusinessKeyMarkers received a ZodObject with outer-level metadata ` +
515
- `(keys: [${Object.keys(outerMetadata).join(', ')}]). The function rebuilds ` +
530
+ `(keys: [${unpropagatedOuterKeys.join(', ')}]). The function rebuilds ` +
516
531
  `the wrapper via z.object(...), which would silently drop those entries. ` +
517
532
  `Either remove the outer metadata before calling, or extend this helper ` +
518
533
  `to propagate it (and add a regression test). See JSDoc "Outer-level ` +
519
534
  `metadata contract" for the full rationale.`);
520
535
  }
521
536
  const shape = getZodObjectShape(schema);
537
+ if (propagatedBusinessKeySet) {
538
+ const missingKeyFields = propagatedBusinessKeySet.fields.filter((field) => !Object.prototype.hasOwnProperty.call(shape, field));
539
+ if (missingKeyFields.length > 0) {
540
+ throw new Error(`[PolymorphicSchemas] baseResourceType="${baseResourceType}" parentResourceType="${parentResourceType}": ` +
541
+ `the base object's businessKeySet names field(s) absent from the post-injection variant shape: ` +
542
+ `[${missingKeyFields.join(', ')}]. A renamed field cannot carry a compound unique index under its old name.`);
543
+ }
544
+ }
545
+ const withPropagatedBusinessKeySet = (rebuilt) => propagatedBusinessKeySet
546
+ ? addDecorators(rebuilt, [{ ref: ZodDecorator.OBJECT_BUSINESS_KEY_SET, params: { ...propagatedBusinessKeySet } }])
547
+ : rebuilt;
522
548
  if (fieldNames.length === 0) {
523
- return z.object({ ...shape });
549
+ return withPropagatedBusinessKeySet(z.object({ ...shape }));
524
550
  }
525
551
  for (const fieldName of fieldNames) {
526
552
  if (!Object.prototype.hasOwnProperty.call(shape, fieldName)) {
@@ -560,6 +586,6 @@ function applyBusinessKeyMarkers(schema, fieldNames, baseResourceType, parentRes
560
586
  ? addDecorators(cloneFieldForBusinessKeyDecoration(value), businessKeyDecorators)
561
587
  : value;
562
588
  }
563
- return z.object(newShape);
589
+ return withPropagatedBusinessKeySet(z.object(newShape));
564
590
  }
565
591
  //# sourceMappingURL=resource-polymorphism.schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-polymorphism.schemas.js","sourceRoot":"","sources":["../../../../../src/resources/utils/resource-polymorphism.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Resource Polymorphism — Schema Declaration (Phase 1)\n *\n * Provides `declarePolymorphicSchemas()` which takes a base schema and a list\n * of parent variant definitions, and produces a `PolymorphicSchemaDeclaration`\n * containing pre-computed schemas for each variant (base + injected parent FK).\n *\n * Supports both plain `z.ZodObject` and `SchemaFamily` as base schema input.\n *\n * @see polymorphic-scope-approach-A-expansion.md — Phase 1\n */\n\nimport { z } from 'zod';\nimport { getZodObjectShape, addDiscriminator, getPolymorphicFkVariants, addDecorators, ZodDecorator, SCHEMA_METADATA, getFieldMetadata } from '@wildo-ai/zod-decorators';\nimport { ResourcePolymorphismUtils, type PolymorphicParentVariantDefinition, type PolymorphicVariantNaming } from './resource-polymorphism.utils';\nimport type { SchemaFamily, EnumLikeType, VariantConfig } from './schema-family-builder.utils';\nimport type { ResourceConfiguration_InheritanceSchemaDefinition } from '../resources-config.shared.schemas';\nimport type { ResourceType } from '../resources.shared.core.definitions';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * @wildo_source:part:start saas.models.polymorphism.variant-definition facet:layer:shared facet:family:polymorphism\n *\n * One entry in the variant list passed to `declarePolymorphicSchemas()` (from\n * `@wildo-ai/saas-models`) — describes ONE scope a polymorphic resource is\n * stamped out for. Besides the two fields below it also carries the inherited\n * `parentResourceType` (the scope entity — e.g. ORGANIZATIONS / APPLICATION /\n * USERS) and `parentFieldIdentifier` (the scope FK the engine injects into the\n * variant schema — e.g. `organizationId` / `applicationId`). The\n * `isPrimaryScope` + `businessKeyFields` pair is the SINGLETON-vs-MULTI-ROW\n * decision: a singleton scope FK becomes a one-per-scope unique business key; a\n * multi-row (collection) resource must opt out via `optOutPolymorphicAutoBusinessKey`.\n */\nexport interface PolymorphicVariantDefinition extends PolymorphicParentVariantDefinition {\n /**\n * Whether this variant's parent is a primary scope entity.\n * - `true`: identity field injected (e.g., `organizationId`), authorization scope-aware\n * - `false`: parent FK injected (e.g., `projectId`), scope inherited from parent chain\n */\n isPrimaryScope: boolean;\n\n /**\n * Optional per-variant business-key declaration.\n *\n * The polymorphism engine cannot honour `.isBusinessKey()` on the base\n * schema for fields that don't yet exist there (the canonical case being\n * a polymorphic singleton whose business key is the *injected* parent FK\n * — `organizationId` for the ORG variant, `applicationId` for the APP\n * variant). This field gives the variant declaration a place to mark\n * those fields per-variant.\n *\n * Resolution rule:\n *\n * 1. If `businessKeyFields` is provided (including an empty array `[]`\n * to *opt out*), apply `.isBusinessKey()` to each named field on the\n * final variant shape. Fail-loud if a name does not exist on the\n * variant shape.\n * 2. Else if `isPrimaryScope: true` and `businessKeyFields` is omitted,\n * auto-mark the injected `parentFieldIdentifier` as the business key\n * (the singleton-per-scope convention).\n * 3. Else (no explicit declaration AND not a primary scope), no\n * business-key marking is added — the framework's pre-A4 behaviour is\n * preserved for non-singleton polymorphism.\n *\n * DB UNIQUENESS: when the resolved business key is a SINGLE field (the\n * singleton case — branch 2, or a one-field branch-1 list), that field is ALSO\n * stamped `.isUnique()`, compiling to a Mongo unique index that enforces\n * one-row-per-scope at the DB layer. `.isBusinessKey()` alone is a PURE marker\n * with no index, so without this a raced insert (e.g. a system lazy-create on\n * two concurrent logins) could duplicate the singleton row. A COMPOSITE\n * (>1-field) business key stays marker-only — declare an object-level\n * `.businessKeySet([...])` for a compound unique index instead. Consequence: a\n * forgotten opt-out on a MULTI-ROW resource is now a hard duplicate-key insert\n * failure (see `optOutPolymorphicAutoBusinessKey`), not just silent\n * `upsertByBusinessKey` misrouting.\n *\n * Field names refer to the **post-injection, post-rename** shape — i.e.,\n * what the field is actually called on the variant schema after\n * polymorphic FK injection and any `polymorphicVariants`-driven renames\n * (e.g., `billingAccountId` → `organizationBillingAccountId`). This is\n * the shape the consumer of `variants[parentResourceType].schema` reads.\n */\n businessKeyFields?: string[];\n}\n/** @wildo_source:part:end saas.models.polymorphism.variant-definition */\n\n/**\n * @wildo_source:part:start saas.models.polymorphism.optout-business-key facet:layer:shared facet:family:polymorphism\n *\n * Opt out the auto-default that marks the injected `parentFieldIdentifier`\n * as the business key on every `isPrimaryScope: true` variant.\n *\n * Use this on **non-singleton** polymorphic resources (e.g., delivery logs,\n * SSO connections, SIEM DLQ rows, SCIM tokens, billing usage records, credit\n * pools, subscriptions, invoice refs) where the parent FK alone does NOT\n * uniquely identify a row in the collection. Without this opt-out, the\n * polymorphism engine auto-marks the injected scope FK (`organizationId` /\n * `applicationId` / etc.) as the business key. On a multi-row resource that is\n * now TWO bugs, not one:\n * 1. any `upsertByBusinessKey()` call routes every row in the scope onto a\n * single document (silent data corruption); AND\n * 2. the single-field business key is ALSO stamped `.isUnique()` (the\n * singleton ⇒ unique-index convention), so the SECOND row per scope is\n * rejected at insert with a duplicate-key error — a hard, immediate\n * failure. The resource is NOT a singleton, so both are wrong.\n * Opt out and both vanish: the scope FK stays a plain non-unique index with no\n * business-key marker.\n *\n * Contract:\n *\n * - Signature is **per-variant**: `(variantDef) => variantDef`. Apply it\n * to a whole variant array via the standard `Array.prototype.map`:\n * `[...AUTH_SCOPE_VARIANTS].map(optOutPolymorphicAutoBusinessKey)`.\n * Direct per-variant calls are also fine — useful when only one\n * variant in a heterogeneous array needs the opt-out.\n * - The result is a fresh `PolymorphicVariantDefinition` (or array\n * thereof) with `businessKeyFields: []` per variant (the canonical\n * \"explicit empty\" opt-out — the empty-array branch of the resolution rule\n * documented on `PolymorphicVariantDefinition.businessKeyFields`).\n * - **The helper UNCONDITIONALLY overwrites any pre-existing\n * `businessKeyFields` on the variant** — that is the entire point. If\n * you need to preserve / extend an existing composite key, do NOT pipe\n * through this helper; declare `businessKeyFields` inline on the\n * variant instead.\n *\n * Why a helper instead of inline `.map(v => ({ ...v, businessKeyFields: [] }))`:\n *\n * - Keeps the call-site one-line and self-documenting (the helper name IS\n * the rationale).\n * - Centralizes the `businessKeyFields: []` literal so a future rename or\n * semantic change has one source of truth, not eight inlined copies.\n * - Discoverable via `rg optOutPolymorphicAutoBusinessKey`.\n */\nexport function optOutPolymorphicAutoBusinessKey(\n variantDef: PolymorphicVariantDefinition,\n): PolymorphicVariantDefinition {\n return { ...variantDef, businessKeyFields: [] };\n}\n/** @wildo_source:part:end saas.models.polymorphism.optout-business-key */\n\n/**\n * A single resolved variant within a polymorphic declaration.\n * Contains all derived naming + the transformed schema.\n */\nexport interface PolymorphicResolvedVariant<TSchema extends z.ZodTypeAny = z.ZodTypeAny> {\n /** The parent resource type this variant is parented to */\n parentResourceType: ResourceType;\n /** The parent's field identifier (e.g., 'organizationId') */\n parentFieldIdentifier: string;\n /** Whether this variant's parent is a primary scope entity */\n isPrimaryScope: boolean;\n /** Derived variant resource type (e.g., 'organizationBillingAccounts') */\n resourceType: string;\n /** Derived variant field identifier (e.g., 'organizationBillingAccountId') */\n fieldIdentifier: string;\n /** Derived collection name (same as resourceType) */\n collectionName: string;\n /** Derived kebab-case route segment */\n routeSegment: string;\n /** Derived CONSTANT_CASE enum key */\n enumKey: string;\n /** Transformed schema: base schema + parent FK field injected */\n schema: TSchema;\n /** If baseSchema was a SchemaFamily, this holds the rebuilt family for this variant */\n schemaFamily?: SchemaFamily<z.ZodObject<z.ZodRawShape>, string, Record<string, VariantConfig<z.ZodObject<z.ZodRawShape>>>>;\n}\n\n/**\n * The output of `declarePolymorphicSchemas()`.\n * Contains the base declaration + pre-computed variants map.\n */\nexport interface PolymorphicSchemaDeclaration<TSchema extends z.ZodTypeAny = z.ZodTypeAny> {\n /** Marker for runtime type checking */\n __polymorphic: true;\n /** Base resource type (e.g., 'billingAccounts') — the abstract logical name */\n baseResourceType: string;\n /** Base field identifier (e.g., 'billingAccountId') */\n baseFieldIdentifier: string;\n /** Base CONSTANT_CASE enum key (e.g., 'BILLING_ACCOUNTS') */\n baseEnumKey: string;\n /** The original base schema (before variant transformation) */\n baseSchema: TSchema;\n /** The original variant definitions as provided by the developer */\n variantDefinitions: PolymorphicVariantDefinition[];\n /** Pre-computed map: parentResourceType → resolved variant (naming + transformed schema) */\n variants: Map<ResourceType, PolymorphicResolvedVariant<TSchema>>;\n}\n\n/**\n * Input configuration for `declarePolymorphicSchemas()`.\n */\nexport interface DeclarePolymorphicSchemasConfig<TSchema extends z.ZodTypeAny> {\n /** Base resource type (e.g., 'billingAccounts') */\n baseResourceType: string;\n /** Base field identifier (e.g., 'billingAccountId') */\n baseFieldIdentifier: string;\n /** Base CONSTANT_CASE enum key (e.g., 'BILLING_ACCOUNTS') */\n baseEnumKey: string;\n /**\n * Base schema — either a plain z.ZodObject or a SchemaFamily result.\n * Must NOT already contain identity fields (organizationId, userId, etc.) — they are injected per variant.\n */\n baseSchema: TSchema;\n /** Variant definitions — one per parent resource */\n variants: PolymorphicVariantDefinition[];\n}\n\n// =============================================================================\n// TYPE GUARDS\n// =============================================================================\n\n/**\n * Check if a value is a SchemaFamily (result of createSchemaFamily()).\n * Duck-types on the presence of `.union`, `.base`, `.discriminatorField`.\n */\nfunction isSchemaFamily(value: unknown): value is SchemaFamily<z.ZodObject<z.ZodRawShape>, string, Record<string, VariantConfig<z.ZodObject<z.ZodRawShape>>>> {\n if (!value || typeof value !== 'object') return false;\n const obj = value as Record<string, unknown>;\n return (\n 'union' in obj &&\n 'base' in obj &&\n 'discriminatorField' in obj &&\n 'variants' in obj &&\n 'inheritenceSchemaDefinition' in obj\n );\n}\n\n/**\n * Check if a schema is a ZodObject (has .shape).\n */\nfunction isZodObject(schema: z.ZodTypeAny): schema is z.ZodObject<z.ZodRawShape> {\n return schema instanceof z.ZodObject;\n}\n\n// =============================================================================\n// MAIN FUNCTION\n// =============================================================================\n\n/**\n * Declare polymorphic schemas for a base resource.\n *\n * For each variant definition, this function:\n * 1. Derives all naming identifiers using `ResourcePolymorphismUtils`\n * 2. Clones the base schema and injects the parent's field identifier as a new FK field\n * 3. If the base schema is a `SchemaFamily`, rebuilds the family per variant\n * 4. Returns a `PolymorphicSchemaDeclaration` with pre-computed variants\n *\n * @example\n * ```typescript\n * // Plain z.ZodObject base:\n * const billingDeclaration = declarePolymorphicSchemas({\n * baseResourceType: 'billingAccounts',\n * baseFieldIdentifier: 'billingAccountId',\n * baseEnumKey: 'BILLING_ACCOUNTS',\n * baseSchema: BillingAccountBaseSchema,\n * variants: [\n * { parentResourceType: 'organizations', parentFieldIdentifier: 'organizationId', isPrimaryScope: true },\n * { parentResourceType: 'users', parentFieldIdentifier: 'userId', isPrimaryScope: true },\n * ],\n * });\n *\n * // SchemaFamily base:\n * const subscriptionDeclaration = declarePolymorphicSchemas({\n * baseResourceType: 'subscriptions',\n * baseFieldIdentifier: 'subscriptionId',\n * baseEnumKey: 'SUBSCRIPTIONS',\n * baseSchema: SubscriptionSchemaFamily, // result of createSchemaFamily()\n * variants: [\n * { parentResourceType: 'organizations', parentFieldIdentifier: 'organizationId', isPrimaryScope: true },\n * ],\n * });\n * ```\n */\nexport function declarePolymorphicSchemas<TSchema extends z.ZodTypeAny>(\n config: DeclarePolymorphicSchemasConfig<TSchema>\n): PolymorphicSchemaDeclaration<TSchema> {\n const { baseResourceType, baseFieldIdentifier, baseEnumKey, baseSchema, variants: variantDefinitions } = config;\n\n // Validation: must have at least one variant\n if (variantDefinitions.length === 0) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\": must have at least one variant definition.`\n );\n }\n\n // Validation: no duplicate parentResourceType\n const parentTypes = variantDefinitions.map(v => v.parentResourceType);\n const uniqueParentTypes = new Set(parentTypes);\n if (uniqueParentTypes.size !== parentTypes.length) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\": duplicate parentResourceType in variant definitions.`\n );\n }\n\n // Derive naming for all variants\n const namingKit = ResourcePolymorphismUtils.getVariants(\n baseResourceType,\n baseFieldIdentifier,\n baseEnumKey,\n variantDefinitions.map(v => ({ parentResourceType: v.parentResourceType, parentFieldIdentifier: v.parentFieldIdentifier }))\n );\n\n // Determine the root ZodObject to validate and extend\n const rootZodObject = isSchemaFamily(baseSchema)\n ? (baseSchema as SchemaFamily<z.ZodObject<z.ZodRawShape>, string, Record<string, VariantConfig<z.ZodObject<z.ZodRawShape>>>>).base\n : isZodObject(baseSchema as z.ZodTypeAny) ? (baseSchema as unknown as z.ZodObject<z.ZodRawShape>) : null;\n\n // Validation: base schema must be a ZodObject or SchemaFamily\n if (!rootZodObject) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\": baseSchema must be a z.object() or a SchemaFamily (result of createSchemaFamily()). Got: ${typeof baseSchema}`\n );\n }\n\n // Validation: base schema should NOT already contain any of the parent FK fields\n const baseShape = getZodObjectShape(rootZodObject);\n for (const variantDef of variantDefinitions) {\n if (baseShape[variantDef.parentFieldIdentifier]) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\": baseSchema already contains field \"${variantDef.parentFieldIdentifier}\". ` +\n `The polymorphic declaration injects parent FK fields automatically — remove it from the base schema.`\n );\n }\n }\n\n // Pre-compute polymorphic FK renames from the base schema.\n // For each field in the base shape, check if it has `polymorphicVariants` metadata.\n // If so, build a map: fieldName → { parentResourceType → derivedFieldName }.\n const polymorphicFkRenames = computePolymorphicFkRenames(baseShape, variantDefinitions);\n\n // Build the variants map\n const variantsMap = new Map<ResourceType, PolymorphicResolvedVariant<TSchema>>();\n\n for (let i = 0; i < variantDefinitions.length; i++) {\n const variantDef = variantDefinitions[i]!;\n const naming = namingKit[i]!;\n\n // Create the parent FK field: z.string().min(1).isForeignKey().isDBIndexed()\n const parentFkField = z.string().min(1).isForeignKey().isDBIndexed();\n\n // Compute FK renames for this specific variant\n const fkRenamesForVariant = getFkRenamesForVariant(polymorphicFkRenames, variantDef.parentResourceType);\n\n // Compute the business-key field names for this variant (A4 hybrid —\n // explicit override wins; isPrimaryScope=true auto-defaults to the\n // injected parent FK; otherwise no marking). See JSDoc on\n // `PolymorphicVariantDefinition.businessKeyFields`.\n const businessKeyFieldNames = computeBusinessKeyFieldNames(variantDef);\n\n // Extend the schema with the parent FK field\n let variantSchema: z.ZodTypeAny;\n let variantSchemaFamily: SchemaFamily<z.ZodObject<z.ZodRawShape>, string, Record<string, VariantConfig<z.ZodObject<z.ZodRawShape>>>> | undefined;\n\n if (isSchemaFamily(baseSchema)) {\n const family = baseSchema as SchemaFamily<z.ZodObject<z.ZodRawShape>, string, Record<string, VariantConfig<z.ZodObject<z.ZodRawShape>>>>;\n\n // Extend the family's base schema with parent FK + apply FK renames\n // Cast needed: Zod 4's .extend() returns ZodObject<Readonly<...>> which is stricter than ZodRawShape\n let extendedBase = family.base.extend({\n [variantDef.parentFieldIdentifier]: parentFkField,\n }) as z.ZodObject<z.ZodRawShape>;\n extendedBase = applyFkRenames(extendedBase, fkRenamesForVariant);\n extendedBase = applyBusinessKeyMarkers(\n extendedBase,\n businessKeyFieldNames,\n baseResourceType,\n variantDef.parentResourceType,\n );\n\n // Rebuild each variant schema with the parent FK injected + FK renames\n const extendedVariants: Record<string, z.ZodObject<z.ZodRawShape>> = {};\n for (const [key, variantSchemaEntry] of Object.entries(family.variants)) {\n let extended = (variantSchemaEntry as z.ZodObject<z.ZodRawShape>).extend({\n [variantDef.parentFieldIdentifier]: parentFkField,\n }) as z.ZodObject<z.ZodRawShape>;\n extended = applyFkRenames(extended, fkRenamesForVariant);\n extended = applyBusinessKeyMarkers(\n extended,\n businessKeyFieldNames,\n baseResourceType,\n variantDef.parentResourceType,\n );\n extendedVariants[key] = extended;\n }\n\n // Rebuild the discriminated union with parent FK in all branches\n // Use addDiscriminator() to preserve isDiscriminator metadata (matching createSchemaFamily behavior)\n const allUnionSchemas: z.ZodObject<z.ZodRawShape>[] = [];\n\n // Base value schemas (base + parent FK + decorated discriminator)\n for (const baseValue of family.baseValues) {\n const baseWithDiscriminator = extendedBase.extend({\n [family.discriminatorField]: addDiscriminator(z.literal(baseValue), { baseValues: family.baseValues }),\n });\n allUnionSchemas.push(baseWithDiscriminator as z.ZodObject<z.ZodRawShape>);\n }\n\n // Extended variant schemas — re-decorate discriminator to ensure metadata is preserved\n for (const [variantKey, extendedVariantSchema] of Object.entries(extendedVariants)) {\n allUnionSchemas.push(\n extendedVariantSchema.extend({\n [family.discriminatorField]: addDiscriminator(z.literal(variantKey), { baseValues: family.baseValues }),\n }) as z.ZodObject<z.ZodRawShape>\n );\n }\n\n // Create the union\n let union: z.ZodTypeAny;\n if (allUnionSchemas.length >= 2) {\n union = z.discriminatedUnion(\n family.discriminatorField,\n allUnionSchemas as any\n );\n } else if (allUnionSchemas.length === 1) {\n union = allUnionSchemas[0]!;\n } else {\n union = extendedBase;\n }\n\n // Build the rebuilt SchemaFamily for this variant\n variantSchemaFamily = {\n base: extendedBase as z.ZodObject<z.ZodRawShape>,\n discriminatorField: family.discriminatorField,\n baseValues: family.baseValues,\n variants: extendedVariants as any,\n union,\n inheritenceSchemaDefinition: family.inheritenceSchemaDefinition,\n };\n\n // The main schema for the resource config is the union\n variantSchema = union;\n } else {\n // Plain ZodObject — simple extend + FK renames + business-key markers\n let extended = (rootZodObject as z.ZodObject<z.ZodRawShape>).extend({\n [variantDef.parentFieldIdentifier]: parentFkField,\n }) as z.ZodObject<z.ZodRawShape>;\n extended = applyFkRenames(extended, fkRenamesForVariant);\n extended = applyBusinessKeyMarkers(\n extended,\n businessKeyFieldNames,\n baseResourceType,\n variantDef.parentResourceType,\n );\n variantSchema = extended;\n }\n\n variantsMap.set(variantDef.parentResourceType, {\n parentResourceType: variantDef.parentResourceType,\n parentFieldIdentifier: variantDef.parentFieldIdentifier,\n isPrimaryScope: variantDef.isPrimaryScope,\n resourceType: naming.resourceType,\n fieldIdentifier: naming.fieldIdentifier,\n collectionName: naming.collectionName,\n routeSegment: naming.routeSegment,\n enumKey: naming.enumKey,\n schema: variantSchema as TSchema,\n ...(variantSchemaFamily ? { schemaFamily: variantSchemaFamily } : {}),\n });\n }\n\n return {\n __polymorphic: true,\n baseResourceType,\n baseFieldIdentifier,\n baseEnumKey,\n baseSchema,\n variantDefinitions,\n variants: variantsMap,\n };\n}\n\n// =============================================================================\n// FK RENAME HELPERS\n// =============================================================================\n\n/** Map of original field name → per-parentResourceType derived field name */\ntype PolymorphicFkRenameMap = Map<string, Map<string, string>>;\n\n/**\n * Scan the base schema shape for fields with `polymorphicVariants` metadata.\n * Build a rename map: originalFieldName → { parentResourceType → derivedFieldName }.\n */\nfunction computePolymorphicFkRenames(\n baseShape: Record<string, z.ZodTypeAny>,\n variantDefinitions: PolymorphicVariantDefinition[],\n): PolymorphicFkRenameMap {\n const renames: PolymorphicFkRenameMap = new Map();\n\n for (const [fieldName, fieldSchema] of Object.entries(baseShape)) {\n const fkVariants = getPolymorphicFkVariants(fieldSchema);\n if (!fkVariants || fkVariants.length === 0) continue;\n\n const fieldRenames = new Map<string, string>();\n\n for (const variantDef of variantDefinitions) {\n const matchingFkVariant = fkVariants.find(\n fkv => fkv.parentResourceType === variantDef.parentResourceType\n );\n if (matchingFkVariant) {\n const derivedName = ResourcePolymorphismUtils.deriveVariantFieldIdentifier(\n matchingFkVariant.parentFieldIdentifier,\n fieldName,\n );\n fieldRenames.set(variantDef.parentResourceType, derivedName);\n }\n }\n\n if (fieldRenames.size > 0) {\n renames.set(fieldName, fieldRenames);\n }\n }\n\n return renames;\n}\n\n/**\n * Get the FK renames applicable for a specific parent resource type.\n * Returns an array of [originalFieldName, derivedFieldName] pairs.\n */\nfunction getFkRenamesForVariant(\n renameMap: PolymorphicFkRenameMap,\n parentResourceType: string,\n): [string, string][] {\n const result: [string, string][] = [];\n for (const [originalName, perParent] of renameMap) {\n const derived = perParent.get(parentResourceType);\n if (derived) {\n result.push([originalName, derived]);\n }\n }\n return result;\n}\n\n/**\n * Compute the per-variant renamed schema map for a polymorphic base.\n *\n * Exported as the canonical bridge that callers OUTSIDE this module\n * (notably the frontend lib's `createPolymorphicFrontendPreset`, which\n * threads a `FRONTEND_SCHEMA_KEY` per variant for `z_clone`-style UI\n * mutations) use to derive per-variant schemas without having to reach\n * into the private rename helpers.\n *\n * Given a base schema and an array of variant declarations, returns\n * `Map<parentResourceType, ZodObject>` where each value is the base\n * schema with `polymorphicVariants`-marked FK fields renamed to their\n * variant-specific names (e.g. `billingAccountId` →\n * `organizationBillingAccountId` for the ORGANIZATIONS variant).\n *\n * Why this matters: the polymorphic resource factory ALREADY applies\n * these renames to the runtime variant schemas (see `applyFkRenames`\n * call sites above). But callers that take the BASE schema as input\n * and attach it to per-variant artifacts (e.g. the frontend's UI\n * behavior `FRONTEND_SCHEMA_KEY`) bypass the rename and end up\n * replacing the variant's renamed `mainSchema` with the base's\n * un-renamed shape — breaking the registry's FK→parent map. Use this\n * helper to keep that path aligned with the resource factory's\n * rename semantics.\n *\n * `variants` only needs `parentResourceType`; any extra properties on\n * the input objects are ignored. This lets frontend callers pass\n * `PolymorphicFrontendVariant`-shaped values directly without\n * reaching for the backend's full `PolymorphicVariantDefinition`.\n */\nexport function computePolymorphicVariantSchemas(\n baseSchema: z.ZodObject<z.ZodRawShape>,\n variants: ReadonlyArray<{ parentResourceType: string }>,\n): Map<string, z.ZodObject<z.ZodRawShape>> {\n const baseShape = getZodObjectShape(baseSchema) as Record<string, z.ZodTypeAny>;\n // Synthesize minimal variantDefinitions for the renames computer — only\n // `parentResourceType` is read.\n const minimalDefs = variants.map(({ parentResourceType }) => ({\n parentResourceType,\n })) as unknown as PolymorphicVariantDefinition[];\n const renameMap = computePolymorphicFkRenames(baseShape, minimalDefs);\n\n const result = new Map<string, z.ZodObject<z.ZodRawShape>>();\n for (const { parentResourceType } of variants) {\n const renames = getFkRenamesForVariant(renameMap, parentResourceType);\n result.set(parentResourceType, applyFkRenames(baseSchema, renames));\n }\n return result;\n}\n\n/**\n * Apply FK renames to a ZodObject: remove original field, add derived field with same schema.\n */\nfunction applyFkRenames(\n schema: z.ZodObject<z.ZodRawShape>,\n renames: [string, string][],\n): z.ZodObject<z.ZodRawShape> {\n if (renames.length === 0) return schema;\n\n // Cast to mutable shape — getZodObjectShape may return Readonly in Zod 4\n const shape = getZodObjectShape(schema) as Record<string, z.ZodTypeAny>;\n const newShape: Record<string, z.ZodTypeAny> = {};\n\n for (const [key, value] of Object.entries(shape)) {\n const rename = renames.find(([orig]) => orig === key);\n if (rename) {\n newShape[rename[1]] = value;\n } else {\n newShape[key] = value;\n }\n }\n\n return z.object(newShape) as z.ZodObject<z.ZodRawShape>;\n}\n\n// =============================================================================\n// BUSINESS-KEY MARKER HELPERS (A4 hybrid — Decision A of\n// `.cursor/plans/polymorphic-singleton-business-key-support.md`)\n// =============================================================================\n\n/**\n * Resolve the per-variant business-key field names to mark with\n * `.isBusinessKey()` on the post-injection / post-rename variant shape.\n *\n * Resolution rule (A4 hybrid):\n *\n * 1. Explicit `businessKeyFields` (including `[]` to opt out) → use as-is.\n * 2. `isPrimaryScope: true` AND `businessKeyFields` omitted → auto-default\n * to `[parentFieldIdentifier]` (the canonical singleton-per-scope case).\n * 3. Otherwise → empty array (preserves pre-A4 behaviour for\n * non-singleton polymorphism — no business-key marking applied).\n *\n * Pure function — no schema mutation, no metadata access. Always returns a\n * fresh array (never the caller's `businessKeyFields` reference) so a later\n * mutation by the consumer cannot accidentally rewrite the variant\n * declaration.\n */\nfunction computeBusinessKeyFieldNames(variantDef: PolymorphicVariantDefinition): string[] {\n if (variantDef.businessKeyFields !== undefined) {\n return [...variantDef.businessKeyFields];\n }\n if (variantDef.isPrimaryScope) {\n return [variantDef.parentFieldIdentifier];\n }\n return [];\n}\n\n/**\n * Minimal prototype-based field clone, designed exclusively for the\n * `addDecorators(clone, [IS_BUSINESS_KEY])` flow inside\n * `applyBusinessKeyMarkers`. NOT a general-purpose schema clone — see\n * `z_clone` (in `@wildo-ai/zod-decorators`) for the full-featured version\n * that deep-clones metadata, reruns `addChainableMethods`, and is the\n * right choice when you need an INDEPENDENT leaf-schema reusable across\n * resources.\n *\n * **Why a separate helper rather than `z_clone`:**\n *\n * - `z_clone` deep-clones metadata and reruns `addChainableMethods`. For\n * the polymorphism engine — which clones a base-shape field once per\n * variant per call to `declarePolymorphicSchemas` — that's more work\n * than necessary, and reruns of `addChainableMethods` on schemas that\n * already have chainable methods are a net no-op (defends via\n * `__metadataWrapped` / `hasOwnProperty` checks).\n * - This helper keeps the contract MINIMAL and INTENTIONAL: only the\n * `SCHEMA_METADATA` Symbol property is given an own-property override\n * (a shallow copy of the source's metadata bag); everything else\n * (Zod 4's `_zod` internals, the prototype chain, instance methods, any\n * future Symbol-keyed framework state) is inherited by setting the\n * source schema as the clone's prototype. The result is structurally\n * indistinguishable from the source for Zod's own validation\n * (`isSchema(clone)` is `true` because `_zod` resolves via prototype\n * lookup), so the clone is safe to re-enter `z.object({...})` as a\n * field — but every metadata mutation lands on the clone alone.\n *\n * **Why a shallow copy of the metadata bag is sufficient HERE:**\n *\n * `applySingleDecorator` mutates only the top-level entries on the bag\n * (`bag[ZodDecorator.IS_BUSINESS_KEY] = true`, etc.). Nested decorator\n * payloads (e.g., `bag[FOREIGN_KEY_SPEC]`) are read-then-deep-merged into\n * a NEW object before being assigned back, so the existing nested\n * references are never mutated in place. For our single-decorator\n * `addDecorators(clone, [IS_BUSINESS_KEY])` call, a shallow copy of the\n * top-level bag is therefore enough to fully isolate the source.\n *\n * **Symbol-keyed properties OTHER than `SCHEMA_METADATA`** (Plan 1 deep-\n * review L-3, 2026-04-14): only `SCHEMA_METADATA` is shallow-copied as\n * an own property. If `addDecorators` ever evolves to mutate a different\n * Symbol-keyed property on the schema instance, this helper MUST be\n * updated to also override that property — otherwise the first mutation\n * on the clone would create an own property on the clone (correct) but\n * later reads on the source would observe stale state (the source's\n * Symbol value never changes). To future-proof, either (a) iterate\n * `Object.getOwnPropertySymbols(value)` and shallow-copy them all, or\n * (b) add a `addDecorators`-side invariant test that asserts\n * `SCHEMA_METADATA` is the only Symbol-keyed mutation surface.\n *\n * **Why this matters at all** — context: when\n * `declarePolymorphicSchemas` builds variants, `ZodObject.extend(...)`\n * creates a fresh wrapper but the base shape's inner field instances are\n * SHARED across every variant iteration. Mutating those shared leaves\n * directly via `addDecorators` would silently propagate the marker onto\n * sibling variants — even ones that explicitly omit the field or opt out\n * via `optOutPolymorphicAutoBusinessKey`. The clone breaks the share.\n */\nfunction cloneFieldForBusinessKeyDecoration(value: z.ZodTypeAny): z.ZodTypeAny {\n const clone = Object.create(value);\n const sourceMetadata = (value as unknown as Record<symbol, unknown>)[SCHEMA_METADATA];\n (clone as unknown as Record<symbol, unknown>)[SCHEMA_METADATA] =\n sourceMetadata && typeof sourceMetadata === 'object' ? { ...(sourceMetadata as Record<string, unknown>) } : {};\n return clone as z.ZodTypeAny;\n}\n\n/**\n * Apply `.isBusinessKey()` to each named field on a ZodObject and return a\n * new ZodObject with the same shape but the named fields re-decorated.\n *\n * Fail-loud: if a name does not exist on the schema's shape, throw with the\n * full `baseResourceType` + `parentResourceType` context. This catches\n * authoring mistakes (e.g., typo'd field name, or a `businessKeyFields`\n * list that references a field that exists on the base but was renamed by\n * `polymorphicVariants` — the post-rename name is the canonical one).\n *\n * Always returns a fresh `z.object(...)` wrapper — even on the no-op path\n * (`fieldNames.length === 0`) — so callers never observe an aliased input\n * reference (low-risk consistency, see Plan 1 review L-2).\n *\n * Cross-variant leak defence: every field that needs a marker is piped\n * through `cloneFieldForBusinessKeyDecoration(...)` first — see that\n * helper's JSDoc for the full rationale. Without it, an explicit\n * `businessKeyFields` referencing a base-shape field on Variant 1 would\n * silently bleed onto every subsequent variant.\n *\n * **Outer-level metadata contract (Plan 1 deep-review M-2, 2026-04-14)**:\n * because we always return a fresh `z.object(newShape)`, any **outer-level**\n * metadata on the input `schema` (i.e., decorators applied to the OBJECT\n * itself rather than its fields — e.g., a future `addDecorators(zObject,\n * [...])` call setting `bag[ZodDecorator.X]` on the ZodObject) would be\n * silently dropped. Every current call site (lines 333 / 347 / 408) feeds\n * us a fresh `applyFkRenames(...)` output which itself is `z.object(...)`\n * with no outer-level metadata, so this is invisible today. The defensive\n * check below FAILS LOUDLY if a future caller violates this assumption,\n * forcing the change to either (a) propagate the outer metadata explicitly\n * or (b) document why it's safe to drop.\n *\n * @param schema The post-injection, post-rename variant ZodObject.\n * @param fieldNames Field names (post-rename) to mark with `.isBusinessKey()`.\n * @param baseResourceType For error context (the polymorphic base name).\n * @param parentResourceType For error context (the variant's parent type).\n *\n * @throws If the input schema carries outer-level metadata that would be\n * silently lost by the fresh-wrapper rebuild — see contract note above.\n */\nfunction applyBusinessKeyMarkers(\n schema: z.ZodObject<z.ZodRawShape>,\n fieldNames: string[],\n baseResourceType: string,\n parentResourceType: ResourceType,\n): z.ZodObject<z.ZodRawShape> {\n // Outer-level metadata guard — see JSDoc \"Outer-level metadata contract\".\n // We deliberately do NOT propagate outer metadata onto the new wrapper\n // because no current call site needs it; instead we fail loud so the next\n // caller that DOES need it has to make a deliberate design decision.\n const outerMetadata = getFieldMetadata(schema);\n if (outerMetadata && Object.keys(outerMetadata).length > 0) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\" parentResourceType=\"${parentResourceType}\": ` +\n `applyBusinessKeyMarkers received a ZodObject with outer-level metadata ` +\n `(keys: [${Object.keys(outerMetadata).join(', ')}]). The function rebuilds ` +\n `the wrapper via z.object(...), which would silently drop those entries. ` +\n `Either remove the outer metadata before calling, or extend this helper ` +\n `to propagate it (and add a regression test). See JSDoc \"Outer-level ` +\n `metadata contract\" for the full rationale.`,\n );\n }\n\n const shape = getZodObjectShape(schema) as Record<string, z.ZodTypeAny>;\n\n if (fieldNames.length === 0) {\n return z.object({ ...shape }) as z.ZodObject<z.ZodRawShape>;\n }\n\n for (const fieldName of fieldNames) {\n if (!Object.prototype.hasOwnProperty.call(shape, fieldName)) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\" parentResourceType=\"${parentResourceType}\": ` +\n `businessKeyFields references field \"${fieldName}\" but the post-injection variant shape has no such field. ` +\n `Available fields: [${Object.keys(shape).join(', ')}]. ` +\n `Note: businessKeyFields names refer to the POST-rename shape — if a field was renamed via polymorphicVariants ` +\n `(e.g., billingAccountId → organizationBillingAccountId), use the renamed name.`,\n );\n }\n }\n\n // A SINGLETON business key (exactly one field — the injected scope FK, e.g.\n // `organizationId` / `applicationId`; the only polymorphic business-key case\n // that exists today) is enforced DB-UNIQUE, not merely marked. `.isBusinessKey()`\n // is a PURE marker with no index (unlike `.isPrimaryKey()`), so without an\n // explicit `.isUnique()` the one-per-scope invariant is unenforced at the DB\n // layer: a raced `createAsSystem` / plain insert can write two rows for the same\n // scope, silently breaking the singleton AND the `upsertByBusinessKey` contract,\n // which ASSUMES the business key uniquely identifies a row. A single-field\n // `.isUnique()` on the scope FK compiles to a Mongo unique index (via the\n // zod→mongoose convertor's `isUnique` path) so a second concurrent insert fails\n // closed with a duplicate-key error instead of duplicating. Mirrors the\n // non-polymorphic singleton pattern (`organizationId: z.string().min(1)\n // .isDBIndexed().isUnique().isForeignKey()` on `organizationPreferences` /\n // `organizationNotifications`).\n //\n // A COMPOSITE business key (>1 field — none exist today) is deliberately left\n // marker-only here: applying per-field `.isUnique()` would wrongly require each\n // field to be INDEPENDENTLY unique rather than the tuple. Composite DB uniqueness\n // is the object-level `.businessKeySet([...])` decorator's job (the convertor\n // materialises it as a compound unique index via `applyBusinessKeyCompoundUniqueIndex`).\n const businessKeyDecorators = fieldNames.length === 1\n ? [ZodDecorator.IS_BUSINESS_KEY, ZodDecorator.IS_UNIQUE]\n : [ZodDecorator.IS_BUSINESS_KEY];\n\n const newShape: Record<string, z.ZodTypeAny> = {};\n for (const [key, value] of Object.entries(shape)) {\n newShape[key] = fieldNames.includes(key)\n ? addDecorators(cloneFieldForBusinessKeyDecoration(value), businessKeyDecorators)\n : value;\n }\n\n return z.object(newShape) as z.ZodObject<z.ZodRawShape>;\n}\n"]}
1
+ {"version":3,"file":"resource-polymorphism.schemas.js","sourceRoot":"","sources":["../../../../../src/resources/utils/resource-polymorphism.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Resource Polymorphism — Schema Declaration (Phase 1)\n *\n * Provides `declarePolymorphicSchemas()` which takes a base schema and a list\n * of parent variant definitions, and produces a `PolymorphicSchemaDeclaration`\n * containing pre-computed schemas for each variant (base + injected parent FK).\n *\n * Supports both plain `z.ZodObject` and `SchemaFamily` as base schema input.\n *\n * @see polymorphic-scope-approach-A-expansion.md — Phase 1\n */\n\nimport { z } from 'zod';\nimport { getZodObjectShape, addDiscriminator, getPolymorphicFkVariants, addDecorators, ZodDecorator, SCHEMA_METADATA, getFieldMetadata } from '@wildo-ai/zod-decorators';\nimport { ResourcePolymorphismUtils, type PolymorphicParentVariantDefinition, type PolymorphicVariantNaming } from './resource-polymorphism.utils';\nimport type { SchemaFamily, EnumLikeType, VariantConfig } from './schema-family-builder.utils';\nimport type { ResourceConfiguration_InheritanceSchemaDefinition } from '../resources-config.shared.schemas';\nimport type { ResourceType } from '../resources.shared.core.definitions';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * @wildo_source:part:start saas.models.polymorphism.variant-definition facet:layer:shared facet:family:polymorphism\n *\n * One entry in the variant list passed to `declarePolymorphicSchemas()` (from\n * `@wildo-ai/saas-models`) — describes ONE scope a polymorphic resource is\n * stamped out for. Besides the two fields below it also carries the inherited\n * `parentResourceType` (the scope entity — e.g. ORGANIZATIONS / APPLICATION /\n * USERS) and `parentFieldIdentifier` (the scope FK the engine injects into the\n * variant schema — e.g. `organizationId` / `applicationId`). The\n * `isPrimaryScope` + `businessKeyFields` pair is the SINGLETON-vs-MULTI-ROW\n * decision: a singleton scope FK becomes a one-per-scope unique business key; a\n * multi-row (collection) resource must opt out via `optOutPolymorphicAutoBusinessKey`.\n */\nexport interface PolymorphicVariantDefinition extends PolymorphicParentVariantDefinition {\n /**\n * Whether this variant's parent is a primary scope entity.\n * - `true`: identity field injected (e.g., `organizationId`), authorization scope-aware\n * - `false`: parent FK injected (e.g., `projectId`), scope inherited from parent chain\n */\n isPrimaryScope: boolean;\n\n /**\n * Optional per-variant business-key declaration.\n *\n * The polymorphism engine cannot honour `.isBusinessKey()` on the base\n * schema for fields that don't yet exist there (the canonical case being\n * a polymorphic singleton whose business key is the *injected* parent FK\n * — `organizationId` for the ORG variant, `applicationId` for the APP\n * variant). This field gives the variant declaration a place to mark\n * those fields per-variant.\n *\n * Resolution rule:\n *\n * 1. If `businessKeyFields` is provided (including an empty array `[]`\n * to *opt out*), apply `.isBusinessKey()` to each named field on the\n * final variant shape. Fail-loud if a name does not exist on the\n * variant shape.\n * 2. Else if `isPrimaryScope: true` and `businessKeyFields` is omitted,\n * auto-mark the injected `parentFieldIdentifier` as the business key\n * (the singleton-per-scope convention).\n * 3. Else (no explicit declaration AND not a primary scope), no\n * business-key marking is added — the framework's pre-A4 behaviour is\n * preserved for non-singleton polymorphism.\n *\n * DB UNIQUENESS: when the resolved business key is a SINGLE field (the\n * singleton case — branch 2, or a one-field branch-1 list), that field is ALSO\n * stamped `.isUnique()`, compiling to a Mongo unique index that enforces\n * one-row-per-scope at the DB layer. `.isBusinessKey()` alone is a PURE marker\n * with no index, so without this a raced insert (e.g. a system lazy-create on\n * two concurrent logins) could duplicate the singleton row. A COMPOSITE\n * (>1-field) business key stays marker-only — declare an object-level\n * `.businessKeySet([...])` for a compound unique index instead. Consequence: a\n * forgotten opt-out on a MULTI-ROW resource is now a hard duplicate-key insert\n * failure (see `optOutPolymorphicAutoBusinessKey`), not just silent\n * `upsertByBusinessKey` misrouting.\n *\n * Field names refer to the **post-injection, post-rename** shape — i.e.,\n * what the field is actually called on the variant schema after\n * polymorphic FK injection and any `polymorphicVariants`-driven renames\n * (e.g., `billingAccountId` → `organizationBillingAccountId`). This is\n * the shape the consumer of `variants[parentResourceType].schema` reads.\n */\n businessKeyFields?: string[];\n}\n/** @wildo_source:part:end saas.models.polymorphism.variant-definition */\n\n/**\n * @wildo_source:part:start saas.models.polymorphism.optout-business-key facet:layer:shared facet:family:polymorphism\n *\n * Opt out the auto-default that marks the injected `parentFieldIdentifier`\n * as the business key on every `isPrimaryScope: true` variant.\n *\n * Use this on **non-singleton** polymorphic resources (e.g., delivery logs,\n * SSO connections, SIEM DLQ rows, SCIM tokens, billing usage records, credit\n * pools, subscriptions, invoice refs) where the parent FK alone does NOT\n * uniquely identify a row in the collection. Without this opt-out, the\n * polymorphism engine auto-marks the injected scope FK (`organizationId` /\n * `applicationId` / etc.) as the business key. On a multi-row resource that is\n * now TWO bugs, not one:\n * 1. any `upsertByBusinessKey()` call routes every row in the scope onto a\n * single document (silent data corruption); AND\n * 2. the single-field business key is ALSO stamped `.isUnique()` (the\n * singleton ⇒ unique-index convention), so the SECOND row per scope is\n * rejected at insert with a duplicate-key error — a hard, immediate\n * failure. The resource is NOT a singleton, so both are wrong.\n * Opt out and both vanish: the scope FK stays a plain non-unique index with no\n * business-key marker.\n *\n * Contract:\n *\n * - Signature is **per-variant**: `(variantDef) => variantDef`. Apply it\n * to a whole variant array via the standard `Array.prototype.map`:\n * `[...AUTH_SCOPE_VARIANTS].map(optOutPolymorphicAutoBusinessKey)`.\n * Direct per-variant calls are also fine — useful when only one\n * variant in a heterogeneous array needs the opt-out.\n * - The result is a fresh `PolymorphicVariantDefinition` (or array\n * thereof) with `businessKeyFields: []` per variant (the canonical\n * \"explicit empty\" opt-out — the empty-array branch of the resolution rule\n * documented on `PolymorphicVariantDefinition.businessKeyFields`).\n * - **The helper UNCONDITIONALLY overwrites any pre-existing\n * `businessKeyFields` on the variant** — that is the entire point. If\n * you need to preserve / extend an existing composite key, do NOT pipe\n * through this helper; declare `businessKeyFields` inline on the\n * variant instead.\n *\n * Why a helper instead of inline `.map(v => ({ ...v, businessKeyFields: [] }))`:\n *\n * - Keeps the call-site one-line and self-documenting (the helper name IS\n * the rationale).\n * - Centralizes the `businessKeyFields: []` literal so a future rename or\n * semantic change has one source of truth, not eight inlined copies.\n * - Discoverable via `rg optOutPolymorphicAutoBusinessKey`.\n */\nexport function optOutPolymorphicAutoBusinessKey(\n variantDef: PolymorphicVariantDefinition,\n): PolymorphicVariantDefinition {\n return { ...variantDef, businessKeyFields: [] };\n}\n/** @wildo_source:part:end saas.models.polymorphism.optout-business-key */\n\n/**\n * A single resolved variant within a polymorphic declaration.\n * Contains all derived naming + the transformed schema.\n */\nexport interface PolymorphicResolvedVariant<TSchema extends z.ZodTypeAny = z.ZodTypeAny> {\n /** The parent resource type this variant is parented to */\n parentResourceType: ResourceType;\n /** The parent's field identifier (e.g., 'organizationId') */\n parentFieldIdentifier: string;\n /** Whether this variant's parent is a primary scope entity */\n isPrimaryScope: boolean;\n /** Derived variant resource type (e.g., 'organizationBillingAccounts') */\n resourceType: string;\n /** Derived variant field identifier (e.g., 'organizationBillingAccountId') */\n fieldIdentifier: string;\n /** Derived collection name (same as resourceType) */\n collectionName: string;\n /** Derived kebab-case route segment */\n routeSegment: string;\n /** Derived CONSTANT_CASE enum key */\n enumKey: string;\n /** Transformed schema: base schema + parent FK field injected */\n schema: TSchema;\n /** If baseSchema was a SchemaFamily, this holds the rebuilt family for this variant */\n schemaFamily?: SchemaFamily<z.ZodObject<z.ZodRawShape>, string, Record<string, VariantConfig<z.ZodObject<z.ZodRawShape>>>>;\n}\n\n/**\n * The output of `declarePolymorphicSchemas()`.\n * Contains the base declaration + pre-computed variants map.\n */\nexport interface PolymorphicSchemaDeclaration<TSchema extends z.ZodTypeAny = z.ZodTypeAny> {\n /** Marker for runtime type checking */\n __polymorphic: true;\n /** Base resource type (e.g., 'billingAccounts') — the abstract logical name */\n baseResourceType: string;\n /** Base field identifier (e.g., 'billingAccountId') */\n baseFieldIdentifier: string;\n /** Base CONSTANT_CASE enum key (e.g., 'BILLING_ACCOUNTS') */\n baseEnumKey: string;\n /** The original base schema (before variant transformation) */\n baseSchema: TSchema;\n /** The original variant definitions as provided by the developer */\n variantDefinitions: PolymorphicVariantDefinition[];\n /** Pre-computed map: parentResourceType → resolved variant (naming + transformed schema) */\n variants: Map<ResourceType, PolymorphicResolvedVariant<TSchema>>;\n}\n\n/**\n * Input configuration for `declarePolymorphicSchemas()`.\n */\nexport interface DeclarePolymorphicSchemasConfig<TSchema extends z.ZodTypeAny> {\n /** Base resource type (e.g., 'billingAccounts') */\n baseResourceType: string;\n /** Base field identifier (e.g., 'billingAccountId') */\n baseFieldIdentifier: string;\n /** Base CONSTANT_CASE enum key (e.g., 'BILLING_ACCOUNTS') */\n baseEnumKey: string;\n /**\n * Base schema — either a plain z.ZodObject or a SchemaFamily result.\n * Must NOT already contain identity fields (organizationId, userId, etc.) — they are injected per variant.\n */\n baseSchema: TSchema;\n /** Variant definitions — one per parent resource */\n variants: PolymorphicVariantDefinition[];\n}\n\n// =============================================================================\n// TYPE GUARDS\n// =============================================================================\n\n/**\n * Check if a value is a SchemaFamily (result of createSchemaFamily()).\n * Duck-types on the presence of `.union`, `.base`, `.discriminatorField`.\n */\nfunction isSchemaFamily(value: unknown): value is SchemaFamily<z.ZodObject<z.ZodRawShape>, string, Record<string, VariantConfig<z.ZodObject<z.ZodRawShape>>>> {\n if (!value || typeof value !== 'object') return false;\n const obj = value as Record<string, unknown>;\n return (\n 'union' in obj &&\n 'base' in obj &&\n 'discriminatorField' in obj &&\n 'variants' in obj &&\n 'inheritenceSchemaDefinition' in obj\n );\n}\n\n/**\n * Check if a schema is a ZodObject (has .shape).\n */\nfunction isZodObject(schema: z.ZodTypeAny): schema is z.ZodObject<z.ZodRawShape> {\n return schema instanceof z.ZodObject;\n}\n\n// =============================================================================\n// MAIN FUNCTION\n// =============================================================================\n\n/**\n * Declare polymorphic schemas for a base resource.\n *\n * For each variant definition, this function:\n * 1. Derives all naming identifiers using `ResourcePolymorphismUtils`\n * 2. Clones the base schema and injects the parent's field identifier as a new FK field\n * 3. If the base schema is a `SchemaFamily`, rebuilds the family per variant\n * 4. Returns a `PolymorphicSchemaDeclaration` with pre-computed variants\n *\n * @example\n * ```typescript\n * // Plain z.ZodObject base:\n * const billingDeclaration = declarePolymorphicSchemas({\n * baseResourceType: 'billingAccounts',\n * baseFieldIdentifier: 'billingAccountId',\n * baseEnumKey: 'BILLING_ACCOUNTS',\n * baseSchema: BillingAccountBaseSchema,\n * variants: [\n * { parentResourceType: 'organizations', parentFieldIdentifier: 'organizationId', isPrimaryScope: true },\n * { parentResourceType: 'users', parentFieldIdentifier: 'userId', isPrimaryScope: true },\n * ],\n * });\n *\n * // SchemaFamily base:\n * const subscriptionDeclaration = declarePolymorphicSchemas({\n * baseResourceType: 'subscriptions',\n * baseFieldIdentifier: 'subscriptionId',\n * baseEnumKey: 'SUBSCRIPTIONS',\n * baseSchema: SubscriptionSchemaFamily, // result of createSchemaFamily()\n * variants: [\n * { parentResourceType: 'organizations', parentFieldIdentifier: 'organizationId', isPrimaryScope: true },\n * ],\n * });\n * ```\n */\nexport function declarePolymorphicSchemas<TSchema extends z.ZodTypeAny>(\n config: DeclarePolymorphicSchemasConfig<TSchema>\n): PolymorphicSchemaDeclaration<TSchema> {\n const { baseResourceType, baseFieldIdentifier, baseEnumKey, baseSchema, variants: variantDefinitions } = config;\n\n // Validation: must have at least one variant\n if (variantDefinitions.length === 0) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\": must have at least one variant definition.`\n );\n }\n\n // Validation: no duplicate parentResourceType\n const parentTypes = variantDefinitions.map(v => v.parentResourceType);\n const uniqueParentTypes = new Set(parentTypes);\n if (uniqueParentTypes.size !== parentTypes.length) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\": duplicate parentResourceType in variant definitions.`\n );\n }\n\n // Derive naming for all variants\n const namingKit = ResourcePolymorphismUtils.getVariants(\n baseResourceType,\n baseFieldIdentifier,\n baseEnumKey,\n variantDefinitions.map(v => ({ parentResourceType: v.parentResourceType, parentFieldIdentifier: v.parentFieldIdentifier }))\n );\n\n // Determine the root ZodObject to validate and extend\n const rootZodObject = isSchemaFamily(baseSchema)\n ? (baseSchema as SchemaFamily<z.ZodObject<z.ZodRawShape>, string, Record<string, VariantConfig<z.ZodObject<z.ZodRawShape>>>>).base\n : isZodObject(baseSchema as z.ZodTypeAny) ? (baseSchema as unknown as z.ZodObject<z.ZodRawShape>) : null;\n\n // Validation: base schema must be a ZodObject or SchemaFamily\n if (!rootZodObject) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\": baseSchema must be a z.object() or a SchemaFamily (result of createSchemaFamily()). Got: ${typeof baseSchema}`\n );\n }\n\n // Validation: base schema should NOT already contain any of the parent FK fields\n const baseShape = getZodObjectShape(rootZodObject);\n for (const variantDef of variantDefinitions) {\n if (baseShape[variantDef.parentFieldIdentifier]) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\": baseSchema already contains field \"${variantDef.parentFieldIdentifier}\". ` +\n `The polymorphic declaration injects parent FK fields automatically — remove it from the base schema.`\n );\n }\n }\n\n // Pre-compute polymorphic FK renames from the base schema.\n // For each field in the base shape, check if it has `polymorphicVariants` metadata.\n // If so, build a map: fieldName → { parentResourceType → derivedFieldName }.\n const polymorphicFkRenames = computePolymorphicFkRenames(baseShape, variantDefinitions);\n\n // Build the variants map\n const variantsMap = new Map<ResourceType, PolymorphicResolvedVariant<TSchema>>();\n\n for (let i = 0; i < variantDefinitions.length; i++) {\n const variantDef = variantDefinitions[i]!;\n const naming = namingKit[i]!;\n\n // Create the parent FK field: z.string().min(1).isForeignKey().isDBIndexed()\n const parentFkField = z.string().min(1).isForeignKey().isDBIndexed();\n\n // Compute FK renames for this specific variant\n const fkRenamesForVariant = getFkRenamesForVariant(polymorphicFkRenames, variantDef.parentResourceType);\n\n // Compute the business-key field names for this variant (A4 hybrid —\n // explicit override wins; isPrimaryScope=true auto-defaults to the\n // injected parent FK; otherwise no marking). See JSDoc on\n // `PolymorphicVariantDefinition.businessKeyFields`.\n const businessKeyFieldNames = computeBusinessKeyFieldNames(variantDef);\n\n // Extend the schema with the parent FK field\n let variantSchema: z.ZodTypeAny;\n let variantSchemaFamily: SchemaFamily<z.ZodObject<z.ZodRawShape>, string, Record<string, VariantConfig<z.ZodObject<z.ZodRawShape>>>> | undefined;\n\n if (isSchemaFamily(baseSchema)) {\n const family = baseSchema as SchemaFamily<z.ZodObject<z.ZodRawShape>, string, Record<string, VariantConfig<z.ZodObject<z.ZodRawShape>>>>;\n\n // Extend the family's base schema with parent FK + apply FK renames\n // Cast needed: Zod 4's .extend() returns ZodObject<Readonly<...>> which is stricter than ZodRawShape\n let extendedBase = family.base.extend({\n [variantDef.parentFieldIdentifier]: parentFkField,\n }) as z.ZodObject<z.ZodRawShape>;\n extendedBase = applyFkRenames(extendedBase, fkRenamesForVariant);\n extendedBase = applyBusinessKeyMarkers(\n extendedBase,\n businessKeyFieldNames,\n baseResourceType,\n variantDef.parentResourceType,\n );\n\n // Rebuild each variant schema with the parent FK injected + FK renames\n const extendedVariants: Record<string, z.ZodObject<z.ZodRawShape>> = {};\n for (const [key, variantSchemaEntry] of Object.entries(family.variants)) {\n let extended = (variantSchemaEntry as z.ZodObject<z.ZodRawShape>).extend({\n [variantDef.parentFieldIdentifier]: parentFkField,\n }) as z.ZodObject<z.ZodRawShape>;\n extended = applyFkRenames(extended, fkRenamesForVariant);\n extended = applyBusinessKeyMarkers(\n extended,\n businessKeyFieldNames,\n baseResourceType,\n variantDef.parentResourceType,\n );\n extendedVariants[key] = extended;\n }\n\n // Rebuild the discriminated union with parent FK in all branches\n // Use addDiscriminator() to preserve isDiscriminator metadata (matching createSchemaFamily behavior)\n const allUnionSchemas: z.ZodObject<z.ZodRawShape>[] = [];\n\n // Base value schemas (base + parent FK + decorated discriminator)\n for (const baseValue of family.baseValues) {\n const baseWithDiscriminator = extendedBase.extend({\n [family.discriminatorField]: addDiscriminator(z.literal(baseValue), { baseValues: family.baseValues }),\n });\n allUnionSchemas.push(baseWithDiscriminator as z.ZodObject<z.ZodRawShape>);\n }\n\n // Extended variant schemas — re-decorate discriminator to ensure metadata is preserved\n for (const [variantKey, extendedVariantSchema] of Object.entries(extendedVariants)) {\n allUnionSchemas.push(\n extendedVariantSchema.extend({\n [family.discriminatorField]: addDiscriminator(z.literal(variantKey), { baseValues: family.baseValues }),\n }) as z.ZodObject<z.ZodRawShape>\n );\n }\n\n // Create the union\n let union: z.ZodTypeAny;\n if (allUnionSchemas.length >= 2) {\n union = z.discriminatedUnion(\n family.discriminatorField,\n allUnionSchemas as any\n );\n } else if (allUnionSchemas.length === 1) {\n union = allUnionSchemas[0]!;\n } else {\n union = extendedBase;\n }\n\n // Build the rebuilt SchemaFamily for this variant\n variantSchemaFamily = {\n base: extendedBase as z.ZodObject<z.ZodRawShape>,\n discriminatorField: family.discriminatorField,\n baseValues: family.baseValues,\n variants: extendedVariants as any,\n union,\n inheritenceSchemaDefinition: family.inheritenceSchemaDefinition,\n };\n\n // The main schema for the resource config is the union\n variantSchema = union;\n } else {\n // Plain ZodObject — simple extend + FK renames + business-key markers\n let extended = (rootZodObject as z.ZodObject<z.ZodRawShape>).extend({\n [variantDef.parentFieldIdentifier]: parentFkField,\n }) as z.ZodObject<z.ZodRawShape>;\n extended = applyFkRenames(extended, fkRenamesForVariant);\n extended = applyBusinessKeyMarkers(\n extended,\n businessKeyFieldNames,\n baseResourceType,\n variantDef.parentResourceType,\n );\n variantSchema = extended;\n }\n\n variantsMap.set(variantDef.parentResourceType, {\n parentResourceType: variantDef.parentResourceType,\n parentFieldIdentifier: variantDef.parentFieldIdentifier,\n isPrimaryScope: variantDef.isPrimaryScope,\n resourceType: naming.resourceType,\n fieldIdentifier: naming.fieldIdentifier,\n collectionName: naming.collectionName,\n routeSegment: naming.routeSegment,\n enumKey: naming.enumKey,\n schema: variantSchema as TSchema,\n ...(variantSchemaFamily ? { schemaFamily: variantSchemaFamily } : {}),\n });\n }\n\n return {\n __polymorphic: true,\n baseResourceType,\n baseFieldIdentifier,\n baseEnumKey,\n baseSchema,\n variantDefinitions,\n variants: variantsMap,\n };\n}\n\n// =============================================================================\n// FK RENAME HELPERS\n// =============================================================================\n\n/** Map of original field name → per-parentResourceType derived field name */\ntype PolymorphicFkRenameMap = Map<string, Map<string, string>>;\n\n/**\n * Scan the base schema shape for fields with `polymorphicVariants` metadata.\n * Build a rename map: originalFieldName → { parentResourceType → derivedFieldName }.\n */\nfunction computePolymorphicFkRenames(\n baseShape: Record<string, z.ZodTypeAny>,\n variantDefinitions: PolymorphicVariantDefinition[],\n): PolymorphicFkRenameMap {\n const renames: PolymorphicFkRenameMap = new Map();\n\n for (const [fieldName, fieldSchema] of Object.entries(baseShape)) {\n const fkVariants = getPolymorphicFkVariants(fieldSchema);\n if (!fkVariants || fkVariants.length === 0) continue;\n\n const fieldRenames = new Map<string, string>();\n\n for (const variantDef of variantDefinitions) {\n const matchingFkVariant = fkVariants.find(\n fkv => fkv.parentResourceType === variantDef.parentResourceType\n );\n if (matchingFkVariant) {\n const derivedName = ResourcePolymorphismUtils.deriveVariantFieldIdentifier(\n matchingFkVariant.parentFieldIdentifier,\n fieldName,\n );\n fieldRenames.set(variantDef.parentResourceType, derivedName);\n }\n }\n\n if (fieldRenames.size > 0) {\n renames.set(fieldName, fieldRenames);\n }\n }\n\n return renames;\n}\n\n/**\n * Get the FK renames applicable for a specific parent resource type.\n * Returns an array of [originalFieldName, derivedFieldName] pairs.\n */\nfunction getFkRenamesForVariant(\n renameMap: PolymorphicFkRenameMap,\n parentResourceType: string,\n): [string, string][] {\n const result: [string, string][] = [];\n for (const [originalName, perParent] of renameMap) {\n const derived = perParent.get(parentResourceType);\n if (derived) {\n result.push([originalName, derived]);\n }\n }\n return result;\n}\n\n/**\n * Compute the per-variant renamed schema map for a polymorphic base.\n *\n * Exported as the canonical bridge that callers OUTSIDE this module\n * (notably the frontend lib's `createPolymorphicFrontendPreset`, which\n * threads a `FRONTEND_SCHEMA_KEY` per variant for `z_clone`-style UI\n * mutations) use to derive per-variant schemas without having to reach\n * into the private rename helpers.\n *\n * Given a base schema and an array of variant declarations, returns\n * `Map<parentResourceType, ZodObject>` where each value is the base\n * schema with `polymorphicVariants`-marked FK fields renamed to their\n * variant-specific names (e.g. `billingAccountId` →\n * `organizationBillingAccountId` for the ORGANIZATIONS variant).\n *\n * Why this matters: the polymorphic resource factory ALREADY applies\n * these renames to the runtime variant schemas (see `applyFkRenames`\n * call sites above). But callers that take the BASE schema as input\n * and attach it to per-variant artifacts (e.g. the frontend's UI\n * behavior `FRONTEND_SCHEMA_KEY`) bypass the rename and end up\n * replacing the variant's renamed `mainSchema` with the base's\n * un-renamed shape — breaking the registry's FK→parent map. Use this\n * helper to keep that path aligned with the resource factory's\n * rename semantics.\n *\n * `variants` only needs `parentResourceType`; any extra properties on\n * the input objects are ignored. This lets frontend callers pass\n * `PolymorphicFrontendVariant`-shaped values directly without\n * reaching for the backend's full `PolymorphicVariantDefinition`.\n */\nexport function computePolymorphicVariantSchemas(\n baseSchema: z.ZodObject<z.ZodRawShape>,\n variants: ReadonlyArray<{ parentResourceType: string }>,\n): Map<string, z.ZodObject<z.ZodRawShape>> {\n const baseShape = getZodObjectShape(baseSchema) as Record<string, z.ZodTypeAny>;\n // Synthesize minimal variantDefinitions for the renames computer — only\n // `parentResourceType` is read.\n const minimalDefs = variants.map(({ parentResourceType }) => ({\n parentResourceType,\n })) as unknown as PolymorphicVariantDefinition[];\n const renameMap = computePolymorphicFkRenames(baseShape, minimalDefs);\n\n const result = new Map<string, z.ZodObject<z.ZodRawShape>>();\n for (const { parentResourceType } of variants) {\n const renames = getFkRenamesForVariant(renameMap, parentResourceType);\n result.set(parentResourceType, applyFkRenames(baseSchema, renames));\n }\n return result;\n}\n\n/**\n * Apply FK renames to a ZodObject: remove original field, add derived field with same schema.\n */\nfunction applyFkRenames(\n schema: z.ZodObject<z.ZodRawShape>,\n renames: [string, string][],\n): z.ZodObject<z.ZodRawShape> {\n if (renames.length === 0) return schema;\n\n // Cast to mutable shape — getZodObjectShape may return Readonly in Zod 4\n const shape = getZodObjectShape(schema) as Record<string, z.ZodTypeAny>;\n const newShape: Record<string, z.ZodTypeAny> = {};\n\n for (const [key, value] of Object.entries(shape)) {\n const rename = renames.find(([orig]) => orig === key);\n if (rename) {\n newShape[rename[1]] = value;\n } else {\n newShape[key] = value;\n }\n }\n\n return z.object(newShape) as z.ZodObject<z.ZodRawShape>;\n}\n\n// =============================================================================\n// BUSINESS-KEY MARKER HELPERS (A4 hybrid — Decision A of\n// `.cursor/plans/polymorphic-singleton-business-key-support.md`)\n// =============================================================================\n\n/**\n * Resolve the per-variant business-key field names to mark with\n * `.isBusinessKey()` on the post-injection / post-rename variant shape.\n *\n * Resolution rule (A4 hybrid):\n *\n * 1. Explicit `businessKeyFields` (including `[]` to opt out) → use as-is.\n * 2. `isPrimaryScope: true` AND `businessKeyFields` omitted → auto-default\n * to `[parentFieldIdentifier]` (the canonical singleton-per-scope case).\n * 3. Otherwise → empty array (preserves pre-A4 behaviour for\n * non-singleton polymorphism — no business-key marking applied).\n *\n * Pure function — no schema mutation, no metadata access. Always returns a\n * fresh array (never the caller's `businessKeyFields` reference) so a later\n * mutation by the consumer cannot accidentally rewrite the variant\n * declaration.\n */\nfunction computeBusinessKeyFieldNames(variantDef: PolymorphicVariantDefinition): string[] {\n if (variantDef.businessKeyFields !== undefined) {\n return [...variantDef.businessKeyFields];\n }\n if (variantDef.isPrimaryScope) {\n return [variantDef.parentFieldIdentifier];\n }\n return [];\n}\n\n/**\n * Minimal prototype-based field clone, designed exclusively for the\n * `addDecorators(clone, [IS_BUSINESS_KEY])` flow inside\n * `applyBusinessKeyMarkers`. NOT a general-purpose schema clone — see\n * `z_clone` (in `@wildo-ai/zod-decorators`) for the full-featured version\n * that deep-clones metadata, reruns `addChainableMethods`, and is the\n * right choice when you need an INDEPENDENT leaf-schema reusable across\n * resources.\n *\n * **Why a separate helper rather than `z_clone`:**\n *\n * - `z_clone` deep-clones metadata and reruns `addChainableMethods`. For\n * the polymorphism engine — which clones a base-shape field once per\n * variant per call to `declarePolymorphicSchemas` — that's more work\n * than necessary, and reruns of `addChainableMethods` on schemas that\n * already have chainable methods are a net no-op (defends via\n * `__metadataWrapped` / `hasOwnProperty` checks).\n * - This helper keeps the contract MINIMAL and INTENTIONAL: only the\n * `SCHEMA_METADATA` Symbol property is given an own-property override\n * (a shallow copy of the source's metadata bag); everything else\n * (Zod 4's `_zod` internals, the prototype chain, instance methods, any\n * future Symbol-keyed framework state) is inherited by setting the\n * source schema as the clone's prototype. The result is structurally\n * indistinguishable from the source for Zod's own validation\n * (`isSchema(clone)` is `true` because `_zod` resolves via prototype\n * lookup), so the clone is safe to re-enter `z.object({...})` as a\n * field — but every metadata mutation lands on the clone alone.\n *\n * **Why a shallow copy of the metadata bag is sufficient HERE:**\n *\n * `applySingleDecorator` mutates only the top-level entries on the bag\n * (`bag[ZodDecorator.IS_BUSINESS_KEY] = true`, etc.). Nested decorator\n * payloads (e.g., `bag[FOREIGN_KEY_SPEC]`) are read-then-deep-merged into\n * a NEW object before being assigned back, so the existing nested\n * references are never mutated in place. For our single-decorator\n * `addDecorators(clone, [IS_BUSINESS_KEY])` call, a shallow copy of the\n * top-level bag is therefore enough to fully isolate the source.\n *\n * **Symbol-keyed properties OTHER than `SCHEMA_METADATA`** (Plan 1 deep-\n * review L-3, 2026-04-14): only `SCHEMA_METADATA` is shallow-copied as\n * an own property. If `addDecorators` ever evolves to mutate a different\n * Symbol-keyed property on the schema instance, this helper MUST be\n * updated to also override that property — otherwise the first mutation\n * on the clone would create an own property on the clone (correct) but\n * later reads on the source would observe stale state (the source's\n * Symbol value never changes). To future-proof, either (a) iterate\n * `Object.getOwnPropertySymbols(value)` and shallow-copy them all, or\n * (b) add a `addDecorators`-side invariant test that asserts\n * `SCHEMA_METADATA` is the only Symbol-keyed mutation surface.\n *\n * **Why this matters at all** — context: when\n * `declarePolymorphicSchemas` builds variants, `ZodObject.extend(...)`\n * creates a fresh wrapper but the base shape's inner field instances are\n * SHARED across every variant iteration. Mutating those shared leaves\n * directly via `addDecorators` would silently propagate the marker onto\n * sibling variants — even ones that explicitly omit the field or opt out\n * via `optOutPolymorphicAutoBusinessKey`. The clone breaks the share.\n */\nfunction cloneFieldForBusinessKeyDecoration(value: z.ZodTypeAny): z.ZodTypeAny {\n const clone = Object.create(value);\n const sourceMetadata = (value as unknown as Record<symbol, unknown>)[SCHEMA_METADATA];\n (clone as unknown as Record<symbol, unknown>)[SCHEMA_METADATA] =\n sourceMetadata && typeof sourceMetadata === 'object' ? { ...(sourceMetadata as Record<string, unknown>) } : {};\n return clone as z.ZodTypeAny;\n}\n\n/**\n * Apply `.isBusinessKey()` to each named field on a ZodObject and return a\n * new ZodObject with the same shape but the named fields re-decorated.\n *\n * Fail-loud: if a name does not exist on the schema's shape, throw with the\n * full `baseResourceType` + `parentResourceType` context. This catches\n * authoring mistakes (e.g., typo'd field name, or a `businessKeyFields`\n * list that references a field that exists on the base but was renamed by\n * `polymorphicVariants` — the post-rename name is the canonical one).\n *\n * Always returns a fresh `z.object(...)` wrapper — even on the no-op path\n * (`fieldNames.length === 0`) — so callers never observe an aliased input\n * reference (low-risk consistency, see Plan 1 review L-2).\n *\n * Cross-variant leak defence: every field that needs a marker is piped\n * through `cloneFieldForBusinessKeyDecoration(...)` first — see that\n * helper's JSDoc for the full rationale. Without it, an explicit\n * `businessKeyFields` referencing a base-shape field on Variant 1 would\n * silently bleed onto every subsequent variant.\n *\n * **Outer-level metadata contract (Plan 1 deep-review M-2, 2026-04-14)**:\n * because we always return a fresh `z.object(newShape)`, any **outer-level**\n * metadata on the input `schema` (i.e., decorators applied to the OBJECT\n * itself rather than its fields — e.g., a future `addDecorators(zObject,\n * [...])` call setting `bag[ZodDecorator.X]` on the ZodObject) would be\n * silently dropped. Every current call site (lines 333 / 347 / 408) feeds\n * us a fresh `applyFkRenames(...)` output which itself is `z.object(...)`\n * with no outer-level metadata, so this is invisible today. The defensive\n * check below FAILS LOUDLY if a future caller violates this assumption,\n * forcing the change to either (a) propagate the outer metadata explicitly\n * or (b) document why it's safe to drop.\n *\n * **The one outer decorator that IS propagated: `.businessKeySet([...])`**\n * (#1596). A many-rows-per-scope polymorphic resource whose identity is a\n * COMPOSITE of base fields — the inbound-delivery ledger's\n * `(sourceKey, dedupKey)` — declares it on the base object, and each variant\n * is its own table, so each variant must carry the compound unique index.\n * Dropping it would leave the dedup ledger with no index at all, which is the\n * exact silent loss this guard exists to stop; refusing it would leave a\n * polymorphic resource no way to declare a composite identity. So the set is\n * re-applied to the fresh wrapper, after checking every named field still\n * exists on the post-injection, post-rename shape (a renamed field would\n * otherwise produce an index over a column that does not exist). Every OTHER\n * outer key still fails loud, for the reason above.\n *\n * @param schema The post-injection, post-rename variant ZodObject.\n * @param fieldNames Field names (post-rename) to mark with `.isBusinessKey()`.\n * @param baseResourceType For error context (the polymorphic base name).\n * @param parentResourceType For error context (the variant's parent type).\n *\n * @throws If the input schema carries outer-level metadata that would be\n * silently lost by the fresh-wrapper rebuild — see contract note above.\n */\nfunction applyBusinessKeyMarkers(\n schema: z.ZodObject<z.ZodRawShape>,\n fieldNames: string[],\n baseResourceType: string,\n parentResourceType: ResourceType,\n): z.ZodObject<z.ZodRawShape> {\n // Outer-level metadata guard — see JSDoc \"Outer-level metadata contract\".\n // We deliberately do NOT propagate outer metadata onto the new wrapper\n // because no current call site needs it; instead we fail loud so the next\n // caller that DOES need it has to make a deliberate design decision.\n const outerMetadata = getFieldMetadata(schema);\n const propagatedBusinessKeySet = outerMetadata?.[ZodDecorator.OBJECT_BUSINESS_KEY_SET] as\n | { fields: string[]; skipRowsMissing?: string[]; conflictMessageReference?: string }\n | undefined;\n const unpropagatedOuterKeys = Object.keys(outerMetadata ?? {}).filter((key) => key !== ZodDecorator.OBJECT_BUSINESS_KEY_SET);\n if (unpropagatedOuterKeys.length > 0) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\" parentResourceType=\"${parentResourceType}\": ` +\n `applyBusinessKeyMarkers received a ZodObject with outer-level metadata ` +\n `(keys: [${unpropagatedOuterKeys.join(', ')}]). The function rebuilds ` +\n `the wrapper via z.object(...), which would silently drop those entries. ` +\n `Either remove the outer metadata before calling, or extend this helper ` +\n `to propagate it (and add a regression test). See JSDoc \"Outer-level ` +\n `metadata contract\" for the full rationale.`,\n );\n }\n\n const shape = getZodObjectShape(schema) as Record<string, z.ZodTypeAny>;\n\n if (propagatedBusinessKeySet) {\n const missingKeyFields = propagatedBusinessKeySet.fields.filter((field) => !Object.prototype.hasOwnProperty.call(shape, field));\n if (missingKeyFields.length > 0) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\" parentResourceType=\"${parentResourceType}\": ` +\n `the base object's businessKeySet names field(s) absent from the post-injection variant shape: ` +\n `[${missingKeyFields.join(', ')}]. A renamed field cannot carry a compound unique index under its old name.`,\n );\n }\n }\n const withPropagatedBusinessKeySet = (rebuilt: z.ZodObject<z.ZodRawShape>): z.ZodObject<z.ZodRawShape> =>\n propagatedBusinessKeySet\n ? addDecorators(rebuilt, [{ ref: ZodDecorator.OBJECT_BUSINESS_KEY_SET, params: { ...propagatedBusinessKeySet } }]) as unknown as z.ZodObject<z.ZodRawShape>\n : rebuilt;\n\n if (fieldNames.length === 0) {\n return withPropagatedBusinessKeySet(z.object({ ...shape }) as z.ZodObject<z.ZodRawShape>);\n }\n\n for (const fieldName of fieldNames) {\n if (!Object.prototype.hasOwnProperty.call(shape, fieldName)) {\n throw new Error(\n `[PolymorphicSchemas] baseResourceType=\"${baseResourceType}\" parentResourceType=\"${parentResourceType}\": ` +\n `businessKeyFields references field \"${fieldName}\" but the post-injection variant shape has no such field. ` +\n `Available fields: [${Object.keys(shape).join(', ')}]. ` +\n `Note: businessKeyFields names refer to the POST-rename shape — if a field was renamed via polymorphicVariants ` +\n `(e.g., billingAccountId → organizationBillingAccountId), use the renamed name.`,\n );\n }\n }\n\n // A SINGLETON business key (exactly one field — the injected scope FK, e.g.\n // `organizationId` / `applicationId`; the only polymorphic business-key case\n // that exists today) is enforced DB-UNIQUE, not merely marked. `.isBusinessKey()`\n // is a PURE marker with no index (unlike `.isPrimaryKey()`), so without an\n // explicit `.isUnique()` the one-per-scope invariant is unenforced at the DB\n // layer: a raced `createAsSystem` / plain insert can write two rows for the same\n // scope, silently breaking the singleton AND the `upsertByBusinessKey` contract,\n // which ASSUMES the business key uniquely identifies a row. A single-field\n // `.isUnique()` on the scope FK compiles to a Mongo unique index (via the\n // zod→mongoose convertor's `isUnique` path) so a second concurrent insert fails\n // closed with a duplicate-key error instead of duplicating. Mirrors the\n // non-polymorphic singleton pattern (`organizationId: z.string().min(1)\n // .isDBIndexed().isUnique().isForeignKey()` on `organizationPreferences` /\n // `organizationNotifications`).\n //\n // A COMPOSITE business key (>1 field — none exist today) is deliberately left\n // marker-only here: applying per-field `.isUnique()` would wrongly require each\n // field to be INDEPENDENTLY unique rather than the tuple. Composite DB uniqueness\n // is the object-level `.businessKeySet([...])` decorator's job (the convertor\n // materialises it as a compound unique index via `applyBusinessKeyCompoundUniqueIndex`).\n const businessKeyDecorators = fieldNames.length === 1\n ? [ZodDecorator.IS_BUSINESS_KEY, ZodDecorator.IS_UNIQUE]\n : [ZodDecorator.IS_BUSINESS_KEY];\n\n const newShape: Record<string, z.ZodTypeAny> = {};\n for (const [key, value] of Object.entries(shape)) {\n newShape[key] = fieldNames.includes(key)\n ? addDecorators(cloneFieldForBusinessKeyDecoration(value), businessKeyDecorators)\n : value;\n }\n\n return withPropagatedBusinessKeySet(z.object(newShape) as z.ZodObject<z.ZodRawShape>);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-polymorphism.utils.d.ts","sourceRoot":"","sources":["../../../../src/resources/utils/resource-polymorphism.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAMzE;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,sEAAsE;IACtE,kBAAkB,EAAE,YAAY,CAAC;IACjC,6DAA6D;IAC7D,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,2DAA2D;IAC3D,kBAAkB,EAAE,YAAY,CAAC;IACjC,6DAA6D;IAC7D,qBAAqB,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,eAAe,EAAE,MAAM,CAAC;IACxB,iGAAiG;IACjG,cAAc,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,qBAAa,yBAAyB;IAEpC;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,MAAM,GAAG,MAAM;IAI9D;;;;;;;;OAQG;IACH,MAAM,CAAC,yBAAyB,CAAC,qBAAqB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM;IAMjG;;;;;;;OAOG;IACH,MAAM,CAAC,4BAA4B,CAAC,qBAAqB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,MAAM;IAMvG;;;;;;OAMG;IACH,MAAM,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAMvF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,MAAM,CAAC,WAAW,CAChB,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,MAAM,EAC3B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,kCAAkC,EAAE,GACnD,wBAAwB,EAAE;CAgB9B"}
1
+ {"version":3,"file":"resource-polymorphism.utils.d.ts","sourceRoot":"","sources":["../../../../../src/resources/utils/resource-polymorphism.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAMzE;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,sEAAsE;IACtE,kBAAkB,EAAE,YAAY,CAAC;IACjC,6DAA6D;IAC7D,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,2DAA2D;IAC3D,kBAAkB,EAAE,YAAY,CAAC;IACjC,6DAA6D;IAC7D,qBAAqB,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,eAAe,EAAE,MAAM,CAAC;IACxB,iGAAiG;IACjG,cAAc,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,qBAAa,yBAAyB;IAEpC;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,MAAM,GAAG,MAAM;IAI9D;;;;;;;;OAQG;IACH,MAAM,CAAC,yBAAyB,CAAC,qBAAqB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM;IAMjG;;;;;;;OAOG;IACH,MAAM,CAAC,4BAA4B,CAAC,qBAAqB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,MAAM;IAMvG;;;;;;OAMG;IACH,MAAM,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAMvF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,MAAM,CAAC,WAAW,CAChB,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,MAAM,EAC3B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,kCAAkC,EAAE,GACnD,wBAAwB,EAAE;CAgB9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-subtree.utils.d.ts","sourceRoot":"","sources":["../../../../src/resources/utils/resource-subtree.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAqDlD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,oBAAoB,EAAE,GAAG,UAAU,CAWnF"}
1
+ {"version":3,"file":"resource-subtree.utils.d.ts","sourceRoot":"","sources":["../../../../../src/resources/utils/resource-subtree.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAqDlD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,oBAAoB,EAAE,GAAG,UAAU,CAWnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"resources-config-context-needs.utils.d.ts","sourceRoot":"","sources":["../../../../src/resources/utils/resources-config-context-needs.utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,0CAA0C,EAAE,8CAA8C,EAAE,MAAM,oCAAoC,CAAC;AAErJ;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACnF,EAAE,EAAE,8CAA8C,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,SAAS,GACpF,0CAA0C,CAa5C;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAClF,EAAE,EAAE,8CAA8C,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,SAAS,GACpF,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAChF,EAAE,EAAE,8CAA8C,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,SAAS,GACpF,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,SAAS;IAC9D,gBAAgB,CAAC,EAAE,8CAA8C,CAAC,GAAG,CAAC,CAAC;IACvE,oBAAoB,CAAC,EAAE,8CAA8C,CAAC,GAAG,CAAC,CAAC;CAC5E,EAAE,SAAS,EAAE,UAAU,GAAG,0CAA0C,CAQpE"}
1
+ {"version":3,"file":"resources-config-context-needs.utils.d.ts","sourceRoot":"","sources":["../../../../../src/resources/utils/resources-config-context-needs.utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,0CAA0C,EAAE,8CAA8C,EAAE,MAAM,oCAAoC,CAAC;AAErJ;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACnF,EAAE,EAAE,8CAA8C,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,SAAS,GACpF,0CAA0C,CAa5C;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAClF,EAAE,EAAE,8CAA8C,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,SAAS,GACpF,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAChF,EAAE,EAAE,8CAA8C,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,SAAS,GACpF,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,SAAS;IAC9D,gBAAgB,CAAC,EAAE,8CAA8C,CAAC,GAAG,CAAC,CAAC;IACvE,oBAAoB,CAAC,EAAE,8CAA8C,CAAC,GAAG,CAAC,CAAC;CAC5E,EAAE,SAAS,EAAE,UAAU,GAAG,0CAA0C,CAQpE"}
@@ -9,6 +9,21 @@ export declare class ResourcesConfigNamingUtils {
9
9
  * This is a reliable implementation covering most common cases
10
10
  */
11
11
  static singularize(word: string): string;
12
+ /**
13
+ * The singular nouns whose plural changes `f` / `fe` to `ves`. Deliberately SMALL and closed:
14
+ * everything else ending in `f` or `fe` takes a plain `s`, which is the common case in the
15
+ * identifiers this framework derives (`…Ref`, `…Proof`). Shared by `pluralize` and `singularize`
16
+ * so the two directions cannot disagree about which words are exceptions.
17
+ */
18
+ private static readonly F_TO_VES_WORDS;
19
+ private static readonly FE_TO_VES_WORDS;
20
+ /**
21
+ * The last English word of a lower-cased identifier. Word boundaries are lost by lower-casing, so
22
+ * this matches a trailing exception word against the whole-string suffix instead: `bookshelf`
23
+ * yields `shelf`, `organizationinvoiceref` yields itself (no exception word is its suffix), and a
24
+ * `snake_case` or `kebab-case` tail is split on its separator.
25
+ */
26
+ private static lastWordOf;
12
27
  /**
13
28
  * Preserve the case pattern of the original word in the result
14
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"resources-config-naming.utils.d.ts","sourceRoot":"","sources":["../../../../../src/resources/utils/resources-config-naming.utils.ts"],"names":[],"mappings":"AAAA,qBAAa,0BAA0B;IAMnC;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA2DtC;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA0DxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAiB3B;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM;IAqB9D;;;;;;OAMG;IACH,MAAM,CAAC,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAW9D;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM;IAKtE;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM;IAiBvE;;;;;OAKG;IACH,MAAM,CAAC,yBAAyB,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM;IAiBzE;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,uBAAuB,EAAE,MAAM,GAAG,OAAO;IAIxE;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAAC,uBAAuB,EAAE,MAAM,GAAG,OAAO;IAQ1E;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQvC;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAMvC;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKxC;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQvC;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI1C;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI5C;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQ5C;;;OAGG;IACH,MAAM,CAAC,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAa3D;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAiBhD;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG;QAClD,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;KACzB;IAYD;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,eAAe,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM;CAalE"}
1
+ {"version":3,"file":"resources-config-naming.utils.d.ts","sourceRoot":"","sources":["../../../../../src/resources/utils/resources-config-naming.utils.ts"],"names":[],"mappings":"AAAA,qBAAa,0BAA0B;IAMnC;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAgEtC;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAwExC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAEnC;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAA2D;IAElG;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAiB3B;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM;IAqB9D;;;;;;OAMG;IACH,MAAM,CAAC,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAW9D;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM;IAKtE;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM;IAiBvE;;;;;OAKG;IACH,MAAM,CAAC,yBAAyB,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM;IAiBzE;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,uBAAuB,EAAE,MAAM,GAAG,OAAO;IAIxE;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAAC,uBAAuB,EAAE,MAAM,GAAG,OAAO;IAQ1E;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQvC;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAMvC;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKxC;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQvC;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI1C;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI5C;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQ5C;;;OAGG;IACH,MAAM,CAAC,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAa3D;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAiBhD;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG;QAClD,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;KACzB;IAYD;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,eAAe,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM;CAalE"}
@@ -35,19 +35,24 @@ export class ResourcesConfigNamingUtils {
35
35
  if (irregularPlurals[lowerWord]) {
36
36
  return this.preserveCase(word, irregularPlurals[lowerWord]);
37
37
  }
38
- // Words ending in 's', 'ss', 'sh', 'ch', 'x', 'z' add 'es'
39
- if (/[sxz]$/.test(lowerWord) || /[sh]$/.test(lowerWord) || /ch$/.test(lowerWord)) {
38
+ // Words ending in 's', 'ss', 'sh', 'ch', 'x', 'z' add 'es'. `sh`, not `[sh]`: a bare 'h'
39
+ // takes a plain 's' (`path` → `paths`, `month` → `months`).
40
+ if (/[sxz]$/.test(lowerWord) || /sh$/.test(lowerWord) || /ch$/.test(lowerWord)) {
40
41
  return word + 'es';
41
42
  }
42
43
  // Words ending in consonant + 'y' change 'y' to 'ies'
43
44
  if (/[bcdfghjklmnpqrstvwxz]y$/.test(lowerWord)) {
44
45
  return word.slice(0, -1) + 'ies';
45
46
  }
46
- // Words ending in 'f' or 'fe' change to 'ves'
47
- if (/f$/.test(lowerWord)) {
47
+ // `f → ves` is the English EXCEPTION, not the rule: `ref`, `proof`, `chef`, `roof`, `belief`
48
+ // and `safe` take a plain 's'. A blanket `/f$/` put `organizationInvoiceReves` and
49
+ // `workbenchMarketProoves` on the wire (#580). Only the closed list below changes form, and it
50
+ // is matched on the LAST camelCase word so a compound (`bookShelf`) behaves like its head noun.
51
+ const lastWord = ResourcesConfigNamingUtils.lastWordOf(lowerWord);
52
+ if (ResourcesConfigNamingUtils.F_TO_VES_WORDS.has(lastWord)) {
48
53
  return word.slice(0, -1) + 'ves';
49
54
  }
50
- if (/fe$/.test(lowerWord)) {
55
+ if (ResourcesConfigNamingUtils.FE_TO_VES_WORDS.has(lastWord)) {
51
56
  return word.slice(0, -2) + 'ves';
52
57
  }
53
58
  // Words ending in consonant + 'o' add 'es'
@@ -86,17 +91,30 @@ export class ResourcesConfigNamingUtils {
86
91
  if (/ies$/.test(lowerWord)) {
87
92
  return word.slice(0, -3) + 'y';
88
93
  }
89
- // Words ending in 'ves' change to 'f' or 'fe'
94
+ // 'ves' → 'f' / 'fe' ONLY for the closed exception list `pluralize` uses; every other 'ves'
95
+ // word just drops its 's' (`workbenchMarketAlternatives` → `…Alternative`, not `…Alternatif`).
90
96
  if (/ves$/.test(lowerWord)) {
91
- // Common words that end in 'fe' when singular
92
- const fWords = ['wives', 'knives', 'lives'];
93
- if (fWords.includes(lowerWord)) {
97
+ const lastWord = ResourcesConfigNamingUtils.lastWordOf(lowerWord).slice(0, -3);
98
+ if (ResourcesConfigNamingUtils.FE_TO_VES_WORDS.has(lastWord + 'fe')) {
94
99
  return word.slice(0, -3) + 'fe';
95
100
  }
96
- return word.slice(0, -3) + 'f';
101
+ if (ResourcesConfigNamingUtils.F_TO_VES_WORDS.has(lastWord + 'f')) {
102
+ return word.slice(0, -3) + 'f';
103
+ }
104
+ return word.slice(0, -1);
105
+ }
106
+ // '-ses' is ambiguous in English, and the naive "remove 'es'" turned `workbenchRoadmapPhases`
107
+ // into `…Phas`. A stem that itself ends in 's' (`classes`, `addresses`) or in 'us' (`buses`,
108
+ // `statuses`) drops 'es'; a vowel or n/l/r before 'se' (`phases`, `cases`, `databases`,
109
+ // `responses`, `licenses`, `courses`) marks a singular that ENDS in 'e', so only 's' goes.
110
+ if (/(sses|uses)$/.test(lowerWord)) {
111
+ return word.slice(0, -2);
112
+ }
113
+ if (/[aeionlr]ses$/.test(lowerWord)) {
114
+ return word.slice(0, -1);
97
115
  }
98
116
  // Words ending in 'ses', 'xes', 'zes', 'shes', 'ches' remove 'es'
99
- if (/[sxz]es$/.test(lowerWord) || /[sh]es$/.test(lowerWord) || /ches$/.test(lowerWord)) {
117
+ if (/[sxz]es$/.test(lowerWord) || /shes$/.test(lowerWord) || /ches$/.test(lowerWord)) {
100
118
  return word.slice(0, -2);
101
119
  }
102
120
  // Words ending in 'oes' remove 'es'
@@ -110,6 +128,33 @@ export class ResourcesConfigNamingUtils {
110
128
  // If doesn't match any pattern, return as is (might already be singular)
111
129
  return word;
112
130
  }
131
+ /**
132
+ * The singular nouns whose plural changes `f` / `fe` to `ves`. Deliberately SMALL and closed:
133
+ * everything else ending in `f` or `fe` takes a plain `s`, which is the common case in the
134
+ * identifiers this framework derives (`…Ref`, `…Proof`). Shared by `pluralize` and `singularize`
135
+ * so the two directions cannot disagree about which words are exceptions.
136
+ */
137
+ static F_TO_VES_WORDS = new Set([
138
+ 'calf', 'elf', 'half', 'leaf', 'loaf', 'self', 'sheaf', 'shelf', 'thief', 'wolf',
139
+ ]);
140
+ static FE_TO_VES_WORDS = new Set(['knife', 'life', 'wife']);
141
+ /**
142
+ * The last English word of a lower-cased identifier. Word boundaries are lost by lower-casing, so
143
+ * this matches a trailing exception word against the whole-string suffix instead: `bookshelf`
144
+ * yields `shelf`, `organizationinvoiceref` yields itself (no exception word is its suffix), and a
145
+ * `snake_case` or `kebab-case` tail is split on its separator.
146
+ */
147
+ static lastWordOf(lowerWord) {
148
+ const tail = lowerWord.split(/[_\-\s]/).pop() ?? lowerWord;
149
+ for (const candidate of [...ResourcesConfigNamingUtils.F_TO_VES_WORDS, ...ResourcesConfigNamingUtils.FE_TO_VES_WORDS]) {
150
+ if (tail.endsWith(candidate))
151
+ return candidate;
152
+ const plural = candidate.endsWith('fe') ? candidate.slice(0, -2) + 'ves' : candidate.slice(0, -1) + 'ves';
153
+ if (tail.endsWith(plural))
154
+ return plural;
155
+ }
156
+ return tail;
157
+ }
113
158
  /**
114
159
  * Preserve the case pattern of the original word in the result
115
160
  */