@wildo-ai/saas-models 1.1.0 → 1.1.2

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 (292) hide show
  1. package/dist/esm/applications/applications-context.schemas.d.ts +2 -0
  2. package/dist/esm/applications/applications-context.schemas.d.ts.map +1 -1
  3. package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts +1 -1
  4. package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts.map +1 -1
  5. package/dist/esm/billing/billing-account.shared.resources-config.schemas.js +36 -0
  6. package/dist/esm/billing/billing-account.shared.resources-config.schemas.js.map +1 -1
  7. package/dist/esm/billing/billing-account.shared.schemas.d.ts.map +1 -1
  8. package/dist/esm/billing/billing-account.shared.schemas.js +8 -1
  9. package/dist/esm/billing/billing-account.shared.schemas.js.map +1 -1
  10. package/dist/esm/billing/billing-types.shared.schemas.d.ts +2 -2
  11. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts +1 -1
  12. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts.map +1 -1
  13. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.js +39 -0
  14. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.js.map +1 -1
  15. package/dist/esm/billing/credit-pool.shared.schemas.d.ts +6 -6
  16. package/dist/esm/billing/credit-pool.shared.schemas.d.ts.map +1 -1
  17. package/dist/esm/billing/credit-pool.shared.schemas.js +8 -4
  18. package/dist/esm/billing/credit-pool.shared.schemas.js.map +1 -1
  19. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts +1 -1
  20. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts.map +1 -1
  21. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js +35 -0
  22. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js.map +1 -1
  23. package/dist/esm/billing/invoice-ref.shared.schemas.d.ts.map +1 -1
  24. package/dist/esm/billing/invoice-ref.shared.schemas.js +8 -3
  25. package/dist/esm/billing/invoice-ref.shared.schemas.js.map +1 -1
  26. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +1 -1
  27. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
  28. package/dist/esm/billing/subscription.shared.resources-config.schemas.js +39 -0
  29. package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
  30. package/dist/esm/billing/subscription.shared.schemas.d.ts +4 -4
  31. package/dist/esm/billing/subscription.shared.schemas.d.ts.map +1 -1
  32. package/dist/esm/billing/subscription.shared.schemas.js +6 -2
  33. package/dist/esm/billing/subscription.shared.schemas.js.map +1 -1
  34. package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts +1 -1
  35. package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts.map +1 -1
  36. package/dist/esm/billing/usage-record.shared.resources-config.schemas.js +39 -0
  37. package/dist/esm/billing/usage-record.shared.resources-config.schemas.js.map +1 -1
  38. package/dist/esm/billing/usage-record.shared.schemas.d.ts +4 -4
  39. package/dist/esm/billing/usage-record.shared.schemas.d.ts.map +1 -1
  40. package/dist/esm/billing/usage-record.shared.schemas.js +7 -3
  41. package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
  42. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
  43. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.js +35 -2
  44. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.js.map +1 -1
  45. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts +61 -0
  46. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts.map +1 -1
  47. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js +58 -0
  48. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js.map +1 -1
  49. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.d.ts.map +1 -1
  50. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js +14 -0
  51. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
  52. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts +49 -0
  53. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts.map +1 -1
  54. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.js +124 -1
  55. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.js.map +1 -1
  56. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts +11 -3
  57. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts.map +1 -1
  58. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js +11 -3
  59. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js.map +1 -1
  60. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts +93 -0
  61. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -0
  62. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js +116 -0
  63. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -0
  64. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts +67 -12
  65. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts.map +1 -1
  66. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js +95 -8
  67. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js.map +1 -1
  68. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts +21 -1
  69. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts.map +1 -1
  70. package/dist/esm/compliance/privacy/redaction.shared.schemas.js +20 -0
  71. package/dist/esm/compliance/privacy/redaction.shared.schemas.js.map +1 -1
  72. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts +2 -0
  73. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
  74. package/dist/esm/config/app-configuration-shared.shared.schemas.js +29 -0
  75. package/dist/esm/config/app-configuration-shared.shared.schemas.js.map +1 -1
  76. package/dist/esm/config/frontend/navigation.shared.schemas.d.ts +33 -0
  77. package/dist/esm/config/frontend/navigation.shared.schemas.d.ts.map +1 -1
  78. package/dist/esm/config/frontend/navigation.shared.schemas.js +32 -0
  79. package/dist/esm/config/frontend/navigation.shared.schemas.js.map +1 -1
  80. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +12 -1
  81. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts.map +1 -1
  82. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js +12 -1
  83. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
  84. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts +13 -0
  85. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts.map +1 -1
  86. package/dist/esm/external-data/external-data-pipeline.shared.schemas.js.map +1 -1
  87. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +6 -6
  88. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
  89. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +26 -6
  90. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js.map +1 -1
  91. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts.map +1 -1
  92. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js +0 -2
  93. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js.map +1 -1
  94. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +1 -0
  95. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts.map +1 -1
  96. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +4 -3
  97. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
  98. package/dist/esm/external-providers/provider-capability.shared.schemas.js +4 -3
  99. package/dist/esm/external-providers/provider-capability.shared.schemas.js.map +1 -1
  100. package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts +1 -1
  101. package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts.map +1 -1
  102. package/dist/esm/features/user-features.shared.resources-config.schemas.js +48 -0
  103. package/dist/esm/features/user-features.shared.resources-config.schemas.js.map +1 -1
  104. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts +144 -0
  105. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts.map +1 -0
  106. package/dist/esm/files/file-upload-grant.shared.schemas.js +136 -0
  107. package/dist/esm/files/file-upload-grant.shared.schemas.js.map +1 -0
  108. package/dist/esm/files/files.shared.schemas.d.ts +45 -4
  109. package/dist/esm/files/files.shared.schemas.d.ts.map +1 -1
  110. package/dist/esm/files/files.shared.schemas.js +48 -4
  111. package/dist/esm/files/files.shared.schemas.js.map +1 -1
  112. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts +1 -1
  113. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
  114. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.js +33 -0
  115. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.js.map +1 -1
  116. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.d.ts.map +1 -1
  117. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.js +6 -2
  118. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.js.map +1 -1
  119. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts +1 -1
  120. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts.map +1 -1
  121. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.js +53 -0
  122. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.js.map +1 -1
  123. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts +1 -1
  124. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts.map +1 -1
  125. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.js +43 -0
  126. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.js.map +1 -1
  127. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts.map +1 -1
  128. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js +8 -3
  129. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
  130. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts +1 -1
  131. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts.map +1 -1
  132. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.js +41 -0
  133. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.js.map +1 -1
  134. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts +0 -7
  135. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts.map +1 -1
  136. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.js +23 -13
  137. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.js.map +1 -1
  138. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts +1 -1
  139. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts.map +1 -1
  140. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.js +51 -0
  141. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.js.map +1 -1
  142. package/dist/esm/guidance/guidance-state.shared.schemas.d.ts.map +1 -1
  143. package/dist/esm/guidance/guidance-state.shared.schemas.js +8 -2
  144. package/dist/esm/guidance/guidance-state.shared.schemas.js.map +1 -1
  145. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts +1 -1
  146. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts.map +1 -1
  147. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.js +51 -0
  148. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.js.map +1 -1
  149. package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts.map +1 -1
  150. package/dist/esm/guidance/lifecycle-state.shared.schemas.js +28 -3
  151. package/dist/esm/guidance/lifecycle-state.shared.schemas.js.map +1 -1
  152. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts +1 -1
  153. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts.map +1 -1
  154. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.js +51 -0
  155. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.js.map +1 -1
  156. package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
  157. package/dist/esm/guidance/progression-state.shared.schemas.js +18 -4
  158. package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
  159. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts +37 -3
  160. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts.map +1 -1
  161. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js +29 -3
  162. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js.map +1 -1
  163. package/dist/esm/index.d.ts +6 -0
  164. package/dist/esm/index.d.ts.map +1 -1
  165. package/dist/esm/index.js +6 -0
  166. package/dist/esm/index.js.map +1 -1
  167. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts +70 -0
  168. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts.map +1 -0
  169. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.js +71 -0
  170. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.js.map +1 -0
  171. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts +1 -1
  172. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts.map +1 -1
  173. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js +36 -0
  174. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js.map +1 -1
  175. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts +1 -1
  176. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts.map +1 -1
  177. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js +44 -0
  178. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js.map +1 -1
  179. package/dist/esm/organizations/organization-members.shared.schemas.d.ts.map +1 -1
  180. package/dist/esm/organizations/organization-members.shared.schemas.js +15 -4
  181. package/dist/esm/organizations/organization-members.shared.schemas.js.map +1 -1
  182. package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
  183. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +18 -10
  184. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
  185. package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts.map +1 -1
  186. package/dist/esm/queue/jobs.shared.resources-config.schemas.js +17 -0
  187. package/dist/esm/queue/jobs.shared.resources-config.schemas.js.map +1 -1
  188. package/dist/esm/requests/websocket.shared.schemas.d.ts +59 -0
  189. package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
  190. package/dist/esm/requests/websocket.shared.schemas.js +103 -0
  191. package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
  192. package/dist/esm/resources/collection-query-parameters.shared.d.ts +22 -0
  193. package/dist/esm/resources/collection-query-parameters.shared.d.ts.map +1 -0
  194. package/dist/esm/resources/collection-query-parameters.shared.js +22 -0
  195. package/dist/esm/resources/collection-query-parameters.shared.js.map +1 -0
  196. package/dist/esm/resources/resources-config.shared.factory.d.ts.map +1 -1
  197. package/dist/esm/resources/resources-config.shared.factory.js +86 -13
  198. package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
  199. package/dist/esm/resources/resources-config.shared.schemas.d.ts +162 -41
  200. package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
  201. package/dist/esm/resources/resources-config.shared.schemas.js +109 -20
  202. package/dist/esm/resources/resources-config.shared.schemas.js.map +1 -1
  203. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts.map +1 -1
  204. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js +21 -6
  205. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js.map +1 -1
  206. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts +57 -0
  207. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts.map +1 -1
  208. package/dist/esm/security/authentications/authentication.shared.schemas.js +64 -0
  209. package/dist/esm/security/authentications/authentication.shared.schemas.js.map +1 -1
  210. package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts +17 -1
  211. package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts.map +1 -1
  212. package/dist/esm/security/authentications/consumable-token.shared.schemas.js +16 -0
  213. package/dist/esm/security/authentications/consumable-token.shared.schemas.js.map +1 -1
  214. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.d.ts +28 -0
  215. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.d.ts.map +1 -0
  216. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.js +28 -0
  217. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.js.map +1 -0
  218. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts +21 -0
  219. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts.map +1 -0
  220. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js +21 -0
  221. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js.map +1 -0
  222. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts +1 -1
  223. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
  224. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js +43 -0
  225. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js.map +1 -1
  226. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts +0 -8
  227. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts.map +1 -1
  228. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js +13 -4
  229. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
  230. package/dist/esm/security/authorizations/roles.shared.schemas.d.ts +16 -1
  231. package/dist/esm/security/authorizations/roles.shared.schemas.d.ts.map +1 -1
  232. package/dist/esm/security/authorizations/roles.shared.schemas.js +16 -1
  233. package/dist/esm/security/authorizations/roles.shared.schemas.js.map +1 -1
  234. package/dist/esm/security/authorizations/roles.shared.utils.d.ts +54 -0
  235. package/dist/esm/security/authorizations/roles.shared.utils.d.ts.map +1 -1
  236. package/dist/esm/security/authorizations/roles.shared.utils.js +59 -0
  237. package/dist/esm/security/authorizations/roles.shared.utils.js.map +1 -1
  238. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts +61 -0
  239. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts.map +1 -1
  240. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js +13 -1
  241. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js.map +1 -1
  242. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts +1 -1
  243. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts.map +1 -1
  244. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.js +35 -0
  245. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.js.map +1 -1
  246. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts.map +1 -1
  247. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js +7 -1
  248. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js.map +1 -1
  249. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts +1 -1
  250. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts.map +1 -1
  251. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js +34 -0
  252. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js.map +1 -1
  253. package/dist/esm/users/inbound-contacts.shared.schemas.d.ts.map +1 -1
  254. package/dist/esm/users/inbound-contacts.shared.schemas.js +7 -4
  255. package/dist/esm/users/inbound-contacts.shared.schemas.js.map +1 -1
  256. package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts +1 -1
  257. package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts.map +1 -1
  258. package/dist/esm/users/user-credentials.shared.resources-config.schemas.js +37 -0
  259. package/dist/esm/users/user-credentials.shared.resources-config.schemas.js.map +1 -1
  260. package/dist/esm/users/user-credentials.shared.schemas.d.ts.map +1 -1
  261. package/dist/esm/users/user-credentials.shared.schemas.js +17 -2
  262. package/dist/esm/users/user-credentials.shared.schemas.js.map +1 -1
  263. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts +1 -1
  264. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts.map +1 -1
  265. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.js +36 -0
  266. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.js.map +1 -1
  267. package/dist/esm/users/user-identity-links.shared.schemas.d.ts.map +1 -1
  268. package/dist/esm/users/user-identity-links.shared.schemas.js +15 -5
  269. package/dist/esm/users/user-identity-links.shared.schemas.js.map +1 -1
  270. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +1 -1
  271. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  272. package/dist/esm/users/user-preferences.shared.resources-config.schemas.js +53 -0
  273. package/dist/esm/users/user-preferences.shared.resources-config.schemas.js.map +1 -1
  274. package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts +1 -1
  275. package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  276. package/dist/esm/users/user-profiles.shared.resources-config.schemas.js +62 -0
  277. package/dist/esm/users/user-profiles.shared.resources-config.schemas.js.map +1 -1
  278. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +1 -1
  279. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  280. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js +53 -0
  281. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js.map +1 -1
  282. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts +1 -1
  283. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  284. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.js +62 -0
  285. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.js.map +1 -1
  286. package/dist/esm/users/users.shared.schemas.d.ts +19 -0
  287. package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
  288. package/dist/esm/users/users.shared.schemas.js +41 -16
  289. package/dist/esm/users/users.shared.schemas.js.map +1 -1
  290. package/dist/tsconfig.build.tsbuildinfo +1 -1
  291. package/package.json +5 -6
  292. package/dist/esm/.builder.pid +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"resources-config-operations.dtos-builder.utils.js","sourceRoot":"","sources":["../../../../../src/resources/utils/resources-config-operations.dtos-builder.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { ResourceType, CoreResourceOperation } from '../resources.shared.core.definitions';\nimport { ResourceConfiguration_ResourceRelationships, ResourceConfiguration_InheritanceSchemaDefinition, ResourceConfiguration_Operation, ResourceConfiguration, Resouces_BulkOperationBaseSchema, DataMode, OPERATION_VARIANT_KEY, Resouces_PaginationResponseMetadataSchema, createPaginationResponseMetadataSchema, getChildDirectionRelationships, getParentDirectionRelationships, AnyResourceConfiguration, ResourceGeneratedOperationKind } from '../resources-config.shared.schemas';\nimport {\n ResourceRelationshipCardinality,\n isOneToOneCardinality,\n isArrayCardinality,\n getDefaultResponseSchemaForOperation,\n isOutputEnvelopeOperation,\n operationShouldHaveRequestDto,\n DefaultBulkDeleteResponseSchema,\n ResourceRelationship,\n CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS,\n createOrUpdateMandatoryDiscardFields\n} from '../resources.shared.schemas';\nimport { Resources_SharedUtils } from '../resources.shared.utils';\nimport {\n ChildNestedReadConfig_Parsed,\n ChildNestedMutationConfig_Parsed,\n ChildNestedReadConfig,\n ChildNestedMutationConfig\n} from '../child-operations.shared.schemas';\nimport {\n addDiscriminator,\n getCustomFieldMetadata,\n ZodDecorator,\n EnumLikeType,\n getZodType,\n hasZodType,\n isZodObject,\n isZodArray,\n isZodOptional,\n isZodNullable,\n isZodDefault,\n toPatchOptionalField,\n getZodObjectShape,\n getZodDefSchemaProperty,\n getZodDefArrayProperty,\n getZodDefStringProperty,\n getZodDefProperty,\n isZodTypeAny,\n getEnumValues,\n isExcludedFromCreate,\n isExcludedFromUpdate,\n isVirtualField,\n isTemplatableFileField,\n isPrimaryKey,\n isBackendOnlyField,\n getBackendOnlyParams,\n isWriteOnlySecretField,\n isDiscriminatorField,\n unwrapSchema,\n getMergedObjectOrUnionShape,\n withArrayElement,\n SCHEMA_METADATA\n} from '@wildo-ai/zod-decorators';\nimport { ResourcesConfigNamingUtils } from './resources-config-naming.utils';\nimport { ResourcesSummaryUtils } from './resources-summary.utils';\nimport { RepositoryDtoBuilderUtils } from './repository-dto-builder.utils';\nimport {\n stripTemplatableFileFieldsRecursively as stripTemplatableFileFieldsSchema,\n} from './templatable-file-fields.shared.utils';\n\n/**\n * Canonical placeholder shown to clients in place of a `.isWriteOnlySecret()`\n * field's real value. It doubles as the write-back sentinel: when a client\n * echoes this exact string back on CREATE/UPDATE, the framework interprets it as\n * \"keep the existing stored secret\" and strips the field from the write payload\n * (UPDATE is a partial `$set`, so the stored value is preserved). Kept as a\n * single constant so the output mask and the input sentinel never drift.\n */\nexport const WRITE_ONLY_SECRET_MASK = '••••••••';\n\n/**\n * Type guard to check if schema is a ZodAny\n * In Zod v4, any schemas have type: \"any\"\n */\nfunction isZodAny(schema: z.ZodTypeAny): boolean {\n return hasZodType(schema, 'any');\n}\n\nexport class ResourcesConfigOperationsDtosBuilderUtils {\n /**\n * Carry field/schema decorators across a wrapper or leaf rebuild.\n *\n * Network-boundary coercion necessarily replaces Zod instances (`date` becomes\n * `coerce.date`, optional/nullable/default wrappers are rebuilt around transformed\n * children). Decorators such as `isBackendOnly` live on those instances. Losing\n * the metadata before the response-stripping pass turns a backend-only field into\n * an ordinary public field, which is a confidentiality failure rather than a\n * presentation defect.\n */\n private static preserveSchemaMetadata<TSchema extends z.ZodTypeAny>(\n source: z.ZodTypeAny,\n rebuilt: TSchema,\n ): TSchema {\n const sourceMetadata = (source as any)[SCHEMA_METADATA];\n if (sourceMetadata !== undefined) {\n (rebuilt as any)[SCHEMA_METADATA] = sourceMetadata;\n }\n return rebuilt;\n }\n\n static buildSchemaWithInheritance<TMainSchema extends z.ZodTypeAny>(\n mainSchema: TMainSchema,\n inheritanceDefinition: any,\n ): TMainSchema {\n return this.applyInheritanceToSchema(\n mainSchema,\n inheritanceDefinition,\n new Map(),\n );\n }\n\n /**\n * Rebuild an object schema, optionally preserving schema-level checks.\n *\n * DTO derivation frequently needs to rebuild object shapes for omission,\n * backend-only stripping, and date coercion. In Zod 4 those rebuilds would\n * otherwise discard `.refine()` / `.superRefine()` checks. Preserve them when\n * the field set stays semantically equivalent; skip them when fields were\n * omitted because the original cross-field logic may no longer be valid.\n */\n private static rebuildObjectSchema(\n schema: z.ZodObject<any>,\n rebuiltShape: Record<string, z.ZodTypeAny>,\n options?: {\n preserveChecks?: boolean;\n },\n ): z.ZodTypeAny {\n let rebuiltSchema: z.ZodTypeAny = z.object(rebuiltShape);\n if (options?.preserveChecks === false) {\n return rebuiltSchema;\n }\n\n const checks = getZodDefArrayProperty(schema, 'checks') as unknown[] | undefined;\n for (const check of checks ?? []) {\n rebuiltSchema = rebuiltSchema.check(check as never);\n }\n\n // Preserve decorator metadata (`SCHEMA_METADATA`) across shape-equivalent rebuilds.\n //\n // Factory helpers like `z_file()`, `z_money()`, `z_bigdecimal()` and `z_range()`\n // stamp their identity as a symbol-keyed metadata object on the *ZodObject\n // instance* (not on any inner field). A fresh `z.object(rebuiltShape)` is a new\n // instance, so that symbol is lost. When the field SET is unchanged — i.e. the\n // check-preserving path (date coercion, nested inner rebuilds) — the metadata\n // still describes the schema faithfully, so it MUST be carried over.\n //\n // Concretely: `z_file()`'s value is `z.object({ fileId, updatedAt: z.date() })`.\n // DTO date-coercion rewrites the inner `updatedAt` to `z.coerce.date()`, which\n // rebuilds the object here. Without re-attaching `fileConfig`, `getSchemaType()`\n // resolves the field to a plain OBJECT and the automated form renders it as a raw\n // `{ fileId, updatedAt }` composite instead of the file uploader — and\n // `collectUploadableFileFieldPaths()` finds nothing, so no upload endpoints are\n // derived. This was the root cause of avatar/file fields never rendering an\n // uploader (the \"first real file implementation\" gap).\n //\n // The omit path (`preserveChecks: false`, above) intentionally skips this: there\n // the field set changed, so the original field-type identity may no longer hold.\n const sourceMetadata = (schema as any)[SCHEMA_METADATA];\n if (sourceMetadata !== undefined) {\n (rebuiltSchema as any)[SCHEMA_METADATA] = sourceMetadata;\n }\n\n return rebuiltSchema;\n }\n\n /**\n * Omit fields from an object schema while staying compatible with Zod 4\n * refined objects.\n *\n * Zod 4 throws when `.omit()` is used on object schemas that already carry\n * schema-level checks (`.refine()` / `.superRefine()`). DTO derivation must\n * still be able to remove transport-managed fields from those schemas, so we\n * fall back to rebuilding the object shape and reapplying the existing checks.\n */\n private static omitObjectFields(\n schema: z.ZodObject<any>,\n omitObj: Record<string, true>,\n ): z.ZodTypeAny {\n if (Object.keys(omitObj).length === 0) {\n return schema;\n }\n\n try {\n return schema.omit(omitObj);\n } catch (error) {\n if (!(error instanceof Error) || !error.message.includes('containing refinements')) {\n throw error;\n }\n\n const originalShape = getZodObjectShape(schema);\n const rebuiltShape: Record<string, z.ZodTypeAny> = {};\n\n for (const [fieldName, fieldSchema] of Object.entries(originalShape)) {\n if (!omitObj[fieldName]) {\n rebuiltShape[fieldName] = fieldSchema as z.ZodTypeAny;\n }\n }\n\n return this.rebuildObjectSchema(schema, rebuiltShape, {\n preserveChecks: false,\n });\n }\n }\n\n private static stripTemplatableFileFieldsRecursively(schema: z.ZodTypeAny): z.ZodTypeAny {\n return stripTemplatableFileFieldsSchema(schema, {\n rebuildObjectSchema: (objectSchema, strippedShape) =>\n this.rebuildObjectSchema(objectSchema, strippedShape, { preserveChecks: false }),\n });\n }\n\n /**\n * Run a resource `mainSchema`'s TOP-LEVEL object checks (`.refine()` / `.superRefine()`) against a\n * fully-materialised row (post-enrichment) and return the ZodError, or null when the schema declares\n * no top-level check or all pass.\n *\n * This is the correct enforcement point for a cross-field invariant declared on a resource\n * `mainSchema`. A CREATE REQUEST cannot carry it: the request DTO omits every backend-injected field\n * (`primaryScope`, `organizationId`, `createdAt`, …), so a check referencing one — e.g. a file-scope\n * check keyed on `primaryScope` — would fire against an ABSENT value and reject a valid create. The\n * ENRICHED row (after context injection + literal / user-tracking population) carries every field, so\n * the check validates truthfully: a file-scope check passes on a consistent row, while a check on\n * create-supplied fields (a junction's `source ≠ target`) still rejects a bad row.\n *\n * The checks run in ISOLATION via a passthrough object, so no unrelated shape/coercion validation is\n * re-applied to the already-built row (its dates are `Date`s, its ids may be driver objects — none of\n * which a fresh full-schema parse should re-police here). Works whether `mainSchema` is a plain object\n * or a discriminated-union family — a schema with no top-level check simply returns null.\n */\n static validateTopLevelObjectChecks(mainSchema: z.ZodTypeAny, value: unknown): z.ZodError | null {\n const checks = getZodDefArrayProperty(mainSchema, 'checks') as unknown[] | undefined;\n if (!checks || checks.length === 0) {\n return null;\n }\n let checker: z.ZodTypeAny = z.looseObject({});\n for (const check of checks) {\n checker = (checker as z.ZodObject<any>).check(check as never);\n }\n const result = checker.safeParse(value);\n return result.success ? null : result.error;\n }\n\n /**\n * Rebuild all operation DTOs once the full registry is available.\n *\n * Resource factories only know about their own config at declaration time, so\n * nested child DTOs cannot be fully derived there. Registry startup is the\n * authoritative compilation boundary for operation DTOs.\n */\n static rebuildResourceConfigurationsOperationDtos(\n resourceConfigurations: Record<string, AnyResourceConfiguration>\n ): void {\n const resourceRegistry = new Map<ResourceType, AnyResourceConfiguration>(\n Object.entries(resourceConfigurations) as [ResourceType, AnyResourceConfiguration][]\n );\n\n for (const config of Object.values(resourceConfigurations)) {\n config.operations = config.operations.map((operation) =>\n this.buildAllOperationDtos(operation, config as AnyResourceConfiguration, resourceRegistry)\n );\n }\n }\n\n /**\n * Build all DTO variants for an operation.\n * This is the main entry point called by the factory.\n *\n * @param operation - Operation configuration\n * @param resourceConfig - Full resource configuration (for inheritance reference)\n * @param registry - Resource registry\n * @returns Operation with all DTOs pre-computed and stored\n */\n static buildAllOperationDtos<\n TCustomOperationEnum extends EnumLikeType | undefined,\n TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined,\n TMainSchema extends z.ZodTypeAny\n >(\n operation: ResourceConfiguration_Operation<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>,\n resourceConfig: ResourceConfiguration<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>,\n registry: Map<ResourceType, any>\n ): ResourceConfiguration_Operation<TCustomOperationEnum, TCoreOperationEnum, TMainSchema> {\n\n // 1. Apply inheritance to mainSchema (from resourceConfig.inheritenceSchemaDefinition)\n const inheritenceSchemaDefinition = resourceConfig.inheritenceSchemaDefinition;\n const enhancedMainSchema = (inheritenceSchemaDefinition\n ? this.applyInheritanceToSchema(operation.mainSchema, inheritenceSchemaDefinition, new Map())\n : operation.mainSchema) as TMainSchema;\n\n // Determine the effective operation identifier for DTO building\n const effectiveOperation = operation.resourceOperationLike || operation.operationIdentifier;\n\n // IMPORTANT: Temporary DTOs from factory are built from mainSchema WITHOUT inheritance.\n // buildEnhancedRequestDto/buildEnhancedResponseDto check for existing DTOs first and\n // return them if meaningful (line 330, 388), which would skip inheritance application.\n //\n // Strategy: Store original DTOs to detect custom ones, then clear temporary DTOs to force\n // rebuild from enhancedMainSchema (with inheritance). Custom DTOs will be preserved and\n // only have transformations applied (date coercion), while auto-derived DTOs will be\n // rebuilt with inheritance and transformations.\n //\n // Custom DTOs are detected by comparing the rebuilt DTO structure to the original.\n // If they're significantly different, we preserve the original (it's custom).\n // Otherwise, we use the rebuilt one (with inheritance).\n const originalRequestDto = operation.requestDto;\n const originalResponseDto = operation.responseDto;\n\n const operationWithEnhancedSchema = {\n ...operation,\n mainSchema: enhancedMainSchema,\n requestDto: undefined, // Clear to force rebuild with inheritance\n responseDto: undefined // Clear to force rebuild with inheritance\n };\n\n // 2. Build requestDto:\n // - Rebuild from enhancedMainSchema (with inheritance applied)\n // - If original was explicitly provided (custom), preserve it but apply transformations\n // - Otherwise use rebuilt DTO (with inheritance)\n // - Apply network-boundary coercion (dates + money bigints)\n // - Backend-only fields already excluded in buildEnhancedRequestDto\n let requestDto = this.buildEnhancedRequestDto(\n operationWithEnhancedSchema,\n effectiveOperation as string\n );\n\n // Check if original DTO was explicitly provided (custom DTO from variantParams.requestDto).\n const rebuiltRequestInfo = this.analyzeDtoSchema(requestDto);\n const originalRequestInfo = originalRequestDto ? this.analyzeDtoSchema(originalRequestDto) : null;\n\n // Custom-DTO classification is driven by the explicit `hasCustomRequestDto`\n // flag that the resource factory stamps on EVERY operation it builds:\n // • `true` → the variant supplied an explicit `requestDto`; preserve it\n // verbatim (it is a complete, author-owned contract — e.g. a narrow\n // `{ status }` for a CHANGE_STATUS custom operation).\n // • `false` → the requestDto is the factory's auto-derived *temporary*\n // placeholder, built from the base object via `deriveRequestDto` BEFORE\n // inheritance is known. So we MUST use the inheritance-rebuilt DTO —\n // which, for an inheritance resource (discriminated-union mainSchema via\n // `createSchemaFamily`), is the per-variant union. Preserving the bare\n // temporary here is what silently dropped variant-only fields\n // (e.g. todos `recurrence`/`startDate`/`endsDate`) from CREATE/UPDATE\n // request validation: `z.object` strips unknown keys, so a RECURRING\n // payload parsed but lost its extension fields — the request-side twin\n // of the RAW-mode LIST responseDto bug fixed just below.\n // Only when the flag is ABSENT (legacy / hand-authored operations that\n // predate the flag) do we fall back to the structural `analyzeDtoSchema`\n // heuristic — a base object always differs structurally from the rebuilt\n // union, so the heuristic alone cannot tell \"custom\" from \"auto-derived\n // inheritance DTO\".\n const hasExplicitCustomRequestDto = operation.hasCustomRequestDto === true;\n const isExplicitlyAutoDerivedRequestDto = operation.hasCustomRequestDto === false;\n const isCustomRequestDto = hasExplicitCustomRequestDto\n ? (originalRequestDto && !isZodAny(originalRequestDto))\n : isExplicitlyAutoDerivedRequestDto\n ? false\n : (originalRequestDto && originalRequestInfo &&\n originalRequestInfo !== rebuiltRequestInfo &&\n originalRequestInfo !== '📄 {} (empty object)' &&\n !isZodAny(originalRequestDto));\n\n if (isCustomRequestDto && originalRequestDto) {\n // Custom DTO: preserve structure but apply network-boundary coercion (dates + money bigints)\n requestDto = this.applyNetworkBoundaryCoercion(\n this.stripTemplatableFileFieldsRecursively(originalRequestDto)\n );\n } else if (operation.generatedOperation && originalRequestDto && !isZodAny(originalRequestDto)) {\n // Framework-generated operations own their DTO contract. In particular,\n // generated file regeneration is UPDATE-like for authorization and\n // persistence but intentionally accepts an empty request body.\n requestDto = this.applyNetworkBoundaryCoercion(\n this.stripTemplatableFileFieldsRecursively(originalRequestDto)\n );\n } else {\n // Auto-derived DTO: use rebuilt (with inheritance) and apply transformations\n requestDto = this.applyNetworkBoundaryCoercion(requestDto);\n }\n requestDto = this.stripTemplatableFileFieldsRecursively(requestDto);\n\n // 3. Build responseDto first (repositoryDto depends on it)\n // - Rebuild from enhancedMainSchema (with inheritance applied)\n // - If original was custom (significantly different), preserve it but apply transformations\n // - Otherwise use rebuilt DTO (with inheritance)\n // - Strip backend-only fields (except isReturnedAtCreation for CREATE)\n // - Apply network-boundary coercion (dates + money bigints)\n // - Exclude virtual fields (they're computed, not stored)\n let responseDtoInternal = this.buildEnhancedResponseDto(\n operationWithEnhancedSchema,\n effectiveOperation as string\n );\n let responseDto = responseDtoInternal;\n\n // Check if original DTO was explicitly provided (custom DTO from customResponseDto)\n // Custom DTOs are complete schemas that should be preserved as-is, but still need\n // transformations (backend-only stripping, date + money-bigint coercion).\n const hasExplicitCustomResponseDto = operation.hasCustomResponseDto === true;\n const rebuiltResponseInfo = this.analyzeDtoSchema(responseDtoInternal);\n const originalResponseInfo = originalResponseDto ? this.analyzeDtoSchema(originalResponseDto) : null;\n\n // Custom-DTO classification is driven by the explicit `hasCustomResponseDto`\n // flag that the resource factory stamps on EVERY operation it builds:\n // • `true` → the app supplied a `customResponseDto`; preserve it verbatim.\n // • `false` → the DTO is framework auto-derived. The factory only sets a\n // *temporary*, item-level placeholder (documented as \"will be replaced by\n // buildAllOperationDtos\"), so we MUST use the inheritance-rebuilt DTO —\n // which, for LIST/SEARCH, is the `{ data, pagination }` pagination wrapper.\n // Preserving the bare temporary schema here is what broke RAW-mode list\n // responses: `selectResponseDto(op, RAW)` returned the item schema and the\n // controller parsed the `{ data, pagination }` envelope against it (Zod\n // \"No matching discriminator\" for inheritance resources such as todos,\n // missing-field errors for plain ones).\n // Only when the flag is ABSENT (legacy / hand-authored operations that predate\n // the flag) do we fall back to the structural `analyzeDtoSchema` heuristic — an\n // item schema always differs structurally from the rebuilt wrapper, so the\n // heuristic alone cannot tell \"custom\" from \"auto-derived collection DTO\".\n const isExplicitlyAutoDerivedResponseDto = operation.hasCustomResponseDto === false;\n const isCustomResponseDto = hasExplicitCustomResponseDto\n ? (originalResponseDto && !isZodAny(originalResponseDto))\n : isExplicitlyAutoDerivedResponseDto\n ? false\n : (originalResponseDto && originalResponseInfo &&\n originalResponseInfo !== rebuiltResponseInfo &&\n originalResponseInfo !== '📄 {} (empty object)' &&\n !isZodAny(originalResponseDto));\n\n if (isCustomResponseDto && originalResponseDto) {\n // Strip while decorator metadata is still on the source nodes, then apply\n // network coercion to each trust-boundary shape independently. Reversing\n // this order allowed wrapper rebuilds to erase `isBackendOnly` before the\n // confidentiality pass inspected it.\n const isCreateOperation = effectiveOperation === CoreResourceOperation.CREATE ||\n effectiveOperation === CoreResourceOperation.CREATE_MANY;\n responseDtoInternal = this.applyNetworkBoundaryCoercion(originalResponseDto);\n responseDto = this.applyNetworkBoundaryCoercion(this.stripBackendOnlyFields(originalResponseDto, {\n respectIsReturnedAtCreation: isCreateOperation,\n operationType: isCreateOperation ? CoreResourceOperation.CREATE : undefined\n }));\n } else {\n // Auto-derived DTO: use rebuilt (with inheritance) and apply transformations\n // Strip backend-only fields before coercion rebuilds wrappers/leaves.\n const isCreateOperation = effectiveOperation === CoreResourceOperation.CREATE ||\n effectiveOperation === CoreResourceOperation.CREATE_MANY;\n const clientResponseDto = this.stripBackendOnlyFields(responseDtoInternal, {\n respectIsReturnedAtCreation: isCreateOperation,\n operationType: isCreateOperation ? CoreResourceOperation.CREATE : undefined\n });\n responseDtoInternal = this.applyNetworkBoundaryCoercion(responseDtoInternal);\n responseDto = this.applyNetworkBoundaryCoercion(clientResponseDto);\n }\n\n // Note: Virtual fields are already excluded in buildEnhancedResponseDto\n\n // 4. Add nested operations DTOs if configured (child + self relationships)\n const resourceRelationships = operation.resourceRelationships;\n const childDirRels = resourceRelationships ? getChildDirectionRelationships(resourceRelationships) : [];\n if (childDirRels.length > 0) {\n // Build request DTO with nested children for create/update operations,\n // including bulk variants. Runtime bulk orchestration is handled in the\n // services layer by applying the same nested-processing principles per\n // parent result.\n if (effectiveOperation === CoreResourceOperation.CREATE || effectiveOperation === CoreResourceOperation.CREATE_MANY ||\n effectiveOperation === CoreResourceOperation.UPDATE || effectiveOperation === CoreResourceOperation.UPDATE_MANY) {\n requestDto = this.buildRequestDtoWithNested(\n effectiveOperation as CoreResourceOperation,\n requestDto,\n childDirRels,\n registry\n );\n }\n\n // Build response DTO with nested children (for READ)\n if (effectiveOperation === CoreResourceOperation.READ) {\n responseDtoInternal = this.buildResponseDtoWithNested(\n responseDtoInternal,\n childDirRels,\n registry\n );\n responseDto = this.buildResponseDtoWithNested(\n responseDto,\n childDirRels,\n registry\n );\n }\n }\n\n // 5. Build summaryDto (WITH backend-only fields for internal processing):\n // - Extract summary fields (isSummaryField)\n // - If no summary fields defined, fall back to mainSchema (same as RAW)\n // - DO NOT strip backend-only fields yet (needed for repositoryDto)\n // - Handle discriminated unions\n // - Network-boundary coercion (dates + money bigints) is applied ONCE below,\n // after the no-summary-fields fallback resolves, so EVERY summary shape\n // (plain object, discriminated union, AND the full-schema fallback) accepts\n // ISO-string dates AND bigint-as-string money amounts — the same uniform\n // transposition point used for requestDto/responseDto/internalDto.\n let summaryDtoInternal: z.ZodTypeAny = this.extractSummaryFields(enhancedMainSchema);\n\n // If no summary fields are defined, use full schema (same as RAW mode)\n // Check if summaryDtoInternal is empty (z.object({}))\n if (isZodObject(summaryDtoInternal)) {\n const summaryShape = getZodObjectShape(summaryDtoInternal);\n if (Object.keys(summaryShape).length === 0) {\n // No summary fields defined - use full mainSchema as fallback\n // This ensures SUMMARY mode works even without explicit isSummaryField decorators\n summaryDtoInternal = this.excludeVirtualFieldsFromSchema(enhancedMainSchema);\n }\n }\n\n // Apply network-boundary coercion (z.date() → z.coerce.date() AND string-accepting\n // z.bigint() for z_money amounts) over the fully-resolved summary schema — the\n // single, uniform transposition point for the summary DTO, covering the\n // extracted-summary path, the discriminated-union path, and the full-schema\n // fallback alike. Without this, summary responses (which carry ISO-string\n // createdAt/updatedAt and bigint-as-string money totals over JSON) fail frontend\n // response validation with \"expected date, received string\" / \"expected bigint,\n // received string\" (e.g. invoiceRefs.total.amount is an isSummaryField z_money).\n const summaryDto = this.applyNetworkBoundaryCoercion(\n this.stripBackendOnlyFields(summaryDtoInternal),\n );\n summaryDtoInternal = this.applyNetworkBoundaryCoercion(summaryDtoInternal);\n\n // The COLLECTION EXPORT companion is deliberately excluded. It carries\n // `resourceOperationLike: LIST/SEARCH` so that routing, collection-level authorization and URL\n // building all treat it as a listing — which is exactly right — but its response is a FILE, not\n // a pagination envelope, so every list-shaped DTO derivation below (context item extraction,\n // SUMMARY/CONTEXT envelope rebuilding) would be operating on the wrong shape. Without this\n // exclusion the derivation throws `pagination response must contain a data array` at resource\n // configuration time and the whole application fails to start.\n const isCollectionExportCompanion =\n operation.generatedOperation?.kind === ResourceGeneratedOperationKind.GENERATED_COLLECTION_EXPORT;\n const isListOrSearch = !isCollectionExportCompanion\n && (effectiveOperation === CoreResourceOperation.LIST\n || effectiveOperation === CoreResourceOperation.SEARCH);\n\n // 6. Build contextDto:\n // - Start with the response item DTO. LIST/SEARCH responseDto is already\n // a pagination envelope, so projecting relationships on that envelope\n // would later wrap a page inside another page for the CONTEXT variant.\n // - Add relationship placeholders\n // - Date coercion already applied to responseDto\n const contextBaseDto = isListOrSearch\n ? this.extractPaginatedCollectionItemDto(responseDto, effectiveOperation)\n : responseDto;\n const contextDto = this.addRelationshipPlaceholders(\n contextBaseDto,\n operation.resourceRelationships,\n registry\n );\n\n // 7. Build internalDto base (before variant overrides):\n // - Start with mainSchema (with inheritance)\n // - Include backend-only fields (DO NOT strip)\n // - Exclude virtual fields (they're computed)\n //\n // A non-READ op that declares a `customResponseDto` (e.g. a CREATE that\n // returns an ephemeral `plainKey`) legitimately carries the extra fields\n // the custom schema adds in its service output. `transformOutput`\n // validates that output against `internalDto`, so for these ops internalDto\n // must be the custom schema (`responseDtoInternal`), not the bare main\n // schema — otherwise the enriched fields are stripped before the controller\n // serializes against the custom `responseDto` (the api-key CREATE's\n // `plainKey` failed exactly this way). This mirrors the custom-VARIANT\n // branch below (lines ~516), which only runs for `variantKey`'d ops and so\n // left the DEFAULT custom-DTO op falling through to `enhancedMainSchema`.\n // LIST/SEARCH keep the main-schema base (their pagination wrapper is\n // applied below and the collection item DTO is handled separately).\n const internalDtoUsesCustomResponse =\n effectiveOperation !== CoreResourceOperation.READ\n && Boolean(isCustomResponseDto)\n && Boolean(originalResponseDto)\n && effectiveOperation !== CoreResourceOperation.LIST\n && effectiveOperation !== CoreResourceOperation.SEARCH;\n // `internalDto` is what the service layer validates its OUTPUT against\n // (`ServiceResourceBackendService.transformOutput`). It must mirror the shape the operation\n // actually returns. For most mutations that is the resource object (`enhancedMainSchema`), but:\n // • READ → the resource itself (custom read DTOs handled via the flag below)\n // • OUTPUT_ENVELOPE_OPERATIONS (DELETE, DELETE_MANY, COUNT) → a framework RESPONSE ENVELOPE\n // (`DefaultDeleteResponseSchema` / `DefaultBulkDeleteResponseSchema` / `DefaultCountResponseSchema`)\n // For all of these the correct `internalDto` is the very schema already exposed via\n // `responseDto`: `responseDtoInternal` is that schema with backend-only fields retained (a\n // no-op for these envelopes, which carry none) and is already bulk-vs-single aware because\n // `buildEnhancedResponseDto` resolved it from `getDefaultResponseSchemaForOperation` (and the\n // bulk-operation branch). Leaving an envelope operation on `enhancedMainSchema` is what made\n // `transformOutput` validate the envelope value against the resource object schema and throw\n // `service_resource_transformation_failed` → HTTP 500 (the delete bug; COUNT was a latent\n // sibling). Bulk mutations (CREATE_MANY/UPDATE_MANY) are intentionally NOT in the set — they\n // return per-item resource objects validated item-by-item, so they keep `enhancedMainSchema`.\n //\n // ⚠️ Keyed on the operation's OWN `operationIdentifier`, NOT `effectiveOperation`\n // (`resourceOperationLike || operationIdentifier`). A CUSTOM op that borrows DELETE/COUNT\n // semantics for its route/verb but returns its own shape (via `REPLACE_CORE_OPERATIONS` or a\n // `customResponseDto`) must NOT be forced onto the core envelope — its custom response is\n // already handled by `internalDtoUsesCustomResponse`, or it keeps `enhancedMainSchema`. Only the\n // genuine core operation carries `operationIdentifier === CoreResourceOperation.DELETE` etc.\n // For the deletes, the runtime composition of the envelope from the repository's bare id(s)\n // happens at the transform boundary via `composeDefaultOperationResponse` (same keying).\n let internalDtoProcessed: z.ZodTypeAny =\n effectiveOperation === CoreResourceOperation.READ\n || isOutputEnvelopeOperation(operation.operationIdentifier as string)\n || internalDtoUsesCustomResponse\n ? responseDtoInternal\n : enhancedMainSchema;\n\n // Exclude virtual fields from internalDto\n if (isZodObject(internalDtoProcessed)) {\n const shape = getZodObjectShape(internalDtoProcessed);\n const omitObj: Record<string, true> = {};\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isVirtualField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n }\n if (Object.keys(omitObj).length > 0) {\n internalDtoProcessed = this.omitObjectFields(internalDtoProcessed, omitObj);\n }\n }\n\n // 8. Build repositoryDto first (before variant overrides):\n // - For default operations, derive from responseDto\n // - Include backend-only fields (for internal processing)\n // - Exclude virtual fields but include their dependencies\n let repositoryDto = RepositoryDtoBuilderUtils.deriveRepositoryDto(responseDto, enhancedMainSchema);\n\n // 9. For default operations (no variantKey), wrap internalDto in pagination for LIST/SEARCH:\n if (!operation.variantKey && isListOrSearch) {\n // Default LIST/SEARCH operations: wrap internalDto in pagination\n internalDtoProcessed = z.object({\n data: z.array(internalDtoProcessed),\n pagination: createPaginationResponseMetadataSchema((operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n });\n }\n\n // 10. Override responseDto, repositoryDto, and internalDto for variant operations:\n // - For SUMMARY variants: use summaryDto (wrapped in pagination for LIST/SEARCH)\n // - For CONTEXT variants: use contextDto (wrapped in pagination for LIST/SEARCH)\n // - For custom variants with customResponseDto: use the custom schema for internalDto too\n // - Build repositoryDto from INTERNAL versions (with backend-only fields)\n // - Build internalDto for service-layer validation (pagination wrapper with backend-only items)\n if (operation.variantKey) {\n if (operation.variantKey === OPERATION_VARIANT_KEY.SUMMARY) {\n // For SUMMARY variants, build repositoryDto from INTERNAL version (has backend-only fields)\n repositoryDto = RepositoryDtoBuilderUtils.deriveRepositoryDto(summaryDtoInternal, enhancedMainSchema);\n\n if (isListOrSearch) {\n // Build internalDto for service-layer validation (pagination wrapper with backend-only items)\n internalDtoProcessed = z.object({\n data: z.array(summaryDtoInternal),\n pagination: createPaginationResponseMetadataSchema((operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n });\n // Wrap summaryDto (frontend version, backend-only stripped) in pagination for responseDto\n responseDto = z.object({\n data: z.array(summaryDto),\n pagination: createPaginationResponseMetadataSchema((operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n });\n } else {\n // For READ operations, use summaryDto versions\n internalDtoProcessed = summaryDtoInternal;\n responseDto = summaryDto;\n }\n } else if (operation.variantKey === OPERATION_VARIANT_KEY.CONTEXT) {\n // For CONTEXT variants, build from contextDto versions\n // contextDto is built from responseDto which already has backend-only stripped, so we need internal version\n const contextDtoInternal = this.addRelationshipPlaceholders(\n this.excludeVirtualFieldsFromSchema(enhancedMainSchema),\n operation.resourceRelationships,\n registry\n );\n repositoryDto = RepositoryDtoBuilderUtils.deriveRepositoryDto(contextDtoInternal, enhancedMainSchema);\n\n if (isListOrSearch) {\n // Build internalDto for service-layer validation (pagination wrapper with backend-only items)\n internalDtoProcessed = z.object({\n data: z.array(contextDtoInternal),\n pagination: createPaginationResponseMetadataSchema((operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n });\n // Wrap contextDto (frontend version, backend-only stripped) in pagination for responseDto\n responseDto = z.object({\n data: z.array(contextDto),\n pagination: createPaginationResponseMetadataSchema((operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n });\n } else {\n // For READ operations, use contextDto versions\n internalDtoProcessed = contextDtoInternal;\n responseDto = contextDto;\n }\n } else if (originalResponseDto && !isZodAny(originalResponseDto)) {\n // For custom variants with customResponseDto (e.g., 'context_old'):\n // The internalDto should also use the custom schema to preserve enriched fields.\n // This ensures that custom implementations can return additional fields that won't be stripped.\n // Apply network-boundary coercion (dates + money bigints) to the custom schema for internal processing.\n internalDtoProcessed = this.applyNetworkBoundaryCoercion(originalResponseDto);\n repositoryDto = RepositoryDtoBuilderUtils.deriveRepositoryDto(originalResponseDto, enhancedMainSchema);\n }\n }\n\n if (operation.generatedOperation && originalResponseDto && !isZodAny(originalResponseDto)) {\n // Generated operations may be UPDATE-like for routing/authorization while\n // returning a framework-owned envelope that is not the resource schema.\n // Keep service-layer output validation aligned with that envelope.\n internalDtoProcessed = this.applyNetworkBoundaryCoercion(originalResponseDto);\n repositoryDto = RepositoryDtoBuilderUtils.deriveRepositoryDto(enhancedMainSchema, enhancedMainSchema);\n }\n\n requestDto = this.stripTemplatableFileFieldsRecursively(requestDto);\n\n // 11. Finalize internalDto with network-boundary coercion (dates + money bigints):\n const internalDtoFinal: z.ZodTypeAny = this.applyNetworkBoundaryCoercion(internalDtoProcessed);\n\n // 12. Return operation with all DTOs stored\n return {\n ...operation,\n requestDto,\n responseDto,\n summaryDto,\n contextDto,\n internalDto: internalDtoFinal,\n repositoryDto\n } as ResourceConfiguration_Operation<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>;\n }\n\n /**\n * Build enhanced request DTO based on operation type and existing DTOs.\n *\n * Decorator-aware DTO building:\n * - For CREATE operations: excludes fields with `excludeFromCreate` decorator\n * - For UPDATE operations: excludes fields with `excludeFromUpdate` decorator\n * - For ALL operations: excludes fields with `isVirtual` decorator (computed fields)\n */\n private static buildEnhancedRequestDto(\n operation: ResourceConfiguration_Operation<any, any, any>,\n effectiveOperation: string\n ): z.ZodTypeAny {\n\n // Check if operation already has a meaningful requestDto (not z.any() and not empty)\n const isZAny = operation.requestDto && isZodAny(operation.requestDto);\n const currentRequestInfo = this.analyzeDtoSchema(operation.requestDto);\n\n if (operation.requestDto && !isZAny && currentRequestInfo !== '📄 {} (empty object)') {\n return this.stripTemplatableFileFieldsRecursively(operation.requestDto);\n }\n\n const searchQueryRequestSchema = (operation as {\n searchQueryRequestSchema?: z.ZodTypeAny;\n }).searchQueryRequestSchema;\n if (\n effectiveOperation === CoreResourceOperation.SEARCH\n && searchQueryRequestSchema\n && !isZodAny(searchQueryRequestSchema)\n ) {\n return searchQueryRequestSchema;\n }\n\n // For operations that shouldn't have request DTOs, return empty object\n const shouldHaveRequestDto = operationShouldHaveRequestDto(effectiveOperation);\n if (!shouldHaveRequestDto) {\n return z.object({});\n }\n\n // Apply bulk operation decorator for URL-bearing bulk companion operations.\n // For bulk operations, we need to wrap the underlying operation's requestDto\n // with Resouces_BulkOperationBaseSchema\n if ('isBulkOperation' in operation && operation.isBulkOperation) {\n // Rebuild the underlying (non-bulk) requestDto by temporarily treating as non-bulk\n const underlyingOperation = {\n ...operation,\n isBulkOperation: false,\n requestDto: undefined // Clear to force rebuild\n };\n const underlyingRequestDto = this.buildEnhancedRequestDto(underlyingOperation, effectiveOperation);\n\n // Wrap with bulk operation base schema\n if (underlyingRequestDto && !isZodAny(underlyingRequestDto)) {\n const underlyingInfo = this.analyzeDtoSchema(underlyingRequestDto);\n if (underlyingInfo !== '📄 {} (empty object)') {\n if (effectiveOperation === CoreResourceOperation.CREATE_MANY) {\n return z.object({\n data: z.array(underlyingRequestDto),\n });\n }\n if (isZodObject(underlyingRequestDto)) {\n return Resouces_BulkOperationBaseSchema.extend(getZodObjectShape(underlyingRequestDto));\n }\n return Resouces_BulkOperationBaseSchema.and(underlyingRequestDto);\n }\n }\n return effectiveOperation === CoreResourceOperation.CREATE_MANY\n ? z.object({\n data: z.array(z.object({})),\n })\n : Resouces_BulkOperationBaseSchema;\n }\n\n // For create operations, use decorator-aware DTO building\n if (effectiveOperation === CoreResourceOperation.CREATE || effectiveOperation === CoreResourceOperation.CREATE_MANY) {\n return this.createRequestDtoForCreate(operation.mainSchema);\n }\n\n // For update operations, use decorator-aware DTO building\n if (effectiveOperation === CoreResourceOperation.UPDATE || effectiveOperation === CoreResourceOperation.UPDATE_MANY) {\n return this.createRequestDtoForUpdate(operation.mainSchema);\n }\n\n // Default: use mainSchema as-is (but still exclude virtual fields)\n return this.excludeVirtualFieldsFromSchema(operation.mainSchema);\n }\n\n /**\n * Build enhanced response DTO based on operation type and mainSchema\n */\n private static buildEnhancedResponseDto(\n operation: ResourceConfiguration_Operation<any, any, any>,\n effectiveOperation: string\n ): z.ZodTypeAny {\n\n // Check if operation already has a meaningful responseDto (not z.any() and not empty)\n const isZAny = operation.responseDto && isZodAny(operation.responseDto);\n const currentResponseInfo = this.analyzeDtoSchema(operation.responseDto);\n\n if (operation.responseDto && !isZAny && currentResponseInfo !== '📄 {} (empty object)') {\n return operation.responseDto;\n }\n\n // Apply bulk operation decorator for URL-bearing bulk companion operations.\n if ('isBulkOperation' in operation && operation.isBulkOperation) {\n switch (effectiveOperation) {\n case CoreResourceOperation.DELETE:\n case CoreResourceOperation.DELETE_MANY:\n return DefaultBulkDeleteResponseSchema;\n case CoreResourceOperation.UPDATE:\n case CoreResourceOperation.UPDATE_MANY:\n case CoreResourceOperation.CREATE:\n case CoreResourceOperation.CREATE_MANY:\n // Bulk create/update responses are arrays of resource items at runtime.\n // The controller validates array responses item-by-item against responseDto,\n // so bulk mutations must expose the per-item schema here, not a count wrapper.\n return operation.mainSchema;\n default:\n return z.array(operation.mainSchema);\n }\n }\n\n // Apply pagination decorator for list/search operations.\n //\n // The ceiling comes from the OPERATION, not from a constant. It used to be a hard-coded `50`,\n // which made `maxPaginatedResultPerPageLimit` inert on the response side: an operation could\n // declare 100 or 200, the repository would honour it, and the response DTO would then reject the\n // very page the repository had just built — a 500 (`service_resource_transformation_failed`,\n // `too_big: expected array to have <=50 items`) rather than a page. Live example found\n // 2026-08-12 on `users | list | admin`; latent on every operation declaring a larger ceiling\n // (`users SEARCH` 200, `organizations SEARCH` 100, `user-profiles` 200).\n //\n // The default is 100 — the ceiling the Mongo `_doList` hard-coded before it was taught to read\n // the declared value, and therefore the largest page this DTO could ever have been handed. It is\n // NOT 50: a 50 default would reject the very pages the repository is still allowed to build for\n // an operation that declares nothing, which is the 500 this whole change exists to remove, in a\n // new place. SEARCH's repository default stays 50, so its pages sit comfortably inside this.\n if (effectiveOperation === CoreResourceOperation.LIST || effectiveOperation === CoreResourceOperation.SEARCH) {\n return this.createPaginatedResponseSchema(\n operation.mainSchema,\n (operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit ?? 100,\n );\n }\n\n // Apply operation-specific default patterns\n const defaultResponse = getDefaultResponseSchemaForOperation(effectiveOperation, operation.mainSchema);\n return defaultResponse;\n }\n\n /**\n * Return the row schema owned by a standard paginated collection response.\n *\n * LIST and SEARCH first derive a client response shaped as\n * `{ data: Row[]; pagination: ... }`. Context projection enriches `Row`, not\n * the envelope. Keeping this extraction at the shared DTO boundary makes the\n * invariant unbypassable for every generated CONTEXT collection operation:\n * its response is exactly one page of context-enriched rows.\n *\n * A malformed/custom collection response fails closed here. Silently falling\n * back to the envelope recreates the former `Page<Page<Row>>` contract and\n * lets runtime, OpenAPI, examples and client validation disagree.\n */\n private static extractPaginatedCollectionItemDto(\n responseDto: z.ZodTypeAny,\n effectiveOperation: string\n ): z.ZodTypeAny {\n if (!isZodObject(responseDto)) {\n throw new Error(\n `Cannot build ${effectiveOperation} context DTO: collection response must be a pagination object`\n );\n }\n\n const responseShape = getZodObjectShape(responseDto);\n const dataSchema = responseShape.data;\n if (!dataSchema || !isZodArray(dataSchema)) {\n throw new Error(\n `Cannot build ${effectiveOperation} context DTO: pagination response must contain a data array`\n );\n }\n\n const itemSchema = getZodDefSchemaProperty(dataSchema, 'element');\n if (!itemSchema) {\n throw new Error(\n `Cannot build ${effectiveOperation} context DTO: pagination data array has no item schema`\n );\n }\n\n return itemSchema;\n }\n\n /**\n * Create request DTO for CREATE operations.\n *\n * Excludes:\n * - Standard auto-populated fields (_id, createdAt, etc.)\n * - Fields with `excludeFromCreate` decorator\n * - Fields with `isVirtual` decorator (computed fields)\n *\n * Handles discriminated unions by applying omissions to each variant.\n */\n private static createRequestDtoForCreate(mainSchema: z.ZodTypeAny): z.ZodTypeAny {\n // Check if it's a discriminated union - need to handle each variant\n const zodType = getZodType(mainSchema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(mainSchema, 'discriminator');\n const options = getZodDefArrayProperty(mainSchema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && options && options.length > 0) {\n // Apply omissions to each variant in the union\n const modifiedOptions = options.map(option =>\n this.applyCreateOmissionsToSchema(option)\n );\n\n // Recreate discriminated union with modified variants\n if (modifiedOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n modifiedOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else if (modifiedOptions.length === 1) {\n return modifiedOptions[0];\n }\n }\n }\n\n // Regular object schema - apply omissions directly\n return this.applyCreateOmissionsToSchema(mainSchema);\n }\n\n /**\n * Check if a field is a non-discriminator literal.\n * Non-discriminator literals are fixed values that should be auto-populated by the backend.\n * Discriminator literals are used for variant selection and should be shown in CREATE forms.\n *\n * Handles wrapped types (optional, default, etc.) by unwrapping before type check.\n */\n private static isNonDiscriminatorLiteral(fieldSchema: z.ZodTypeAny): boolean {\n // Unwrap to handle z.literal(\"value\").optional() etc.\n const unwrapped = unwrapSchema(fieldSchema);\n const zodType = getZodType(unwrapped);\n // Check if it's a literal type and NOT marked as discriminator\n // isDiscriminatorField already handles unwrapping via getMetadataRecursive\n return zodType === 'literal' && !isDiscriminatorField(fieldSchema);\n }\n\n /**\n * Apply CREATE operation omissions to a single schema (object or other).\n */\n private static applyCreateOmissionsToSchema(schema: z.ZodTypeAny): z.ZodTypeAny {\n if (!isZodObject(schema)) {\n return schema;\n }\n\n // Standard auto-generated fields to omit from create request DTOs.\n // Note: _id is handled via isPrimaryKey decorator which implies excludeFromCreate.\n // The context-auto-populated FKs (createdByUserId, organizationId, userId,\n // applicationId, anonymousUserId — all backend-injected from the EC, never\n // client-supplied) come from the shared CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS\n // single source of truth so this omit list and the trusted-system-write\n // re-attach allowlist (deriveTrustedSystemWritePreservedFields) never drift.\n const fieldsToOmit = ['id', 'createdAt', 'updatedAt', ...CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS];\n\n try {\n const omitObj: Record<string, true> = {};\n const shape = getZodObjectShape(schema);\n\n // Add standard fields to omit\n fieldsToOmit.forEach(field => {\n if (shape[field]) {\n omitObj[field] = true;\n }\n });\n\n // Add fields with excludeFromCreate decorator (includes isPrimaryKey which implies excludeFromCreate)\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isExcludedFromCreate(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude virtual fields - they are computed, not submitted\n if (isVirtualField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude backend-only fields - they are managed internally\n if (isBackendOnlyField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude generated file fields - they are materialized by operations,\n // not uploaded or supplied in client write payloads.\n if (isTemplatableFileField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude non-discriminator literals - they are auto-populated by backend\n // Discriminator literals are KEPT for variant selection in CREATE forms\n if (this.isNonDiscriminatorLiteral(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n }\n\n // If we have fields to omit, create omitted schema\n if (Object.keys(omitObj).length > 0) {\n const omittedSchema = this.omitObjectFields(schema, omitObj);\n return this.stripTemplatableFileFieldsRecursively(omittedSchema);\n }\n } catch (error) {\n throw new Error(`Failed to create request DTO for CREATE: ${error instanceof Error ? error.message : String(error)}`);\n }\n\n return this.stripTemplatableFileFieldsRecursively(schema);\n }\n\n /**\n * Create request DTO for UPDATE operations.\n *\n * Excludes:\n * - Standard auto-populated fields (_id, createdAt, etc.)\n * - Fields with `excludeFromUpdate` decorator\n * - Fields with `isVirtual` decorator (computed fields)\n *\n * Handles discriminated unions by applying omissions to each variant.\n */\n private static createRequestDtoForUpdate(mainSchema: z.ZodTypeAny): z.ZodTypeAny {\n // Check if it's a discriminated union - need to handle each variant\n const zodType = getZodType(mainSchema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(mainSchema, 'discriminator');\n const options = getZodDefArrayProperty(mainSchema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && options && options.length > 0) {\n // PATCH semantics for an inheritance resource. Two hard constraints\n // collide here and only a MERGED SUPERSET OBJECT satisfies both:\n //\n // 1. The persisted variant is IMMUTABLE and the repository applies a\n // partial `$set` (see `RepositoryResourceBackendService.update` →\n // `findOneAndUpdate({ $set })`). A caller therefore legitimately\n // sends only the fields it changes — e.g. an inline status\n // autosave submits `{ status }` with NO `recurringType`. A\n // discriminated union CANNOT express \"discriminator optional\":\n // Zod needs the key present to pick a branch, and a discriminator\n // `.default()` does NOT fire inside `z.discriminatedUnion`, so the\n // missing key fails with \"No matching discriminator\" (the exact\n // wonder-todos `todos` CHANGE_STATUS / inline-edit crash).\n // 2. Variant-only fields (`recurrence` / `startDate` / `endsDate`)\n // must stay IN the contract — a bare base object would `z.object`-\n // strip them, silently dropping a partial update that touches a\n // variant field. Keeping every variant field is the whole reason\n // this DTO became a union in the first place.\n //\n // Collapsing the per-variant options into one object whose fields are\n // all optional (the discriminator included) keeps every variant field\n // reachable AND lets any partial subset validate without echoing the\n // immutable discriminator. Variant/field coherence is enforced\n // server-side against the merged persisted+patch object (the `$set`\n // target already carries the true variant), NOT by the static request\n // contract. CREATE keeps the discriminated union (see\n // `createRequestDtoForCreate`) because on CREATE the client MUST choose\n // a variant and variant-field validation applies.\n return this.mergeUnionOptionsIntoOptionalUpdateObject(options, discriminator);\n }\n }\n\n // Regular object schema - apply omissions directly\n return this.applyUpdateOmissionsToSchema(mainSchema);\n }\n\n /**\n * Collapse the per-variant options of an inheritance UPDATE discriminated\n * union into a single object with PATCH semantics: every base + variant-only\n * field present and optional, and the discriminator itself optional.\n *\n * Each option is first run through {@link applyUpdateOmissionsToSchema}\n * (which drops `excludeFromUpdate` / PK / virtual / backend-only / templatable\n * file fields and optionalises every non-discriminator field), then the\n * resulting shapes are merged. The discriminator — which\n * `applyUpdateOmissionsToSchema` keeps required per-variant so the omission\n * pass does not mistake it for an auto-populated literal — is replaced by a\n * single OPTIONAL enum spanning every variant value, so a partial update may\n * omit it entirely (the persisted variant is immutable) yet a full-object\n * update that re-sends the current discriminator still validates.\n *\n * Nested inheritance (an option that is itself a union) is flattened\n * recursively so deeply-nested variant fields are preserved too.\n */\n private static mergeUnionOptionsIntoOptionalUpdateObject(\n options: z.ZodTypeAny[],\n discriminatorField: string\n ): z.ZodTypeAny {\n const mergedShape: Record<string, z.ZodTypeAny> = {};\n const discriminatorValues = new Set<string>();\n\n const collectFromOption = (option: z.ZodTypeAny): void => {\n // Flatten nested discriminated unions (multi-level inheritance).\n if (getZodType(option) === 'union') {\n const nestedOptions = getZodDefArrayProperty(option, 'options') as z.ZodTypeAny[] | undefined;\n if (nestedOptions && nestedOptions.length > 0) {\n nestedOptions.forEach(collectFromOption);\n return;\n }\n }\n\n const omitted = this.applyUpdateOmissionsToSchema(option);\n if (!isZodObject(omitted)) {\n return;\n }\n\n const shape = getZodObjectShape(omitted);\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (fieldName === discriminatorField) {\n // Gather every variant value the discriminator can carry; the field\n // is rebuilt as one optional enum below.\n for (const value of this.extractDiscriminatorValues(fieldSchema as z.ZodTypeAny)) {\n discriminatorValues.add(value);\n }\n continue;\n }\n // First writer wins: base fields are identical across variants and\n // variant-only fields appear in exactly one option, so there is no\n // meaningful collision to resolve. `applyUpdateOmissionsToSchema`\n // already made every non-discriminator field optional.\n if (!mergedShape[fieldName]) {\n mergedShape[fieldName] = fieldSchema as z.ZodTypeAny;\n }\n }\n };\n\n options.forEach(collectFromOption);\n\n if (discriminatorValues.size > 0) {\n // Optional so a partial update may omit the immutable discriminator; the\n // enum still accepts a re-sent current value from a full-object update.\n mergedShape[discriminatorField] = z\n .enum(Array.from(discriminatorValues) as [string, ...string[]])\n .optional();\n }\n\n return z.object(mergedShape);\n }\n\n /**\n * Extract the concrete discriminator value(s) a union-option's discriminator\n * field can hold. Variant options carry a `z.literal(value)`; the base option\n * carries a `z.enum([...baseValues])`. Both may be wrapped by the\n * `isDiscriminator` decorator / `.default()` / `.optional()`, so unwrap first.\n */\n private static extractDiscriminatorValues(fieldSchema: z.ZodTypeAny): string[] {\n const unwrapped = unwrapSchema(fieldSchema);\n const unwrappedType = getZodType(unwrapped);\n\n if (unwrappedType === 'enum') {\n return getEnumValues(unwrapped).map(String);\n }\n\n // Literal — Zod 4 stores value(s) in `def.values` (array); fall back to the\n // legacy scalar `def.value`. Mirrors the literal read at `analyzeDtoSchema`.\n const literalValues = (getZodDefArrayProperty(unwrapped, 'values')\n ?? [getZodDefProperty(unwrapped, 'value')]) as unknown[];\n return literalValues\n .filter((value): value is string | number => value !== undefined && value !== null)\n .map(String);\n }\n\n /**\n * Apply UPDATE operation omissions to a single schema (object or other).\n */\n private static applyUpdateOmissionsToSchema(schema: z.ZodTypeAny): z.ZodTypeAny {\n if (!isZodObject(schema)) {\n return schema;\n }\n\n // Standard auto-generated fields to omit from update request DTOs.\n // Note: Primary keys are passed as route params, not in request body.\n // The context-auto-populated FKs (immutable after creation; anonymousUserId\n // is managed by transposition, never client-updatable) come from the shared\n // CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS single source of truth so this omit\n // list and the trusted-system-write re-attach allowlist stay in lockstep.\n const fieldsToOmit = ['id', 'createdAt', 'updatedAt', ...CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS];\n\n try {\n const omitObj: Record<string, true> = {};\n const shape = getZodObjectShape(schema);\n\n // Add standard fields to omit\n fieldsToOmit.forEach(field => {\n if (shape[field]) {\n omitObj[field] = true;\n }\n });\n\n // Add fields with excludeFromUpdate decorator or isPrimaryKey (passed as route param)\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isExcludedFromUpdate(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Primary keys are passed as route params, not in request body\n if (isPrimaryKey(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude virtual fields - they are computed, not submitted\n if (isVirtualField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude backend-only fields - they are managed internally\n if (isBackendOnlyField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude generated file fields - explicit regenerate operations own\n // refreshing them, so generic UPDATE payloads must not accept them.\n if (isTemplatableFileField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude NON-discriminator literals only — they are fixed values\n // auto-populated by the backend and immutable after creation.\n //\n // Discriminator literals are KEPT: for an inheritance resource the\n // UPDATE DTO is a discriminated union, and the discriminator must be\n // present (and required) so Zod can select the variant and validate\n // its variant-specific fields. Stripping it produced a structurally\n // invalid discriminated union (\"Invalid discriminated union option\").\n // The discriminator's immutability is enforced at the service layer\n // (the update is rejected if it changes the variant), not by removing\n // it from the request contract — which would silently drop every\n // variant-only field from the payload.\n if (this.isNonDiscriminatorLiteral(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n }\n\n // Rebuild the shape with PATCH semantics: drop the omitted fields, then\n // make every remaining field optional EXCEPT the discriminator. This\n // mirrors the factory's `buildUpdateRequestDto` (partial update). The\n // discriminator is left REQUIRED here only so this per-variant omission\n // pass does not mistake it for an auto-populated literal and strip it —\n // for an inheritance UPDATE the per-variant objects are then merged by\n // `mergeUnionOptionsIntoOptionalUpdateObject`, which replaces the\n // discriminator with a single OPTIONAL enum so partial updates may omit\n // the immutable discriminator. (Without optionalizing the other fields\n // every field would become mandatory, breaking partial updates for every\n // resource.)\n const updateShape: Record<string, z.ZodTypeAny> = {};\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (omitObj[fieldName]) {\n continue;\n }\n const strippedField = this.stripTemplatableFileFieldsRecursively(fieldSchema as z.ZodTypeAny);\n // Non-discriminator fields are optionalised for PATCH; `toPatchOptionalField`\n // also peels any `.default()` so an omitted field is never re-materialized to\n // its default and `$set` back over the stored value (the `attemptCount`-reset\n // class of bug). The discriminator is kept as-is (required, default intact) so\n // the union stays selectable — the merge pass replaces it with an optional enum.\n updateShape[fieldName] = isDiscriminatorField(fieldSchema as z.ZodTypeAny)\n ? strippedField\n : toPatchOptionalField(strippedField);\n }\n return z.object(updateShape);\n } catch (error) {\n throw new Error(`Failed to create request DTO for UPDATE: ${error instanceof Error ? error.message : String(error)}`);\n }\n\n return this.stripTemplatableFileFieldsRecursively(schema);\n }\n\n /**\n * Exclude virtual fields from a schema.\n * Virtual fields are computed at runtime and should not appear in request DTOs.\n *\n * Handles discriminated unions by applying omissions to each variant.\n */\n private static excludeVirtualFieldsFromSchema(mainSchema: z.ZodTypeAny): z.ZodTypeAny {\n // Check if it's a discriminated union - need to handle each variant\n const zodType = getZodType(mainSchema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(mainSchema, 'discriminator');\n const options = getZodDefArrayProperty(mainSchema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && options && options.length > 0) {\n // Apply virtual field exclusion to each variant\n const modifiedOptions = options.map(option =>\n this.applyVirtualFieldExclusionToSchema(option)\n );\n\n // Recreate discriminated union with modified variants\n if (modifiedOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n modifiedOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else if (modifiedOptions.length === 1) {\n return modifiedOptions[0];\n }\n }\n }\n\n // Regular object schema - apply exclusion directly\n return this.applyVirtualFieldExclusionToSchema(mainSchema);\n }\n\n /**\n * Apply virtual field exclusion to a single schema (object or other).\n */\n private static applyVirtualFieldExclusionToSchema(schema: z.ZodTypeAny): z.ZodTypeAny {\n if (!isZodObject(schema)) {\n return schema;\n }\n\n try {\n const omitObj: Record<string, true> = {};\n const shape = getZodObjectShape(schema);\n\n // Find and exclude virtual fields\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isVirtualField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n }\n\n // If we have fields to omit, create omitted schema\n if (Object.keys(omitObj).length > 0) {\n const omittedSchema = this.omitObjectFields(schema, omitObj);\n return omittedSchema;\n }\n } catch (error) {\n throw new Error(`Failed to exclude virtual fields from schema: ${error instanceof Error ? error.message : String(error)}`);\n }\n\n return schema;\n }\n\n // TODO: Implement cascading relationships logic in future iteration\n\n\n\n /**\n * Create paginated response schema using shared pagination metadata schema\n */\n private static createPaginatedResponseSchema(\n dataSchema: z.ZodTypeAny,\n maxResultsPerPageLimit: number = 100\n ): z.ZodTypeAny {\n return z.object({\n data: z.array(dataSchema).max(maxResultsPerPageLimit),\n // Bounded by the SAME ceiling as the data array beside it. Leaving this on the default-bounded\n // constant is how a legitimately-served 120-row page still answered 500 after the array bound,\n // the request bound and both repository maxima had been unified: `limit` echoes the page size\n // actually served, so a stricter bound here rejects what the line above just permitted.\n pagination: createPaginationResponseMetadataSchema(maxResultsPerPageLimit)\n });\n }\n\n /**\n * Analyze a DTO schema with full recursive object display\n * Public method to get detailed recursive schema analysis\n */\n static analyzeSchemaRecursive(\n schema: any,\n maxDepth: number = 5\n ): string {\n return this.analyzeDtoSchemaRecursive(schema, '', maxDepth);\n }\n\n /**\n * Debug helper to display a single schema with full recursive analysis\n * Useful for detailed inspection of specific DTOs\n */\n static debugDisplaySingleSchema(\n schemaName: string,\n schema: any,\n maxDepth: number = 5\n ): void {\n console.log(`\\n🔍 === SCHEMA DEBUG: ${schemaName} ===`);\n const analysis = this.analyzeDtoSchemaRecursive(schema, '', maxDepth);\n console.log(analysis);\n console.log(`=== END SCHEMA DEBUG ===\\n`);\n }\n\n /**\n * Convenience method to display DTOs with full recursive object details\n * Shows complete nested structures for better understanding\n */\n static debugDisplayGeneratedDtosWithFullDetails(\n resourceConfigurations: { [key: string]: any },\n resourceFilter: ResourceType[] = [],\n maxDepth: number = 4\n ): void {\n console.log(`\\n🔍 === FULL RECURSIVE DTO ANALYSIS (depth: ${maxDepth}) ===\\n`);\n this.debugDisplayGeneratedDtos(\n resourceConfigurations,\n resourceFilter,\n true, // Always use recursive analysis\n maxDepth\n );\n }\n\n /**\n * Debug function to display DTOs for specific resources\n * @param resourceConfigurations - All resource configurations\n * @param resourceFilter - Array of resource types to filter (empty = show all)\n * @param useRecursiveAnalysis - Whether to show full recursive object structures (default: true now)\n * @param maxRecursionDepth - Maximum depth for recursive object analysis (default: 3)\n */\n static debugDisplayGeneratedDtos(\n resourceConfigurations: { [key: string]: any },\n resourceFilter: ResourceType[] = [],\n useRecursiveAnalysis: boolean = true,\n maxRecursionDepth: number = 3\n ): void {\n console.log('\\n=== 📋 GENERATED DTOS DEBUG DISPLAY ===\\n');\n\n const resourceTypes = Object.keys(resourceConfigurations).sort();\n let totalOperations = 0;\n let totalDtosProcessed = 0;\n let filteredResourceTypes = resourceFilter.length > 0\n ? resourceTypes.filter(type => resourceFilter.includes(type as ResourceType))\n : resourceTypes;\n\n if (resourceFilter.length > 0) {\n console.log(`🔍 Filtering for resources: ${resourceFilter.join(', ')}\\n`);\n }\n\n if (useRecursiveAnalysis) {\n console.log(`🔄 Using recursive object analysis (full nested structures, max depth: ${maxRecursionDepth})\\n`);\n }\n\n for (const resourceType of filteredResourceTypes) {\n const resourceConfig = resourceConfigurations[resourceType];\n\n if (!resourceConfig || !resourceConfig.operations) {\n console.log(`⚠️ Resource ${resourceType}: No operations found`);\n continue;\n }\n\n const operations = resourceConfig.operations;\n console.log(`\\n📦 Resource: ${resourceType}`);\n console.log(` Operations: ${operations.length}`);\n\n // Group operations by operation identifier for cleaner display\n const operationGroups = new Map<string, any[]>();\n operations.forEach((op: any) => {\n const key = op.operationIdentifier;\n if (!operationGroups.has(key)) {\n operationGroups.set(key, []);\n }\n operationGroups.get(key)!.push(op);\n });\n\n for (const [operationIdentifier, ops] of operationGroups.entries()) {\n console.log(`\\n 🔧 Operation: ${operationIdentifier} (${ops.length} variants)`);\n\n ops.forEach((operation: any, index: number) => {\n totalOperations++;\n const variantInfo = operation.variantType +\n ('isBulkOperation' in operation && operation.isBulkOperation ? ' [BULK]' : '') +\n (operation.isOperationDefault ? ' [DEFAULT]' : '') +\n (operation.variantKey ? ` [${operation.variantKey}]` : '');\n\n console.log(` └─ Variant ${index + 1}: ${variantInfo}`);\n\n // Display Request DTO\n const requestDtoInfo = useRecursiveAnalysis\n ? this.analyzeDtoSchemaRecursive(operation.requestDto, '', maxRecursionDepth)\n : this.analyzeDtoSchema(operation.requestDto);\n console.log(` 📤 Request: ${requestDtoInfo}`);\n totalDtosProcessed++;\n\n // Display Response DTO\n const responseDtoInfo = useRecursiveAnalysis\n ? this.analyzeDtoSchemaRecursive(operation.responseDto, '', maxRecursionDepth)\n : this.analyzeDtoSchema(operation.responseDto);\n console.log(` 📥 Response: ${responseDtoInfo}`);\n totalDtosProcessed++;\n\n // NOTE: Cascade mode logging removed - lifecycle operations are now on relationships\n // See childOperations.lifecycle.onParentDelete on ResourceRelationship\n\n // NOTE: inheritenceSchemaConfiguration removed - conditional relationships now use\n // discriminator field on ResourceRelationship instead\n });\n }\n }\n\n console.log(`\\n=== 📊 DTO DEBUG SUMMARY ===`);\n console.log(`Resources processed: ${filteredResourceTypes.length}/${resourceTypes.length}`);\n console.log(`Total operations: ${totalOperations}`);\n console.log(`Total DTOs processed: ${totalDtosProcessed}`);\n if (resourceFilter.length > 0) {\n console.log(`Filter applied: [${resourceFilter.join(', ')}]`);\n }\n if (useRecursiveAnalysis) {\n console.log(`Analysis mode: Recursive (full nested structures, depth: ${maxRecursionDepth})`);\n }\n console.log(`=================================\\n`);\n }\n\n /**\n * Get field count and names from a Zod object schema (Zod-compliant)\n */\n private static getZodObjectFields(schema: any): { fieldCount: number; fieldNames: string[] } {\n if (!isZodObject(schema)) {\n return { fieldCount: 0, fieldNames: [] };\n }\n\n try {\n // Use public .shape property (Zod v4 API)\n const shape = getZodObjectShape(schema);\n const fieldNames = Object.keys(shape);\n return { fieldCount: fieldNames.length, fieldNames };\n } catch (error) {\n return { fieldCount: 0, fieldNames: [] };\n }\n }\n\n /**\n * Analyze a DTO schema and return a detailed human-readable summary (Zod-compliant)\n */\n private static analyzeDtoSchema(schema: any, indent: string = ''): string {\n if (!schema) {\n return '❌ null/undefined';\n }\n\n // Check if it's a z.any()\n if (isZodAny(schema)) {\n return '⚪ z.any() [NEEDS ENHANCEMENT]';\n }\n\n // Check if it's a ZodObject - use proper field detection\n if (isZodObject(schema)) {\n const { fieldCount, fieldNames } = this.getZodObjectFields(schema);\n\n if (fieldCount === 0) {\n return '📄 {} (empty object)';\n }\n\n // Check if this is a decorated schema\n let decorationInfo = '';\n // Use the new Symbol-based metadata approach (preserves description for API docs)\n const metadata = getCustomFieldMetadata(schema);\n const decorations: string[] = [];\n if (metadata[ZodDecorator.IS_DB_INDEXED]) decorations.push('indexed');\n if (metadata[ZodDecorator.IS_FOREIGN_KEY]) decorations.push('reference');\n if (decorations.length > 0) {\n decorationInfo = ` [${decorations.join(', ')}]`;\n }\n\n // Return with detailed field information inline\n let result = `📋 Object (${fieldCount} fields)${decorationInfo}`;\n\n // Always show ALL field details without truncation\n if (fieldCount > 0) {\n try {\n const shape = getZodObjectShape(schema);\n\n result += ':\\n';\n fieldNames.forEach((fieldName, index) => {\n const fieldSchema = shape[fieldName];\n const fieldType = this.getFieldTypeRecursive(\n fieldSchema,\n indent + ' │ ',\n 3, // Max depth for nested objects\n 0,\n new Set()\n );\n const isOptional = this.isFieldOptional(fieldSchema);\n const optionalMark = isOptional ? '?' : '';\n result += `${indent} │ ${fieldName}${optionalMark}: ${fieldType}`;\n if (index < fieldNames.length - 1) result += '\\n';\n });\n } catch (error) {\n result += ` (field details unavailable: ${error})`;\n }\n }\n\n return result;\n }\n\n\n\n // Check if it's an array\n if (isZodArray(schema)) {\n const element = getZodDefSchemaProperty(schema, 'element');\n if (!element) return '📚 Array[unknown]';\n const elementType = this.getFieldTypeRecursive(\n element,\n indent,\n 3, // Max depth for array elements\n 0,\n new Set()\n );\n return `📚 Array[${elementType}]`;\n }\n\n // Check if it's a union (regular or discriminated)\n const zodType = getZodType(schema);\n if (zodType === 'union') {\n const options = getZodDefArrayProperty(schema, 'options');\n const optionCount = options?.length || 0;\n // In Zod v4, discriminated unions extend union and have a discriminator property\n const discriminator = getZodDefStringProperty(schema, 'discriminator');\n if (discriminator) {\n return `🔀 DiscriminatedUnion (${optionCount} options, discriminator: \"${discriminator}\")`;\n }\n return `🔀 Union (${optionCount} options)`;\n }\n\n // Check if it's a merge/intersection\n if (zodType === 'intersection') {\n return '🔗 Merged schema';\n }\n\n // Check if it's an optional wrapper\n if (isZodOptional(schema)) {\n const innerType = getZodDefSchemaProperty(schema, 'innerType');\n if (!innerType) return 'unknown (optional)';\n return this.analyzeDtoSchema(innerType, indent) + ' (optional)';\n }\n\n // Check if it's a pipe (from .transform(), .pipe(), etc.)\n // In Zod v4, transforms create pipe types with 'in' and 'out' schemas\n if (zodType === 'pipe') {\n const inSchema = getZodDefSchemaProperty(schema, 'in');\n if (!inSchema) return '🔧 Pipe[unknown]';\n return `🔧 Pipe[${this.analyzeDtoSchema(inSchema, indent)}]`;\n }\n\n // Check if it's a transform (standalone transform, no underlying schema)\n if (zodType === 'transform') {\n return '🔧 Transform';\n }\n\n // Check if it's a custom (from .refine(), .superRefine(), etc.)\n // Custom types don't wrap schemas - refinements are stored as checks on the schema\n if (zodType === 'custom') {\n return '🔧 Custom';\n }\n\n // Check if it's a ZodDefault (has default value)\n if (isZodDefault(schema)) {\n const innerSchema = getZodDefSchemaProperty(schema, 'innerType');\n if (!innerSchema) return 'unknown (with default)';\n return this.analyzeDtoSchema(innerSchema, indent) + ' (with default)';\n }\n\n // Default case\n return `🔍 ${zodType || 'Unknown'}`;\n }\n\n /**\n * Analyze a DTO schema with full recursive object display\n * This method shows complete nested object structures instead of just summaries\n */\n private static analyzeDtoSchemaRecursive(\n schema: any,\n indent: string = '',\n maxDepth: number = 5,\n currentDepth: number = 0,\n visitedSchemas: Set<any> = new Set()\n ): string {\n if (!schema) {\n return '❌ null/undefined';\n }\n\n // Prevent infinite recursion\n if (currentDepth >= maxDepth) {\n return `🔄 [Max depth ${maxDepth} reached]`;\n }\n\n // Prevent circular references\n if (visitedSchemas.has(schema)) {\n return '🔄 [Circular reference]';\n }\n visitedSchemas.add(schema);\n\n // Check if it's a z.any()\n if (isZodAny(schema)) {\n visitedSchemas.delete(schema);\n return '⚪ z.any() [NEEDS ENHANCEMENT]';\n }\n\n // Check if it's a ZodObject - use proper field detection with full recursion\n if (isZodObject(schema)) {\n const { fieldCount, fieldNames } = this.getZodObjectFields(schema);\n\n if (fieldCount === 0) {\n visitedSchemas.delete(schema);\n return '📄 {} (empty object)';\n }\n\n // Check if this is a decorated schema\n let decorationInfo = '';\n // Use the new Symbol-based metadata approach (preserves description for API docs)\n const metadata = getCustomFieldMetadata(schema);\n const decorations: string[] = [];\n if (metadata[ZodDecorator.IS_DB_INDEXED]) decorations.push('indexed');\n if (metadata[ZodDecorator.IS_FOREIGN_KEY]) decorations.push('reference');\n if (decorations.length > 0) {\n decorationInfo = ` [${decorations.join(', ')}]`;\n }\n\n // Return with detailed field information inline with full recursion\n let result = `📋 Object (${fieldCount} fields)${decorationInfo}`;\n\n // Always show ALL field details with recursion\n if (fieldCount > 0) {\n try {\n const shape = getZodObjectShape(schema);\n\n result += ':\\n';\n fieldNames.forEach((fieldName, index) => {\n const fieldSchema = shape[fieldName];\n const fieldType = this.getFieldTypeRecursive(\n fieldSchema,\n indent + ' │ ',\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n const isOptional = this.isFieldOptional(fieldSchema);\n const optionalMark = isOptional ? '?' : '';\n result += `${indent} │ ${fieldName}${optionalMark}: ${fieldType}`;\n if (index < fieldNames.length - 1) result += '\\n';\n });\n } catch (error) {\n result += ` (field details unavailable: ${error})`;\n }\n }\n\n visitedSchemas.delete(schema);\n return result;\n }\n\n // Check if it's an array with recursive element analysis\n if (isZodArray(schema)) {\n const element = getZodDefSchemaProperty(schema, 'element');\n if (!element) {\n visitedSchemas.delete(schema);\n return '📚 Array[unknown]';\n }\n const elementType = this.getFieldTypeRecursive(\n element,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n visitedSchemas.delete(schema);\n return `📚 Array[${elementType}]`;\n }\n\n // Check if it's a union (regular or discriminated)\n const zodType = getZodType(schema);\n if (zodType === 'union') {\n const options = getZodDefArrayProperty(schema, 'options');\n const optionCount = options?.length || 0;\n // In Zod v4, discriminated unions extend union and have a discriminator property\n const discriminator = getZodDefStringProperty(schema, 'discriminator');\n visitedSchemas.delete(schema);\n if (discriminator) {\n return `🔀 DiscriminatedUnion (${optionCount} options, discriminator: \"${discriminator}\")`;\n }\n return `🔀 Union (${optionCount} options)`;\n }\n\n // Check if it's a merge/intersection\n if (zodType === 'intersection') {\n visitedSchemas.delete(schema);\n return '🔗 Merged schema';\n }\n\n // Check if it's an optional wrapper\n if (isZodOptional(schema)) {\n const innerType = getZodDefSchemaProperty(schema, 'innerType');\n if (!innerType) {\n visitedSchemas.delete(schema);\n return 'unknown (optional)';\n }\n const result = this.analyzeDtoSchemaRecursive(\n innerType,\n indent,\n maxDepth,\n currentDepth,\n new Set(visitedSchemas)\n ) + ' (optional)';\n visitedSchemas.delete(schema);\n return result;\n }\n\n // Check if it's a pipe (from .transform(), .pipe(), etc.)\n // In Zod v4, transforms create pipe types with 'in' and 'out' schemas\n if (zodType === 'pipe') {\n const inSchema = getZodDefSchemaProperty(schema, 'in');\n if (!inSchema) {\n visitedSchemas.delete(schema);\n return '🔧 Pipe[unknown]';\n }\n const result = `🔧 Pipe[${this.analyzeDtoSchemaRecursive(\n inSchema,\n indent,\n maxDepth,\n currentDepth,\n new Set(visitedSchemas)\n )}]`;\n visitedSchemas.delete(schema);\n return result;\n }\n\n // Check if it's a transform (standalone transform, no underlying schema)\n if (zodType === 'transform') {\n visitedSchemas.delete(schema);\n return '🔧 Transform';\n }\n\n // Check if it's a custom (from .refine(), .superRefine(), etc.)\n // Custom types don't wrap schemas - refinements are stored as checks on the schema\n if (zodType === 'custom') {\n visitedSchemas.delete(schema);\n return '🔧 Custom';\n }\n\n // Check if it's a ZodDefault (has default value)\n if (isZodDefault(schema)) {\n const innerSchema = getZodDefSchemaProperty(schema, 'innerType');\n if (!innerSchema) {\n visitedSchemas.delete(schema);\n return 'unknown (with default)';\n }\n const result = this.analyzeDtoSchemaRecursive(\n innerSchema,\n indent,\n maxDepth,\n currentDepth,\n new Set(visitedSchemas)\n ) + ' (with default)';\n visitedSchemas.delete(schema);\n return result;\n }\n\n // Default case\n visitedSchemas.delete(schema);\n return `🔍 ${zodType || 'Unknown'}`;\n }\n\n /**\n * Get detailed field type description with full recursive sub-object support\n */\n private static getFieldTypeRecursive(\n fieldSchema: any,\n indent: string = '',\n maxDepth: number = 5,\n currentDepth: number = 0,\n visitedSchemas: Set<any> = new Set()\n ): string {\n const zodType = getZodType(fieldSchema);\n if (!zodType) return 'unknown';\n\n // Prevent infinite recursion\n if (currentDepth >= maxDepth) {\n return `[Max depth ${maxDepth} reached]`;\n }\n\n // Prevent circular references\n if (visitedSchemas.has(fieldSchema)) {\n return '[Circular reference]';\n }\n\n switch (zodType) {\n case 'string':\n // Check for decorations\n if (fieldSchema.description) {\n try {\n const metadata = JSON.parse(fieldSchema.description);\n const decorations: string[] = [];\n if (metadata.isDBIndexed) decorations.push('indexed');\n if (metadata.isForeignKey) decorations.push('ref');\n if (decorations.length > 0) {\n return `string [${decorations.join(', ')}]`;\n }\n } catch {}\n }\n return 'string';\n case 'number':\n case 'int': return 'number';\n case 'bigint': return 'bigint';\n case 'boolean': return 'boolean';\n case 'date': return 'Date';\n case 'array':\n visitedSchemas.add(fieldSchema);\n const element = getZodDefSchemaProperty(fieldSchema, 'element');\n if (!element) {\n visitedSchemas.delete(fieldSchema);\n return 'unknown[]';\n }\n const elementType = this.getFieldTypeRecursive(\n element,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n visitedSchemas.delete(fieldSchema);\n return `${elementType}[]`;\n case 'enum':\n // Use centralized getEnumValues function\n const enumValues = getEnumValues(fieldSchema);\n if (enumValues.length === 0) return 'enum()';\n return `enum(${enumValues.slice(0, 3).join('|')}${enumValues.length > 3 ? '...' : ''})`;\n case 'object':\n // Full recursive object analysis\n visitedSchemas.add(fieldSchema);\n const { fieldCount, fieldNames } = this.getZodObjectFields(fieldSchema);\n\n if (fieldCount === 0) {\n visitedSchemas.delete(fieldSchema);\n return '{}';\n }\n\n let result = `{\\n`;\n try {\n const shape = getZodObjectShape(fieldSchema);\n\n fieldNames.forEach((fieldName, index) => {\n const nestedFieldSchema = shape[fieldName];\n const nestedFieldType = this.getFieldTypeRecursive(\n nestedFieldSchema,\n indent + ' ',\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n const isOptional = this.isFieldOptional(nestedFieldSchema);\n const optionalMark = isOptional ? '?' : '';\n result += `${indent} ${fieldName}${optionalMark}: ${nestedFieldType}`;\n if (index < fieldNames.length - 1) result += ',\\n';\n });\n result += `\\n${indent}}`;\n } catch (error) {\n result = `object(${fieldCount} fields) [error: ${error}]`;\n }\n\n visitedSchemas.delete(fieldSchema);\n return result;\n case 'optional':\n const optionalInnerType = getZodDefSchemaProperty(fieldSchema, 'innerType');\n if (!optionalInnerType) return 'unknown?';\n return this.getFieldTypeRecursive(\n optionalInnerType,\n indent,\n maxDepth,\n currentDepth,\n visitedSchemas\n ) + '?';\n case 'nullable':\n const nullableInnerType = getZodDefSchemaProperty(fieldSchema, 'innerType');\n if (!nullableInnerType) return 'unknown | null';\n return this.getFieldTypeRecursive(\n nullableInnerType,\n indent,\n maxDepth,\n currentDepth,\n visitedSchemas\n ) + ' | null';\n case 'default':\n const defaultValue = getZodDefProperty(fieldSchema, 'defaultValue');\n const defaultInnerType = getZodDefSchemaProperty(fieldSchema, 'innerType');\n if (!defaultInnerType) return 'unknown (with default)';\n const defaultValueStr = typeof defaultValue === 'function'\n ? 'fn()'\n : String(defaultValue ?? 'undefined');\n return this.getFieldTypeRecursive(\n defaultInnerType,\n indent,\n maxDepth,\n currentDepth,\n visitedSchemas\n ) + ` (default: ${defaultValueStr})`;\n case 'union':\n const unionOptions = getZodDefArrayProperty(fieldSchema, 'options');\n const optionCount = unionOptions?.length || 0;\n // Check if it's a discriminated union\n const unionDiscriminator = getZodDefStringProperty(fieldSchema, 'discriminator');\n if (unionDiscriminator) {\n return `discriminatedUnion(${optionCount} options, discriminator: \"${unionDiscriminator}\")`;\n }\n return `union(${optionCount} options)`;\n case 'literal':\n // Zod 4 stores literal value(s) in def.values (an array); the legacy Zod-3\n // def.value is always undefined in v4, so reading it alone always rendered\n // literal(\"unknown\"). Read def.values first, fall back to def.value.\n const literalValues = (getZodDefArrayProperty(fieldSchema, 'values') ?? [getZodDefProperty(fieldSchema, 'value')])\n .filter((entry) => entry !== undefined && entry !== null);\n return `literal(\"${String(literalValues[0] ?? 'unknown')}\")`;\n case 'any':\n return 'any';\n case 'unknown':\n return 'unknown';\n case 'set':\n visitedSchemas.add(fieldSchema);\n const setElement = getZodDefSchemaProperty(fieldSchema, 'valueType');\n if (!setElement) {\n visitedSchemas.delete(fieldSchema);\n return 'Set<unknown>';\n }\n const setElementType = this.getFieldTypeRecursive(\n setElement,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n visitedSchemas.delete(fieldSchema);\n return `Set<${setElementType}>`;\n case 'tuple':\n visitedSchemas.add(fieldSchema);\n const tupleItems = getZodDefArrayProperty(fieldSchema, 'items') ?? [];\n const tupleTypes = tupleItems\n .filter((item): item is z.ZodTypeAny => isZodTypeAny(item))\n .map(item => this.getFieldTypeRecursive(\n item,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n ));\n visitedSchemas.delete(fieldSchema);\n return `[${tupleTypes.join(', ')}]`;\n case 'record':\n visitedSchemas.add(fieldSchema);\n const recordValue = getZodDefSchemaProperty(fieldSchema, 'valueType');\n if (!recordValue) {\n visitedSchemas.delete(fieldSchema);\n return 'Record<string, unknown>';\n }\n const recordValueType = this.getFieldTypeRecursive(\n recordValue,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n visitedSchemas.delete(fieldSchema);\n return `Record<string, ${recordValueType}>`;\n case 'map':\n visitedSchemas.add(fieldSchema);\n const mapKey = getZodDefSchemaProperty(fieldSchema, 'keyType');\n const mapValue = getZodDefSchemaProperty(fieldSchema, 'valueType');\n const mapKeyType = mapKey ? this.getFieldTypeRecursive(\n mapKey,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n ) : 'unknown';\n const mapValueType = mapValue ? this.getFieldTypeRecursive(\n mapValue,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n ) : 'unknown';\n visitedSchemas.delete(fieldSchema);\n return `Map<${mapKeyType}, ${mapValueType}>`;\n case 'intersection':\n const leftSchema = getZodDefSchemaProperty(fieldSchema, 'left');\n const rightSchema = getZodDefSchemaProperty(fieldSchema, 'right');\n const leftType = leftSchema ? this.getFieldTypeRecursive(\n leftSchema,\n indent,\n maxDepth,\n currentDepth + 1,\n visitedSchemas\n ) : 'unknown';\n const rightType = rightSchema ? this.getFieldTypeRecursive(\n rightSchema,\n indent,\n maxDepth,\n currentDepth + 1,\n visitedSchemas\n ) : 'unknown';\n return `${leftType} & ${rightType}`;\n case 'lazy':\n return 'lazy<...>';\n case 'void':\n case 'undefined':\n case 'never':\n return zodType;\n case 'pipe':\n const pipeInSchema = getZodDefSchemaProperty(fieldSchema, 'in');\n if (!pipeInSchema) return 'pipe[unknown]';\n const pipeInnerType = this.getFieldTypeRecursive(\n pipeInSchema,\n indent,\n maxDepth,\n currentDepth,\n visitedSchemas\n );\n return `pipe[${pipeInnerType}]`;\n case 'transform':\n return 'transform';\n case 'custom':\n return 'custom';\n default:\n return zodType || 'unknown';\n }\n }\n\n\n /**\n * Check if a field is optional\n */\n private static isFieldOptional(fieldSchema: any): boolean {\n // Check if it's wrapped in ZodOptional\n if (isZodOptional(fieldSchema)) return true;\n\n // Check if it's a ZodDefault (has default value)\n if (isZodDefault(fieldSchema)) return true;\n\n return false;\n }\n\n /**\n * Apply inheritance to mainSchema based on inheritance definition\n * Creates discriminated union schemas when inheritance is defined\n *\n * NOTE: This transfers inheritance logic from relationship cascading mechanism\n * to schema-level processing, ensuring inheritance affects DTOs properly.\n *\n * NOTE: TDatabaseSchema has been removed. Backend-only fields are now marked with\n * the `isBackendOnly` decorator and stripped at the service layer.\n */\n private static applyInheritanceToSchema<\n TMainSchema extends z.ZodTypeAny\n >(\n mainSchema: TMainSchema,\n inheritanceDefinition: any,\n processedInheritanceSchemas: Map<string, z.ZodTypeAny>\n ): TMainSchema {\n\n // If no inheritance definition, return original schema\n if (!inheritanceDefinition || !inheritanceDefinition.inheritedSchemas ||\n inheritanceDefinition.inheritedSchemas.length === 0) {\n return mainSchema;\n }\n\n const cacheKey = `${JSON.stringify(inheritanceDefinition)}_main`;\n\n // Check cache first\n if (processedInheritanceSchemas.has(cacheKey)) {\n return processedInheritanceSchemas.get(cacheKey)! as TMainSchema;\n }\n\n const { discriminatorField, inheritedSchemas, withoutInheritanceDiscriminatorFieldValues } = inheritanceDefinition;\n\n // Build discriminated union options for mainSchema\n const mainSchemaOptions: z.ZodTypeAny[] = [];\n\n // Add base schema for non-inherited values if specified\n if (withoutInheritanceDiscriminatorFieldValues && withoutInheritanceDiscriminatorFieldValues.length > 0) {\n // Create enum for base discriminator values.\n // Mark it with the isDiscriminator decorator so EVERY union option's\n // discriminator field is uniformly recognized as a discriminator (and not\n // mistaken for an auto-populated literal by the request-DTO omission logic).\n const baseDiscriminatorEnum = addDiscriminator(\n z.enum(withoutInheritanceDiscriminatorFieldValues as [string, ...string[]]),\n { baseValues: withoutInheritanceDiscriminatorFieldValues as string[] }\n );\n\n // Extend mainSchema with discriminator field\n const baseMainSchema = this.extendSchemaWithDiscriminator(mainSchema, discriminatorField, baseDiscriminatorEnum);\n\n mainSchemaOptions.push(baseMainSchema);\n }\n\n // Process each inherited schema\n inheritedSchemas.forEach((inheritedItem: any) => {\n const { discriminatorFieldValue, schema: inheritedSchema } = inheritedItem;\n\n // Create literal discriminator for this variant.\n // It MUST carry the isDiscriminator decorator: `mergeInheritedSchema`\n // overwrites the variant's discriminator field with this value, dropping\n // the decorator `createSchemaFamily` originally applied. Without it, the\n // request-DTO builder's `isNonDiscriminatorLiteral` check would strip the\n // discriminator from CREATE/UPDATE DTOs, producing a structurally-invalid\n // discriminated union (Zod: \"Invalid discriminated union option\").\n const discriminatorLiteral = addDiscriminator(\n z.literal(discriminatorFieldValue),\n { baseValues: withoutInheritanceDiscriminatorFieldValues as string[] | undefined }\n );\n\n // Merge inherited schema with base schema and add discriminator\n const mergedMainSchema = this.mergeInheritedSchema(mainSchema, inheritedSchema, discriminatorField, discriminatorLiteral);\n\n mainSchemaOptions.push(mergedMainSchema);\n\n // Handle nested inheritance recursively\n if (inheritedItem.inheritenceSchemaDefinition) {\n const nestedMain = this.applyInheritanceToSchema(\n mergedMainSchema,\n inheritedItem.inheritenceSchemaDefinition,\n processedInheritanceSchemas\n );\n\n // Replace the simple merged schema with the nested enhanced one\n mainSchemaOptions[mainSchemaOptions.length - 1] = nestedMain;\n }\n });\n\n // Create discriminated union if we have multiple options\n let enhancedMainSchema: z.ZodTypeAny;\n\n if (mainSchemaOptions.length > 1) {\n // Check if all schemas are ZodObject types to use discriminated union\n const allMainAreObjects = mainSchemaOptions.every(schema =>\n isZodObject(schema)\n );\n\n if (allMainAreObjects) {\n // Use discriminated union for object schemas\n enhancedMainSchema = z.discriminatedUnion(\n discriminatorField,\n mainSchemaOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else {\n // Fallback to regular union for mixed types\n enhancedMainSchema = z.union(mainSchemaOptions as [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]);\n }\n } else if (mainSchemaOptions.length === 1) {\n enhancedMainSchema = mainSchemaOptions[0];\n } else {\n // Fallback to original schema\n enhancedMainSchema = mainSchema;\n }\n\n // Cache the result\n processedInheritanceSchemas.set(cacheKey, enhancedMainSchema);\n\n return enhancedMainSchema as TMainSchema;\n }\n\n /**\n * Extend a schema with a discriminator field\n */\n private static extendSchemaWithDiscriminator(\n baseSchema: z.ZodTypeAny,\n discriminatorField: string,\n discriminatorSchema: z.ZodTypeAny\n ): z.ZodTypeAny {\n\n // If base schema is not an object, wrap it in an object with the discriminator\n if (!isZodObject(baseSchema)) {\n return z.object({\n [discriminatorField]: discriminatorSchema,\n value: baseSchema\n });\n }\n\n // Extend existing object schema with discriminator field\n // Type guard already ensures it's a ZodObject\n return baseSchema.extend({\n [discriminatorField]: discriminatorSchema\n });\n }\n\n /**\n * Merge inherited schema with base schema and add discriminator\n */\n private static mergeInheritedSchema(\n baseSchema: z.ZodTypeAny,\n inheritedSchema: z.ZodTypeAny,\n discriminatorField: string,\n discriminatorValue: z.ZodTypeAny\n ): z.ZodTypeAny {\n\n // If both are object schemas, merge them\n if (isZodObject(baseSchema) && isZodObject(inheritedSchema)) {\n\n // Merge the two object schemas and add discriminator (using extend instead of merge in Zod v4)\n const mergedSchema = baseSchema.extend(inheritedSchema.shape);\n return mergedSchema.extend({\n [discriminatorField]: discriminatorValue\n });\n }\n\n // If only inherited schema is an object, extend it with discriminator\n if (isZodObject(inheritedSchema)) {\n // Type guard already ensures it's a ZodObject\n return inheritedSchema.extend({\n [discriminatorField]: discriminatorValue\n });\n }\n\n // Fallback: create object with discriminator and value\n return z.object({\n [discriminatorField]: discriminatorValue,\n value: inheritedSchema\n });\n }\n\n // =============================================================================\n // NESTED OPERATIONS DTO BUILDING\n // =============================================================================\n\n private static getAllResourceFieldIdentifiers(\n resourceRegistry: Map<ResourceType, any>\n ): Partial<Record<ResourceType, string>> {\n const allResourceFieldIdentifiers: Partial<Record<ResourceType, string>> = {};\n\n for (const [resourceType, resourceConfig] of resourceRegistry.entries()) {\n if (typeof resourceConfig?.resourceFieldIdentifier === 'string' && resourceConfig.resourceFieldIdentifier.length > 0) {\n allResourceFieldIdentifiers[resourceType] = resourceConfig.resourceFieldIdentifier;\n }\n }\n\n return allResourceFieldIdentifiers;\n }\n\n /**\n * Derive nested field name from the relationship identifier.\n */\n private static getNestedFieldName(\n rel: ResourceRelationship,\n resourceRegistry: Map<ResourceType, any>\n ): string {\n return Resources_SharedUtils.resolveRelationshipObjectIdentity(\n rel,\n rel.resourceType2,\n rel.cardinality2,\n this.getAllResourceFieldIdentifiers(resourceRegistry)\n ).objectFieldName;\n }\n\n private static getRelationshipObjectFieldName(\n rel: Pick<ResourceRelationship, 'foreignKeyField' | 'resourceType1' | 'resourceType2'>,\n relatedResourceType: ResourceType,\n cardinality: ResourceRelationshipCardinality,\n resourceRegistry: Map<ResourceType, any>\n ): string {\n return Resources_SharedUtils.resolveRelationshipObjectIdentity(\n rel,\n relatedResourceType,\n cardinality,\n this.getAllResourceFieldIdentifiers(resourceRegistry)\n ).objectFieldName;\n }\n\n /**\n * Get delete field name: _{nestedField}ToDelete\n */\n private static getDeleteFieldName(nestedFieldName: string): string {\n return `_${nestedFieldName}ToDelete`;\n }\n\n /**\n * Build child schema for nested operations based on operation type and config.\n * For CREATE: uses child's CREATE request DTO\n * For UPDATE: uses union of CREATE (no _id) and UPDATE (with _id) DTOs\n */\n private static buildNestedChildSchema(\n rel: ResourceRelationship,\n nestedConfig: ChildNestedMutationConfig | ChildNestedMutationConfig_Parsed,\n operation: CoreResourceOperation,\n childMainSchema: z.ZodTypeAny,\n resourceRegistry: Map<ResourceType, any>\n ): z.ZodTypeAny {\n const childResourceType = rel.resourceType2;\n\n // Get child's operation config to find request DTOs\n const childConfig = resourceRegistry.get(childResourceType);\n if (!childConfig || !childConfig.operations) {\n // Fallback: use child's main schema with appropriate omissions\n if (operation === CoreResourceOperation.CREATE || operation === CoreResourceOperation.CREATE_MANY) {\n return this.createRequestDtoForCreate(childMainSchema);\n } else {\n return this.createRequestDtoForUpdate(childMainSchema);\n }\n }\n\n // Find child's CREATE operation for request DTO\n const childCreateOp = childConfig.operations.find(\n (op: any) => op.operationIdentifier === CoreResourceOperation.CREATE ||\n op.resourceOperationLike === CoreResourceOperation.CREATE\n );\n const childCreateDto = childCreateOp?.requestDto || this.createRequestDtoForCreate(childMainSchema);\n\n if (operation === CoreResourceOperation.CREATE || operation === CoreResourceOperation.CREATE_MANY) {\n // For CREATE: use child's CREATE DTO\n return childCreateDto;\n }\n\n // For UPDATE: use union of CREATE (no _id) and UPDATE (with _id) DTOs\n const childUpdateOp = childConfig.operations.find(\n (op: any) => op.operationIdentifier === CoreResourceOperation.UPDATE ||\n op.resourceOperationLike === CoreResourceOperation.UPDATE\n );\n const childUpdateDto = childUpdateOp?.requestDto || this.createRequestDtoForUpdate(childMainSchema);\n\n // Create union: items without _id are creates, items with _id are updates\n // In Zod 4, we use z.union for discriminated unions or z.union for simple unions\n if (isZodObject(childCreateDto) && isZodObject(childUpdateDto)) {\n // Explicitly forbid _id on the create branch so _id-bearing payloads are\n // routed through the update branch instead of being accepted as creates and\n // only failing later in downstream child UPDATE validation.\n const createWithoutId = childCreateDto.extend({\n _id: z.never().optional()\n });\n\n // UPDATE DTO should have _id as required\n const updateWithRequiredId = childUpdateDto.extend({\n _id: z.string()\n });\n\n return z.union([updateWithRequiredId, createWithoutId]);\n }\n\n // Fallback: use UPDATE DTO\n return childUpdateDto;\n }\n\n /**\n * Get child schema for a specific DataMode (for nested READ responses).\n * - RAW: All stored fields, no population\n * - SUMMARY: Summary fields only (fields with isSummaryField decorator)\n * - CONTEXT: Full context (all fields with contextPolicy applied)\n *\n * Note: CONTEXT mode requires service-layer processing (contextPolicy application),\n * so we return the full schema here. The service layer will apply contextPolicy.\n */\n private static getChildSchemaForDataMode(\n childMainSchema: z.ZodTypeAny,\n dataMode: DataMode\n ): z.ZodTypeAny {\n switch (dataMode) {\n case DataMode.SUMMARY:\n // Use ResourcesSummaryUtils to derive summary schema (only fields with isSummaryField decorator)\n if (isZodObject(childMainSchema)) {\n return ResourcesSummaryUtils.deriveSummarySchema(childMainSchema, {\n includeId: true, // Always include _id in summaries\n includeForeignKeys: false, // Only include FKs if they have isSummaryField decorator\n });\n }\n // Fallback for non-object schemas\n return childMainSchema;\n\n case DataMode.CONTEXT:\n // CONTEXT mode requires service-layer processing (contextPolicy, population, etc.)\n // Return full schema - service layer will apply contextPolicy\n return childMainSchema;\n\n case DataMode.RAW:\n default:\n // RAW mode: return full schema (all stored fields)\n return childMainSchema;\n }\n }\n\n /**\n * Extend a DTO root that may be either a plain object or a discriminated\n * union of objects.\n *\n * Relationship-driven nested fields must exist on every variant of a\n * polymorphic DTO root; otherwise the shared contract silently diverges from\n * the live frontend form/runtime path.\n */\n private static extendObjectLikeDto(\n baseDto: z.ZodTypeAny,\n extensionShape: Record<string, z.ZodTypeAny>,\n ): z.ZodTypeAny {\n if (Object.keys(extensionShape).length === 0) {\n return baseDto;\n }\n\n if (isZodObject(baseDto)) {\n return baseDto.extend(extensionShape);\n }\n\n const zodType = getZodType(baseDto);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(baseDto, 'discriminator');\n const unionOptions = getZodDefArrayProperty(baseDto, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && unionOptions && unionOptions.length > 0) {\n const extendedOptions = unionOptions.map((option) =>\n isZodObject(option)\n ? option.extend(extensionShape)\n : option,\n );\n\n if (extendedOptions.every((option) => isZodObject(option))) {\n if (extendedOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n extendedOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]],\n );\n }\n\n if (extendedOptions.length === 1) {\n return extendedOptions[0];\n }\n }\n }\n }\n\n return baseDto;\n }\n \n\n /**\n * Build request DTO with nested children based on config.\n * Extends the base request DTO with nested child fields for CREATE/UPDATE operations.\n *\n * ## Deliberate Condition-Agnosticism\n *\n * This method iterates ALL child relationships whose compiled runtime\n * semantics expose a current effective nested projection,\n * regardless of whether they carry a `discriminator` or `condition`.\n * It generates DTO fields for every such relationship unconditionally.\n *\n * This is intentional: DTO generation is a STARTUP concern — it defines the shape\n * of all possible request/response schemas. Conditional filtering is a RUNTIME\n * concern handled by:\n * - `ServicesRegistryHandler.filterRelationshipsByParent()` — which filters\n * active relationships before processing nested data in CREATE/UPDATE\n * - `ResourceContextBackendService.fetchChildResourcesWithPolicy()` — which\n * filters active relationships before fetching children in context\n *\n * If the DTO builder filtered by discriminator at startup, the nested fields\n * would be missing from the schema entirely, and runtime data for those fields\n * would be silently dropped during Zod validation.\n */\n static buildRequestDtoWithNested(\n operation: CoreResourceOperation,\n baseDto: z.ZodTypeAny,\n childRelationships: ResourceRelationship[],\n resourceRegistry: Map<ResourceType, any>\n ): z.ZodTypeAny {\n if (operation === CoreResourceOperation.CREATE_MANY) {\n const baseShape = isZodObject(baseDto) ? getZodObjectShape(baseDto) : undefined;\n const dataSchema = baseShape?.data;\n\n if (dataSchema instanceof z.ZodArray) {\n const nestedItemDto = this.buildRequestDtoWithNested(\n CoreResourceOperation.CREATE,\n dataSchema.element as z.ZodTypeAny,\n childRelationships,\n resourceRegistry\n );\n\n return this.extendObjectLikeDto(baseDto, {\n data: z.array(nestedItemDto),\n });\n }\n }\n\n const nestedFields: Record<string, z.ZodTypeAny> = {};\n const allResourceFieldIdentifiers = this.getAllResourceFieldIdentifiers(resourceRegistry);\n\n for (const rel of childRelationships) {\n const compiledRel = Resources_SharedUtils.ensureCompiledRelationship(\n rel,\n allResourceFieldIdentifiers\n );\n const nestedConfig = Resources_SharedUtils.resolveRelationshipNestedMutationConfig(\n compiledRel,\n operation\n );\n\n if (!nestedConfig) continue;\n\n const fieldName = this.getNestedFieldName(compiledRel, resourceRegistry);\n const childConfig = resourceRegistry.get(compiledRel.resourceType2);\n if (!childConfig) continue;\n\n const childSchema = this.buildNestedChildSchema(\n compiledRel,\n nestedConfig as ChildNestedMutationConfig_Parsed,\n operation,\n childConfig.mainSchema,\n resourceRegistry\n );\n\n // Add nested field (array for 1:N/N:N, object for 1:1)\n nestedFields[fieldName] = isArrayCardinality(compiledRel.cardinality2)\n ? z.array(childSchema).optional()\n : childSchema.optional();\n\n // Add delete field if allowDelete (for UPDATE only)\n if (nestedConfig.allowDelete &&\n (operation === CoreResourceOperation.UPDATE || operation === CoreResourceOperation.UPDATE_MANY)) {\n nestedFields[this.getDeleteFieldName(fieldName)] = z.array(z.string()).optional();\n }\n }\n\n return this.extendObjectLikeDto(baseDto, nestedFields);\n }\n\n /**\n * Build response DTO with nested children based on onRead config.\n * Extends the base response DTO with nested child fields for READ operations.\n *\n * Like `buildRequestDtoWithNested`, this is deliberately condition-agnostic —\n * it generates response DTO fields for ALL relationships whose compiled\n * runtime semantics expose an effective nested-read projection, regardless of\n * discriminator/condition. The fields are optional (`z.optional()`), so when\n * the runtime skips a conditional relationship, the field is simply absent\n * from the response rather than causing a schema validation error.\n */\n static buildResponseDtoWithNested(\n baseDto: z.ZodTypeAny,\n childRelationships: ResourceRelationship[],\n resourceRegistry: Map<ResourceType, any>\n ): z.ZodTypeAny {\n const nestedFields: Record<string, z.ZodTypeAny> = {};\n const allResourceFieldIdentifiers = this.getAllResourceFieldIdentifiers(resourceRegistry);\n\n for (const rel of childRelationships) {\n const compiledRel = Resources_SharedUtils.ensureCompiledRelationship(\n rel,\n allResourceFieldIdentifiers\n );\n const readConfig = Resources_SharedUtils.resolveRelationshipNestedReadConfig(compiledRel);\n if (!readConfig) continue;\n\n const fieldName = this.getNestedFieldName(compiledRel, resourceRegistry);\n const childConfig = resourceRegistry.get(compiledRel.resourceType2);\n if (!childConfig) continue;\n\n const childSchema = this.getChildSchemaForDataMode(\n childConfig.mainSchema,\n readConfig.dataMode\n );\n\n // Add nested field (array for 1:N/N:N, object for 1:1)\n nestedFields[fieldName] = isArrayCardinality(compiledRel.cardinality2)\n ? z.array(childSchema).optional()\n : childSchema.optional();\n }\n\n return this.extendObjectLikeDto(baseDto, nestedFields);\n }\n\n /**\n * Schema-guided value walk that locates every `.isWriteOnlySecret()` field in\n * a runtime object and hands the holding object + field name to `visitSecret`.\n *\n * Mirrors the unwrap/recursion structure of {@link stripBackendOnlyFields} but\n * operates on VALUES, not schemas. It mutates in place (callers pass a freshly\n * `.parse()`'d body or a to-be-validated input, both safe to mutate). For\n * discriminated unions it recurses EVERY variant against the single value —\n * safe because both leaf actions (mask/strip) are guarded (mask only a present\n * value; strip only the exact sentinel), so fields belonging to a non-matching\n * variant are simply absent and no-op.\n */\n private static walkWriteOnlySecretValues(\n schema: z.ZodTypeAny,\n value: unknown,\n visitSecret: (holder: Record<string, unknown>, fieldName: string) => void,\n ): void {\n if (value === null || value === undefined) {\n return;\n }\n\n // Unwrap optional / nullable / default wrappers — same value, inner schema.\n if (isZodOptional(schema) || hasZodType(schema, 'nullable') || isZodDefault(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny | undefined;\n if (innerSchema) {\n this.walkWriteOnlySecretValues(innerSchema, value, visitSecret);\n }\n return;\n }\n\n // Unions (incl. discriminated) — recurse every object variant.\n if (getZodType(schema) === 'union') {\n const unionOptions = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n if (unionOptions) {\n for (const option of unionOptions) {\n this.walkWriteOnlySecretValues(option, value, visitSecret);\n }\n }\n return;\n }\n\n // Arrays — recurse each element against the element schema.\n if (isZodArray(schema) && Array.isArray(value)) {\n const elementSchema = getZodDefProperty(schema, 'element') as z.ZodTypeAny | undefined;\n if (elementSchema) {\n for (const item of value) {\n this.walkWriteOnlySecretValues(elementSchema, item, visitSecret);\n }\n }\n return;\n }\n\n // Objects — visit write-only-secret fields, recurse the rest.\n if (isZodObject(schema) && typeof value === 'object' && !Array.isArray(value)) {\n const shape = getZodObjectShape(schema);\n const holder = value as Record<string, unknown>;\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isWriteOnlySecretField(fieldSchema as z.ZodTypeAny)) {\n visitSecret(holder, fieldName);\n } else {\n this.walkWriteOnlySecretValues(fieldSchema as z.ZodTypeAny, holder[fieldName], visitSecret);\n }\n }\n }\n }\n\n /**\n * Redact every `.isWriteOnlySecret()` field in a client-facing response body to\n * {@link WRITE_ONLY_SECRET_MASK}. Applied at the client-serialization boundary\n * ONLY (`serializeOperationResultForResponse`), never at the service dispatch /\n * `transformOutput` tier — internal reads (`readAsSystem`, repository\n * `read<T>()`) must keep the real value so backend consumers (e.g. a webhook\n * signer) can use it. Returns the same (mutated) value for call-site ergonomics.\n */\n static maskWriteOnlySecretFields<T>(schema: z.ZodTypeAny, value: T): T {\n this.walkWriteOnlySecretValues(schema, value, (holder, fieldName) => {\n const current = holder[fieldName];\n if (current !== null && current !== undefined && current !== '') {\n holder[fieldName] = WRITE_ONLY_SECRET_MASK;\n }\n });\n return value;\n }\n\n /**\n * Strip any `.isWriteOnlySecret()` field whose incoming value equals the\n * {@link WRITE_ONLY_SECRET_MASK} sentinel from a CREATE/UPDATE input payload.\n * A client that renders the masked read value and submits it unchanged sends\n * the sentinel back; removing the field means the stored secret is preserved\n * (UPDATE is a partial `$set`). A genuinely new secret value is left intact.\n * Returns the same (mutated) value.\n */\n static stripWriteOnlySecretSentinel<T>(schema: z.ZodTypeAny, value: T): T {\n this.walkWriteOnlySecretValues(schema, value, (holder, fieldName) => {\n if (holder[fieldName] === WRITE_ONLY_SECRET_MASK) {\n delete holder[fieldName];\n }\n });\n return value;\n }\n\n /**\n * Strip fields marked with isBackendOnly decorator from schema.\n *\n * @param schema - Schema to strip from\n * @param options - Options for stripping behavior\n * @returns New schema without backend-only fields\n */\n private static stripBackendOnlyFields(\n schema: z.ZodTypeAny,\n options?: {\n respectIsReturnedAtCreation?: boolean; // Include fields with isReturnedAtCreation in CREATE responses\n operationType?: CoreResourceOperation; // Operation type for isReturnedAtCreation logic\n }\n ): z.ZodTypeAny {\n // Handle discriminated unions - strip from all variants\n const zodType = getZodType(schema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(schema, 'discriminator');\n const unionOptions = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && unionOptions && unionOptions.length > 0) {\n const strippedOptions = unionOptions.map((option: z.ZodTypeAny) =>\n this.stripBackendOnlyFields(option, options)\n );\n\n // Recreate discriminated union with modified variants\n if (strippedOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n strippedOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else if (strippedOptions.length === 1) {\n return strippedOptions[0];\n }\n }\n\n return schema;\n }\n\n // Handle arrays - strip from array element schema.\n // `withArrayElement` rather than `z.array(...)`: a fresh array carries none of the original's\n // own `.min()` / `.max()` / `.length()` checks, which would silently drop an authored\n // collection-size constraint from the response contract.\n if (isZodArray(schema)) {\n // ZodArray stores element schema in _def.element (not _def.type)\n const elementSchema = getZodDefProperty(schema, 'element') as z.ZodTypeAny;\n return withArrayElement(schema, this.stripBackendOnlyFields(elementSchema, options));\n }\n\n // Handle optional/nullable/default wrappers - unwrap, strip, rewrap\n if (isZodOptional(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.preserveSchemaMetadata(\n schema,\n this.stripBackendOnlyFields(innerSchema, options).optional(),\n );\n }\n\n if (hasZodType(schema, 'nullable')) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.preserveSchemaMetadata(\n schema,\n this.stripBackendOnlyFields(innerSchema, options).nullable(),\n );\n }\n\n if (isZodDefault(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n // ⚠️ Re-READ the default per parse, never carry a value across.\n //\n // In Zod 4 `def.defaultValue` is a GETTER: reading it EVALUATES the default\n // (`z.date().default(() => new Date())` yields a fresh Date on every read).\n // A DTO is rebuilt ONCE, when the resource configuration is built at process\n // start — so `.default(<value read here>)` freezes that instant into every\n // parse the process ever performs. Recovered 2026-08-11: lifecycle rows were\n // persisting `stageEnteredAt` / `lastActiveAt` stamped at backend boot,\n // identical to the millisecond across rows created a minute apart.\n //\n // Passing a FUNCTION makes Zod evaluate per parse. A literal default is\n // unaffected — the getter simply returns the same value each time.\n return this.preserveSchemaMetadata(\n schema,\n this.stripBackendOnlyFields(innerSchema, options).default(() => getZodDefProperty(schema, 'defaultValue')),\n );\n }\n\n // Handle objects - strip backend-only fields from shape\n if (isZodObject(schema)) {\n const shape = getZodObjectShape(schema);\n const omitObj: Record<string, true> = {};\n const rebuiltShape: Record<string, z.ZodTypeAny> = {};\n let didRebuildNestedField = false;\n\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isBackendOnlyField(fieldSchema as z.ZodTypeAny)) {\n const backendOnlyParams = getBackendOnlyParams(fieldSchema as z.ZodTypeAny);\n\n // Respect isReturnedAtCreation for CREATE operations\n if (options?.respectIsReturnedAtCreation &&\n options?.operationType === CoreResourceOperation.CREATE &&\n backendOnlyParams?.isReturnedAtCreation) {\n // Keep this field - it's returned at creation\n rebuiltShape[fieldName] = fieldSchema as z.ZodTypeAny;\n continue;\n }\n\n // Strip this backend-only field\n omitObj[fieldName] = true;\n } else {\n // Recursively strip from nested objects/arrays\n const strippedFieldSchema = this.stripBackendOnlyFields(fieldSchema as z.ZodTypeAny, options);\n rebuiltShape[fieldName] = strippedFieldSchema;\n didRebuildNestedField = didRebuildNestedField || strippedFieldSchema !== fieldSchema;\n }\n }\n\n if (Object.keys(omitObj).length > 0 || didRebuildNestedField) {\n return this.rebuildObjectSchema(schema, rebuiltShape, {\n preserveChecks: Object.keys(omitObj).length === 0,\n });\n }\n\n return schema;\n }\n\n // For other schema types (primitives, etc.), return as-is\n return schema;\n }\n\n /**\n * Transform network-boundary leaves recursively for API/WebSocket/Queue DTOs:\n * `z.date()` → string-accepting `z.coerce.date()`, and `z.bigint()` (notably\n * `z_money`'s `amount`) → a string-accepting bigint (see\n * {@link applyNetworkBoundaryCoercion} for why money bigints arrive as strings).\n *\n * This utility is used to create schemas suitable for parsing API responses/requests\n * where dates come as ISO strings and money amounts come as numeric strings, both of\n * which need to be coerced back to their runtime types (Date / bigint).\n *\n * Use this when parsing data from:\n * - HTTP API responses (JSON with date strings and bigint-as-string money amounts)\n * - WebSocket messages\n * - Queue messages\n * - Any external data source where dates/bigints are serialized as strings\n *\n * @param schema - Schema to transform (typically a database/internal schema with z.date()/z.bigint())\n * @returns New schema with coerced dates + bigints suitable for API parsing\n *\n * @example\n * ```typescript\n * // Database schema uses z.date()\n * const dbSchema = z.object({ createdAt: z.date() });\n *\n * // Create API parsing schema\n * const apiSchema = ResourcesConfigOperationsDtosBuilderUtils.createApiParsingSchema(dbSchema);\n *\n * // Now can parse API response with date strings\n * const data = apiSchema.parse({ createdAt: \"2024-01-01T00:00:00Z\" }); // Works!\n * ```\n */\n static createApiParsingSchema<T extends z.ZodTypeAny>(schema: T): T {\n return this.applyNetworkBoundaryCoercion(schema) as T;\n }\n\n /**\n * Recursively transpose the two network-boundary leaf types that do NOT survive\n * a JSON round-trip as their runtime type — `z.date()` and `z.bigint()` — into\n * string-accepting forms, walking union / array / optional / nullable / default /\n * object wrappers so nested and optional leaves are covered identically.\n *\n * This is the INBOUND (coerce, string → runtime type) half of the network-boundary\n * contract. Its OUTBOUND (serialize, runtime type → wire string) counterpart is\n * `Date.prototype.toJSON` (built-in) for dates and `BigInt.prototype.toJSON`\n * (installed by `installBigIntJsonEncoding` in `@wildo-ai/zod-decorators`) for\n * money bigints. Because the SAME coerced `responseDto`/`requestDto` this produces\n * is parsed on BOTH sides, the backend serialize-parse, the frontend\n * receive-parse, and worker queue re-hydration all coerce identically. See the\n * full mechanism map in `install-bigint-json-encoding.ts`.\n *\n * **Why `z.bigint()` needs this (the `z_money` case).** `z_money().amount` is a\n * `z.bigint()`. The Zod→Mongoose convertor persists bigint as a Mongoose **String**\n * column (with a `v → BigInt(v)` getter), but reads go through `.lean()` /\n * `toObject` WITHOUT `{ getters: true }`, so the value that reaches the DTO layer\n * is the raw **string** (e.g. `\"1999\"`), and over the JSON wire a bigint is always\n * serialized as a string too. A strict `z.bigint().parse(\"1999\")` then throws\n * `expected bigint, received string` in the service-layer `transformOutput`. This\n * pass rewrites every `z.bigint()` leaf to first coerce a string to `BigInt`, so\n * the same strict schema now accepts the on-wire/from-DB string form. It mirrors\n * the `z.date()` → `z.coerce.date()` transposition exactly — both are \"the runtime\n * type does not round-trip through JSON, accept its string form on read\" fixes.\n *\n * The bigint leaf is wrapped with `z.preprocess` over the ORIGINAL schema (rather\n * than a fresh `z.coerce.bigint()`) specifically to **preserve any `.min()`/`.max()`\n * checks** — e.g. `z_money({ minAmount: 0n })` compiles to `z.bigint().min(0n)`,\n * whose non-negativity check must survive the coercion. `z.coerce.bigint()` would\n * silently drop those checks; preprocessing the untouched schema keeps them intact.\n *\n * z_money field coverage this pass restores (each parses after coercion):\n * `prices.unitPrice`, `prices.tiers[].unitPrice`, `prices.tiers[].flatPrice`\n * (array-nested), `invoiceRefs.total`, `promotions.discountFixedAmount` (optional),\n * `productDefinitions.unitPrice`.\n *\n * @param schema - Schema to transform (typically a database/internal schema with z.date()/z.bigint())\n * @returns New schema with coerced dates + string-accepting bigints\n */\n private static applyNetworkBoundaryCoercion(schema: z.ZodTypeAny): z.ZodTypeAny {\n // Handle discriminated unions - transform dates in all variants\n const zodType = getZodType(schema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(schema, 'discriminator');\n const unionOptions = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && unionOptions && unionOptions.length > 0) {\n const transformedOptions = unionOptions.map((option: z.ZodTypeAny) =>\n this.applyNetworkBoundaryCoercion(option)\n );\n\n if (transformedOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n transformedOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else if (transformedOptions.length === 1) {\n return transformedOptions[0];\n }\n }\n\n return schema;\n }\n\n // Handle arrays - transform dates in array element schema.\n // `withArrayElement` rather than `z.array(...)`: this walk runs over EVERY operation DTO,\n // including an author-supplied `requestDto`, so rebuilding bare here is what stripped\n // authored `.min()` / `.max()` constraints out of request validation.\n if (isZodArray(schema)) {\n // ZodArray stores element schema in _def.element (not _def.type)\n const elementSchema = getZodDefProperty(schema, 'element') as z.ZodTypeAny;\n return withArrayElement(schema, this.applyNetworkBoundaryCoercion(elementSchema));\n }\n\n // Handle optional/nullable/default wrappers - unwrap, transform, rewrap\n if (isZodOptional(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.preserveSchemaMetadata(\n schema,\n this.applyNetworkBoundaryCoercion(innerSchema).optional(),\n );\n }\n\n if (hasZodType(schema, 'nullable')) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.preserveSchemaMetadata(\n schema,\n this.applyNetworkBoundaryCoercion(innerSchema).nullable(),\n );\n }\n\n if (isZodDefault(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n // Per-parse re-read — see the note on the `stripBackendOnlyFields` default\n // branch: a materialized default freezes at DTO-build time (process start).\n return this.preserveSchemaMetadata(\n schema,\n this.applyNetworkBoundaryCoercion(innerSchema).default(() => getZodDefProperty(schema, 'defaultValue')),\n );\n }\n\n // Handle pipe/refine chains (`.transform()` / `.refine()` — e.g. `z_phone()`,\n // which is `z.string().transform(...).refine(...).transform(...)`, or a bare\n // `z.coerce.date()`). Return the schema UNCHANGED.\n //\n // Rationale: a pipe/refine chain is an opaque validation+normalization pipeline\n // over a primitive. Framework `z.date()` leaves NEVER live inside such a chain —\n // dates are only ever wrapped in optional/nullable/default/array/object/union —\n // so there is nothing for date-coercion to rewrite here.\n //\n // Rejected alternative (the prior implementation): unwrap the inner schema,\n // coerce it, and return that inner. This is doubly wrong — (1) in Zod 4 the pipe\n // input lives at `def.in`, not the Zod-3-era `def.schema`, so the unwrap read\n // `undefined` and any surrounding `.optional()/.nullable()/.default()` then\n // crashed with \"Cannot read properties of undefined (reading 'optional')\" the\n // moment a pipe field (e.g. `z_phone().optional()`) reached this branch; and\n // (2) even reading `def.in` correctly, returning the bare inner would silently\n // DROP the pipe's transform/refine steps (e.g. `z_phone`'s E.164 normalization\n // and validation) from every request/response/summary DTO. Preserving the whole\n // pipe atomically is the only semantically-faithful behavior.\n if (hasZodType(schema, 'pipe') || hasZodType(schema, 'refine')) {\n return schema;\n }\n\n // Handle date - transform to coerce.date\n if (hasZodType(schema, 'date')) {\n // Always transform to coerce.date for DTOs (API/WebSocket/Queue communication)\n // This allows string dates from JSON to be coerced to Date objects\n return this.preserveSchemaMetadata(schema, z.coerce.date());\n }\n\n // Handle bigint - accept the on-wire/from-DB string form and coerce to bigint.\n //\n // z_money's `amount` is a z.bigint(); bigint never round-trips through JSON as a\n // bigint (it serializes as a string) and the Mongoose String-backed storage + a\n // getterless .lean()/toObject read also yield the raw string. Wrapping the\n // ORIGINAL schema in z.preprocess (instead of z.coerce.bigint()) preserves any\n // .min()/.max() checks compiled from z_money({ minAmount/maxAmount }). Non-string\n // inputs pass through untouched so an in-process bigint stays a bigint and any\n // genuinely-wrong type is still reported by the underlying strict bigint schema.\n if (hasZodType(schema, 'bigint')) {\n return this.preserveSchemaMetadata(schema, z.preprocess(\n (value) => (typeof value === 'string' ? BigInt(value) : value),\n schema\n ));\n }\n\n // Handle objects - transform dates in shape\n if (isZodObject(schema)) {\n const shape = getZodObjectShape(schema);\n const transformedShape: Record<string, z.ZodTypeAny> = {};\n let didTransformAnyField = false;\n\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n const transformedFieldSchema = this.applyNetworkBoundaryCoercion(fieldSchema as z.ZodTypeAny);\n transformedShape[fieldName] = transformedFieldSchema;\n didTransformAnyField = didTransformAnyField || transformedFieldSchema !== fieldSchema;\n }\n\n if (!didTransformAnyField) {\n return schema;\n }\n\n return this.rebuildObjectSchema(schema, transformedShape);\n }\n\n // For other schema types (primitives, etc.), return as-is\n return schema;\n }\n\n /**\n * Extract summary fields (isSummaryField decorator) from schema.\n * Handles discriminated unions by extracting from each variant.\n *\n * @param schema - Schema to extract from\n * @returns New schema with only summary fields\n */\n private static extractSummaryFields(schema: z.ZodTypeAny): z.ZodTypeAny {\n // Handle discriminated unions - extract summary from each variant\n const zodType = getZodType(schema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(schema, 'discriminator');\n const unionOptions = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && unionOptions && unionOptions.length > 0) {\n // Use ResourcesSummaryUtils.deriveSummarySchemaForDiscriminatedUnion if all options are objects\n const allAreObjects = unionOptions.every(opt => isZodObject(opt));\n if (allAreObjects) {\n try {\n return ResourcesSummaryUtils.deriveSummarySchemaForDiscriminatedUnion(\n schema as unknown as z.ZodObject<z.ZodRawShape>,\n {\n discriminatorField: discriminator,\n withoutInheritanceDiscriminatorFieldValues: []\n } as any\n );\n } catch {\n // Fallback: extract from each variant individually (see lines below)\n }\n }\n\n // Extract summary from each variant and rebuild union\n const summaryOptions = unionOptions.map((option: z.ZodTypeAny) =>\n this.extractSummaryFields(option)\n ).filter(opt => opt !== null && opt !== undefined);\n\n if (summaryOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n summaryOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else if (summaryOptions.length === 1) {\n return summaryOptions[0];\n }\n }\n\n return schema;\n }\n\n // Handle arrays - extract summary from array element schema.\n // `withArrayElement` rather than `z.array(...)`, for the same reason as the two walkers above:\n // a fresh array carries none of the original's own `.min()` / `.max()` / `.length()` checks.\n if (isZodArray(schema)) {\n // ZodArray stores element schema in _def.element (not _def.type)\n const elementSchema = getZodDefProperty(schema, 'element') as z.ZodTypeAny;\n return withArrayElement(schema, this.extractSummaryFields(elementSchema));\n }\n\n // Handle optional/nullable/default wrappers - unwrap, extract, rewrap\n if (isZodOptional(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.extractSummaryFields(innerSchema).optional();\n }\n\n if (hasZodType(schema, 'nullable')) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.extractSummaryFields(innerSchema).nullable();\n }\n\n if (isZodDefault(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n // Per-parse re-read — see the note on the `stripBackendOnlyFields` default\n // branch: a materialized default freezes at DTO-build time (process start).\n return this.extractSummaryFields(innerSchema).default(() => getZodDefProperty(schema, 'defaultValue'));\n }\n\n // Handle objects - use ResourcesSummaryUtils.deriveSummarySchema\n if (isZodObject(schema)) {\n try {\n // Pure summary-field extraction — NO network-boundary coercion here.\n // Network-boundary transposition (z.date() → z.coerce.date() AND\n // string-accepting z.bigint() for z_money amounts) is applied UNIFORMLY by\n // the caller (`buildAllOperationDtos`) over the fully-resolved summary\n // schema, mirroring how requestDto/responseDto/internalDto are coerced.\n // Coercing per-branch here is what let the discriminated-union branch (and\n // the no-summary-fields fallback) silently ship strict z.date()/z.bigint()\n // summary DTOs that reject ISO-string dates / bigint-as-string amounts.\n return ResourcesSummaryUtils.deriveSummarySchema(schema, {\n includeId: true,\n includeForeignKeys: false\n });\n } catch (error) {\n throw new Error(`Failed to derive summary schema for object: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n // For other schema types (primitives, etc.), return as-is\n return schema;\n }\n\n /**\n * Add relationship placeholders to schema for context DTO.\n * Placeholders are optional fields: parentResourceType?: { _id: string }\n *\n * @param schema - Base schema\n * @param relationships - Resource relationships configuration\n * @param registry - Resource registry for type resolution\n * @returns Schema with relationship placeholders added\n */\n private static addRelationshipPlaceholders(\n schema: z.ZodTypeAny,\n relationships: ResourceConfiguration_ResourceRelationships,\n registry: Map<ResourceType, any>\n ): z.ZodTypeAny {\n // Only add placeholders to object schemas\n if (!isZodObject(schema)) {\n return schema;\n }\n\n const shape = getZodObjectShape(schema);\n const placeholderFields: Record<string, z.ZodTypeAny> = {};\n\n // Add parent relationship placeholders (includes self-refs acting as parents)\n const parentDirRels = getParentDirectionRelationships(relationships);\n for (const relationship of parentDirRels) {\n if (relationship.contextPolicy?.enabled === false) {\n continue;\n }\n\n const fieldName = this.getRelationshipObjectFieldName(\n relationship,\n relationship.resourceType1,\n ResourceRelationshipCardinality.ONE,\n registry\n );\n\n // Only add if field doesn't already exist (avoid conflicts)\n if (!shape[fieldName]) {\n // Placeholder format: parentResourceType?: { _id: string }\n placeholderFields[fieldName] = z.object({\n _id: z.string()\n }).optional();\n }\n }\n\n // Add child relationship placeholders (includes self-refs acting as children)\n // Children with contextPolicy enabled are populated in CONTEXT mode\n const childDirRels = getChildDirectionRelationships(relationships);\n for (const relationship of childDirRels) {\n // Skip relationships without contextPolicy or with disabled contextPolicy\n if (!relationship.contextPolicy) {\n continue;\n }\n\n // Skip if contextPolicy is explicitly disabled\n if (relationship.contextPolicy.enabled === false) {\n continue;\n }\n\n const fieldName = this.getRelationshipObjectFieldName(\n relationship,\n relationship.resourceType2,\n relationship.cardinality2,\n registry\n );\n // DTO context placeholders are projection conveniences, not transport\n // addressability proof. Keep this broader than context-addressed mutation\n // eligibility: URL/backend/frontend runtime predicates separately require\n // composition nature, explicit FK metadata, and routing scope.\n const isOneToOne = isOneToOneCardinality(relationship.cardinality2);\n\n // Only add if field doesn't already exist (avoid conflicts)\n if (!shape[fieldName]) {\n // Use a passthrough schema to allow any fields from the child\n // Zod 4 requires key and value schemas for z.record\n const childPlaceholder = z.record(z.string(), z.any());\n\n if (isOneToOne) {\n // 1:1: single object (optional)\n placeholderFields[fieldName] = childPlaceholder.optional();\n } else {\n // 1:many: array of objects (optional)\n placeholderFields[fieldName] = z.array(childPlaceholder).optional();\n }\n }\n }\n\n // Merge placeholders with existing schema\n if (Object.keys(placeholderFields).length > 0) {\n return schema.extend(placeholderFields);\n }\n\n return schema;\n }\n\n /**\n * Transform object dates from strings to Date objects (for incoming requests).\n * Uses DTO schema to identify which fields are dates.\n *\n * @param data - Object to transform\n * @param dtoSchema - DTO schema (with z.coerce.date() fields)\n * @returns Transformed object with Date objects\n */\n /**\n * Unwrap the pure field-MODIFIER wrappers (`optional` / `nullable` / `default`) to\n * reach the underlying schema, so a wrapped date field is still detected as a date\n * and a wrapped nested object/array is still recursed into.\n *\n * WHY: without this, `z.date().optional()` reports type `'optional'` (not `'date'`),\n * so its string value was never coerced to a `Date`, and an `.optional()`-wrapped\n * object was treated as a leaf. Nested/optional date fields — notably the collection\n * filter date ranges `{ startDate, endDate }` built on `z.date()` (NOT\n * `z.coerce.date()`) — therefore reached the DTO parse as strings and threw\n * `z.date()` validation. Stackable modifiers (`z.date().nullable().default()`) are\n * peeled in a bounded loop.\n *\n * DELIBERATELY does NOT unwrap `pipe` / `transform` / `readonly` / `catch`: those can\n * change the value's meaning (input vs output side), so treating their output schema\n * as their input would mis-coerce. They stay leaves exactly as before. (`z.coerce.date()`\n * reports type `'date'` directly, so it needs no unwrapping and keeps working.)\n */\n private static unwrapDateModifierWrappers(schema: z.ZodTypeAny): z.ZodTypeAny {\n let current = schema;\n while (isZodOptional(current) || isZodNullable(current) || isZodDefault(current)) {\n const inner = getZodDefSchemaProperty(current, 'innerType');\n if (!inner) break;\n current = inner;\n }\n return current;\n }\n\n static transformRequestDates<T = any>(data: T, dtoSchema: z.ZodTypeAny): T {\n if (!data || typeof data !== 'object') {\n return data;\n }\n\n // See through modifier wrappers so a wrapped array/object schema is still handled\n // (e.g. `z.array(...).optional()`, an `.optional()` nested object).\n const schema = this.unwrapDateModifierWrappers(dtoSchema);\n\n // Handle arrays\n if (Array.isArray(data)) {\n const zodType = getZodType(schema);\n if (zodType === 'array') {\n // ZodArray stores element schema in _def.element (not _def.type)\n const elementSchema = getZodDefProperty(schema, 'element') as z.ZodTypeAny;\n if (elementSchema) {\n return data.map(item => this.transformRequestDates(item, elementSchema)) as T;\n }\n }\n return data;\n }\n\n // Handle objects\n if (isZodObject(schema)) {\n const shape = getZodObjectShape(schema);\n const transformed: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(data as Record<string, any>)) {\n const fieldSchema = shape[key];\n if (fieldSchema) {\n // Unwrap modifier wrappers, then check if the underlying field is a date\n // (`z.date()` / `z.coerce.date()`, incl. `.optional()` / `.nullable()` /\n // `.default()` around them).\n const unwrappedField = this.unwrapDateModifierWrappers(fieldSchema);\n if (getZodType(unwrappedField) === 'date') {\n // Transform string to Date; leave existing Dates (and non-strings) alone.\n transformed[key] = typeof value === 'string' ? new Date(value) : value;\n } else {\n // Recursively transform nested objects/arrays (through their wrappers).\n transformed[key] = this.transformRequestDates(value, unwrappedField);\n }\n } else {\n transformed[key] = value;\n }\n }\n\n return transformed as T;\n }\n\n return data;\n }\n\n /**\n * Transform object dates from Date objects to ISO strings (for outgoing responses).\n * Uses DTO schema to identify which fields are dates.\n *\n * NO `transformResponseBigints` twin exists, BY DESIGN. This is date-specific\n * in-body normalization; the money-`bigint` leaf (the other network-boundary type)\n * is NOT normalized in the body — it stays a `bigint` in the serialized body and is\n * encoded to a decimal string at the JSON boundary by `BigInt.prototype.toJSON`\n * (`installBigIntJsonEncoding`, `@wildo-ai/zod-decorators`). A parallel body-walk for\n * bigint would be redundant with that `toJSON`. (Indeed, since `Date.prototype.toJSON`\n * also exists, this date walk is itself now largely belt-and-suspenders — kept as-is,\n * not extended.) Full mechanism map: `install-bigint-json-encoding.ts`.\n *\n * @param data - Object to transform\n * @param dtoSchema - DTO schema (with z.coerce.date() fields)\n * @returns Transformed object with ISO string dates\n */\n static transformResponseDates<T = any>(data: T, dtoSchema: z.ZodTypeAny): T {\n if (!data || typeof data !== 'object') {\n return data;\n }\n\n // Handle arrays\n if (Array.isArray(data)) {\n const zodType = getZodType(dtoSchema);\n if (zodType === 'array') {\n // ZodArray stores element schema in _def.element (not _def.type)\n const elementSchema = getZodDefProperty(dtoSchema, 'element') as z.ZodTypeAny;\n if (elementSchema) {\n return data.map(item => this.transformResponseDates(item, elementSchema)) as T;\n }\n }\n return data;\n }\n\n // Handle objects\n if (isZodObject(dtoSchema)) {\n const shape = getZodObjectShape(dtoSchema);\n const transformed: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(data as Record<string, any>)) {\n const fieldSchema = shape[key];\n if (fieldSchema) {\n // Check if field is a date (coerced or regular)\n const zodType = getZodType(fieldSchema);\n if (zodType === 'date' || hasZodType(fieldSchema, 'date')) {\n // Transform Date to ISO string\n if (value instanceof Date) {\n transformed[key] = value.toISOString();\n } else {\n transformed[key] = value;\n }\n } else {\n // Recursively transform nested objects/arrays\n transformed[key] = this.transformResponseDates(value, fieldSchema);\n }\n } else {\n transformed[key] = value;\n }\n }\n\n return transformed as T;\n }\n\n return data;\n }\n\n /**\n * Select the appropriate response DTO based on DataMode.\n * Used by both backend and frontend services to ensure consistent DTO selection.\n *\n * IMPORTANT: Handles structure differences between single-item and collection operations:\n * - Single item (READ, CREATE, etc.): Returns item schema\n * - Collection (LIST, SEARCH): Returns pagination wrapper schema\n *\n * Priority:\n * 1. If operation has variantKey → return operation.responseDto (already variant-specific)\n * 2. If DataMode is SUMMARY and summaryDto exists → return summaryDto (wrapped for LIST/SEARCH)\n * 3. If DataMode is CONTEXT and contextDto exists → return contextDto (wrapped for LIST/SEARCH)\n * 4. Otherwise → return responseDto (default for RAW mode)\n *\n * @param operation - The resource operation configuration\n * @param dataMode - The data mode (defaults to RAW if not specified)\n * @returns The selected DTO schema, or null/undefined if not available\n */\n static selectResponseDto(\n operation: ResourceConfiguration_Operation<any, any, any>,\n dataMode?: DataMode\n ): z.ZodTypeAny | null | undefined {\n if (!operation) {\n return null;\n }\n\n // For variant operations (with variantKey), responseDto is already correct\n // (built in buildAllOperationDtos with correct structure for LIST/SEARCH)\n if (operation.variantKey) {\n return operation.responseDto || null;\n }\n\n const effectiveDataMode = dataMode || DataMode.RAW;\n const effectiveOperation = operation.resourceOperationLike || operation.operationIdentifier;\n const isListOrSearch = effectiveOperation === CoreResourceOperation.LIST\n || effectiveOperation === CoreResourceOperation.SEARCH;\n\n // For default operations with dataMode specified, select and wrap appropriately\n if (effectiveDataMode === DataMode.SUMMARY && operation.summaryDto) {\n return isListOrSearch\n ? this.wrapInPaginationStructure(operation.summaryDto, (operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n : operation.summaryDto;\n }\n\n if (effectiveDataMode === DataMode.CONTEXT && operation.contextDto) {\n return isListOrSearch\n ? this.wrapInPaginationStructure(operation.contextDto, (operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n : operation.contextDto;\n }\n\n // Default to responseDto for RAW mode or when specific DTOs are not available\n return operation.responseDto || null;\n }\n\n /**\n * Wrap item schema in pagination structure for LIST/SEARCH operations\n * @param itemSchema - Schema for individual items\n * @returns Pagination wrapper schema\n */\n private static wrapInPaginationStructure(itemSchema: z.ZodTypeAny, maxResultsPerPageLimit?: number): z.ZodTypeAny {\n return z.object({\n data: z.array(itemSchema),\n // The operation's ceiling, like every other pagination bound in the framework. `limit` echoes\n // the page size that was SERVED, so a bound stricter than the repository's turns a valid page\n // into a 500 — which is exactly what a hard-coded 100 here did to an operation declaring 200.\n pagination: createPaginationResponseMetadataSchema(maxResultsPerPageLimit)\n });\n }\n}\n\n/**\n * Derive the re-attach allowlist for a TRUSTED, in-process system write.\n *\n * The repository strict-parses every create/update against a client-shaped\n * request DTO that DROPS three classes of field: `.isBackendOnly()` fields, the\n * context-auto-populated FKs (`CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS`, stripped\n * by name), and the verb-excluded fields (`.excludeFromCreate()` on CREATE /\n * `.excludeFromUpdate()` on UPDATE). On the HTTP path those are re-supplied AFTER\n * the strip — backend-only material never comes from the client, the context FKs\n * are injected from the URL-derived context / initiator identity by\n * `enrichDataWithContext`, and a client is simply not allowed to author the\n * verb-excluded fields (the server owns them).\n *\n * An in-process caller writing to a system resource has NEITHER context: the\n * payload IS the source of truth. Registration creating `USER_CREDENTIALS` with\n * `{ userId, passwordHash }` needs the FK + backend-only field to survive; an\n * OIDC re-login bumping an identity link's `.excludeFromUpdate()` `lastUsedAt`\n * needs the verb-excluded field to survive. Without help, the strip silently\n * drops them → a required-path Mongoose crash or silent data loss.\n *\n * This function returns exactly the subset of `payloadKeys` the strip would drop\n * for one of those legitimate reasons, so the trusted-write primitives\n * (`SystemAccessBackendService.createAsSystem` / `updateAsSystem` /\n * `updateManyAsSystem`) can forward it as `options.preserveServerInjectedFields`\n * and have the repository re-attach the values after the strip. Ordinary fields\n * are deliberately excluded — they parse normally, so re-attaching them would\n * bypass their own validation.\n *\n * PER-VERB EXCLUDE SEMANTICS (the `verb` argument):\n * - UPDATE / UPDATE_MANY: re-attach every `.excludeFromUpdate()` key the caller\n * authored. UPDATE is a partial `$set` (no default application), so an\n * explicitly-authored value is authoritative — this is the path that lets a\n * server-managed timestamp like `lastUsedAt` actually advance.\n * - CREATE: re-attach an `.excludeFromCreate()` key the caller authored ONLY\n * when the field has NO `.default()`. A defaulted excludeFromCreate field\n * (`createdAt`, `linkedAt`, …) is server-owned at creation and the\n * strip-then-default path is the intended source of truth; re-attaching a\n * caller value would let stale input clobber the fresh default. A caller with\n * a genuine need to override a defaulted field can still pass an explicit\n * `preserveServerInjectedFields`.\n *\n * The mandatory-discard fields (`_id` / `createdAt` / `updatedAt` / `deletedAt` /\n * `_version_db_doc`) are NEVER re-attached — they are force-removed before\n * validation and are unconditionally server-owned. This guard is what keeps the\n * UPDATE branch (which would otherwise match `.excludeFromUpdate()` `createdAt` /\n * `updatedAt`) honest.\n *\n * ANTI-SMUGGLING: this is safe ONLY because the primitives are reachable exclusively\n * from trusted engine code behind a fail-closed `systemAccessPolicy` opt-in — never\n * from an HTTP payload. Do NOT call this to re-attach fields from an untrusted\n * request; that would re-open the exact hole the strict parse closes.\n *\n * Polymorphic-safe: `getMergedObjectOrUnionShape` merges discriminated-union\n * variants and returns `{}` for a non-object schema (in which case only the\n * name-based context-FK detection applies — still correct for scope/audit FKs).\n *\n * @param mainSchema The resource's main Zod schema.\n * @param payloadKeys The keys actually present on the trusted write payload.\n * @param verb The write verb — selects `.excludeFromCreate()` vs\n * `.excludeFromUpdate()` detection (UPDATE_MANY ≡ UPDATE). The\n * write is always one of these, so the caller always knows it.\n * @returns The subset of `payloadKeys` that are backend-only, context-auto-populated,\n * or a legitimately-authored verb-excluded field.\n */\nexport function deriveTrustedSystemWritePreservedFields(\n mainSchema: z.ZodTypeAny,\n payloadKeys: readonly string[],\n verb: CoreResourceOperation.CREATE | CoreResourceOperation.UPDATE | CoreResourceOperation.UPDATE_MANY,\n): string[] {\n const backendOnlyFieldNames = new Set<string>();\n // Verb-excluded fields the client-shaped DTO strips but a TRUSTED caller may\n // legitimately author (see PER-VERB EXCLUDE SEMANTICS above).\n const verbExcludedFieldNames = new Set<string>();\n\n const shape = getMergedObjectOrUnionShape(mainSchema);\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isBackendOnlyField(fieldSchema)) {\n backendOnlyFieldNames.add(fieldName);\n }\n if (verb === CoreResourceOperation.CREATE) {\n // Defaulted excludeFromCreate fields are server-materialised at creation —\n // withhold them so the schema default wins over any (potentially stale) input.\n if (isExcludedFromCreate(fieldSchema) && !isZodDefault(fieldSchema)) {\n verbExcludedFieldNames.add(fieldName);\n }\n } else if (verb === CoreResourceOperation.UPDATE || verb === CoreResourceOperation.UPDATE_MANY) {\n if (isExcludedFromUpdate(fieldSchema)) {\n verbExcludedFieldNames.add(fieldName);\n }\n }\n }\n\n return payloadKeys.filter((key) =>\n // Never resurrect a mandatory-discard field (force-removed pre-validation).\n !createOrUpdateMandatoryDiscardFields.includes(key)\n && (\n backendOnlyFieldNames.has(key)\n || verbExcludedFieldNames.has(key)\n || CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS.includes(key)\n ),\n );\n}\n"]}
1
+ {"version":3,"file":"resources-config-operations.dtos-builder.utils.js","sourceRoot":"","sources":["../../../../../src/resources/utils/resources-config-operations.dtos-builder.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { ResourceType, CoreResourceOperation } from '../resources.shared.core.definitions';\nimport { ResourceConfiguration_ResourceRelationships, ResourceConfiguration_InheritanceSchemaDefinition, ResourceConfiguration_Operation, ResourceConfiguration, Resources_BulkOperationBaseSchema, DataMode, OPERATION_VARIANT_KEY, Resources_PaginationResponseMetadataSchema, createPaginationResponseMetadataSchema, getChildDirectionRelationships, getParentDirectionRelationships, AnyResourceConfiguration, ResourceGeneratedOperationKind } from '../resources-config.shared.schemas';\nimport {\n ResourceRelationshipCardinality,\n isOneToOneCardinality,\n isArrayCardinality,\n getDefaultResponseSchemaForOperation,\n isOutputEnvelopeOperation,\n operationShouldHaveRequestDto,\n DefaultBulkDeleteResponseSchema,\n ResourceRelationship,\n CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS,\n createOrUpdateMandatoryDiscardFields\n} from '../resources.shared.schemas';\nimport { Resources_SharedUtils } from '../resources.shared.utils';\nimport {\n ChildNestedReadConfig_Parsed,\n ChildNestedMutationConfig_Parsed,\n ChildNestedReadConfig,\n ChildNestedMutationConfig\n} from '../child-operations.shared.schemas';\nimport {\n addDiscriminator,\n getCustomFieldMetadata,\n ZodDecorator,\n EnumLikeType,\n getZodType,\n hasZodType,\n isZodObject,\n isZodArray,\n isZodOptional,\n isZodNullable,\n isZodDefault,\n toPatchOptionalField,\n getZodObjectShape,\n getZodDefSchemaProperty,\n getZodDefArrayProperty,\n getZodDefStringProperty,\n getZodDefProperty,\n isZodTypeAny,\n getEnumValues,\n isExcludedFromCreate,\n isExcludedFromUpdate,\n isVirtualField,\n isTemplatableFileField,\n isPrimaryKey,\n isBackendOnlyField,\n getBackendOnlyParams,\n isWriteOnlySecretField,\n isDiscriminatorField,\n unwrapSchema,\n getMergedObjectOrUnionShape,\n withArrayElement,\n SCHEMA_METADATA\n} from '@wildo-ai/zod-decorators';\nimport { ResourcesConfigNamingUtils } from './resources-config-naming.utils';\nimport { ResourcesSummaryUtils } from './resources-summary.utils';\nimport { RepositoryDtoBuilderUtils } from './repository-dto-builder.utils';\nimport {\n stripTemplatableFileFieldsRecursively as stripTemplatableFileFieldsSchema,\n} from './templatable-file-fields.shared.utils';\n\n/**\n * Canonical placeholder shown to clients in place of a `.isWriteOnlySecret()`\n * field's real value. It doubles as the write-back sentinel: when a client\n * echoes this exact string back on CREATE/UPDATE, the framework interprets it as\n * \"keep the existing stored secret\" and strips the field from the write payload\n * (UPDATE is a partial `$set`, so the stored value is preserved). Kept as a\n * single constant so the output mask and the input sentinel never drift.\n */\nexport const WRITE_ONLY_SECRET_MASK = '••••••••';\n\n/**\n * Type guard to check if schema is a ZodAny\n * In Zod v4, any schemas have type: \"any\"\n */\nfunction isZodAny(schema: z.ZodTypeAny): boolean {\n return hasZodType(schema, 'any');\n}\n\nexport class ResourcesConfigOperationsDtosBuilderUtils {\n /**\n * Carry field/schema decorators across a wrapper or leaf rebuild.\n *\n * Network-boundary coercion necessarily replaces Zod instances (`date` becomes\n * `coerce.date`, optional/nullable/default wrappers are rebuilt around transformed\n * children). Decorators such as `isBackendOnly` live on those instances. Losing\n * the metadata before the response-stripping pass turns a backend-only field into\n * an ordinary public field, which is a confidentiality failure rather than a\n * presentation defect.\n */\n private static preserveSchemaMetadata<TSchema extends z.ZodTypeAny>(\n source: z.ZodTypeAny,\n rebuilt: TSchema,\n ): TSchema {\n const sourceMetadata = (source as any)[SCHEMA_METADATA];\n if (sourceMetadata !== undefined) {\n (rebuilt as any)[SCHEMA_METADATA] = sourceMetadata;\n }\n return rebuilt;\n }\n\n static buildSchemaWithInheritance<TMainSchema extends z.ZodTypeAny>(\n mainSchema: TMainSchema,\n inheritanceDefinition: any,\n ): TMainSchema {\n return this.applyInheritanceToSchema(\n mainSchema,\n inheritanceDefinition,\n new Map(),\n );\n }\n\n /**\n * Rebuild an object schema, optionally preserving schema-level checks.\n *\n * DTO derivation frequently needs to rebuild object shapes for omission,\n * backend-only stripping, and date coercion. In Zod 4 those rebuilds would\n * otherwise discard `.refine()` / `.superRefine()` checks. Preserve them when\n * the field set stays semantically equivalent; skip them when fields were\n * omitted because the original cross-field logic may no longer be valid.\n */\n private static rebuildObjectSchema(\n schema: z.ZodObject<any>,\n rebuiltShape: Record<string, z.ZodTypeAny>,\n options?: {\n preserveChecks?: boolean;\n },\n ): z.ZodTypeAny {\n /*\n * Preserve the source object's CATCHALL (fixed 2026-09-01). `z.looseObject` is\n * `catchall(z.unknown())` and `z.strictObject` is `catchall(z.never())`; a bare\n * `z.object(rebuiltShape)` silently rebuilds BOTH as the default strip-unknown object. For a\n * loose schema that strip is a data-loss bug with no error anywhere: every DTO parse quietly\n * deletes the undeclared keys the schema's author explicitly declared passthrough for.\n * Measured live on the creation board's `customResponseDto` (a deliberately loose dispatch\n * outcome): a completed playbook run answered HTTP 200 with a literal `{}` — every field of a\n * rich result stripped, because the outcome's named fields were optional and everything else\n * was passthrough. Applied on the omit path too: removing declared fields does not change what\n * the author said about UNDECLARED ones.\n */\n const sourceCatchall = (schema as unknown as { def?: { catchall?: z.ZodTypeAny } }).def?.catchall;\n let rebuiltSchema: z.ZodTypeAny = sourceCatchall !== undefined\n ? z.object(rebuiltShape).catchall(sourceCatchall)\n : z.object(rebuiltShape);\n if (options?.preserveChecks === false) {\n return rebuiltSchema;\n }\n\n const checks = getZodDefArrayProperty(schema, 'checks') as unknown[] | undefined;\n for (const check of checks ?? []) {\n rebuiltSchema = rebuiltSchema.check(check as never);\n }\n\n // Preserve decorator metadata (`SCHEMA_METADATA`) across shape-equivalent rebuilds.\n //\n // Factory helpers like `z_file()`, `z_money()`, `z_bigdecimal()` and `z_range()`\n // stamp their identity as a symbol-keyed metadata object on the *ZodObject\n // instance* (not on any inner field). A fresh `z.object(rebuiltShape)` is a new\n // instance, so that symbol is lost. When the field SET is unchanged — i.e. the\n // check-preserving path (date coercion, nested inner rebuilds) — the metadata\n // still describes the schema faithfully, so it MUST be carried over.\n //\n // Concretely: `z_file()`'s value is `z.object({ fileId, updatedAt: z.date() })`.\n // DTO date-coercion rewrites the inner `updatedAt` to `z.coerce.date()`, which\n // rebuilds the object here. Without re-attaching `fileConfig`, `getSchemaType()`\n // resolves the field to a plain OBJECT and the automated form renders it as a raw\n // `{ fileId, updatedAt }` composite instead of the file uploader — and\n // `collectUploadableFileFieldPaths()` finds nothing, so no upload endpoints are\n // derived. This was the root cause of avatar/file fields never rendering an\n // uploader (the \"first real file implementation\" gap).\n //\n // The omit path (`preserveChecks: false`, above) intentionally skips this: there\n // the field set changed, so the original field-type identity may no longer hold.\n const sourceMetadata = (schema as any)[SCHEMA_METADATA];\n if (sourceMetadata !== undefined) {\n (rebuiltSchema as any)[SCHEMA_METADATA] = sourceMetadata;\n }\n\n return rebuiltSchema;\n }\n\n /**\n * Omit fields from an object schema while staying compatible with Zod 4\n * refined objects.\n *\n * Zod 4 throws when `.omit()` is used on object schemas that already carry\n * schema-level checks (`.refine()` / `.superRefine()`). DTO derivation must\n * still be able to remove transport-managed fields from those schemas, so we\n * fall back to rebuilding the object shape and reapplying the existing checks.\n */\n private static omitObjectFields(\n schema: z.ZodObject<any>,\n omitObj: Record<string, true>,\n ): z.ZodTypeAny {\n if (Object.keys(omitObj).length === 0) {\n return schema;\n }\n\n try {\n return schema.omit(omitObj);\n } catch (error) {\n if (!(error instanceof Error) || !error.message.includes('containing refinements')) {\n throw error;\n }\n\n const originalShape = getZodObjectShape(schema);\n const rebuiltShape: Record<string, z.ZodTypeAny> = {};\n\n for (const [fieldName, fieldSchema] of Object.entries(originalShape)) {\n if (!omitObj[fieldName]) {\n rebuiltShape[fieldName] = fieldSchema as z.ZodTypeAny;\n }\n }\n\n return this.rebuildObjectSchema(schema, rebuiltShape, {\n preserveChecks: false,\n });\n }\n }\n\n private static stripTemplatableFileFieldsRecursively(schema: z.ZodTypeAny): z.ZodTypeAny {\n return stripTemplatableFileFieldsSchema(schema, {\n rebuildObjectSchema: (objectSchema, strippedShape) =>\n this.rebuildObjectSchema(objectSchema, strippedShape, { preserveChecks: false }),\n });\n }\n\n /**\n * Run a resource `mainSchema`'s TOP-LEVEL object checks (`.refine()` / `.superRefine()`) against a\n * fully-materialised row (post-enrichment) and return the ZodError, or null when the schema declares\n * no top-level check or all pass.\n *\n * This is the correct enforcement point for a cross-field invariant declared on a resource\n * `mainSchema`. A CREATE REQUEST cannot carry it: the request DTO omits every backend-injected field\n * (`primaryScope`, `organizationId`, `createdAt`, …), so a check referencing one — e.g. a file-scope\n * check keyed on `primaryScope` — would fire against an ABSENT value and reject a valid create. The\n * ENRICHED row (after context injection + literal / user-tracking population) carries every field, so\n * the check validates truthfully: a file-scope check passes on a consistent row, while a check on\n * create-supplied fields (a junction's `source ≠ target`) still rejects a bad row.\n *\n * The checks run in ISOLATION via a passthrough object, so no unrelated shape/coercion validation is\n * re-applied to the already-built row (its dates are `Date`s, its ids may be driver objects — none of\n * which a fresh full-schema parse should re-police here). Works whether `mainSchema` is a plain object\n * or a discriminated-union family — a schema with no top-level check simply returns null.\n */\n static validateTopLevelObjectChecks(mainSchema: z.ZodTypeAny, value: unknown): z.ZodError | null {\n const checks = getZodDefArrayProperty(mainSchema, 'checks') as unknown[] | undefined;\n if (!checks || checks.length === 0) {\n return null;\n }\n let checker: z.ZodTypeAny = z.looseObject({});\n for (const check of checks) {\n checker = (checker as z.ZodObject<any>).check(check as never);\n }\n const result = checker.safeParse(value);\n return result.success ? null : result.error;\n }\n\n /**\n * Rebuild all operation DTOs once the full registry is available.\n *\n * Resource factories only know about their own config at declaration time, so\n * nested child DTOs cannot be fully derived there. Registry startup is the\n * authoritative compilation boundary for operation DTOs.\n */\n static rebuildResourceConfigurationsOperationDtos(\n resourceConfigurations: Record<string, AnyResourceConfiguration>\n ): void {\n const resourceRegistry = new Map<ResourceType, AnyResourceConfiguration>(\n Object.entries(resourceConfigurations) as [ResourceType, AnyResourceConfiguration][]\n );\n\n for (const config of Object.values(resourceConfigurations)) {\n config.operations = config.operations.map((operation) =>\n this.buildAllOperationDtos(operation, config as AnyResourceConfiguration, resourceRegistry)\n );\n }\n }\n\n /**\n * Build all DTO variants for an operation.\n * This is the main entry point called by the factory.\n *\n * @param operation - Operation configuration\n * @param resourceConfig - Full resource configuration (for inheritance reference)\n * @param registry - Resource registry\n * @returns Operation with all DTOs pre-computed and stored\n */\n static buildAllOperationDtos<\n TCustomOperationEnum extends EnumLikeType | undefined,\n TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined,\n TMainSchema extends z.ZodTypeAny\n >(\n operation: ResourceConfiguration_Operation<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>,\n resourceConfig: ResourceConfiguration<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>,\n registry: Map<ResourceType, any>\n ): ResourceConfiguration_Operation<TCustomOperationEnum, TCoreOperationEnum, TMainSchema> {\n\n // 1. Apply inheritance to mainSchema (from resourceConfig.inheritenceSchemaDefinition)\n const inheritenceSchemaDefinition = resourceConfig.inheritenceSchemaDefinition;\n const enhancedMainSchema = (inheritenceSchemaDefinition\n ? this.applyInheritanceToSchema(operation.mainSchema, inheritenceSchemaDefinition, new Map())\n : operation.mainSchema) as TMainSchema;\n\n // Determine the effective operation identifier for DTO building\n const effectiveOperation = operation.resourceOperationLike || operation.operationIdentifier;\n\n // IMPORTANT: Temporary DTOs from factory are built from mainSchema WITHOUT inheritance.\n // buildEnhancedRequestDto/buildEnhancedResponseDto check for existing DTOs first and\n // return them if meaningful (line 330, 388), which would skip inheritance application.\n //\n // Strategy: Store original DTOs to detect custom ones, then clear temporary DTOs to force\n // rebuild from enhancedMainSchema (with inheritance). Custom DTOs will be preserved and\n // only have transformations applied (date coercion), while auto-derived DTOs will be\n // rebuilt with inheritance and transformations.\n //\n // Custom DTOs are detected by comparing the rebuilt DTO structure to the original.\n // If they're significantly different, we preserve the original (it's custom).\n // Otherwise, we use the rebuilt one (with inheritance).\n const originalRequestDto = operation.requestDto;\n const originalResponseDto = operation.responseDto;\n\n const operationWithEnhancedSchema = {\n ...operation,\n mainSchema: enhancedMainSchema,\n requestDto: undefined, // Clear to force rebuild with inheritance\n responseDto: undefined // Clear to force rebuild with inheritance\n };\n\n // 2. Build requestDto:\n // - Rebuild from enhancedMainSchema (with inheritance applied)\n // - If original was explicitly provided (custom), preserve it but apply transformations\n // - Otherwise use rebuilt DTO (with inheritance)\n // - Apply network-boundary coercion (dates + money bigints)\n // - Backend-only fields already excluded in buildEnhancedRequestDto\n let requestDto = this.buildEnhancedRequestDto(\n operationWithEnhancedSchema,\n effectiveOperation as string\n );\n\n // Check if original DTO was explicitly provided (custom DTO from variantParams.requestDto).\n const rebuiltRequestInfo = this.analyzeDtoSchema(requestDto);\n const originalRequestInfo = originalRequestDto ? this.analyzeDtoSchema(originalRequestDto) : null;\n\n // Custom-DTO classification is driven by the explicit `hasCustomRequestDto`\n // flag that the resource factory stamps on EVERY operation it builds:\n // • `true` → the variant supplied an explicit `requestDto`; preserve it\n // verbatim (it is a complete, author-owned contract — e.g. a narrow\n // `{ status }` for a CHANGE_STATUS custom operation).\n // • `false` → the requestDto is the factory's auto-derived *temporary*\n // placeholder, built from the base object via `deriveRequestDto` BEFORE\n // inheritance is known. So we MUST use the inheritance-rebuilt DTO —\n // which, for an inheritance resource (discriminated-union mainSchema via\n // `createSchemaFamily`), is the per-variant union. Preserving the bare\n // temporary here is what silently dropped variant-only fields\n // (e.g. todos `recurrence`/`startDate`/`endsDate`) from CREATE/UPDATE\n // request validation: `z.object` strips unknown keys, so a RECURRING\n // payload parsed but lost its extension fields — the request-side twin\n // of the RAW-mode LIST responseDto bug fixed just below.\n // Only when the flag is ABSENT (legacy / hand-authored operations that\n // predate the flag) do we fall back to the structural `analyzeDtoSchema`\n // heuristic — a base object always differs structurally from the rebuilt\n // union, so the heuristic alone cannot tell \"custom\" from \"auto-derived\n // inheritance DTO\".\n const hasExplicitCustomRequestDto = operation.hasCustomRequestDto === true;\n const isExplicitlyAutoDerivedRequestDto = operation.hasCustomRequestDto === false;\n const isCustomRequestDto = hasExplicitCustomRequestDto\n ? (originalRequestDto && !isZodAny(originalRequestDto))\n : isExplicitlyAutoDerivedRequestDto\n ? false\n : (originalRequestDto && originalRequestInfo &&\n originalRequestInfo !== rebuiltRequestInfo &&\n originalRequestInfo !== '📄 {} (empty object)' &&\n !isZodAny(originalRequestDto));\n\n if (isCustomRequestDto && originalRequestDto) {\n // Custom DTO: preserve structure but apply network-boundary coercion (dates + money bigints)\n requestDto = this.applyNetworkBoundaryCoercion(\n this.stripTemplatableFileFieldsRecursively(originalRequestDto)\n );\n } else if (operation.generatedOperation && originalRequestDto && !isZodAny(originalRequestDto)) {\n // Framework-generated operations own their DTO contract. In particular,\n // generated file regeneration is UPDATE-like for authorization and\n // persistence but intentionally accepts an empty request body.\n requestDto = this.applyNetworkBoundaryCoercion(\n this.stripTemplatableFileFieldsRecursively(originalRequestDto)\n );\n } else {\n // Auto-derived DTO: use rebuilt (with inheritance) and apply transformations\n requestDto = this.applyNetworkBoundaryCoercion(requestDto);\n }\n requestDto = this.stripTemplatableFileFieldsRecursively(requestDto);\n\n // 3. Build responseDto first (repositoryDto depends on it)\n // - Rebuild from enhancedMainSchema (with inheritance applied)\n // - If original was custom (significantly different), preserve it but apply transformations\n // - Otherwise use rebuilt DTO (with inheritance)\n // - Strip backend-only fields (except isReturnedAtCreation for CREATE)\n // - Apply network-boundary coercion (dates + money bigints)\n // - Exclude virtual fields (they're computed, not stored)\n let responseDtoInternal = this.buildEnhancedResponseDto(\n operationWithEnhancedSchema,\n effectiveOperation as string\n );\n let responseDto = responseDtoInternal;\n\n // Check if original DTO was explicitly provided (custom DTO from customResponseDto)\n // Custom DTOs are complete schemas that should be preserved as-is, but still need\n // transformations (backend-only stripping, date + money-bigint coercion).\n const hasExplicitCustomResponseDto = operation.hasCustomResponseDto === true;\n const rebuiltResponseInfo = this.analyzeDtoSchema(responseDtoInternal);\n const originalResponseInfo = originalResponseDto ? this.analyzeDtoSchema(originalResponseDto) : null;\n\n // Custom-DTO classification is driven by the explicit `hasCustomResponseDto`\n // flag that the resource factory stamps on EVERY operation it builds:\n // • `true` → the app supplied a `customResponseDto`; preserve it verbatim.\n // • `false` → the DTO is framework auto-derived. The factory only sets a\n // *temporary*, item-level placeholder (documented as \"will be replaced by\n // buildAllOperationDtos\"), so we MUST use the inheritance-rebuilt DTO —\n // which, for LIST/SEARCH, is the `{ data, pagination }` pagination wrapper.\n // Preserving the bare temporary schema here is what broke RAW-mode list\n // responses: `selectResponseDto(op, RAW)` returned the item schema and the\n // controller parsed the `{ data, pagination }` envelope against it (Zod\n // \"No matching discriminator\" for inheritance resources such as todos,\n // missing-field errors for plain ones).\n // Only when the flag is ABSENT (legacy / hand-authored operations that predate\n // the flag) do we fall back to the structural `analyzeDtoSchema` heuristic — an\n // item schema always differs structurally from the rebuilt wrapper, so the\n // heuristic alone cannot tell \"custom\" from \"auto-derived collection DTO\".\n const isExplicitlyAutoDerivedResponseDto = operation.hasCustomResponseDto === false;\n const isCustomResponseDto = hasExplicitCustomResponseDto\n ? (originalResponseDto && !isZodAny(originalResponseDto))\n : isExplicitlyAutoDerivedResponseDto\n ? false\n : (originalResponseDto && originalResponseInfo &&\n originalResponseInfo !== rebuiltResponseInfo &&\n originalResponseInfo !== '📄 {} (empty object)' &&\n !isZodAny(originalResponseDto));\n\n if (isCustomResponseDto && originalResponseDto) {\n // Strip while decorator metadata is still on the source nodes, then apply\n // network coercion to each trust-boundary shape independently. Reversing\n // this order allowed wrapper rebuilds to erase `isBackendOnly` before the\n // confidentiality pass inspected it.\n const isCreateOperation = effectiveOperation === CoreResourceOperation.CREATE ||\n effectiveOperation === CoreResourceOperation.CREATE_MANY;\n responseDtoInternal = this.applyNetworkBoundaryCoercion(originalResponseDto);\n responseDto = this.applyNetworkBoundaryCoercion(this.stripBackendOnlyFields(originalResponseDto, {\n respectIsReturnedAtCreation: isCreateOperation,\n operationType: isCreateOperation ? CoreResourceOperation.CREATE : undefined\n }));\n } else {\n // Auto-derived DTO: use rebuilt (with inheritance) and apply transformations\n // Strip backend-only fields before coercion rebuilds wrappers/leaves.\n const isCreateOperation = effectiveOperation === CoreResourceOperation.CREATE ||\n effectiveOperation === CoreResourceOperation.CREATE_MANY;\n const clientResponseDto = this.stripBackendOnlyFields(responseDtoInternal, {\n respectIsReturnedAtCreation: isCreateOperation,\n operationType: isCreateOperation ? CoreResourceOperation.CREATE : undefined\n });\n responseDtoInternal = this.applyNetworkBoundaryCoercion(responseDtoInternal);\n responseDto = this.applyNetworkBoundaryCoercion(clientResponseDto);\n }\n\n // Note: Virtual fields are already excluded in buildEnhancedResponseDto\n\n // 4. Add nested operations DTOs if configured (child + self relationships)\n const resourceRelationships = operation.resourceRelationships;\n const childDirRels = resourceRelationships ? getChildDirectionRelationships(resourceRelationships) : [];\n if (childDirRels.length > 0) {\n // Build request DTO with nested children for create/update operations,\n // including bulk variants. Runtime bulk orchestration is handled in the\n // services layer by applying the same nested-processing principles per\n // parent result.\n if (effectiveOperation === CoreResourceOperation.CREATE || effectiveOperation === CoreResourceOperation.CREATE_MANY ||\n effectiveOperation === CoreResourceOperation.UPDATE || effectiveOperation === CoreResourceOperation.UPDATE_MANY) {\n requestDto = this.buildRequestDtoWithNested(\n effectiveOperation as CoreResourceOperation,\n requestDto,\n childDirRels,\n registry\n );\n }\n\n // Build response DTO with nested children (for READ)\n if (effectiveOperation === CoreResourceOperation.READ) {\n responseDtoInternal = this.buildResponseDtoWithNested(\n responseDtoInternal,\n childDirRels,\n registry\n );\n responseDto = this.buildResponseDtoWithNested(\n responseDto,\n childDirRels,\n registry\n );\n }\n }\n\n // 5. Build summaryDto (WITH backend-only fields for internal processing):\n // - Extract summary fields (isSummaryField)\n // - If no summary fields defined, fall back to mainSchema (same as RAW)\n // - DO NOT strip backend-only fields yet (needed for repositoryDto)\n // - Handle discriminated unions\n // - Network-boundary coercion (dates + money bigints) is applied ONCE below,\n // after the no-summary-fields fallback resolves, so EVERY summary shape\n // (plain object, discriminated union, AND the full-schema fallback) accepts\n // ISO-string dates AND bigint-as-string money amounts — the same uniform\n // transposition point used for requestDto/responseDto/internalDto.\n let summaryDtoInternal: z.ZodTypeAny = this.extractSummaryFields(enhancedMainSchema);\n\n // If no summary fields are defined, use full schema (same as RAW mode)\n // Check if summaryDtoInternal is empty (z.object({}))\n if (isZodObject(summaryDtoInternal)) {\n const summaryShape = getZodObjectShape(summaryDtoInternal);\n if (Object.keys(summaryShape).length === 0) {\n // No summary fields defined - use full mainSchema as fallback\n // This ensures SUMMARY mode works even without explicit isSummaryField decorators\n summaryDtoInternal = this.excludeVirtualFieldsFromSchema(enhancedMainSchema);\n }\n }\n\n // Apply network-boundary coercion (z.date() → z.coerce.date() AND string-accepting\n // z.bigint() for z_money amounts) over the fully-resolved summary schema — the\n // single, uniform transposition point for the summary DTO, covering the\n // extracted-summary path, the discriminated-union path, and the full-schema\n // fallback alike. Without this, summary responses (which carry ISO-string\n // createdAt/updatedAt and bigint-as-string money totals over JSON) fail frontend\n // response validation with \"expected date, received string\" / \"expected bigint,\n // received string\" (e.g. invoiceRefs.total.amount is an isSummaryField z_money).\n const summaryDto = this.applyNetworkBoundaryCoercion(\n this.stripBackendOnlyFields(summaryDtoInternal),\n );\n summaryDtoInternal = this.applyNetworkBoundaryCoercion(summaryDtoInternal);\n\n // The COLLECTION EXPORT companion is deliberately excluded. It carries\n // `resourceOperationLike: LIST/SEARCH` so that routing, collection-level authorization and URL\n // building all treat it as a listing — which is exactly right — but its response is a FILE, not\n // a pagination envelope, so every list-shaped DTO derivation below (context item extraction,\n // SUMMARY/CONTEXT envelope rebuilding) would be operating on the wrong shape. Without this\n // exclusion the derivation throws `pagination response must contain a data array` at resource\n // configuration time and the whole application fails to start.\n const isCollectionExportCompanion =\n operation.generatedOperation?.kind === ResourceGeneratedOperationKind.GENERATED_COLLECTION_EXPORT;\n const isListOrSearch = !isCollectionExportCompanion\n && (effectiveOperation === CoreResourceOperation.LIST\n || effectiveOperation === CoreResourceOperation.SEARCH);\n\n // 6. Build contextDto:\n // - Start with the response item DTO. LIST/SEARCH responseDto is already\n // a pagination envelope, so projecting relationships on that envelope\n // would later wrap a page inside another page for the CONTEXT variant.\n // - Add relationship placeholders\n // - Date coercion already applied to responseDto\n const contextBaseDto = isListOrSearch\n ? this.extractPaginatedCollectionItemDto(responseDto, effectiveOperation)\n : responseDto;\n const contextDto = this.addRelationshipPlaceholders(\n contextBaseDto,\n operation.resourceRelationships,\n registry\n );\n\n // 7. Build internalDto base (before variant overrides):\n // - Start with mainSchema (with inheritance)\n // - Include backend-only fields (DO NOT strip)\n // - Exclude virtual fields (they're computed)\n //\n // A non-READ op that declares a `customResponseDto` (e.g. a CREATE that\n // returns an ephemeral `plainKey`) legitimately carries the extra fields\n // the custom schema adds in its service output. `transformOutput`\n // validates that output against `internalDto`, so for these ops internalDto\n // must be the custom schema (`responseDtoInternal`), not the bare main\n // schema — otherwise the enriched fields are stripped before the controller\n // serializes against the custom `responseDto` (the api-key CREATE's\n // `plainKey` failed exactly this way). This mirrors the custom-VARIANT\n // branch below (lines ~516), which only runs for `variantKey`'d ops and so\n // left the DEFAULT custom-DTO op falling through to `enhancedMainSchema`.\n // LIST/SEARCH keep the main-schema base (their pagination wrapper is\n // applied below and the collection item DTO is handled separately).\n const internalDtoUsesCustomResponse =\n effectiveOperation !== CoreResourceOperation.READ\n && Boolean(isCustomResponseDto)\n && Boolean(originalResponseDto)\n && effectiveOperation !== CoreResourceOperation.LIST\n && effectiveOperation !== CoreResourceOperation.SEARCH;\n // `internalDto` is what the service layer validates its OUTPUT against\n // (`ServiceResourceBackendService.transformOutput`). It must mirror the shape the operation\n // actually returns. For most mutations that is the resource object (`enhancedMainSchema`), but:\n // • READ → the resource itself (custom read DTOs handled via the flag below)\n // • OUTPUT_ENVELOPE_OPERATIONS (DELETE, DELETE_MANY, COUNT) → a framework RESPONSE ENVELOPE\n // (`DefaultDeleteResponseSchema` / `DefaultBulkDeleteResponseSchema` / `DefaultCountResponseSchema`)\n // For all of these the correct `internalDto` is the very schema already exposed via\n // `responseDto`: `responseDtoInternal` is that schema with backend-only fields retained (a\n // no-op for these envelopes, which carry none) and is already bulk-vs-single aware because\n // `buildEnhancedResponseDto` resolved it from `getDefaultResponseSchemaForOperation` (and the\n // bulk-operation branch). Leaving an envelope operation on `enhancedMainSchema` is what made\n // `transformOutput` validate the envelope value against the resource object schema and throw\n // `service_resource_transformation_failed` → HTTP 500 (the delete bug; COUNT was a latent\n // sibling). Bulk mutations (CREATE_MANY/UPDATE_MANY) are intentionally NOT in the set — they\n // return per-item resource objects validated item-by-item, so they keep `enhancedMainSchema`.\n //\n // ⚠️ Keyed on the operation's OWN `operationIdentifier`, NOT `effectiveOperation`\n // (`resourceOperationLike || operationIdentifier`). A CUSTOM op that borrows DELETE/COUNT\n // semantics for its route/verb but returns its own shape (via `REPLACE_CORE_OPERATIONS` or a\n // `customResponseDto`) must NOT be forced onto the core envelope — its custom response is\n // already handled by `internalDtoUsesCustomResponse`, or it keeps `enhancedMainSchema`. Only the\n // genuine core operation carries `operationIdentifier === CoreResourceOperation.DELETE` etc.\n // For the deletes, the runtime composition of the envelope from the repository's bare id(s)\n // happens at the transform boundary via `composeDefaultOperationResponse` (same keying).\n let internalDtoProcessed: z.ZodTypeAny =\n effectiveOperation === CoreResourceOperation.READ\n || isOutputEnvelopeOperation(operation.operationIdentifier as string)\n || internalDtoUsesCustomResponse\n ? responseDtoInternal\n : enhancedMainSchema;\n\n // Exclude virtual fields from internalDto\n if (isZodObject(internalDtoProcessed)) {\n const shape = getZodObjectShape(internalDtoProcessed);\n const omitObj: Record<string, true> = {};\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isVirtualField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n }\n if (Object.keys(omitObj).length > 0) {\n internalDtoProcessed = this.omitObjectFields(internalDtoProcessed, omitObj);\n }\n }\n\n // 8. Build repositoryDto first (before variant overrides):\n // - For default operations, derive from responseDto\n // - Include backend-only fields (for internal processing)\n // - Exclude virtual fields but include their dependencies\n let repositoryDto = RepositoryDtoBuilderUtils.deriveRepositoryDto(responseDto, enhancedMainSchema);\n\n // 9. For default operations (no variantKey), wrap internalDto in pagination for LIST/SEARCH:\n if (!operation.variantKey && isListOrSearch) {\n // Default LIST/SEARCH operations: wrap internalDto in pagination\n internalDtoProcessed = z.object({\n data: z.array(internalDtoProcessed),\n pagination: createPaginationResponseMetadataSchema((operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n });\n }\n\n // 10. Override responseDto, repositoryDto, and internalDto for variant operations:\n // - For SUMMARY variants: use summaryDto (wrapped in pagination for LIST/SEARCH)\n // - For CONTEXT variants: use contextDto (wrapped in pagination for LIST/SEARCH)\n // - For custom variants with customResponseDto: use the custom schema for internalDto too\n // - Build repositoryDto from INTERNAL versions (with backend-only fields)\n // - Build internalDto for service-layer validation (pagination wrapper with backend-only items)\n if (operation.variantKey) {\n if (operation.variantKey === OPERATION_VARIANT_KEY.SUMMARY) {\n // For SUMMARY variants, build repositoryDto from INTERNAL version (has backend-only fields)\n repositoryDto = RepositoryDtoBuilderUtils.deriveRepositoryDto(summaryDtoInternal, enhancedMainSchema);\n\n if (isListOrSearch) {\n // Build internalDto for service-layer validation (pagination wrapper with backend-only items)\n internalDtoProcessed = z.object({\n data: z.array(summaryDtoInternal),\n pagination: createPaginationResponseMetadataSchema((operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n });\n // Wrap summaryDto (frontend version, backend-only stripped) in pagination for responseDto\n responseDto = z.object({\n data: z.array(summaryDto),\n pagination: createPaginationResponseMetadataSchema((operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n });\n } else {\n // For READ operations, use summaryDto versions\n internalDtoProcessed = summaryDtoInternal;\n responseDto = summaryDto;\n }\n } else if (operation.variantKey === OPERATION_VARIANT_KEY.CONTEXT) {\n // For CONTEXT variants, build from contextDto versions\n // contextDto is built from responseDto which already has backend-only stripped, so we need internal version\n const contextDtoInternal = this.addRelationshipPlaceholders(\n this.excludeVirtualFieldsFromSchema(enhancedMainSchema),\n operation.resourceRelationships,\n registry\n );\n repositoryDto = RepositoryDtoBuilderUtils.deriveRepositoryDto(contextDtoInternal, enhancedMainSchema);\n\n if (isListOrSearch) {\n // Build internalDto for service-layer validation (pagination wrapper with backend-only items)\n internalDtoProcessed = z.object({\n data: z.array(contextDtoInternal),\n pagination: createPaginationResponseMetadataSchema((operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n });\n // Wrap contextDto (frontend version, backend-only stripped) in pagination for responseDto\n responseDto = z.object({\n data: z.array(contextDto),\n pagination: createPaginationResponseMetadataSchema((operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n });\n } else {\n // For READ operations, use contextDto versions\n internalDtoProcessed = contextDtoInternal;\n responseDto = contextDto;\n }\n } else if (originalResponseDto && !isZodAny(originalResponseDto)) {\n // For custom variants with customResponseDto (e.g., 'context_old'):\n // The internalDto should also use the custom schema to preserve enriched fields.\n // This ensures that custom implementations can return additional fields that won't be stripped.\n // Apply network-boundary coercion (dates + money bigints) to the custom schema for internal processing.\n internalDtoProcessed = this.applyNetworkBoundaryCoercion(originalResponseDto);\n repositoryDto = RepositoryDtoBuilderUtils.deriveRepositoryDto(originalResponseDto, enhancedMainSchema);\n }\n }\n\n if (operation.generatedOperation && originalResponseDto && !isZodAny(originalResponseDto)) {\n // Generated operations may be UPDATE-like for routing/authorization while\n // returning a framework-owned envelope that is not the resource schema.\n // Keep service-layer output validation aligned with that envelope.\n internalDtoProcessed = this.applyNetworkBoundaryCoercion(originalResponseDto);\n repositoryDto = RepositoryDtoBuilderUtils.deriveRepositoryDto(enhancedMainSchema, enhancedMainSchema);\n }\n\n requestDto = this.stripTemplatableFileFieldsRecursively(requestDto);\n\n // 11. Finalize internalDto with network-boundary coercion (dates + money bigints):\n const internalDtoFinal: z.ZodTypeAny = this.applyNetworkBoundaryCoercion(internalDtoProcessed);\n\n // 12. Return operation with all DTOs stored\n return {\n ...operation,\n requestDto,\n responseDto,\n summaryDto,\n contextDto,\n internalDto: internalDtoFinal,\n repositoryDto\n } as ResourceConfiguration_Operation<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>;\n }\n\n /**\n * Build enhanced request DTO based on operation type and existing DTOs.\n *\n * Decorator-aware DTO building:\n * - For CREATE operations: excludes fields with `excludeFromCreate` decorator\n * - For UPDATE operations: excludes fields with `excludeFromUpdate` decorator\n * - For ALL operations: excludes fields with `isVirtual` decorator (computed fields)\n */\n private static buildEnhancedRequestDto(\n operation: ResourceConfiguration_Operation<any, any, any>,\n effectiveOperation: string\n ): z.ZodTypeAny {\n\n // Check if operation already has a meaningful requestDto (not z.any() and not empty)\n const isZAny = operation.requestDto && isZodAny(operation.requestDto);\n const currentRequestInfo = this.analyzeDtoSchema(operation.requestDto);\n\n if (operation.requestDto && !isZAny && currentRequestInfo !== '📄 {} (empty object)') {\n return this.stripTemplatableFileFieldsRecursively(operation.requestDto);\n }\n\n const searchQueryRequestSchema = (operation as {\n searchQueryRequestSchema?: z.ZodTypeAny;\n }).searchQueryRequestSchema;\n if (\n effectiveOperation === CoreResourceOperation.SEARCH\n && searchQueryRequestSchema\n && !isZodAny(searchQueryRequestSchema)\n ) {\n return searchQueryRequestSchema;\n }\n\n // For operations that shouldn't have request DTOs, return empty object\n const shouldHaveRequestDto = operationShouldHaveRequestDto(effectiveOperation);\n if (!shouldHaveRequestDto) {\n return z.object({});\n }\n\n // Apply bulk operation decorator for URL-bearing bulk companion operations.\n // For bulk operations, we need to wrap the underlying operation's requestDto\n // with Resources_BulkOperationBaseSchema\n if ('isBulkOperation' in operation && operation.isBulkOperation) {\n // Rebuild the underlying (non-bulk) requestDto by temporarily treating as non-bulk\n const underlyingOperation = {\n ...operation,\n isBulkOperation: false,\n requestDto: undefined // Clear to force rebuild\n };\n const underlyingRequestDto = this.buildEnhancedRequestDto(underlyingOperation, effectiveOperation);\n\n // Wrap with bulk operation base schema\n if (underlyingRequestDto && !isZodAny(underlyingRequestDto)) {\n const underlyingInfo = this.analyzeDtoSchema(underlyingRequestDto);\n if (underlyingInfo !== '📄 {} (empty object)') {\n if (effectiveOperation === CoreResourceOperation.CREATE_MANY) {\n return z.object({\n data: z.array(underlyingRequestDto),\n });\n }\n if (isZodObject(underlyingRequestDto)) {\n return Resources_BulkOperationBaseSchema.extend(getZodObjectShape(underlyingRequestDto));\n }\n return Resources_BulkOperationBaseSchema.and(underlyingRequestDto);\n }\n }\n return effectiveOperation === CoreResourceOperation.CREATE_MANY\n ? z.object({\n data: z.array(z.object({})),\n })\n : Resources_BulkOperationBaseSchema;\n }\n\n // For create operations, use decorator-aware DTO building\n if (effectiveOperation === CoreResourceOperation.CREATE || effectiveOperation === CoreResourceOperation.CREATE_MANY) {\n return this.createRequestDtoForCreate(operation.mainSchema);\n }\n\n // For update operations, use decorator-aware DTO building\n if (effectiveOperation === CoreResourceOperation.UPDATE || effectiveOperation === CoreResourceOperation.UPDATE_MANY) {\n return this.createRequestDtoForUpdate(operation.mainSchema);\n }\n\n // Default: use mainSchema as-is (but still exclude virtual fields)\n return this.excludeVirtualFieldsFromSchema(operation.mainSchema);\n }\n\n /**\n * Build enhanced response DTO based on operation type and mainSchema\n */\n private static buildEnhancedResponseDto(\n operation: ResourceConfiguration_Operation<any, any, any>,\n effectiveOperation: string\n ): z.ZodTypeAny {\n\n // Check if operation already has a meaningful responseDto (not z.any() and not empty)\n const isZAny = operation.responseDto && isZodAny(operation.responseDto);\n const currentResponseInfo = this.analyzeDtoSchema(operation.responseDto);\n\n if (operation.responseDto && !isZAny && currentResponseInfo !== '📄 {} (empty object)') {\n return operation.responseDto;\n }\n\n // Apply bulk operation decorator for URL-bearing bulk companion operations.\n if ('isBulkOperation' in operation && operation.isBulkOperation) {\n switch (effectiveOperation) {\n case CoreResourceOperation.DELETE:\n case CoreResourceOperation.DELETE_MANY:\n return DefaultBulkDeleteResponseSchema;\n case CoreResourceOperation.UPDATE:\n case CoreResourceOperation.UPDATE_MANY:\n case CoreResourceOperation.CREATE:\n case CoreResourceOperation.CREATE_MANY:\n // Bulk create/update responses are arrays of resource items at runtime.\n // The controller validates array responses item-by-item against responseDto,\n // so bulk mutations must expose the per-item schema here, not a count wrapper.\n return operation.mainSchema;\n default:\n return z.array(operation.mainSchema);\n }\n }\n\n // Apply pagination decorator for list/search operations.\n //\n // The ceiling comes from the OPERATION, not from a constant. It used to be a hard-coded `50`,\n // which made `maxPaginatedResultPerPageLimit` inert on the response side: an operation could\n // declare 100 or 200, the repository would honour it, and the response DTO would then reject the\n // very page the repository had just built — a 500 (`service_resource_transformation_failed`,\n // `too_big: expected array to have <=50 items`) rather than a page. Live example found\n // 2026-08-12 on `users | list | admin`; latent on every operation declaring a larger ceiling\n // (`users SEARCH` 200, `organizations SEARCH` 100, `user-profiles` 200).\n //\n // The default is 100 — the ceiling the Mongo `_doList` hard-coded before it was taught to read\n // the declared value, and therefore the largest page this DTO could ever have been handed. It is\n // NOT 50: a 50 default would reject the very pages the repository is still allowed to build for\n // an operation that declares nothing, which is the 500 this whole change exists to remove, in a\n // new place. SEARCH's repository default stays 50, so its pages sit comfortably inside this.\n if (effectiveOperation === CoreResourceOperation.LIST || effectiveOperation === CoreResourceOperation.SEARCH) {\n return this.createPaginatedResponseSchema(\n operation.mainSchema,\n (operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit ?? 100,\n );\n }\n\n // Apply operation-specific default patterns\n const defaultResponse = getDefaultResponseSchemaForOperation(effectiveOperation, operation.mainSchema);\n return defaultResponse;\n }\n\n /**\n * Return the row schema owned by a standard paginated collection response.\n *\n * LIST and SEARCH first derive a client response shaped as\n * `{ data: Row[]; pagination: ... }`. Context projection enriches `Row`, not\n * the envelope. Keeping this extraction at the shared DTO boundary makes the\n * invariant unbypassable for every generated CONTEXT collection operation:\n * its response is exactly one page of context-enriched rows.\n *\n * A malformed/custom collection response fails closed here. Silently falling\n * back to the envelope recreates the former `Page<Page<Row>>` contract and\n * lets runtime, OpenAPI, examples and client validation disagree.\n */\n private static extractPaginatedCollectionItemDto(\n responseDto: z.ZodTypeAny,\n effectiveOperation: string\n ): z.ZodTypeAny {\n if (!isZodObject(responseDto)) {\n throw new Error(\n `Cannot build ${effectiveOperation} context DTO: collection response must be a pagination object`\n );\n }\n\n const responseShape = getZodObjectShape(responseDto);\n const dataSchema = responseShape.data;\n if (!dataSchema || !isZodArray(dataSchema)) {\n throw new Error(\n `Cannot build ${effectiveOperation} context DTO: pagination response must contain a data array`\n );\n }\n\n const itemSchema = getZodDefSchemaProperty(dataSchema, 'element');\n if (!itemSchema) {\n throw new Error(\n `Cannot build ${effectiveOperation} context DTO: pagination data array has no item schema`\n );\n }\n\n return itemSchema;\n }\n\n /**\n * Create request DTO for CREATE operations.\n *\n * Excludes:\n * - Standard auto-populated fields (_id, createdAt, etc.)\n * - Fields with `excludeFromCreate` decorator\n * - Fields with `isVirtual` decorator (computed fields)\n *\n * Handles discriminated unions by applying omissions to each variant.\n */\n private static createRequestDtoForCreate(mainSchema: z.ZodTypeAny): z.ZodTypeAny {\n // Check if it's a discriminated union - need to handle each variant\n const zodType = getZodType(mainSchema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(mainSchema, 'discriminator');\n const options = getZodDefArrayProperty(mainSchema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && options && options.length > 0) {\n // Apply omissions to each variant in the union\n const modifiedOptions = options.map(option =>\n this.applyCreateOmissionsToSchema(option)\n );\n\n // Recreate discriminated union with modified variants\n if (modifiedOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n modifiedOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else if (modifiedOptions.length === 1) {\n return modifiedOptions[0];\n }\n }\n }\n\n // Regular object schema - apply omissions directly\n return this.applyCreateOmissionsToSchema(mainSchema);\n }\n\n /**\n * Check if a field is a non-discriminator literal.\n * Non-discriminator literals are fixed values that should be auto-populated by the backend.\n * Discriminator literals are used for variant selection and should be shown in CREATE forms.\n *\n * Handles wrapped types (optional, default, etc.) by unwrapping before type check.\n */\n private static isNonDiscriminatorLiteral(fieldSchema: z.ZodTypeAny): boolean {\n // Unwrap to handle z.literal(\"value\").optional() etc.\n const unwrapped = unwrapSchema(fieldSchema);\n const zodType = getZodType(unwrapped);\n // Check if it's a literal type and NOT marked as discriminator\n // isDiscriminatorField already handles unwrapping via getMetadataRecursive\n return zodType === 'literal' && !isDiscriminatorField(fieldSchema);\n }\n\n /**\n * Apply CREATE operation omissions to a single schema (object or other).\n */\n private static applyCreateOmissionsToSchema(schema: z.ZodTypeAny): z.ZodTypeAny {\n if (!isZodObject(schema)) {\n return schema;\n }\n\n // Standard auto-generated fields to omit from create request DTOs.\n // Note: _id is handled via isPrimaryKey decorator which implies excludeFromCreate.\n // The context-auto-populated FKs (createdByUserId, organizationId, userId,\n // applicationId, anonymousUserId — all backend-injected from the EC, never\n // client-supplied) come from the shared CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS\n // single source of truth so this omit list and the trusted-system-write\n // re-attach allowlist (deriveTrustedSystemWritePreservedFields) never drift.\n const fieldsToOmit = ['id', 'createdAt', 'updatedAt', ...CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS];\n\n try {\n const omitObj: Record<string, true> = {};\n const shape = getZodObjectShape(schema);\n\n // Add standard fields to omit\n fieldsToOmit.forEach(field => {\n if (shape[field]) {\n omitObj[field] = true;\n }\n });\n\n // Add fields with excludeFromCreate decorator (includes isPrimaryKey which implies excludeFromCreate)\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isExcludedFromCreate(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude virtual fields - they are computed, not submitted\n if (isVirtualField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude backend-only fields - they are managed internally\n if (isBackendOnlyField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude generated file fields - they are materialized by operations,\n // not uploaded or supplied in client write payloads.\n if (isTemplatableFileField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude non-discriminator literals - they are auto-populated by backend\n // Discriminator literals are KEPT for variant selection in CREATE forms\n if (this.isNonDiscriminatorLiteral(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n }\n\n // If we have fields to omit, create omitted schema\n if (Object.keys(omitObj).length > 0) {\n const omittedSchema = this.omitObjectFields(schema, omitObj);\n return this.stripTemplatableFileFieldsRecursively(omittedSchema);\n }\n } catch (error) {\n throw new Error(`Failed to create request DTO for CREATE: ${error instanceof Error ? error.message : String(error)}`);\n }\n\n return this.stripTemplatableFileFieldsRecursively(schema);\n }\n\n /**\n * Create request DTO for UPDATE operations.\n *\n * Excludes:\n * - Standard auto-populated fields (_id, createdAt, etc.)\n * - Fields with `excludeFromUpdate` decorator\n * - Fields with `isVirtual` decorator (computed fields)\n *\n * Handles discriminated unions by applying omissions to each variant.\n */\n private static createRequestDtoForUpdate(mainSchema: z.ZodTypeAny): z.ZodTypeAny {\n // Check if it's a discriminated union - need to handle each variant\n const zodType = getZodType(mainSchema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(mainSchema, 'discriminator');\n const options = getZodDefArrayProperty(mainSchema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && options && options.length > 0) {\n // PATCH semantics for an inheritance resource. Two hard constraints\n // collide here and only a MERGED SUPERSET OBJECT satisfies both:\n //\n // 1. The persisted variant is IMMUTABLE and the repository applies a\n // partial `$set` (see `RepositoryResourceBackendService.update` →\n // `findOneAndUpdate({ $set })`). A caller therefore legitimately\n // sends only the fields it changes — e.g. an inline status\n // autosave submits `{ status }` with NO `recurringType`. A\n // discriminated union CANNOT express \"discriminator optional\":\n // Zod needs the key present to pick a branch, and a discriminator\n // `.default()` does NOT fire inside `z.discriminatedUnion`, so the\n // missing key fails with \"No matching discriminator\" (the exact\n // wonder-todos `todos` CHANGE_STATUS / inline-edit crash).\n // 2. Variant-only fields (`recurrence` / `startDate` / `endsDate`)\n // must stay IN the contract — a bare base object would `z.object`-\n // strip them, silently dropping a partial update that touches a\n // variant field. Keeping every variant field is the whole reason\n // this DTO became a union in the first place.\n //\n // Collapsing the per-variant options into one object whose fields are\n // all optional (the discriminator included) keeps every variant field\n // reachable AND lets any partial subset validate without echoing the\n // immutable discriminator. Variant/field coherence is enforced\n // server-side against the merged persisted+patch object (the `$set`\n // target already carries the true variant), NOT by the static request\n // contract. CREATE keeps the discriminated union (see\n // `createRequestDtoForCreate`) because on CREATE the client MUST choose\n // a variant and variant-field validation applies.\n return this.mergeUnionOptionsIntoOptionalUpdateObject(options, discriminator);\n }\n }\n\n // Regular object schema - apply omissions directly\n return this.applyUpdateOmissionsToSchema(mainSchema);\n }\n\n /**\n * Collapse the per-variant options of an inheritance UPDATE discriminated\n * union into a single object with PATCH semantics: every base + variant-only\n * field present and optional, and the discriminator itself optional.\n *\n * Each option is first run through {@link applyUpdateOmissionsToSchema}\n * (which drops `excludeFromUpdate` / PK / virtual / backend-only / templatable\n * file fields and optionalises every non-discriminator field), then the\n * resulting shapes are merged. The discriminator — which\n * `applyUpdateOmissionsToSchema` keeps required per-variant so the omission\n * pass does not mistake it for an auto-populated literal — is replaced by a\n * single OPTIONAL enum spanning every variant value, so a partial update may\n * omit it entirely (the persisted variant is immutable) yet a full-object\n * update that re-sends the current discriminator still validates.\n *\n * Nested inheritance (an option that is itself a union) is flattened\n * recursively so deeply-nested variant fields are preserved too.\n */\n private static mergeUnionOptionsIntoOptionalUpdateObject(\n options: z.ZodTypeAny[],\n discriminatorField: string\n ): z.ZodTypeAny {\n const mergedShape: Record<string, z.ZodTypeAny> = {};\n const discriminatorValues = new Set<string>();\n\n const collectFromOption = (option: z.ZodTypeAny): void => {\n // Flatten nested discriminated unions (multi-level inheritance).\n if (getZodType(option) === 'union') {\n const nestedOptions = getZodDefArrayProperty(option, 'options') as z.ZodTypeAny[] | undefined;\n if (nestedOptions && nestedOptions.length > 0) {\n nestedOptions.forEach(collectFromOption);\n return;\n }\n }\n\n const omitted = this.applyUpdateOmissionsToSchema(option);\n if (!isZodObject(omitted)) {\n return;\n }\n\n const shape = getZodObjectShape(omitted);\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (fieldName === discriminatorField) {\n // Gather every variant value the discriminator can carry; the field\n // is rebuilt as one optional enum below.\n for (const value of this.extractDiscriminatorValues(fieldSchema as z.ZodTypeAny)) {\n discriminatorValues.add(value);\n }\n continue;\n }\n // First writer wins: base fields are identical across variants and\n // variant-only fields appear in exactly one option, so there is no\n // meaningful collision to resolve. `applyUpdateOmissionsToSchema`\n // already made every non-discriminator field optional.\n if (!mergedShape[fieldName]) {\n mergedShape[fieldName] = fieldSchema as z.ZodTypeAny;\n }\n }\n };\n\n options.forEach(collectFromOption);\n\n if (discriminatorValues.size > 0) {\n // Optional so a partial update may omit the immutable discriminator; the\n // enum still accepts a re-sent current value from a full-object update.\n mergedShape[discriminatorField] = z\n .enum(Array.from(discriminatorValues) as [string, ...string[]])\n .optional();\n }\n\n return z.object(mergedShape);\n }\n\n /**\n * Extract the concrete discriminator value(s) a union-option's discriminator\n * field can hold. Variant options carry a `z.literal(value)`; the base option\n * carries a `z.enum([...baseValues])`. Both may be wrapped by the\n * `isDiscriminator` decorator / `.default()` / `.optional()`, so unwrap first.\n */\n private static extractDiscriminatorValues(fieldSchema: z.ZodTypeAny): string[] {\n const unwrapped = unwrapSchema(fieldSchema);\n const unwrappedType = getZodType(unwrapped);\n\n if (unwrappedType === 'enum') {\n return getEnumValues(unwrapped).map(String);\n }\n\n // Literal — Zod 4 stores value(s) in `def.values` (array); fall back to the\n // legacy scalar `def.value`. Mirrors the literal read at `analyzeDtoSchema`.\n const literalValues = (getZodDefArrayProperty(unwrapped, 'values')\n ?? [getZodDefProperty(unwrapped, 'value')]) as unknown[];\n return literalValues\n .filter((value): value is string | number => value !== undefined && value !== null)\n .map(String);\n }\n\n /**\n * Apply UPDATE operation omissions to a single schema (object or other).\n */\n private static applyUpdateOmissionsToSchema(schema: z.ZodTypeAny): z.ZodTypeAny {\n if (!isZodObject(schema)) {\n return schema;\n }\n\n // Standard auto-generated fields to omit from update request DTOs.\n // Note: Primary keys are passed as route params, not in request body.\n // The context-auto-populated FKs (immutable after creation; anonymousUserId\n // is managed by transposition, never client-updatable) come from the shared\n // CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS single source of truth so this omit\n // list and the trusted-system-write re-attach allowlist stay in lockstep.\n const fieldsToOmit = ['id', 'createdAt', 'updatedAt', ...CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS];\n\n try {\n const omitObj: Record<string, true> = {};\n const shape = getZodObjectShape(schema);\n\n // Add standard fields to omit\n fieldsToOmit.forEach(field => {\n if (shape[field]) {\n omitObj[field] = true;\n }\n });\n\n // Add fields with excludeFromUpdate decorator or isPrimaryKey (passed as route param)\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isExcludedFromUpdate(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Primary keys are passed as route params, not in request body\n if (isPrimaryKey(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude virtual fields - they are computed, not submitted\n if (isVirtualField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude backend-only fields - they are managed internally\n if (isBackendOnlyField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude generated file fields - explicit regenerate operations own\n // refreshing them, so generic UPDATE payloads must not accept them.\n if (isTemplatableFileField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n // Exclude NON-discriminator literals only — they are fixed values\n // auto-populated by the backend and immutable after creation.\n //\n // Discriminator literals are KEPT: for an inheritance resource the\n // UPDATE DTO is a discriminated union, and the discriminator must be\n // present (and required) so Zod can select the variant and validate\n // its variant-specific fields. Stripping it produced a structurally\n // invalid discriminated union (\"Invalid discriminated union option\").\n // The discriminator's immutability is enforced at the service layer\n // (the update is rejected if it changes the variant), not by removing\n // it from the request contract — which would silently drop every\n // variant-only field from the payload.\n if (this.isNonDiscriminatorLiteral(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n }\n\n // Rebuild the shape with PATCH semantics: drop the omitted fields, then\n // make every remaining field optional EXCEPT the discriminator. This\n // mirrors the factory's `buildUpdateRequestDto` (partial update). The\n // discriminator is left REQUIRED here only so this per-variant omission\n // pass does not mistake it for an auto-populated literal and strip it —\n // for an inheritance UPDATE the per-variant objects are then merged by\n // `mergeUnionOptionsIntoOptionalUpdateObject`, which replaces the\n // discriminator with a single OPTIONAL enum so partial updates may omit\n // the immutable discriminator. (Without optionalizing the other fields\n // every field would become mandatory, breaking partial updates for every\n // resource.)\n const updateShape: Record<string, z.ZodTypeAny> = {};\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (omitObj[fieldName]) {\n continue;\n }\n const strippedField = this.stripTemplatableFileFieldsRecursively(fieldSchema as z.ZodTypeAny);\n // Non-discriminator fields are optionalised for PATCH; `toPatchOptionalField`\n // also peels any `.default()` so an omitted field is never re-materialized to\n // its default and `$set` back over the stored value (the `attemptCount`-reset\n // class of bug). The discriminator is kept as-is (required, default intact) so\n // the union stays selectable — the merge pass replaces it with an optional enum.\n updateShape[fieldName] = isDiscriminatorField(fieldSchema as z.ZodTypeAny)\n ? strippedField\n : toPatchOptionalField(strippedField);\n }\n return z.object(updateShape);\n } catch (error) {\n throw new Error(`Failed to create request DTO for UPDATE: ${error instanceof Error ? error.message : String(error)}`);\n }\n\n return this.stripTemplatableFileFieldsRecursively(schema);\n }\n\n /**\n * Exclude virtual fields from a schema.\n * Virtual fields are computed at runtime and should not appear in request DTOs.\n *\n * Handles discriminated unions by applying omissions to each variant.\n */\n private static excludeVirtualFieldsFromSchema(mainSchema: z.ZodTypeAny): z.ZodTypeAny {\n // Check if it's a discriminated union - need to handle each variant\n const zodType = getZodType(mainSchema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(mainSchema, 'discriminator');\n const options = getZodDefArrayProperty(mainSchema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && options && options.length > 0) {\n // Apply virtual field exclusion to each variant\n const modifiedOptions = options.map(option =>\n this.applyVirtualFieldExclusionToSchema(option)\n );\n\n // Recreate discriminated union with modified variants\n if (modifiedOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n modifiedOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else if (modifiedOptions.length === 1) {\n return modifiedOptions[0];\n }\n }\n }\n\n // Regular object schema - apply exclusion directly\n return this.applyVirtualFieldExclusionToSchema(mainSchema);\n }\n\n /**\n * Apply virtual field exclusion to a single schema (object or other).\n */\n private static applyVirtualFieldExclusionToSchema(schema: z.ZodTypeAny): z.ZodTypeAny {\n if (!isZodObject(schema)) {\n return schema;\n }\n\n try {\n const omitObj: Record<string, true> = {};\n const shape = getZodObjectShape(schema);\n\n // Find and exclude virtual fields\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isVirtualField(fieldSchema as z.ZodTypeAny)) {\n omitObj[fieldName] = true;\n }\n }\n\n // If we have fields to omit, create omitted schema\n if (Object.keys(omitObj).length > 0) {\n const omittedSchema = this.omitObjectFields(schema, omitObj);\n return omittedSchema;\n }\n } catch (error) {\n throw new Error(`Failed to exclude virtual fields from schema: ${error instanceof Error ? error.message : String(error)}`);\n }\n\n return schema;\n }\n\n // TODO: Implement cascading relationships logic in future iteration\n\n\n\n /**\n * Create paginated response schema using shared pagination metadata schema\n */\n private static createPaginatedResponseSchema(\n dataSchema: z.ZodTypeAny,\n maxResultsPerPageLimit: number = 100\n ): z.ZodTypeAny {\n return z.object({\n data: z.array(dataSchema).max(maxResultsPerPageLimit),\n // Bounded by the SAME ceiling as the data array beside it. Leaving this on the default-bounded\n // constant is how a legitimately-served 120-row page still answered 500 after the array bound,\n // the request bound and both repository maxima had been unified: `limit` echoes the page size\n // actually served, so a stricter bound here rejects what the line above just permitted.\n pagination: createPaginationResponseMetadataSchema(maxResultsPerPageLimit)\n });\n }\n\n /**\n * Analyze a DTO schema with full recursive object display\n * Public method to get detailed recursive schema analysis\n */\n static analyzeSchemaRecursive(\n schema: any,\n maxDepth: number = 5\n ): string {\n return this.analyzeDtoSchemaRecursive(schema, '', maxDepth);\n }\n\n /**\n * Debug helper to display a single schema with full recursive analysis\n * Useful for detailed inspection of specific DTOs\n */\n static debugDisplaySingleSchema(\n schemaName: string,\n schema: any,\n maxDepth: number = 5\n ): void {\n console.log(`\\n🔍 === SCHEMA DEBUG: ${schemaName} ===`);\n const analysis = this.analyzeDtoSchemaRecursive(schema, '', maxDepth);\n console.log(analysis);\n console.log(`=== END SCHEMA DEBUG ===\\n`);\n }\n\n /**\n * Convenience method to display DTOs with full recursive object details\n * Shows complete nested structures for better understanding\n */\n static debugDisplayGeneratedDtosWithFullDetails(\n resourceConfigurations: { [key: string]: any },\n resourceFilter: ResourceType[] = [],\n maxDepth: number = 4\n ): void {\n console.log(`\\n🔍 === FULL RECURSIVE DTO ANALYSIS (depth: ${maxDepth}) ===\\n`);\n this.debugDisplayGeneratedDtos(\n resourceConfigurations,\n resourceFilter,\n true, // Always use recursive analysis\n maxDepth\n );\n }\n\n /**\n * Debug function to display DTOs for specific resources\n * @param resourceConfigurations - All resource configurations\n * @param resourceFilter - Array of resource types to filter (empty = show all)\n * @param useRecursiveAnalysis - Whether to show full recursive object structures (default: true now)\n * @param maxRecursionDepth - Maximum depth for recursive object analysis (default: 3)\n */\n static debugDisplayGeneratedDtos(\n resourceConfigurations: { [key: string]: any },\n resourceFilter: ResourceType[] = [],\n useRecursiveAnalysis: boolean = true,\n maxRecursionDepth: number = 3\n ): void {\n console.log('\\n=== 📋 GENERATED DTOS DEBUG DISPLAY ===\\n');\n\n const resourceTypes = Object.keys(resourceConfigurations).sort();\n let totalOperations = 0;\n let totalDtosProcessed = 0;\n let filteredResourceTypes = resourceFilter.length > 0\n ? resourceTypes.filter(type => resourceFilter.includes(type as ResourceType))\n : resourceTypes;\n\n if (resourceFilter.length > 0) {\n console.log(`🔍 Filtering for resources: ${resourceFilter.join(', ')}\\n`);\n }\n\n if (useRecursiveAnalysis) {\n console.log(`🔄 Using recursive object analysis (full nested structures, max depth: ${maxRecursionDepth})\\n`);\n }\n\n for (const resourceType of filteredResourceTypes) {\n const resourceConfig = resourceConfigurations[resourceType];\n\n if (!resourceConfig || !resourceConfig.operations) {\n console.log(`⚠️ Resource ${resourceType}: No operations found`);\n continue;\n }\n\n const operations = resourceConfig.operations;\n console.log(`\\n📦 Resource: ${resourceType}`);\n console.log(` Operations: ${operations.length}`);\n\n // Group operations by operation identifier for cleaner display\n const operationGroups = new Map<string, any[]>();\n operations.forEach((op: any) => {\n const key = op.operationIdentifier;\n if (!operationGroups.has(key)) {\n operationGroups.set(key, []);\n }\n operationGroups.get(key)!.push(op);\n });\n\n for (const [operationIdentifier, ops] of operationGroups.entries()) {\n console.log(`\\n 🔧 Operation: ${operationIdentifier} (${ops.length} variants)`);\n\n ops.forEach((operation: any, index: number) => {\n totalOperations++;\n const variantInfo = operation.variantType +\n ('isBulkOperation' in operation && operation.isBulkOperation ? ' [BULK]' : '') +\n (operation.isOperationDefault ? ' [DEFAULT]' : '') +\n (operation.variantKey ? ` [${operation.variantKey}]` : '');\n\n console.log(` └─ Variant ${index + 1}: ${variantInfo}`);\n\n // Display Request DTO\n const requestDtoInfo = useRecursiveAnalysis\n ? this.analyzeDtoSchemaRecursive(operation.requestDto, '', maxRecursionDepth)\n : this.analyzeDtoSchema(operation.requestDto);\n console.log(` 📤 Request: ${requestDtoInfo}`);\n totalDtosProcessed++;\n\n // Display Response DTO\n const responseDtoInfo = useRecursiveAnalysis\n ? this.analyzeDtoSchemaRecursive(operation.responseDto, '', maxRecursionDepth)\n : this.analyzeDtoSchema(operation.responseDto);\n console.log(` 📥 Response: ${responseDtoInfo}`);\n totalDtosProcessed++;\n\n // NOTE: Cascade mode logging removed - lifecycle operations are now on relationships\n // See childOperations.lifecycle.onParentDelete on ResourceRelationship\n\n // NOTE: inheritenceSchemaConfiguration removed - conditional relationships now use\n // discriminator field on ResourceRelationship instead\n });\n }\n }\n\n console.log(`\\n=== 📊 DTO DEBUG SUMMARY ===`);\n console.log(`Resources processed: ${filteredResourceTypes.length}/${resourceTypes.length}`);\n console.log(`Total operations: ${totalOperations}`);\n console.log(`Total DTOs processed: ${totalDtosProcessed}`);\n if (resourceFilter.length > 0) {\n console.log(`Filter applied: [${resourceFilter.join(', ')}]`);\n }\n if (useRecursiveAnalysis) {\n console.log(`Analysis mode: Recursive (full nested structures, depth: ${maxRecursionDepth})`);\n }\n console.log(`=================================\\n`);\n }\n\n /**\n * Get field count and names from a Zod object schema (Zod-compliant)\n */\n private static getZodObjectFields(schema: any): { fieldCount: number; fieldNames: string[] } {\n if (!isZodObject(schema)) {\n return { fieldCount: 0, fieldNames: [] };\n }\n\n try {\n // Use public .shape property (Zod v4 API)\n const shape = getZodObjectShape(schema);\n const fieldNames = Object.keys(shape);\n return { fieldCount: fieldNames.length, fieldNames };\n } catch (error) {\n return { fieldCount: 0, fieldNames: [] };\n }\n }\n\n /**\n * Analyze a DTO schema and return a detailed human-readable summary (Zod-compliant)\n */\n private static analyzeDtoSchema(schema: any, indent: string = ''): string {\n if (!schema) {\n return '❌ null/undefined';\n }\n\n // Check if it's a z.any()\n if (isZodAny(schema)) {\n return '⚪ z.any() [NEEDS ENHANCEMENT]';\n }\n\n // Check if it's a ZodObject - use proper field detection\n if (isZodObject(schema)) {\n const { fieldCount, fieldNames } = this.getZodObjectFields(schema);\n\n if (fieldCount === 0) {\n return '📄 {} (empty object)';\n }\n\n // Check if this is a decorated schema\n let decorationInfo = '';\n // Use the new Symbol-based metadata approach (preserves description for API docs)\n const metadata = getCustomFieldMetadata(schema);\n const decorations: string[] = [];\n if (metadata[ZodDecorator.IS_DB_INDEXED]) decorations.push('indexed');\n if (metadata[ZodDecorator.IS_FOREIGN_KEY]) decorations.push('reference');\n if (decorations.length > 0) {\n decorationInfo = ` [${decorations.join(', ')}]`;\n }\n\n // Return with detailed field information inline\n let result = `📋 Object (${fieldCount} fields)${decorationInfo}`;\n\n // Always show ALL field details without truncation\n if (fieldCount > 0) {\n try {\n const shape = getZodObjectShape(schema);\n\n result += ':\\n';\n fieldNames.forEach((fieldName, index) => {\n const fieldSchema = shape[fieldName];\n const fieldType = this.getFieldTypeRecursive(\n fieldSchema,\n indent + ' │ ',\n 3, // Max depth for nested objects\n 0,\n new Set()\n );\n const isOptional = this.isFieldOptional(fieldSchema);\n const optionalMark = isOptional ? '?' : '';\n result += `${indent} │ ${fieldName}${optionalMark}: ${fieldType}`;\n if (index < fieldNames.length - 1) result += '\\n';\n });\n } catch (error) {\n result += ` (field details unavailable: ${error})`;\n }\n }\n\n return result;\n }\n\n\n\n // Check if it's an array\n if (isZodArray(schema)) {\n const element = getZodDefSchemaProperty(schema, 'element');\n if (!element) return '📚 Array[unknown]';\n const elementType = this.getFieldTypeRecursive(\n element,\n indent,\n 3, // Max depth for array elements\n 0,\n new Set()\n );\n return `📚 Array[${elementType}]`;\n }\n\n // Check if it's a union (regular or discriminated)\n const zodType = getZodType(schema);\n if (zodType === 'union') {\n const options = getZodDefArrayProperty(schema, 'options');\n const optionCount = options?.length || 0;\n // In Zod v4, discriminated unions extend union and have a discriminator property\n const discriminator = getZodDefStringProperty(schema, 'discriminator');\n if (discriminator) {\n return `🔀 DiscriminatedUnion (${optionCount} options, discriminator: \"${discriminator}\")`;\n }\n return `🔀 Union (${optionCount} options)`;\n }\n\n // Check if it's a merge/intersection\n if (zodType === 'intersection') {\n return '🔗 Merged schema';\n }\n\n // Check if it's an optional wrapper\n if (isZodOptional(schema)) {\n const innerType = getZodDefSchemaProperty(schema, 'innerType');\n if (!innerType) return 'unknown (optional)';\n return this.analyzeDtoSchema(innerType, indent) + ' (optional)';\n }\n\n // Check if it's a pipe (from .transform(), .pipe(), etc.)\n // In Zod v4, transforms create pipe types with 'in' and 'out' schemas\n if (zodType === 'pipe') {\n const inSchema = getZodDefSchemaProperty(schema, 'in');\n if (!inSchema) return '🔧 Pipe[unknown]';\n return `🔧 Pipe[${this.analyzeDtoSchema(inSchema, indent)}]`;\n }\n\n // Check if it's a transform (standalone transform, no underlying schema)\n if (zodType === 'transform') {\n return '🔧 Transform';\n }\n\n // Check if it's a custom (from .refine(), .superRefine(), etc.)\n // Custom types don't wrap schemas - refinements are stored as checks on the schema\n if (zodType === 'custom') {\n return '🔧 Custom';\n }\n\n // Check if it's a ZodDefault (has default value)\n if (isZodDefault(schema)) {\n const innerSchema = getZodDefSchemaProperty(schema, 'innerType');\n if (!innerSchema) return 'unknown (with default)';\n return this.analyzeDtoSchema(innerSchema, indent) + ' (with default)';\n }\n\n // Default case\n return `🔍 ${zodType || 'Unknown'}`;\n }\n\n /**\n * Analyze a DTO schema with full recursive object display\n * This method shows complete nested object structures instead of just summaries\n */\n private static analyzeDtoSchemaRecursive(\n schema: any,\n indent: string = '',\n maxDepth: number = 5,\n currentDepth: number = 0,\n visitedSchemas: Set<any> = new Set()\n ): string {\n if (!schema) {\n return '❌ null/undefined';\n }\n\n // Prevent infinite recursion\n if (currentDepth >= maxDepth) {\n return `🔄 [Max depth ${maxDepth} reached]`;\n }\n\n // Prevent circular references\n if (visitedSchemas.has(schema)) {\n return '🔄 [Circular reference]';\n }\n visitedSchemas.add(schema);\n\n // Check if it's a z.any()\n if (isZodAny(schema)) {\n visitedSchemas.delete(schema);\n return '⚪ z.any() [NEEDS ENHANCEMENT]';\n }\n\n // Check if it's a ZodObject - use proper field detection with full recursion\n if (isZodObject(schema)) {\n const { fieldCount, fieldNames } = this.getZodObjectFields(schema);\n\n if (fieldCount === 0) {\n visitedSchemas.delete(schema);\n return '📄 {} (empty object)';\n }\n\n // Check if this is a decorated schema\n let decorationInfo = '';\n // Use the new Symbol-based metadata approach (preserves description for API docs)\n const metadata = getCustomFieldMetadata(schema);\n const decorations: string[] = [];\n if (metadata[ZodDecorator.IS_DB_INDEXED]) decorations.push('indexed');\n if (metadata[ZodDecorator.IS_FOREIGN_KEY]) decorations.push('reference');\n if (decorations.length > 0) {\n decorationInfo = ` [${decorations.join(', ')}]`;\n }\n\n // Return with detailed field information inline with full recursion\n let result = `📋 Object (${fieldCount} fields)${decorationInfo}`;\n\n // Always show ALL field details with recursion\n if (fieldCount > 0) {\n try {\n const shape = getZodObjectShape(schema);\n\n result += ':\\n';\n fieldNames.forEach((fieldName, index) => {\n const fieldSchema = shape[fieldName];\n const fieldType = this.getFieldTypeRecursive(\n fieldSchema,\n indent + ' │ ',\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n const isOptional = this.isFieldOptional(fieldSchema);\n const optionalMark = isOptional ? '?' : '';\n result += `${indent} │ ${fieldName}${optionalMark}: ${fieldType}`;\n if (index < fieldNames.length - 1) result += '\\n';\n });\n } catch (error) {\n result += ` (field details unavailable: ${error})`;\n }\n }\n\n visitedSchemas.delete(schema);\n return result;\n }\n\n // Check if it's an array with recursive element analysis\n if (isZodArray(schema)) {\n const element = getZodDefSchemaProperty(schema, 'element');\n if (!element) {\n visitedSchemas.delete(schema);\n return '📚 Array[unknown]';\n }\n const elementType = this.getFieldTypeRecursive(\n element,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n visitedSchemas.delete(schema);\n return `📚 Array[${elementType}]`;\n }\n\n // Check if it's a union (regular or discriminated)\n const zodType = getZodType(schema);\n if (zodType === 'union') {\n const options = getZodDefArrayProperty(schema, 'options');\n const optionCount = options?.length || 0;\n // In Zod v4, discriminated unions extend union and have a discriminator property\n const discriminator = getZodDefStringProperty(schema, 'discriminator');\n visitedSchemas.delete(schema);\n if (discriminator) {\n return `🔀 DiscriminatedUnion (${optionCount} options, discriminator: \"${discriminator}\")`;\n }\n return `🔀 Union (${optionCount} options)`;\n }\n\n // Check if it's a merge/intersection\n if (zodType === 'intersection') {\n visitedSchemas.delete(schema);\n return '🔗 Merged schema';\n }\n\n // Check if it's an optional wrapper\n if (isZodOptional(schema)) {\n const innerType = getZodDefSchemaProperty(schema, 'innerType');\n if (!innerType) {\n visitedSchemas.delete(schema);\n return 'unknown (optional)';\n }\n const result = this.analyzeDtoSchemaRecursive(\n innerType,\n indent,\n maxDepth,\n currentDepth,\n new Set(visitedSchemas)\n ) + ' (optional)';\n visitedSchemas.delete(schema);\n return result;\n }\n\n // Check if it's a pipe (from .transform(), .pipe(), etc.)\n // In Zod v4, transforms create pipe types with 'in' and 'out' schemas\n if (zodType === 'pipe') {\n const inSchema = getZodDefSchemaProperty(schema, 'in');\n if (!inSchema) {\n visitedSchemas.delete(schema);\n return '🔧 Pipe[unknown]';\n }\n const result = `🔧 Pipe[${this.analyzeDtoSchemaRecursive(\n inSchema,\n indent,\n maxDepth,\n currentDepth,\n new Set(visitedSchemas)\n )}]`;\n visitedSchemas.delete(schema);\n return result;\n }\n\n // Check if it's a transform (standalone transform, no underlying schema)\n if (zodType === 'transform') {\n visitedSchemas.delete(schema);\n return '🔧 Transform';\n }\n\n // Check if it's a custom (from .refine(), .superRefine(), etc.)\n // Custom types don't wrap schemas - refinements are stored as checks on the schema\n if (zodType === 'custom') {\n visitedSchemas.delete(schema);\n return '🔧 Custom';\n }\n\n // Check if it's a ZodDefault (has default value)\n if (isZodDefault(schema)) {\n const innerSchema = getZodDefSchemaProperty(schema, 'innerType');\n if (!innerSchema) {\n visitedSchemas.delete(schema);\n return 'unknown (with default)';\n }\n const result = this.analyzeDtoSchemaRecursive(\n innerSchema,\n indent,\n maxDepth,\n currentDepth,\n new Set(visitedSchemas)\n ) + ' (with default)';\n visitedSchemas.delete(schema);\n return result;\n }\n\n // Default case\n visitedSchemas.delete(schema);\n return `🔍 ${zodType || 'Unknown'}`;\n }\n\n /**\n * Get detailed field type description with full recursive sub-object support\n */\n private static getFieldTypeRecursive(\n fieldSchema: any,\n indent: string = '',\n maxDepth: number = 5,\n currentDepth: number = 0,\n visitedSchemas: Set<any> = new Set()\n ): string {\n const zodType = getZodType(fieldSchema);\n if (!zodType) return 'unknown';\n\n // Prevent infinite recursion\n if (currentDepth >= maxDepth) {\n return `[Max depth ${maxDepth} reached]`;\n }\n\n // Prevent circular references\n if (visitedSchemas.has(fieldSchema)) {\n return '[Circular reference]';\n }\n\n switch (zodType) {\n case 'string':\n // Check for decorations\n if (fieldSchema.description) {\n try {\n const metadata = JSON.parse(fieldSchema.description);\n const decorations: string[] = [];\n if (metadata.isDBIndexed) decorations.push('indexed');\n if (metadata.isForeignKey) decorations.push('ref');\n if (decorations.length > 0) {\n return `string [${decorations.join(', ')}]`;\n }\n } catch {}\n }\n return 'string';\n case 'number':\n case 'int': return 'number';\n case 'bigint': return 'bigint';\n case 'boolean': return 'boolean';\n case 'date': return 'Date';\n case 'array':\n visitedSchemas.add(fieldSchema);\n const element = getZodDefSchemaProperty(fieldSchema, 'element');\n if (!element) {\n visitedSchemas.delete(fieldSchema);\n return 'unknown[]';\n }\n const elementType = this.getFieldTypeRecursive(\n element,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n visitedSchemas.delete(fieldSchema);\n return `${elementType}[]`;\n case 'enum':\n // Use centralized getEnumValues function\n const enumValues = getEnumValues(fieldSchema);\n if (enumValues.length === 0) return 'enum()';\n return `enum(${enumValues.slice(0, 3).join('|')}${enumValues.length > 3 ? '...' : ''})`;\n case 'object':\n // Full recursive object analysis\n visitedSchemas.add(fieldSchema);\n const { fieldCount, fieldNames } = this.getZodObjectFields(fieldSchema);\n\n if (fieldCount === 0) {\n visitedSchemas.delete(fieldSchema);\n return '{}';\n }\n\n let result = `{\\n`;\n try {\n const shape = getZodObjectShape(fieldSchema);\n\n fieldNames.forEach((fieldName, index) => {\n const nestedFieldSchema = shape[fieldName];\n const nestedFieldType = this.getFieldTypeRecursive(\n nestedFieldSchema,\n indent + ' ',\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n const isOptional = this.isFieldOptional(nestedFieldSchema);\n const optionalMark = isOptional ? '?' : '';\n result += `${indent} ${fieldName}${optionalMark}: ${nestedFieldType}`;\n if (index < fieldNames.length - 1) result += ',\\n';\n });\n result += `\\n${indent}}`;\n } catch (error) {\n result = `object(${fieldCount} fields) [error: ${error}]`;\n }\n\n visitedSchemas.delete(fieldSchema);\n return result;\n case 'optional':\n const optionalInnerType = getZodDefSchemaProperty(fieldSchema, 'innerType');\n if (!optionalInnerType) return 'unknown?';\n return this.getFieldTypeRecursive(\n optionalInnerType,\n indent,\n maxDepth,\n currentDepth,\n visitedSchemas\n ) + '?';\n case 'nullable':\n const nullableInnerType = getZodDefSchemaProperty(fieldSchema, 'innerType');\n if (!nullableInnerType) return 'unknown | null';\n return this.getFieldTypeRecursive(\n nullableInnerType,\n indent,\n maxDepth,\n currentDepth,\n visitedSchemas\n ) + ' | null';\n case 'default':\n const defaultValue = getZodDefProperty(fieldSchema, 'defaultValue');\n const defaultInnerType = getZodDefSchemaProperty(fieldSchema, 'innerType');\n if (!defaultInnerType) return 'unknown (with default)';\n const defaultValueStr = typeof defaultValue === 'function'\n ? 'fn()'\n : String(defaultValue ?? 'undefined');\n return this.getFieldTypeRecursive(\n defaultInnerType,\n indent,\n maxDepth,\n currentDepth,\n visitedSchemas\n ) + ` (default: ${defaultValueStr})`;\n case 'union':\n const unionOptions = getZodDefArrayProperty(fieldSchema, 'options');\n const optionCount = unionOptions?.length || 0;\n // Check if it's a discriminated union\n const unionDiscriminator = getZodDefStringProperty(fieldSchema, 'discriminator');\n if (unionDiscriminator) {\n return `discriminatedUnion(${optionCount} options, discriminator: \"${unionDiscriminator}\")`;\n }\n return `union(${optionCount} options)`;\n case 'literal':\n // Zod 4 stores literal value(s) in def.values (an array); the legacy Zod-3\n // def.value is always undefined in v4, so reading it alone always rendered\n // literal(\"unknown\"). Read def.values first, fall back to def.value.\n const literalValues = (getZodDefArrayProperty(fieldSchema, 'values') ?? [getZodDefProperty(fieldSchema, 'value')])\n .filter((entry) => entry !== undefined && entry !== null);\n return `literal(\"${String(literalValues[0] ?? 'unknown')}\")`;\n case 'any':\n return 'any';\n case 'unknown':\n return 'unknown';\n case 'set':\n visitedSchemas.add(fieldSchema);\n const setElement = getZodDefSchemaProperty(fieldSchema, 'valueType');\n if (!setElement) {\n visitedSchemas.delete(fieldSchema);\n return 'Set<unknown>';\n }\n const setElementType = this.getFieldTypeRecursive(\n setElement,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n visitedSchemas.delete(fieldSchema);\n return `Set<${setElementType}>`;\n case 'tuple':\n visitedSchemas.add(fieldSchema);\n const tupleItems = getZodDefArrayProperty(fieldSchema, 'items') ?? [];\n const tupleTypes = tupleItems\n .filter((item): item is z.ZodTypeAny => isZodTypeAny(item))\n .map(item => this.getFieldTypeRecursive(\n item,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n ));\n visitedSchemas.delete(fieldSchema);\n return `[${tupleTypes.join(', ')}]`;\n case 'record':\n visitedSchemas.add(fieldSchema);\n const recordValue = getZodDefSchemaProperty(fieldSchema, 'valueType');\n if (!recordValue) {\n visitedSchemas.delete(fieldSchema);\n return 'Record<string, unknown>';\n }\n const recordValueType = this.getFieldTypeRecursive(\n recordValue,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n );\n visitedSchemas.delete(fieldSchema);\n return `Record<string, ${recordValueType}>`;\n case 'map':\n visitedSchemas.add(fieldSchema);\n const mapKey = getZodDefSchemaProperty(fieldSchema, 'keyType');\n const mapValue = getZodDefSchemaProperty(fieldSchema, 'valueType');\n const mapKeyType = mapKey ? this.getFieldTypeRecursive(\n mapKey,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n ) : 'unknown';\n const mapValueType = mapValue ? this.getFieldTypeRecursive(\n mapValue,\n indent,\n maxDepth,\n currentDepth + 1,\n new Set(visitedSchemas)\n ) : 'unknown';\n visitedSchemas.delete(fieldSchema);\n return `Map<${mapKeyType}, ${mapValueType}>`;\n case 'intersection':\n const leftSchema = getZodDefSchemaProperty(fieldSchema, 'left');\n const rightSchema = getZodDefSchemaProperty(fieldSchema, 'right');\n const leftType = leftSchema ? this.getFieldTypeRecursive(\n leftSchema,\n indent,\n maxDepth,\n currentDepth + 1,\n visitedSchemas\n ) : 'unknown';\n const rightType = rightSchema ? this.getFieldTypeRecursive(\n rightSchema,\n indent,\n maxDepth,\n currentDepth + 1,\n visitedSchemas\n ) : 'unknown';\n return `${leftType} & ${rightType}`;\n case 'lazy':\n return 'lazy<...>';\n case 'void':\n case 'undefined':\n case 'never':\n return zodType;\n case 'pipe':\n const pipeInSchema = getZodDefSchemaProperty(fieldSchema, 'in');\n if (!pipeInSchema) return 'pipe[unknown]';\n const pipeInnerType = this.getFieldTypeRecursive(\n pipeInSchema,\n indent,\n maxDepth,\n currentDepth,\n visitedSchemas\n );\n return `pipe[${pipeInnerType}]`;\n case 'transform':\n return 'transform';\n case 'custom':\n return 'custom';\n default:\n return zodType || 'unknown';\n }\n }\n\n\n /**\n * Check if a field is optional\n */\n private static isFieldOptional(fieldSchema: any): boolean {\n // Check if it's wrapped in ZodOptional\n if (isZodOptional(fieldSchema)) return true;\n\n // Check if it's a ZodDefault (has default value)\n if (isZodDefault(fieldSchema)) return true;\n\n return false;\n }\n\n /**\n * Apply inheritance to mainSchema based on inheritance definition\n * Creates discriminated union schemas when inheritance is defined\n *\n * NOTE: This transfers inheritance logic from relationship cascading mechanism\n * to schema-level processing, ensuring inheritance affects DTOs properly.\n *\n * NOTE: TDatabaseSchema has been removed. Backend-only fields are now marked with\n * the `isBackendOnly` decorator and stripped at the service layer.\n */\n private static applyInheritanceToSchema<\n TMainSchema extends z.ZodTypeAny\n >(\n mainSchema: TMainSchema,\n inheritanceDefinition: any,\n processedInheritanceSchemas: Map<string, z.ZodTypeAny>\n ): TMainSchema {\n\n // If no inheritance definition, return original schema\n if (!inheritanceDefinition || !inheritanceDefinition.inheritedSchemas ||\n inheritanceDefinition.inheritedSchemas.length === 0) {\n return mainSchema;\n }\n\n const cacheKey = `${JSON.stringify(inheritanceDefinition)}_main`;\n\n // Check cache first\n if (processedInheritanceSchemas.has(cacheKey)) {\n return processedInheritanceSchemas.get(cacheKey)! as TMainSchema;\n }\n\n const { discriminatorField, inheritedSchemas, withoutInheritanceDiscriminatorFieldValues } = inheritanceDefinition;\n\n // Build discriminated union options for mainSchema\n const mainSchemaOptions: z.ZodTypeAny[] = [];\n\n // Add base schema for non-inherited values if specified\n if (withoutInheritanceDiscriminatorFieldValues && withoutInheritanceDiscriminatorFieldValues.length > 0) {\n // Create enum for base discriminator values.\n // Mark it with the isDiscriminator decorator so EVERY union option's\n // discriminator field is uniformly recognized as a discriminator (and not\n // mistaken for an auto-populated literal by the request-DTO omission logic).\n const baseDiscriminatorEnum = addDiscriminator(\n z.enum(withoutInheritanceDiscriminatorFieldValues as [string, ...string[]]),\n { baseValues: withoutInheritanceDiscriminatorFieldValues as string[] }\n );\n\n // Extend mainSchema with discriminator field\n const baseMainSchema = this.extendSchemaWithDiscriminator(mainSchema, discriminatorField, baseDiscriminatorEnum);\n\n mainSchemaOptions.push(baseMainSchema);\n }\n\n // Process each inherited schema\n inheritedSchemas.forEach((inheritedItem: any) => {\n const { discriminatorFieldValue, schema: inheritedSchema } = inheritedItem;\n\n // Create literal discriminator for this variant.\n // It MUST carry the isDiscriminator decorator: `mergeInheritedSchema`\n // overwrites the variant's discriminator field with this value, dropping\n // the decorator `createSchemaFamily` originally applied. Without it, the\n // request-DTO builder's `isNonDiscriminatorLiteral` check would strip the\n // discriminator from CREATE/UPDATE DTOs, producing a structurally-invalid\n // discriminated union (Zod: \"Invalid discriminated union option\").\n const discriminatorLiteral = addDiscriminator(\n z.literal(discriminatorFieldValue),\n { baseValues: withoutInheritanceDiscriminatorFieldValues as string[] | undefined }\n );\n\n // Merge inherited schema with base schema and add discriminator\n const mergedMainSchema = this.mergeInheritedSchema(mainSchema, inheritedSchema, discriminatorField, discriminatorLiteral);\n\n mainSchemaOptions.push(mergedMainSchema);\n\n // Handle nested inheritance recursively\n if (inheritedItem.inheritenceSchemaDefinition) {\n const nestedMain = this.applyInheritanceToSchema(\n mergedMainSchema,\n inheritedItem.inheritenceSchemaDefinition,\n processedInheritanceSchemas\n );\n\n // Replace the simple merged schema with the nested enhanced one\n mainSchemaOptions[mainSchemaOptions.length - 1] = nestedMain;\n }\n });\n\n // Create discriminated union if we have multiple options\n let enhancedMainSchema: z.ZodTypeAny;\n\n if (mainSchemaOptions.length > 1) {\n // Check if all schemas are ZodObject types to use discriminated union\n const allMainAreObjects = mainSchemaOptions.every(schema =>\n isZodObject(schema)\n );\n\n if (allMainAreObjects) {\n // Use discriminated union for object schemas\n enhancedMainSchema = z.discriminatedUnion(\n discriminatorField,\n mainSchemaOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else {\n // Fallback to regular union for mixed types\n enhancedMainSchema = z.union(mainSchemaOptions as [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]);\n }\n } else if (mainSchemaOptions.length === 1) {\n enhancedMainSchema = mainSchemaOptions[0];\n } else {\n // Fallback to original schema\n enhancedMainSchema = mainSchema;\n }\n\n // Cache the result\n processedInheritanceSchemas.set(cacheKey, enhancedMainSchema);\n\n return enhancedMainSchema as TMainSchema;\n }\n\n /**\n * Extend a schema with a discriminator field\n */\n private static extendSchemaWithDiscriminator(\n baseSchema: z.ZodTypeAny,\n discriminatorField: string,\n discriminatorSchema: z.ZodTypeAny\n ): z.ZodTypeAny {\n\n // If base schema is not an object, wrap it in an object with the discriminator\n if (!isZodObject(baseSchema)) {\n return z.object({\n [discriminatorField]: discriminatorSchema,\n value: baseSchema\n });\n }\n\n // Extend existing object schema with discriminator field\n // Type guard already ensures it's a ZodObject\n return baseSchema.extend({\n [discriminatorField]: discriminatorSchema\n });\n }\n\n /**\n * Merge inherited schema with base schema and add discriminator\n */\n private static mergeInheritedSchema(\n baseSchema: z.ZodTypeAny,\n inheritedSchema: z.ZodTypeAny,\n discriminatorField: string,\n discriminatorValue: z.ZodTypeAny\n ): z.ZodTypeAny {\n\n // If both are object schemas, merge them\n if (isZodObject(baseSchema) && isZodObject(inheritedSchema)) {\n\n // Merge the two object schemas and add discriminator (using extend instead of merge in Zod v4)\n const mergedSchema = baseSchema.extend(inheritedSchema.shape);\n return mergedSchema.extend({\n [discriminatorField]: discriminatorValue\n });\n }\n\n // If only inherited schema is an object, extend it with discriminator\n if (isZodObject(inheritedSchema)) {\n // Type guard already ensures it's a ZodObject\n return inheritedSchema.extend({\n [discriminatorField]: discriminatorValue\n });\n }\n\n // Fallback: create object with discriminator and value\n return z.object({\n [discriminatorField]: discriminatorValue,\n value: inheritedSchema\n });\n }\n\n // =============================================================================\n // NESTED OPERATIONS DTO BUILDING\n // =============================================================================\n\n private static getAllResourceFieldIdentifiers(\n resourceRegistry: Map<ResourceType, any>\n ): Partial<Record<ResourceType, string>> {\n const allResourceFieldIdentifiers: Partial<Record<ResourceType, string>> = {};\n\n for (const [resourceType, resourceConfig] of resourceRegistry.entries()) {\n if (typeof resourceConfig?.resourceFieldIdentifier === 'string' && resourceConfig.resourceFieldIdentifier.length > 0) {\n allResourceFieldIdentifiers[resourceType] = resourceConfig.resourceFieldIdentifier;\n }\n }\n\n return allResourceFieldIdentifiers;\n }\n\n /**\n * Derive nested field name from the relationship identifier.\n */\n private static getNestedFieldName(\n rel: ResourceRelationship,\n resourceRegistry: Map<ResourceType, any>\n ): string {\n return Resources_SharedUtils.resolveRelationshipObjectIdentity(\n rel,\n rel.resourceType2,\n rel.cardinality2,\n this.getAllResourceFieldIdentifiers(resourceRegistry)\n ).objectFieldName;\n }\n\n private static getRelationshipObjectFieldName(\n rel: Pick<ResourceRelationship, 'foreignKeyField' | 'resourceType1' | 'resourceType2'>,\n relatedResourceType: ResourceType,\n cardinality: ResourceRelationshipCardinality,\n resourceRegistry: Map<ResourceType, any>\n ): string {\n return Resources_SharedUtils.resolveRelationshipObjectIdentity(\n rel,\n relatedResourceType,\n cardinality,\n this.getAllResourceFieldIdentifiers(resourceRegistry)\n ).objectFieldName;\n }\n\n /**\n * Get delete field name: _{nestedField}ToDelete\n */\n private static getDeleteFieldName(nestedFieldName: string): string {\n return `_${nestedFieldName}ToDelete`;\n }\n\n /**\n * Build child schema for nested operations based on operation type and config.\n * For CREATE: uses child's CREATE request DTO\n * For UPDATE: uses union of CREATE (no _id) and UPDATE (with _id) DTOs\n */\n private static buildNestedChildSchema(\n rel: ResourceRelationship,\n nestedConfig: ChildNestedMutationConfig | ChildNestedMutationConfig_Parsed,\n operation: CoreResourceOperation,\n childMainSchema: z.ZodTypeAny,\n resourceRegistry: Map<ResourceType, any>\n ): z.ZodTypeAny {\n const childResourceType = rel.resourceType2;\n\n // Get child's operation config to find request DTOs\n const childConfig = resourceRegistry.get(childResourceType);\n if (!childConfig || !childConfig.operations) {\n // Fallback: use child's main schema with appropriate omissions\n if (operation === CoreResourceOperation.CREATE || operation === CoreResourceOperation.CREATE_MANY) {\n return this.createRequestDtoForCreate(childMainSchema);\n } else {\n return this.createRequestDtoForUpdate(childMainSchema);\n }\n }\n\n // Find child's CREATE operation for request DTO\n const childCreateOp = childConfig.operations.find(\n (op: any) => op.operationIdentifier === CoreResourceOperation.CREATE ||\n op.resourceOperationLike === CoreResourceOperation.CREATE\n );\n const childCreateDto = childCreateOp?.requestDto || this.createRequestDtoForCreate(childMainSchema);\n\n if (operation === CoreResourceOperation.CREATE || operation === CoreResourceOperation.CREATE_MANY) {\n // For CREATE: use child's CREATE DTO\n return childCreateDto;\n }\n\n // For UPDATE: use union of CREATE (no _id) and UPDATE (with _id) DTOs\n const childUpdateOp = childConfig.operations.find(\n (op: any) => op.operationIdentifier === CoreResourceOperation.UPDATE ||\n op.resourceOperationLike === CoreResourceOperation.UPDATE\n );\n const childUpdateDto = childUpdateOp?.requestDto || this.createRequestDtoForUpdate(childMainSchema);\n\n // Create union: items without _id are creates, items with _id are updates\n // In Zod 4, we use z.union for discriminated unions or z.union for simple unions\n if (isZodObject(childCreateDto) && isZodObject(childUpdateDto)) {\n // Explicitly forbid _id on the create branch so _id-bearing payloads are\n // routed through the update branch instead of being accepted as creates and\n // only failing later in downstream child UPDATE validation.\n const createWithoutId = childCreateDto.extend({\n _id: z.never().optional()\n });\n\n // UPDATE DTO should have _id as required\n const updateWithRequiredId = childUpdateDto.extend({\n _id: z.string()\n });\n\n return z.union([updateWithRequiredId, createWithoutId]);\n }\n\n // Fallback: use UPDATE DTO\n return childUpdateDto;\n }\n\n /**\n * Get child schema for a specific DataMode (for nested READ responses).\n * - RAW: All stored fields, no population\n * - SUMMARY: Summary fields only (fields with isSummaryField decorator)\n * - CONTEXT: Full context (all fields with contextPolicy applied)\n *\n * Note: CONTEXT mode requires service-layer processing (contextPolicy application),\n * so we return the full schema here. The service layer will apply contextPolicy.\n */\n private static getChildSchemaForDataMode(\n childMainSchema: z.ZodTypeAny,\n dataMode: DataMode\n ): z.ZodTypeAny {\n switch (dataMode) {\n case DataMode.SUMMARY:\n // Use ResourcesSummaryUtils to derive summary schema (only fields with isSummaryField decorator)\n if (isZodObject(childMainSchema)) {\n return ResourcesSummaryUtils.deriveSummarySchema(childMainSchema, {\n includeId: true, // Always include _id in summaries\n includeForeignKeys: false, // Only include FKs if they have isSummaryField decorator\n });\n }\n // Fallback for non-object schemas\n return childMainSchema;\n\n case DataMode.CONTEXT:\n // CONTEXT mode requires service-layer processing (contextPolicy, population, etc.)\n // Return full schema - service layer will apply contextPolicy\n return childMainSchema;\n\n case DataMode.RAW:\n default:\n // RAW mode: return full schema (all stored fields)\n return childMainSchema;\n }\n }\n\n /**\n * Extend a DTO root that may be either a plain object or a discriminated\n * union of objects.\n *\n * Relationship-driven nested fields must exist on every variant of a\n * polymorphic DTO root; otherwise the shared contract silently diverges from\n * the live frontend form/runtime path.\n */\n private static extendObjectLikeDto(\n baseDto: z.ZodTypeAny,\n extensionShape: Record<string, z.ZodTypeAny>,\n ): z.ZodTypeAny {\n if (Object.keys(extensionShape).length === 0) {\n return baseDto;\n }\n\n if (isZodObject(baseDto)) {\n return baseDto.extend(extensionShape);\n }\n\n const zodType = getZodType(baseDto);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(baseDto, 'discriminator');\n const unionOptions = getZodDefArrayProperty(baseDto, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && unionOptions && unionOptions.length > 0) {\n const extendedOptions = unionOptions.map((option) =>\n isZodObject(option)\n ? option.extend(extensionShape)\n : option,\n );\n\n if (extendedOptions.every((option) => isZodObject(option))) {\n if (extendedOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n extendedOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]],\n );\n }\n\n if (extendedOptions.length === 1) {\n return extendedOptions[0];\n }\n }\n }\n }\n\n return baseDto;\n }\n \n\n /**\n * Build request DTO with nested children based on config.\n * Extends the base request DTO with nested child fields for CREATE/UPDATE operations.\n *\n * ## Deliberate Condition-Agnosticism\n *\n * This method iterates ALL child relationships whose compiled runtime\n * semantics expose a current effective nested projection,\n * regardless of whether they carry a `discriminator` or `condition`.\n * It generates DTO fields for every such relationship unconditionally.\n *\n * This is intentional: DTO generation is a STARTUP concern — it defines the shape\n * of all possible request/response schemas. Conditional filtering is a RUNTIME\n * concern handled by:\n * - `ServicesRegistryHandler.filterRelationshipsByParent()` — which filters\n * active relationships before processing nested data in CREATE/UPDATE\n * - `ResourceContextBackendService.fetchChildResourcesWithPolicy()` — which\n * filters active relationships before fetching children in context\n *\n * If the DTO builder filtered by discriminator at startup, the nested fields\n * would be missing from the schema entirely, and runtime data for those fields\n * would be silently dropped during Zod validation.\n */\n static buildRequestDtoWithNested(\n operation: CoreResourceOperation,\n baseDto: z.ZodTypeAny,\n childRelationships: ResourceRelationship[],\n resourceRegistry: Map<ResourceType, any>\n ): z.ZodTypeAny {\n if (operation === CoreResourceOperation.CREATE_MANY) {\n const baseShape = isZodObject(baseDto) ? getZodObjectShape(baseDto) : undefined;\n const dataSchema = baseShape?.data;\n\n if (dataSchema instanceof z.ZodArray) {\n const nestedItemDto = this.buildRequestDtoWithNested(\n CoreResourceOperation.CREATE,\n dataSchema.element as z.ZodTypeAny,\n childRelationships,\n resourceRegistry\n );\n\n return this.extendObjectLikeDto(baseDto, {\n data: z.array(nestedItemDto),\n });\n }\n }\n\n const nestedFields: Record<string, z.ZodTypeAny> = {};\n const allResourceFieldIdentifiers = this.getAllResourceFieldIdentifiers(resourceRegistry);\n\n for (const rel of childRelationships) {\n const compiledRel = Resources_SharedUtils.ensureCompiledRelationship(\n rel,\n allResourceFieldIdentifiers\n );\n const nestedConfig = Resources_SharedUtils.resolveRelationshipNestedMutationConfig(\n compiledRel,\n operation\n );\n\n if (!nestedConfig) continue;\n\n const fieldName = this.getNestedFieldName(compiledRel, resourceRegistry);\n const childConfig = resourceRegistry.get(compiledRel.resourceType2);\n if (!childConfig) continue;\n\n const childSchema = this.buildNestedChildSchema(\n compiledRel,\n nestedConfig as ChildNestedMutationConfig_Parsed,\n operation,\n childConfig.mainSchema,\n resourceRegistry\n );\n\n // Add nested field (array for 1:N/N:N, object for 1:1)\n nestedFields[fieldName] = isArrayCardinality(compiledRel.cardinality2)\n ? z.array(childSchema).optional()\n : childSchema.optional();\n\n // Add delete field if allowDelete (for UPDATE only)\n if (nestedConfig.allowDelete &&\n (operation === CoreResourceOperation.UPDATE || operation === CoreResourceOperation.UPDATE_MANY)) {\n nestedFields[this.getDeleteFieldName(fieldName)] = z.array(z.string()).optional();\n }\n }\n\n return this.extendObjectLikeDto(baseDto, nestedFields);\n }\n\n /**\n * Build response DTO with nested children based on onRead config.\n * Extends the base response DTO with nested child fields for READ operations.\n *\n * Like `buildRequestDtoWithNested`, this is deliberately condition-agnostic —\n * it generates response DTO fields for ALL relationships whose compiled\n * runtime semantics expose an effective nested-read projection, regardless of\n * discriminator/condition. The fields are optional (`z.optional()`), so when\n * the runtime skips a conditional relationship, the field is simply absent\n * from the response rather than causing a schema validation error.\n */\n static buildResponseDtoWithNested(\n baseDto: z.ZodTypeAny,\n childRelationships: ResourceRelationship[],\n resourceRegistry: Map<ResourceType, any>\n ): z.ZodTypeAny {\n const nestedFields: Record<string, z.ZodTypeAny> = {};\n const allResourceFieldIdentifiers = this.getAllResourceFieldIdentifiers(resourceRegistry);\n\n for (const rel of childRelationships) {\n const compiledRel = Resources_SharedUtils.ensureCompiledRelationship(\n rel,\n allResourceFieldIdentifiers\n );\n const readConfig = Resources_SharedUtils.resolveRelationshipNestedReadConfig(compiledRel);\n if (!readConfig) continue;\n\n const fieldName = this.getNestedFieldName(compiledRel, resourceRegistry);\n const childConfig = resourceRegistry.get(compiledRel.resourceType2);\n if (!childConfig) continue;\n\n const childSchema = this.getChildSchemaForDataMode(\n childConfig.mainSchema,\n readConfig.dataMode\n );\n\n // Add nested field (array for 1:N/N:N, object for 1:1)\n nestedFields[fieldName] = isArrayCardinality(compiledRel.cardinality2)\n ? z.array(childSchema).optional()\n : childSchema.optional();\n }\n\n return this.extendObjectLikeDto(baseDto, nestedFields);\n }\n\n /**\n * Schema-guided value walk that locates every `.isWriteOnlySecret()` field in\n * a runtime object and hands the holding object + field name to `visitSecret`.\n *\n * Mirrors the unwrap/recursion structure of {@link stripBackendOnlyFields} but\n * operates on VALUES, not schemas. It mutates in place (callers pass a freshly\n * `.parse()`'d body or a to-be-validated input, both safe to mutate). For\n * discriminated unions it recurses EVERY variant against the single value —\n * safe because both leaf actions (mask/strip) are guarded (mask only a present\n * value; strip only the exact sentinel), so fields belonging to a non-matching\n * variant are simply absent and no-op.\n */\n private static walkWriteOnlySecretValues(\n schema: z.ZodTypeAny,\n value: unknown,\n visitSecret: (holder: Record<string, unknown>, fieldName: string) => void,\n ): void {\n if (value === null || value === undefined) {\n return;\n }\n\n // Unwrap optional / nullable / default wrappers — same value, inner schema.\n if (isZodOptional(schema) || hasZodType(schema, 'nullable') || isZodDefault(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny | undefined;\n if (innerSchema) {\n this.walkWriteOnlySecretValues(innerSchema, value, visitSecret);\n }\n return;\n }\n\n // Unions (incl. discriminated) — recurse every object variant.\n if (getZodType(schema) === 'union') {\n const unionOptions = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n if (unionOptions) {\n for (const option of unionOptions) {\n this.walkWriteOnlySecretValues(option, value, visitSecret);\n }\n }\n return;\n }\n\n // Arrays — recurse each element against the element schema.\n if (isZodArray(schema) && Array.isArray(value)) {\n const elementSchema = getZodDefProperty(schema, 'element') as z.ZodTypeAny | undefined;\n if (elementSchema) {\n for (const item of value) {\n this.walkWriteOnlySecretValues(elementSchema, item, visitSecret);\n }\n }\n return;\n }\n\n // Objects — visit write-only-secret fields, recurse the rest.\n if (isZodObject(schema) && typeof value === 'object' && !Array.isArray(value)) {\n const shape = getZodObjectShape(schema);\n const holder = value as Record<string, unknown>;\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isWriteOnlySecretField(fieldSchema as z.ZodTypeAny)) {\n visitSecret(holder, fieldName);\n } else {\n this.walkWriteOnlySecretValues(fieldSchema as z.ZodTypeAny, holder[fieldName], visitSecret);\n }\n }\n }\n }\n\n /**\n * Redact every `.isWriteOnlySecret()` field in a client-facing response body to\n * {@link WRITE_ONLY_SECRET_MASK}. Applied at the client-serialization boundary\n * ONLY (`serializeOperationResultForResponse`), never at the service dispatch /\n * `transformOutput` tier — internal reads (`readAsSystem`, repository\n * `read<T>()`) must keep the real value so backend consumers (e.g. a webhook\n * signer) can use it. Returns the same (mutated) value for call-site ergonomics.\n */\n static maskWriteOnlySecretFields<T>(schema: z.ZodTypeAny, value: T): T {\n this.walkWriteOnlySecretValues(schema, value, (holder, fieldName) => {\n const current = holder[fieldName];\n if (current !== null && current !== undefined && current !== '') {\n holder[fieldName] = WRITE_ONLY_SECRET_MASK;\n }\n });\n return value;\n }\n\n /**\n * Strip any `.isWriteOnlySecret()` field whose incoming value equals the\n * {@link WRITE_ONLY_SECRET_MASK} sentinel from a CREATE/UPDATE input payload.\n * A client that renders the masked read value and submits it unchanged sends\n * the sentinel back; removing the field means the stored secret is preserved\n * (UPDATE is a partial `$set`). A genuinely new secret value is left intact.\n * Returns the same (mutated) value.\n */\n static stripWriteOnlySecretSentinel<T>(schema: z.ZodTypeAny, value: T): T {\n this.walkWriteOnlySecretValues(schema, value, (holder, fieldName) => {\n if (holder[fieldName] === WRITE_ONLY_SECRET_MASK) {\n delete holder[fieldName];\n }\n });\n return value;\n }\n\n /**\n * Strip fields marked with isBackendOnly decorator from schema.\n *\n * @param schema - Schema to strip from\n * @param options - Options for stripping behavior\n * @returns New schema without backend-only fields\n */\n private static stripBackendOnlyFields(\n schema: z.ZodTypeAny,\n options?: {\n respectIsReturnedAtCreation?: boolean; // Include fields with isReturnedAtCreation in CREATE responses\n operationType?: CoreResourceOperation; // Operation type for isReturnedAtCreation logic\n }\n ): z.ZodTypeAny {\n // Handle discriminated unions - strip from all variants\n const zodType = getZodType(schema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(schema, 'discriminator');\n const unionOptions = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && unionOptions && unionOptions.length > 0) {\n const strippedOptions = unionOptions.map((option: z.ZodTypeAny) =>\n this.stripBackendOnlyFields(option, options)\n );\n\n // Recreate discriminated union with modified variants\n if (strippedOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n strippedOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else if (strippedOptions.length === 1) {\n return strippedOptions[0];\n }\n }\n\n return schema;\n }\n\n // Handle arrays - strip from array element schema.\n // `withArrayElement` rather than `z.array(...)`: a fresh array carries none of the original's\n // own `.min()` / `.max()` / `.length()` checks, which would silently drop an authored\n // collection-size constraint from the response contract.\n if (isZodArray(schema)) {\n // ZodArray stores element schema in _def.element (not _def.type)\n const elementSchema = getZodDefProperty(schema, 'element') as z.ZodTypeAny;\n return withArrayElement(schema, this.stripBackendOnlyFields(elementSchema, options));\n }\n\n // Handle optional/nullable/default wrappers - unwrap, strip, rewrap\n if (isZodOptional(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.preserveSchemaMetadata(\n schema,\n this.stripBackendOnlyFields(innerSchema, options).optional(),\n );\n }\n\n if (hasZodType(schema, 'nullable')) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.preserveSchemaMetadata(\n schema,\n this.stripBackendOnlyFields(innerSchema, options).nullable(),\n );\n }\n\n if (isZodDefault(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n // ⚠️ Re-READ the default per parse, never carry a value across.\n //\n // In Zod 4 `def.defaultValue` is a GETTER: reading it EVALUATES the default\n // (`z.date().default(() => new Date())` yields a fresh Date on every read).\n // A DTO is rebuilt ONCE, when the resource configuration is built at process\n // start — so `.default(<value read here>)` freezes that instant into every\n // parse the process ever performs. Recovered 2026-08-11: lifecycle rows were\n // persisting `stageEnteredAt` / `lastActiveAt` stamped at backend boot,\n // identical to the millisecond across rows created a minute apart.\n //\n // Passing a FUNCTION makes Zod evaluate per parse. A literal default is\n // unaffected — the getter simply returns the same value each time.\n return this.preserveSchemaMetadata(\n schema,\n this.stripBackendOnlyFields(innerSchema, options).default(() => getZodDefProperty(schema, 'defaultValue')),\n );\n }\n\n // Handle objects - strip backend-only fields from shape\n if (isZodObject(schema)) {\n const shape = getZodObjectShape(schema);\n const omitObj: Record<string, true> = {};\n const rebuiltShape: Record<string, z.ZodTypeAny> = {};\n let didRebuildNestedField = false;\n\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isBackendOnlyField(fieldSchema as z.ZodTypeAny)) {\n const backendOnlyParams = getBackendOnlyParams(fieldSchema as z.ZodTypeAny);\n\n // Respect isReturnedAtCreation for CREATE operations\n if (options?.respectIsReturnedAtCreation &&\n options?.operationType === CoreResourceOperation.CREATE &&\n backendOnlyParams?.isReturnedAtCreation) {\n // Keep this field - it's returned at creation\n rebuiltShape[fieldName] = fieldSchema as z.ZodTypeAny;\n continue;\n }\n\n // Strip this backend-only field\n omitObj[fieldName] = true;\n } else {\n // Recursively strip from nested objects/arrays\n const strippedFieldSchema = this.stripBackendOnlyFields(fieldSchema as z.ZodTypeAny, options);\n rebuiltShape[fieldName] = strippedFieldSchema;\n didRebuildNestedField = didRebuildNestedField || strippedFieldSchema !== fieldSchema;\n }\n }\n\n if (Object.keys(omitObj).length > 0 || didRebuildNestedField) {\n return this.rebuildObjectSchema(schema, rebuiltShape, {\n preserveChecks: Object.keys(omitObj).length === 0,\n });\n }\n\n return schema;\n }\n\n // For other schema types (primitives, etc.), return as-is\n return schema;\n }\n\n /**\n * Transform network-boundary leaves recursively for API/WebSocket/Queue DTOs:\n * `z.date()` → string-accepting `z.coerce.date()`, and `z.bigint()` (notably\n * `z_money`'s `amount`) → a string-accepting bigint (see\n * {@link applyNetworkBoundaryCoercion} for why money bigints arrive as strings).\n *\n * This utility is used to create schemas suitable for parsing API responses/requests\n * where dates come as ISO strings and money amounts come as numeric strings, both of\n * which need to be coerced back to their runtime types (Date / bigint).\n *\n * Use this when parsing data from:\n * - HTTP API responses (JSON with date strings and bigint-as-string money amounts)\n * - WebSocket messages\n * - Queue messages\n * - Any external data source where dates/bigints are serialized as strings\n *\n * @param schema - Schema to transform (typically a database/internal schema with z.date()/z.bigint())\n * @returns New schema with coerced dates + bigints suitable for API parsing\n *\n * @example\n * ```typescript\n * // Database schema uses z.date()\n * const dbSchema = z.object({ createdAt: z.date() });\n *\n * // Create API parsing schema\n * const apiSchema = ResourcesConfigOperationsDtosBuilderUtils.createApiParsingSchema(dbSchema);\n *\n * // Now can parse API response with date strings\n * const data = apiSchema.parse({ createdAt: \"2024-01-01T00:00:00Z\" }); // Works!\n * ```\n */\n static createApiParsingSchema<T extends z.ZodTypeAny>(schema: T): T {\n return this.applyNetworkBoundaryCoercion(schema) as T;\n }\n\n /**\n * Recursively transpose the two network-boundary leaf types that do NOT survive\n * a JSON round-trip as their runtime type — `z.date()` and `z.bigint()` — into\n * string-accepting forms, walking union / array / optional / nullable / default /\n * object wrappers so nested and optional leaves are covered identically.\n *\n * This is the INBOUND (coerce, string → runtime type) half of the network-boundary\n * contract. Its OUTBOUND (serialize, runtime type → wire string) counterpart is\n * `Date.prototype.toJSON` (built-in) for dates and `BigInt.prototype.toJSON`\n * (installed by `installBigIntJsonEncoding` in `@wildo-ai/zod-decorators`) for\n * money bigints. Because the SAME coerced `responseDto`/`requestDto` this produces\n * is parsed on BOTH sides, the backend serialize-parse, the frontend\n * receive-parse, and worker queue re-hydration all coerce identically. See the\n * full mechanism map in `install-bigint-json-encoding.ts`.\n *\n * **Why `z.bigint()` needs this (the `z_money` case).** `z_money().amount` is a\n * `z.bigint()`. The Zod→Mongoose convertor persists bigint as a Mongoose **String**\n * column (with a `v → BigInt(v)` getter), but reads go through `.lean()` /\n * `toObject` WITHOUT `{ getters: true }`, so the value that reaches the DTO layer\n * is the raw **string** (e.g. `\"1999\"`), and over the JSON wire a bigint is always\n * serialized as a string too. A strict `z.bigint().parse(\"1999\")` then throws\n * `expected bigint, received string` in the service-layer `transformOutput`. This\n * pass rewrites every `z.bigint()` leaf to first coerce a string to `BigInt`, so\n * the same strict schema now accepts the on-wire/from-DB string form. It mirrors\n * the `z.date()` → `z.coerce.date()` transposition exactly — both are \"the runtime\n * type does not round-trip through JSON, accept its string form on read\" fixes.\n *\n * The bigint leaf is wrapped with `z.preprocess` over the ORIGINAL schema (rather\n * than a fresh `z.coerce.bigint()`) specifically to **preserve any `.min()`/`.max()`\n * checks** — e.g. `z_money({ minAmount: 0n })` compiles to `z.bigint().min(0n)`,\n * whose non-negativity check must survive the coercion. `z.coerce.bigint()` would\n * silently drop those checks; preprocessing the untouched schema keeps them intact.\n *\n * z_money field coverage this pass restores (each parses after coercion):\n * `prices.unitPrice`, `prices.tiers[].unitPrice`, `prices.tiers[].flatPrice`\n * (array-nested), `invoiceRefs.total`, `promotions.discountFixedAmount` (optional),\n * `productDefinitions.unitPrice`.\n *\n * @param schema - Schema to transform (typically a database/internal schema with z.date()/z.bigint())\n * @returns New schema with coerced dates + string-accepting bigints\n */\n private static applyNetworkBoundaryCoercion(schema: z.ZodTypeAny): z.ZodTypeAny {\n // Handle discriminated unions - transform dates in all variants\n const zodType = getZodType(schema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(schema, 'discriminator');\n const unionOptions = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && unionOptions && unionOptions.length > 0) {\n const transformedOptions = unionOptions.map((option: z.ZodTypeAny) =>\n this.applyNetworkBoundaryCoercion(option)\n );\n\n if (transformedOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n transformedOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else if (transformedOptions.length === 1) {\n return transformedOptions[0];\n }\n }\n\n return schema;\n }\n\n // Handle arrays - transform dates in array element schema.\n // `withArrayElement` rather than `z.array(...)`: this walk runs over EVERY operation DTO,\n // including an author-supplied `requestDto`, so rebuilding bare here is what stripped\n // authored `.min()` / `.max()` constraints out of request validation.\n if (isZodArray(schema)) {\n // ZodArray stores element schema in _def.element (not _def.type)\n const elementSchema = getZodDefProperty(schema, 'element') as z.ZodTypeAny;\n return withArrayElement(schema, this.applyNetworkBoundaryCoercion(elementSchema));\n }\n\n // Handle optional/nullable/default wrappers - unwrap, transform, rewrap\n if (isZodOptional(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.preserveSchemaMetadata(\n schema,\n this.applyNetworkBoundaryCoercion(innerSchema).optional(),\n );\n }\n\n if (hasZodType(schema, 'nullable')) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.preserveSchemaMetadata(\n schema,\n this.applyNetworkBoundaryCoercion(innerSchema).nullable(),\n );\n }\n\n if (isZodDefault(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n // Per-parse re-read — see the note on the `stripBackendOnlyFields` default\n // branch: a materialized default freezes at DTO-build time (process start).\n return this.preserveSchemaMetadata(\n schema,\n this.applyNetworkBoundaryCoercion(innerSchema).default(() => getZodDefProperty(schema, 'defaultValue')),\n );\n }\n\n // Handle pipe/refine chains (`.transform()` / `.refine()` — e.g. `z_phone()`,\n // which is `z.string().transform(...).refine(...).transform(...)`, or a bare\n // `z.coerce.date()`). Return the schema UNCHANGED.\n //\n // Rationale: a pipe/refine chain is an opaque validation+normalization pipeline\n // over a primitive. Framework `z.date()` leaves NEVER live inside such a chain —\n // dates are only ever wrapped in optional/nullable/default/array/object/union —\n // so there is nothing for date-coercion to rewrite here.\n //\n // Rejected alternative (the prior implementation): unwrap the inner schema,\n // coerce it, and return that inner. This is doubly wrong — (1) in Zod 4 the pipe\n // input lives at `def.in`, not the Zod-3-era `def.schema`, so the unwrap read\n // `undefined` and any surrounding `.optional()/.nullable()/.default()` then\n // crashed with \"Cannot read properties of undefined (reading 'optional')\" the\n // moment a pipe field (e.g. `z_phone().optional()`) reached this branch; and\n // (2) even reading `def.in` correctly, returning the bare inner would silently\n // DROP the pipe's transform/refine steps (e.g. `z_phone`'s E.164 normalization\n // and validation) from every request/response/summary DTO. Preserving the whole\n // pipe atomically is the only semantically-faithful behavior.\n if (hasZodType(schema, 'pipe') || hasZodType(schema, 'refine')) {\n return schema;\n }\n\n // Handle date - transform to coerce.date\n if (hasZodType(schema, 'date')) {\n // Always transform to coerce.date for DTOs (API/WebSocket/Queue communication)\n // This allows string dates from JSON to be coerced to Date objects\n return this.preserveSchemaMetadata(schema, z.coerce.date());\n }\n\n // Handle bigint - accept the on-wire/from-DB string form and coerce to bigint.\n //\n // z_money's `amount` is a z.bigint(); bigint never round-trips through JSON as a\n // bigint (it serializes as a string) and the Mongoose String-backed storage + a\n // getterless .lean()/toObject read also yield the raw string. Wrapping the\n // ORIGINAL schema in z.preprocess (instead of z.coerce.bigint()) preserves any\n // .min()/.max() checks compiled from z_money({ minAmount/maxAmount }). Non-string\n // inputs pass through untouched so an in-process bigint stays a bigint and any\n // genuinely-wrong type is still reported by the underlying strict bigint schema.\n if (hasZodType(schema, 'bigint')) {\n return this.preserveSchemaMetadata(schema, z.preprocess(\n (value) => (typeof value === 'string' ? BigInt(value) : value),\n schema\n ));\n }\n\n // Handle objects - transform dates in shape\n if (isZodObject(schema)) {\n const shape = getZodObjectShape(schema);\n const transformedShape: Record<string, z.ZodTypeAny> = {};\n let didTransformAnyField = false;\n\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n const transformedFieldSchema = this.applyNetworkBoundaryCoercion(fieldSchema as z.ZodTypeAny);\n transformedShape[fieldName] = transformedFieldSchema;\n didTransformAnyField = didTransformAnyField || transformedFieldSchema !== fieldSchema;\n }\n\n if (!didTransformAnyField) {\n return schema;\n }\n\n return this.rebuildObjectSchema(schema, transformedShape);\n }\n\n // For other schema types (primitives, etc.), return as-is\n return schema;\n }\n\n /**\n * Extract summary fields (isSummaryField decorator) from schema.\n * Handles discriminated unions by extracting from each variant.\n *\n * @param schema - Schema to extract from\n * @returns New schema with only summary fields\n */\n private static extractSummaryFields(schema: z.ZodTypeAny): z.ZodTypeAny {\n // Handle discriminated unions - extract summary from each variant\n const zodType = getZodType(schema);\n if (zodType === 'union') {\n const discriminator = getZodDefStringProperty(schema, 'discriminator');\n const unionOptions = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n\n if (discriminator && unionOptions && unionOptions.length > 0) {\n // Use ResourcesSummaryUtils.deriveSummarySchemaForDiscriminatedUnion if all options are objects\n const allAreObjects = unionOptions.every(opt => isZodObject(opt));\n if (allAreObjects) {\n try {\n return ResourcesSummaryUtils.deriveSummarySchemaForDiscriminatedUnion(\n schema as unknown as z.ZodObject<z.ZodRawShape>,\n {\n discriminatorField: discriminator,\n withoutInheritanceDiscriminatorFieldValues: []\n } as any\n );\n } catch {\n // Fallback: extract from each variant individually (see lines below)\n }\n }\n\n // Extract summary from each variant and rebuild union\n const summaryOptions = unionOptions.map((option: z.ZodTypeAny) =>\n this.extractSummaryFields(option)\n ).filter(opt => opt !== null && opt !== undefined);\n\n if (summaryOptions.length >= 2) {\n return z.discriminatedUnion(\n discriminator,\n summaryOptions as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]]\n );\n } else if (summaryOptions.length === 1) {\n return summaryOptions[0];\n }\n }\n\n return schema;\n }\n\n // Handle arrays - extract summary from array element schema.\n // `withArrayElement` rather than `z.array(...)`, for the same reason as the two walkers above:\n // a fresh array carries none of the original's own `.min()` / `.max()` / `.length()` checks.\n if (isZodArray(schema)) {\n // ZodArray stores element schema in _def.element (not _def.type)\n const elementSchema = getZodDefProperty(schema, 'element') as z.ZodTypeAny;\n return withArrayElement(schema, this.extractSummaryFields(elementSchema));\n }\n\n // Handle optional/nullable/default wrappers - unwrap, extract, rewrap\n if (isZodOptional(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.extractSummaryFields(innerSchema).optional();\n }\n\n if (hasZodType(schema, 'nullable')) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n return this.extractSummaryFields(innerSchema).nullable();\n }\n\n if (isZodDefault(schema)) {\n const innerSchema = getZodDefProperty(schema, 'innerType') as z.ZodTypeAny;\n // Per-parse re-read — see the note on the `stripBackendOnlyFields` default\n // branch: a materialized default freezes at DTO-build time (process start).\n return this.extractSummaryFields(innerSchema).default(() => getZodDefProperty(schema, 'defaultValue'));\n }\n\n // Handle objects - use ResourcesSummaryUtils.deriveSummarySchema\n if (isZodObject(schema)) {\n try {\n // Pure summary-field extraction — NO network-boundary coercion here.\n // Network-boundary transposition (z.date() → z.coerce.date() AND\n // string-accepting z.bigint() for z_money amounts) is applied UNIFORMLY by\n // the caller (`buildAllOperationDtos`) over the fully-resolved summary\n // schema, mirroring how requestDto/responseDto/internalDto are coerced.\n // Coercing per-branch here is what let the discriminated-union branch (and\n // the no-summary-fields fallback) silently ship strict z.date()/z.bigint()\n // summary DTOs that reject ISO-string dates / bigint-as-string amounts.\n return ResourcesSummaryUtils.deriveSummarySchema(schema, {\n includeId: true,\n includeForeignKeys: false\n });\n } catch (error) {\n throw new Error(`Failed to derive summary schema for object: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n // For other schema types (primitives, etc.), return as-is\n return schema;\n }\n\n /**\n * Add relationship placeholders to schema for context DTO.\n * Placeholders are optional fields: parentResourceType?: { _id: string }\n *\n * @param schema - Base schema\n * @param relationships - Resource relationships configuration\n * @param registry - Resource registry for type resolution\n * @returns Schema with relationship placeholders added\n */\n private static addRelationshipPlaceholders(\n schema: z.ZodTypeAny,\n relationships: ResourceConfiguration_ResourceRelationships,\n registry: Map<ResourceType, any>\n ): z.ZodTypeAny {\n // Only add placeholders to object schemas\n if (!isZodObject(schema)) {\n return schema;\n }\n\n const shape = getZodObjectShape(schema);\n const placeholderFields: Record<string, z.ZodTypeAny> = {};\n\n // Add parent relationship placeholders (includes self-refs acting as parents)\n const parentDirRels = getParentDirectionRelationships(relationships);\n for (const relationship of parentDirRels) {\n if (relationship.contextPolicy?.enabled === false) {\n continue;\n }\n\n const fieldName = this.getRelationshipObjectFieldName(\n relationship,\n relationship.resourceType1,\n ResourceRelationshipCardinality.ONE,\n registry\n );\n\n // Only add if field doesn't already exist (avoid conflicts)\n if (!shape[fieldName]) {\n // Placeholder format: parentResourceType?: { _id: string }\n placeholderFields[fieldName] = z.object({\n _id: z.string()\n }).optional();\n }\n }\n\n // Add child relationship placeholders (includes self-refs acting as children)\n // Children with contextPolicy enabled are populated in CONTEXT mode\n const childDirRels = getChildDirectionRelationships(relationships);\n for (const relationship of childDirRels) {\n // Skip relationships without contextPolicy or with disabled contextPolicy\n if (!relationship.contextPolicy) {\n continue;\n }\n\n // Skip if contextPolicy is explicitly disabled\n if (relationship.contextPolicy.enabled === false) {\n continue;\n }\n\n const fieldName = this.getRelationshipObjectFieldName(\n relationship,\n relationship.resourceType2,\n relationship.cardinality2,\n registry\n );\n // DTO context placeholders are projection conveniences, not transport\n // addressability proof. Keep this broader than context-addressed mutation\n // eligibility: URL/backend/frontend runtime predicates separately require\n // composition nature, explicit FK metadata, and routing scope.\n const isOneToOne = isOneToOneCardinality(relationship.cardinality2);\n\n // Only add if field doesn't already exist (avoid conflicts)\n if (!shape[fieldName]) {\n // Use a passthrough schema to allow any fields from the child\n // Zod 4 requires key and value schemas for z.record\n const childPlaceholder = z.record(z.string(), z.any());\n\n if (isOneToOne) {\n // 1:1: single object (optional)\n placeholderFields[fieldName] = childPlaceholder.optional();\n } else {\n // 1:many: array of objects (optional)\n placeholderFields[fieldName] = z.array(childPlaceholder).optional();\n }\n }\n }\n\n // Merge placeholders with existing schema\n if (Object.keys(placeholderFields).length > 0) {\n return schema.extend(placeholderFields);\n }\n\n return schema;\n }\n\n /**\n * Transform object dates from strings to Date objects (for incoming requests).\n * Uses DTO schema to identify which fields are dates.\n *\n * @param data - Object to transform\n * @param dtoSchema - DTO schema (with z.coerce.date() fields)\n * @returns Transformed object with Date objects\n */\n /**\n * Unwrap the pure field-MODIFIER wrappers (`optional` / `nullable` / `default`) to\n * reach the underlying schema, so a wrapped date field is still detected as a date\n * and a wrapped nested object/array is still recursed into.\n *\n * WHY: without this, `z.date().optional()` reports type `'optional'` (not `'date'`),\n * so its string value was never coerced to a `Date`, and an `.optional()`-wrapped\n * object was treated as a leaf. Nested/optional date fields — notably the collection\n * filter date ranges `{ startDate, endDate }` built on `z.date()` (NOT\n * `z.coerce.date()`) — therefore reached the DTO parse as strings and threw\n * `z.date()` validation. Stackable modifiers (`z.date().nullable().default()`) are\n * peeled in a bounded loop.\n *\n * DELIBERATELY does NOT unwrap `pipe` / `transform` / `readonly` / `catch`: those can\n * change the value's meaning (input vs output side), so treating their output schema\n * as their input would mis-coerce. They stay leaves exactly as before. (`z.coerce.date()`\n * reports type `'date'` directly, so it needs no unwrapping and keeps working.)\n */\n private static unwrapDateModifierWrappers(schema: z.ZodTypeAny): z.ZodTypeAny {\n let current = schema;\n while (isZodOptional(current) || isZodNullable(current) || isZodDefault(current)) {\n const inner = getZodDefSchemaProperty(current, 'innerType');\n if (!inner) break;\n current = inner;\n }\n return current;\n }\n\n static transformRequestDates<T = any>(data: T, dtoSchema: z.ZodTypeAny): T {\n if (!data || typeof data !== 'object') {\n return data;\n }\n\n // See through modifier wrappers so a wrapped array/object schema is still handled\n // (e.g. `z.array(...).optional()`, an `.optional()` nested object).\n const schema = this.unwrapDateModifierWrappers(dtoSchema);\n\n // Handle arrays\n if (Array.isArray(data)) {\n const zodType = getZodType(schema);\n if (zodType === 'array') {\n // ZodArray stores element schema in _def.element (not _def.type)\n const elementSchema = getZodDefProperty(schema, 'element') as z.ZodTypeAny;\n if (elementSchema) {\n return data.map(item => this.transformRequestDates(item, elementSchema)) as T;\n }\n }\n return data;\n }\n\n // Handle objects\n if (isZodObject(schema)) {\n const shape = getZodObjectShape(schema);\n const transformed: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(data as Record<string, any>)) {\n const fieldSchema = shape[key];\n if (fieldSchema) {\n // Unwrap modifier wrappers, then check if the underlying field is a date\n // (`z.date()` / `z.coerce.date()`, incl. `.optional()` / `.nullable()` /\n // `.default()` around them).\n const unwrappedField = this.unwrapDateModifierWrappers(fieldSchema);\n if (getZodType(unwrappedField) === 'date') {\n // Transform string to Date; leave existing Dates (and non-strings) alone.\n transformed[key] = typeof value === 'string' ? new Date(value) : value;\n } else {\n // Recursively transform nested objects/arrays (through their wrappers).\n transformed[key] = this.transformRequestDates(value, unwrappedField);\n }\n } else {\n transformed[key] = value;\n }\n }\n\n return transformed as T;\n }\n\n return data;\n }\n\n /**\n * Transform object dates from Date objects to ISO strings (for outgoing responses).\n * Uses DTO schema to identify which fields are dates.\n *\n * NO `transformResponseBigints` twin exists, BY DESIGN. This is date-specific\n * in-body normalization; the money-`bigint` leaf (the other network-boundary type)\n * is NOT normalized in the body — it stays a `bigint` in the serialized body and is\n * encoded to a decimal string at the JSON boundary by `BigInt.prototype.toJSON`\n * (`installBigIntJsonEncoding`, `@wildo-ai/zod-decorators`). A parallel body-walk for\n * bigint would be redundant with that `toJSON`. (Indeed, since `Date.prototype.toJSON`\n * also exists, this date walk is itself now largely belt-and-suspenders — kept as-is,\n * not extended.) Full mechanism map: `install-bigint-json-encoding.ts`.\n *\n * @param data - Object to transform\n * @param dtoSchema - DTO schema (with z.coerce.date() fields)\n * @returns Transformed object with ISO string dates\n */\n static transformResponseDates<T = any>(data: T, dtoSchema: z.ZodTypeAny): T {\n if (!data || typeof data !== 'object') {\n return data;\n }\n\n // Handle arrays\n if (Array.isArray(data)) {\n const zodType = getZodType(dtoSchema);\n if (zodType === 'array') {\n // ZodArray stores element schema in _def.element (not _def.type)\n const elementSchema = getZodDefProperty(dtoSchema, 'element') as z.ZodTypeAny;\n if (elementSchema) {\n return data.map(item => this.transformResponseDates(item, elementSchema)) as T;\n }\n }\n return data;\n }\n\n // Handle objects\n if (isZodObject(dtoSchema)) {\n const shape = getZodObjectShape(dtoSchema);\n const transformed: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(data as Record<string, any>)) {\n const fieldSchema = shape[key];\n if (fieldSchema) {\n // Check if field is a date (coerced or regular)\n const zodType = getZodType(fieldSchema);\n if (zodType === 'date' || hasZodType(fieldSchema, 'date')) {\n // Transform Date to ISO string\n if (value instanceof Date) {\n transformed[key] = value.toISOString();\n } else {\n transformed[key] = value;\n }\n } else {\n // Recursively transform nested objects/arrays\n transformed[key] = this.transformResponseDates(value, fieldSchema);\n }\n } else {\n transformed[key] = value;\n }\n }\n\n return transformed as T;\n }\n\n return data;\n }\n\n /**\n * Select the appropriate response DTO based on DataMode.\n * Used by both backend and frontend services to ensure consistent DTO selection.\n *\n * IMPORTANT: Handles structure differences between single-item and collection operations:\n * - Single item (READ, CREATE, etc.): Returns item schema\n * - Collection (LIST, SEARCH): Returns pagination wrapper schema\n *\n * Priority:\n * 1. If operation has variantKey → return operation.responseDto (already variant-specific)\n * 2. If DataMode is SUMMARY and summaryDto exists → return summaryDto (wrapped for LIST/SEARCH)\n * 3. If DataMode is CONTEXT and contextDto exists → return contextDto (wrapped for LIST/SEARCH)\n * 4. Otherwise → return responseDto (default for RAW mode)\n *\n * @param operation - The resource operation configuration\n * @param dataMode - The data mode (defaults to RAW if not specified)\n * @returns The selected DTO schema, or null/undefined if not available\n */\n static selectResponseDto(\n operation: ResourceConfiguration_Operation<any, any, any>,\n dataMode?: DataMode\n ): z.ZodTypeAny | null | undefined {\n if (!operation) {\n return null;\n }\n\n // For variant operations (with variantKey), responseDto is already correct\n // (built in buildAllOperationDtos with correct structure for LIST/SEARCH)\n if (operation.variantKey) {\n return operation.responseDto || null;\n }\n\n const effectiveDataMode = dataMode || DataMode.RAW;\n const effectiveOperation = operation.resourceOperationLike || operation.operationIdentifier;\n const isListOrSearch = effectiveOperation === CoreResourceOperation.LIST\n || effectiveOperation === CoreResourceOperation.SEARCH;\n\n // For default operations with dataMode specified, select and wrap appropriately\n if (effectiveDataMode === DataMode.SUMMARY && operation.summaryDto) {\n return isListOrSearch\n ? this.wrapInPaginationStructure(operation.summaryDto, (operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n : operation.summaryDto;\n }\n\n if (effectiveDataMode === DataMode.CONTEXT && operation.contextDto) {\n return isListOrSearch\n ? this.wrapInPaginationStructure(operation.contextDto, (operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit)\n : operation.contextDto;\n }\n\n // Default to responseDto for RAW mode or when specific DTOs are not available\n return operation.responseDto || null;\n }\n\n /**\n * Wrap item schema in pagination structure for LIST/SEARCH operations\n * @param itemSchema - Schema for individual items\n * @returns Pagination wrapper schema\n */\n private static wrapInPaginationStructure(itemSchema: z.ZodTypeAny, maxResultsPerPageLimit?: number): z.ZodTypeAny {\n return z.object({\n data: z.array(itemSchema),\n // The operation's ceiling, like every other pagination bound in the framework. `limit` echoes\n // the page size that was SERVED, so a bound stricter than the repository's turns a valid page\n // into a 500 — which is exactly what a hard-coded 100 here did to an operation declaring 200.\n pagination: createPaginationResponseMetadataSchema(maxResultsPerPageLimit)\n });\n }\n}\n\n/**\n * Derive the re-attach allowlist for a TRUSTED, in-process system write.\n *\n * The repository strict-parses every create/update against a client-shaped\n * request DTO that DROPS three classes of field: `.isBackendOnly()` fields, the\n * context-auto-populated FKs (`CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS`, stripped\n * by name), and the verb-excluded fields (`.excludeFromCreate()` on CREATE /\n * `.excludeFromUpdate()` on UPDATE). On the HTTP path those are re-supplied AFTER\n * the strip — backend-only material never comes from the client, the context FKs\n * are injected from the URL-derived context / initiator identity by\n * `enrichDataWithContext`, and a client is simply not allowed to author the\n * verb-excluded fields (the server owns them).\n *\n * An in-process caller writing to a system resource has NEITHER context: the\n * payload IS the source of truth. Registration creating `USER_CREDENTIALS` with\n * `{ userId, passwordHash }` needs the FK + backend-only field to survive; an\n * OIDC re-login bumping an identity link's `.excludeFromUpdate()` `lastUsedAt`\n * needs the verb-excluded field to survive. Without help, the strip silently\n * drops them → a required-path Mongoose crash or silent data loss.\n *\n * This function returns exactly the subset of `payloadKeys` the strip would drop\n * for one of those legitimate reasons, so the trusted-write primitives\n * (`SystemAccessBackendService.createAsSystem` / `updateAsSystem` /\n * `updateManyAsSystem`) can forward it as `options.preserveServerInjectedFields`\n * and have the repository re-attach the values after the strip. Ordinary fields\n * are deliberately excluded — they parse normally, so re-attaching them would\n * bypass their own validation.\n *\n * PER-VERB EXCLUDE SEMANTICS (the `verb` argument):\n * - UPDATE / UPDATE_MANY: re-attach every `.excludeFromUpdate()` key the caller\n * authored. UPDATE is a partial `$set` (no default application), so an\n * explicitly-authored value is authoritative — this is the path that lets a\n * server-managed timestamp like `lastUsedAt` actually advance.\n * - CREATE: re-attach an `.excludeFromCreate()` key the caller authored ONLY\n * when the field has NO `.default()`. A defaulted excludeFromCreate field\n * (`createdAt`, `linkedAt`, …) is server-owned at creation and the\n * strip-then-default path is the intended source of truth; re-attaching a\n * caller value would let stale input clobber the fresh default. A caller with\n * a genuine need to override a defaulted field can still pass an explicit\n * `preserveServerInjectedFields`.\n *\n * The mandatory-discard fields (`_id` / `createdAt` / `updatedAt` / `deletedAt` /\n * `_version_db_doc`) are NEVER re-attached — they are force-removed before\n * validation and are unconditionally server-owned. This guard is what keeps the\n * UPDATE branch (which would otherwise match `.excludeFromUpdate()` `createdAt` /\n * `updatedAt`) honest.\n *\n * ANTI-SMUGGLING: this is safe ONLY because the primitives are reachable exclusively\n * from trusted engine code behind a fail-closed `systemAccessPolicy` opt-in — never\n * from an HTTP payload. Do NOT call this to re-attach fields from an untrusted\n * request; that would re-open the exact hole the strict parse closes.\n *\n * Polymorphic-safe: `getMergedObjectOrUnionShape` merges discriminated-union\n * variants and returns `{}` for a non-object schema (in which case only the\n * name-based context-FK detection applies — still correct for scope/audit FKs).\n *\n * @param mainSchema The resource's main Zod schema.\n * @param payloadKeys The keys actually present on the trusted write payload.\n * @param verb The write verb — selects `.excludeFromCreate()` vs\n * `.excludeFromUpdate()` detection (UPDATE_MANY ≡ UPDATE). The\n * write is always one of these, so the caller always knows it.\n * @returns The subset of `payloadKeys` that are backend-only, context-auto-populated,\n * or a legitimately-authored verb-excluded field.\n */\nexport function deriveTrustedSystemWritePreservedFields(\n mainSchema: z.ZodTypeAny,\n payloadKeys: readonly string[],\n verb: CoreResourceOperation.CREATE | CoreResourceOperation.UPDATE | CoreResourceOperation.UPDATE_MANY,\n): string[] {\n const backendOnlyFieldNames = new Set<string>();\n // Verb-excluded fields the client-shaped DTO strips but a TRUSTED caller may\n // legitimately author (see PER-VERB EXCLUDE SEMANTICS above).\n const verbExcludedFieldNames = new Set<string>();\n\n const shape = getMergedObjectOrUnionShape(mainSchema);\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n if (isBackendOnlyField(fieldSchema)) {\n backendOnlyFieldNames.add(fieldName);\n }\n if (verb === CoreResourceOperation.CREATE) {\n // Defaulted excludeFromCreate fields are server-materialised at creation —\n // withhold them so the schema default wins over any (potentially stale) input.\n if (isExcludedFromCreate(fieldSchema) && !isZodDefault(fieldSchema)) {\n verbExcludedFieldNames.add(fieldName);\n }\n } else if (verb === CoreResourceOperation.UPDATE || verb === CoreResourceOperation.UPDATE_MANY) {\n if (isExcludedFromUpdate(fieldSchema)) {\n verbExcludedFieldNames.add(fieldName);\n }\n }\n }\n\n return payloadKeys.filter((key) =>\n // Never resurrect a mandatory-discard field (force-removed pre-validation).\n !createOrUpdateMandatoryDiscardFields.includes(key)\n && (\n backendOnlyFieldNames.has(key)\n || verbExcludedFieldNames.has(key)\n || CONTEXT_AUTO_POPULATED_FIELD_IDENTIFIERS.includes(key)\n ),\n );\n}\n"]}