@researchdatabox/redbox-core 5.0.2 → 5.0.4-beta.12498

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 (548) hide show
  1. package/dist/AttachmentStagingIdentity.d.ts +3 -0
  2. package/dist/AttachmentStagingIdentity.d.ts.map +1 -0
  3. package/dist/AttachmentStagingIdentity.js +10 -0
  4. package/dist/CoreController.d.ts +7 -3
  5. package/dist/CoreController.d.ts.map +1 -1
  6. package/dist/CoreController.js +85 -3
  7. package/dist/DatastreamService.d.ts +4 -0
  8. package/dist/DatastreamService.d.ts.map +1 -1
  9. package/dist/HarvestRunService.d.ts +4 -3
  10. package/dist/HarvestRunService.d.ts.map +1 -1
  11. package/dist/HarvestRunService.js +1 -1
  12. package/dist/RecordConcurrencyObservability.d.ts +51 -0
  13. package/dist/RecordConcurrencyObservability.d.ts.map +1 -0
  14. package/dist/RecordConcurrencyObservability.js +136 -0
  15. package/dist/RecordEntityTag.d.ts +31 -0
  16. package/dist/RecordEntityTag.d.ts.map +1 -0
  17. package/dist/RecordEntityTag.js +101 -0
  18. package/dist/RecordFormFingerprint.d.ts +7 -0
  19. package/dist/RecordFormFingerprint.d.ts.map +1 -0
  20. package/dist/RecordFormFingerprint.js +106 -0
  21. package/dist/RecordHttpConcurrency.d.ts +60 -0
  22. package/dist/RecordHttpConcurrency.d.ts.map +1 -0
  23. package/dist/RecordHttpConcurrency.js +181 -0
  24. package/dist/RecordSaveResponse.d.ts +219 -0
  25. package/dist/RecordSaveResponse.d.ts.map +1 -0
  26. package/dist/RecordSaveResponse.js +639 -0
  27. package/dist/RecordStorageConcurrency.d.ts +48 -0
  28. package/dist/RecordStorageConcurrency.d.ts.map +1 -0
  29. package/dist/RecordStorageConcurrency.js +103 -0
  30. package/dist/RecordWriteClassification.d.ts +12 -0
  31. package/dist/RecordWriteClassification.d.ts.map +1 -0
  32. package/dist/RecordWriteClassification.js +70 -0
  33. package/dist/RecordsService.d.ts +105 -12
  34. package/dist/RecordsService.d.ts.map +1 -1
  35. package/dist/RecordsService.js +44 -1
  36. package/dist/SearchService.d.ts +2 -1
  37. package/dist/SearchService.d.ts.map +1 -1
  38. package/dist/StorageService.d.ts +48 -8
  39. package/dist/StorageService.d.ts.map +1 -1
  40. package/dist/StorageService.js +19 -1
  41. package/dist/StorageServiceResponse.d.ts +22 -1
  42. package/dist/StorageServiceResponse.d.ts.map +1 -1
  43. package/dist/StorageServiceResponse.js +22 -4
  44. package/dist/action-execution/audit.d.ts +41 -0
  45. package/dist/action-execution/audit.d.ts.map +1 -0
  46. package/dist/action-execution/audit.js +122 -0
  47. package/dist/action-execution/executor.d.ts +24 -0
  48. package/dist/action-execution/executor.d.ts.map +1 -0
  49. package/dist/action-execution/executor.js +435 -0
  50. package/dist/action-execution/failure.d.ts +49 -0
  51. package/dist/action-execution/failure.d.ts.map +1 -0
  52. package/dist/action-execution/failure.js +129 -0
  53. package/dist/action-execution/index.d.ts +7 -0
  54. package/dist/action-execution/index.d.ts.map +1 -0
  55. package/dist/action-execution/index.js +23 -0
  56. package/dist/action-execution/legacy-result.d.ts +21 -0
  57. package/dist/action-execution/legacy-result.d.ts.map +1 -0
  58. package/dist/action-execution/legacy-result.js +70 -0
  59. package/dist/action-execution/policy.d.ts +12 -0
  60. package/dist/action-execution/policy.d.ts.map +1 -0
  61. package/dist/action-execution/policy.js +138 -0
  62. package/dist/action-execution/types.d.ts +121 -0
  63. package/dist/action-execution/types.d.ts.map +1 -0
  64. package/dist/action-execution/types.js +22 -0
  65. package/dist/api-routes/groups/branding.d.ts +8 -0
  66. package/dist/api-routes/groups/branding.d.ts.map +1 -1
  67. package/dist/api-routes/groups/branding.js +86 -11
  68. package/dist/api-routes/groups/dashboard-config.d.ts +12 -9
  69. package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -1
  70. package/dist/api-routes/groups/dashboard-config.js +136 -73
  71. package/dist/api-routes/groups/forms.d.ts.map +1 -1
  72. package/dist/api-routes/groups/forms.js +10 -2
  73. package/dist/api-routes/groups/record-schemas.d.ts +5 -0
  74. package/dist/api-routes/groups/record-schemas.d.ts.map +1 -0
  75. package/dist/api-routes/groups/record-schemas.js +181 -0
  76. package/dist/api-routes/groups/records.d.ts +1 -0
  77. package/dist/api-routes/groups/records.d.ts.map +1 -1
  78. package/dist/api-routes/groups/records.js +141 -26
  79. package/dist/api-routes/index.d.ts +3 -0
  80. package/dist/api-routes/index.d.ts.map +1 -1
  81. package/dist/api-routes/index.js +4 -1
  82. package/dist/api-routes/openapi.d.ts.map +1 -1
  83. package/dist/api-routes/openapi.js +7 -5
  84. package/dist/api-routes/record-schema-openapi.d.ts +26 -0
  85. package/dist/api-routes/record-schema-openapi.d.ts.map +1 -0
  86. package/dist/api-routes/record-schema-openapi.js +38 -0
  87. package/dist/api-routes/record-schema-response.d.ts +40 -0
  88. package/dist/api-routes/record-schema-response.d.ts.map +1 -0
  89. package/dist/api-routes/record-schema-response.js +89 -0
  90. package/dist/api-routes/request-extraction.d.ts.map +1 -1
  91. package/dist/api-routes/request-extraction.js +10 -8
  92. package/dist/api-routes/route-factory.d.ts.map +1 -1
  93. package/dist/api-routes/route-factory.js +2 -1
  94. package/dist/api-routes/route-registry.d.ts.map +1 -1
  95. package/dist/api-routes/route-registry.js +3 -1
  96. package/dist/api-routes/schemas/common.d.ts +36 -0
  97. package/dist/api-routes/schemas/common.d.ts.map +1 -1
  98. package/dist/api-routes/schemas/common.js +95 -5
  99. package/dist/api-routes/schemas/responses.d.ts +1424 -1
  100. package/dist/api-routes/schemas/responses.d.ts.map +1 -1
  101. package/dist/api-routes/schemas/responses.js +382 -60
  102. package/dist/api-routes/types.d.ts +1 -0
  103. package/dist/api-routes/types.d.ts.map +1 -1
  104. package/dist/api-routes/validation.d.ts +5 -1
  105. package/dist/api-routes/validation.d.ts.map +1 -1
  106. package/dist/api-routes/validation.js +14 -15
  107. package/dist/bootstrap.d.ts +3 -1
  108. package/dist/bootstrap.d.ts.map +1 -1
  109. package/dist/bootstrap.js +58 -41
  110. package/dist/config/agendaQueue.config.d.ts +3 -0
  111. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  112. package/dist/config/agendaQueue.config.js +29 -2
  113. package/dist/config/branding.config.d.ts +13 -0
  114. package/dist/config/branding.config.d.ts.map +1 -1
  115. package/dist/config/branding.config.js +34 -2
  116. package/dist/config/brandingConfigurationDefaults.config.d.ts +4 -0
  117. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  118. package/dist/config/brandingConfigurationDefaults.config.js +42 -3
  119. package/dist/config/index.d.ts +12 -4
  120. package/dist/config/index.d.ts.map +1 -1
  121. package/dist/config/index.js +7 -4
  122. package/dist/config/policies.config.d.ts.map +1 -1
  123. package/dist/config/policies.config.js +37 -23
  124. package/dist/config/raid.config.d.ts +7 -4
  125. package/dist/config/raid.config.d.ts.map +1 -1
  126. package/dist/config/raid.config.js +21 -35
  127. package/dist/config/record.config.d.ts +3 -0
  128. package/dist/config/record.config.d.ts.map +1 -1
  129. package/dist/config/record.config.js +37 -35
  130. package/dist/config/recordSchema.config.d.ts +68 -0
  131. package/dist/config/recordSchema.config.d.ts.map +1 -0
  132. package/dist/config/recordSchema.config.js +173 -0
  133. package/dist/config/recordValidation.config.d.ts +19 -0
  134. package/dist/config/recordValidation.config.d.ts.map +1 -0
  135. package/dist/config/recordValidation.config.js +10 -0
  136. package/dist/config/recordtype.config.d.ts +32 -9
  137. package/dist/config/recordtype.config.d.ts.map +1 -1
  138. package/dist/config/recordtype.config.js +4 -7
  139. package/dist/config/routes.config.d.ts.map +1 -1
  140. package/dist/config/routes.config.js +135 -53
  141. package/dist/config/workflow.config.d.ts +6 -0
  142. package/dist/config/workflow.config.d.ts.map +1 -1
  143. package/dist/config/workflow.config.js +1 -1
  144. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  145. package/dist/configmodels/AdminSidebarConfig.js +4 -2
  146. package/dist/configmodels/ConfigModels.d.ts +1 -1
  147. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  148. package/dist/configmodels/ConfigModels.js +26 -9
  149. package/dist/configmodels/DashboardFieldCatalogue.d.ts +67 -0
  150. package/dist/configmodels/DashboardFieldCatalogue.d.ts.map +1 -0
  151. package/dist/configmodels/DashboardFieldCatalogue.js +174 -0
  152. package/dist/configmodels/DashboardSettings.d.ts +191 -0
  153. package/dist/configmodels/DashboardSettings.d.ts.map +1 -0
  154. package/dist/configmodels/DashboardSettings.js +705 -0
  155. package/dist/configmodels/OniPublishing.d.ts +205 -0
  156. package/dist/configmodels/OniPublishing.d.ts.map +1 -0
  157. package/dist/configmodels/OniPublishing.js +335 -0
  158. package/dist/configmodels/RaidPublishing.d.ts +97 -0
  159. package/dist/configmodels/RaidPublishing.d.ts.map +1 -0
  160. package/dist/configmodels/RaidPublishing.js +35 -0
  161. package/dist/configmodels/WebAnalytics.d.ts +55 -0
  162. package/dist/configmodels/WebAnalytics.d.ts.map +1 -0
  163. package/dist/configmodels/WebAnalytics.js +61 -0
  164. package/dist/controllers/AppConfigController.d.ts.map +1 -1
  165. package/dist/controllers/AppConfigController.js +4 -1
  166. package/dist/controllers/BrandingAppController.d.ts +29 -7
  167. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  168. package/dist/controllers/BrandingAppController.js +265 -69
  169. package/dist/controllers/BrandingController.d.ts +24 -1
  170. package/dist/controllers/BrandingController.d.ts.map +1 -1
  171. package/dist/controllers/BrandingController.js +173 -43
  172. package/dist/controllers/BrandingControllerSupport.d.ts +20 -0
  173. package/dist/controllers/BrandingControllerSupport.d.ts.map +1 -0
  174. package/dist/controllers/BrandingControllerSupport.js +80 -0
  175. package/dist/controllers/DashboardConfigController.d.ts +6 -2
  176. package/dist/controllers/DashboardConfigController.d.ts.map +1 -1
  177. package/dist/controllers/DashboardConfigController.js +18 -4
  178. package/dist/controllers/DynamicAssetController.d.ts +7 -5
  179. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  180. package/dist/controllers/DynamicAssetController.js +21 -12
  181. package/dist/controllers/RecordController.d.ts +46 -5
  182. package/dist/controllers/RecordController.d.ts.map +1 -1
  183. package/dist/controllers/RecordController.js +815 -347
  184. package/dist/controllers/index.d.ts.map +1 -1
  185. package/dist/controllers/index.js +4 -1
  186. package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
  187. package/dist/controllers/webservice/AdminController.js +4 -3
  188. package/dist/controllers/webservice/BrandingController.d.ts +26 -1
  189. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  190. package/dist/controllers/webservice/BrandingController.js +292 -116
  191. package/dist/controllers/webservice/DashboardConfigController.d.ts +25 -17
  192. package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -1
  193. package/dist/controllers/webservice/DashboardConfigController.js +90 -205
  194. package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
  195. package/dist/controllers/webservice/FormManagementController.js +37 -3
  196. package/dist/controllers/webservice/RecordController.d.ts +15 -1
  197. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  198. package/dist/controllers/webservice/RecordController.js +664 -271
  199. package/dist/controllers/webservice/RecordSchemaController.d.ts +32 -0
  200. package/dist/controllers/webservice/RecordSchemaController.d.ts.map +1 -0
  201. package/dist/controllers/webservice/RecordSchemaController.js +356 -0
  202. package/dist/controllers/webservice/RecordTypeController.d.ts +6 -1
  203. package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
  204. package/dist/controllers/webservice/RecordTypeController.js +21 -3
  205. package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
  206. package/dist/controllers/webservice/SearchController.js +7 -3
  207. package/dist/hooks/defineRedboxHook.d.ts +3 -0
  208. package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
  209. package/dist/hooks/defineRedboxHook.js +4 -1
  210. package/dist/index.d.ts +50 -23
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +90 -2
  213. package/dist/loader/bootstrapShimRuntime.d.ts +1 -1
  214. package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -1
  215. package/dist/loader/bootstrapShimRuntime.js +20 -12
  216. package/dist/loader/index.d.ts +9 -0
  217. package/dist/loader/index.d.ts.map +1 -1
  218. package/dist/loader/index.js +93 -4
  219. package/dist/model/BrandingTypeface.d.ts +70 -0
  220. package/dist/model/BrandingTypeface.d.ts.map +1 -0
  221. package/dist/model/BrandingTypeface.js +116 -0
  222. package/dist/model/BuildResponse.d.ts +25 -11
  223. package/dist/model/BuildResponse.d.ts.map +1 -1
  224. package/dist/model/BuildResponse.js +4 -3
  225. package/dist/model/DashboardTypeResponseModel.d.ts +6 -0
  226. package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
  227. package/dist/model/DashboardTypeResponseModel.js +7 -1
  228. package/dist/model/DashboardViewResponseModel.d.ts +5 -1
  229. package/dist/model/DashboardViewResponseModel.d.ts.map +1 -1
  230. package/dist/model/DashboardViewResponseModel.js +6 -3
  231. package/dist/model/RBValidationError.d.ts +17 -0
  232. package/dist/model/RBValidationError.d.ts.map +1 -1
  233. package/dist/model/RBValidationError.js +37 -1
  234. package/dist/model/RecordTypeResponseModel.d.ts +12 -4
  235. package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
  236. package/dist/model/RecordTypeResponseModel.js +11 -2
  237. package/dist/model/index.d.ts +5 -1
  238. package/dist/model/index.d.ts.map +1 -1
  239. package/dist/model/index.js +5 -2
  240. package/dist/model/record-contract.d.ts +42 -0
  241. package/dist/model/record-contract.d.ts.map +1 -0
  242. package/dist/model/record-contract.js +3 -0
  243. package/dist/model/storage/BrandingModel.d.ts +7 -0
  244. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  245. package/dist/model/storage/BrandingModel.js +7 -1
  246. package/dist/model/storage/DeletedRecordModel.d.ts +35 -0
  247. package/dist/model/storage/DeletedRecordModel.d.ts.map +1 -1
  248. package/dist/model/storage/DeletedRecordModel.js +62 -1
  249. package/dist/model/storage/IntegrationAuditModel.d.ts +16 -2
  250. package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
  251. package/dist/model/storage/IntegrationAuditModel.js +15 -1
  252. package/dist/model/storage/RecordAuditModel.d.ts +11 -1
  253. package/dist/model/storage/RecordAuditModel.d.ts.map +1 -1
  254. package/dist/model/storage/RecordAuditModel.js +8 -2
  255. package/dist/model/storage/RecordModel.d.ts +6 -0
  256. package/dist/model/storage/RecordModel.d.ts.map +1 -1
  257. package/dist/model/storage/RecordTypeModel.d.ts +6 -0
  258. package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
  259. package/dist/model/storage/RecordTypeModel.js +4 -1
  260. package/dist/model/storage/index.d.ts +12 -10
  261. package/dist/model/storage/index.d.ts.map +1 -1
  262. package/dist/model/storage/index.js +24 -2
  263. package/dist/model/storage/record-schema.d.ts +115 -0
  264. package/dist/model/storage/record-schema.d.ts.map +1 -0
  265. package/dist/model/storage/record-schema.js +3 -0
  266. package/dist/policies/checkAuth.d.ts +2 -6
  267. package/dist/policies/checkAuth.d.ts.map +1 -1
  268. package/dist/policies/checkAuth.js +32 -9
  269. package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
  270. package/dist/policies/contentSecurityPolicy.js +85 -2
  271. package/dist/policies/index.d.ts +3 -2
  272. package/dist/policies/index.d.ts.map +1 -1
  273. package/dist/policies/index.js +4 -2
  274. package/dist/policies/validateApiContractRequest.d.ts.map +1 -1
  275. package/dist/policies/validateApiContractRequest.js +49 -11
  276. package/dist/record-contract/ajv-error-mapper.d.ts +34 -0
  277. package/dist/record-contract/ajv-error-mapper.d.ts.map +1 -0
  278. package/dist/record-contract/ajv-error-mapper.js +153 -0
  279. package/dist/record-contract/canonical-json.d.ts +20 -0
  280. package/dist/record-contract/canonical-json.d.ts.map +1 -0
  281. package/dist/record-contract/canonical-json.js +126 -0
  282. package/dist/record-contract/codes.d.ts +36 -0
  283. package/dist/record-contract/codes.d.ts.map +1 -0
  284. package/dist/record-contract/codes.js +38 -0
  285. package/dist/record-contract/contributor-registry.d.ts +76 -0
  286. package/dist/record-contract/contributor-registry.d.ts.map +1 -0
  287. package/dist/record-contract/contributor-registry.js +126 -0
  288. package/dist/record-contract/core-contributors.d.ts +44 -0
  289. package/dist/record-contract/core-contributors.d.ts.map +1 -0
  290. package/dist/record-contract/core-contributors.js +395 -0
  291. package/dist/record-contract/deep-freeze.d.ts +3 -0
  292. package/dist/record-contract/deep-freeze.d.ts.map +1 -0
  293. package/dist/record-contract/deep-freeze.js +23 -0
  294. package/dist/record-contract/index.d.ts +13 -0
  295. package/dist/record-contract/index.d.ts.map +1 -0
  296. package/dist/record-contract/index.js +29 -0
  297. package/dist/record-contract/json-pointer.d.ts +20 -0
  298. package/dist/record-contract/json-pointer.d.ts.map +1 -0
  299. package/dist/record-contract/json-pointer.js +70 -0
  300. package/dist/record-contract/json-schema-renderer.d.ts +51 -0
  301. package/dist/record-contract/json-schema-renderer.d.ts.map +1 -0
  302. package/dist/record-contract/json-schema-renderer.js +450 -0
  303. package/dist/record-contract/record-contract-compiler.d.ts +42 -0
  304. package/dist/record-contract/record-contract-compiler.d.ts.map +1 -0
  305. package/dist/record-contract/record-contract-compiler.js +775 -0
  306. package/dist/record-contract/record-contract-context.d.ts +91 -0
  307. package/dist/record-contract/record-contract-context.d.ts.map +1 -0
  308. package/dist/record-contract/record-contract-context.js +39 -0
  309. package/dist/record-contract/record-json-schema-artifact.d.ts +74 -0
  310. package/dist/record-contract/record-json-schema-artifact.d.ts.map +1 -0
  311. package/dist/record-contract/record-json-schema-artifact.js +309 -0
  312. package/dist/record-contract/record-json-schema-etag.d.ts +15 -0
  313. package/dist/record-contract/record-json-schema-etag.d.ts.map +1 -0
  314. package/dist/record-contract/record-json-schema-etag.js +41 -0
  315. package/dist/record-contract/types.d.ts +151 -0
  316. package/dist/record-contract/types.d.ts.map +1 -0
  317. package/dist/record-contract/types.js +6 -0
  318. package/dist/services/AppConfigService.d.ts +6 -0
  319. package/dist/services/AppConfigService.d.ts.map +1 -1
  320. package/dist/services/AppConfigService.js +23 -1
  321. package/dist/services/AttachmentMetadataService.d.ts +58 -0
  322. package/dist/services/AttachmentMetadataService.d.ts.map +1 -1
  323. package/dist/services/AttachmentMetadataService.js +643 -8
  324. package/dist/services/BrandingLogoService.d.ts +6 -1
  325. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  326. package/dist/services/BrandingLogoService.js +77 -9
  327. package/dist/services/BrandingService.d.ts +171 -9
  328. package/dist/services/BrandingService.d.ts.map +1 -1
  329. package/dist/services/BrandingService.js +572 -68
  330. package/dist/services/BrandingThemeCssService.d.ts +17 -1
  331. package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
  332. package/dist/services/BrandingThemeCssService.js +71 -9
  333. package/dist/services/BrandingThemeTokens.d.ts.map +1 -1
  334. package/dist/services/BrandingThemeTokens.js +2 -1
  335. package/dist/services/BrandingTypefaceService.d.ts +74 -0
  336. package/dist/services/BrandingTypefaceService.d.ts.map +1 -0
  337. package/dist/services/BrandingTypefaceService.js +359 -0
  338. package/dist/services/BrandingWoff2Inspector.d.ts +17 -0
  339. package/dist/services/BrandingWoff2Inspector.d.ts.map +1 -0
  340. package/dist/services/BrandingWoff2Inspector.js +402 -0
  341. package/dist/services/DashboardConfigService.d.ts +214 -54
  342. package/dist/services/DashboardConfigService.d.ts.map +1 -1
  343. package/dist/services/DashboardConfigService.js +829 -261
  344. package/dist/services/DashboardLegacyConversion.d.ts +82 -0
  345. package/dist/services/DashboardLegacyConversion.d.ts.map +1 -0
  346. package/dist/services/DashboardLegacyConversion.js +427 -0
  347. package/dist/services/DashboardTypesService.d.ts +15 -4
  348. package/dist/services/DashboardTypesService.d.ts.map +1 -1
  349. package/dist/services/DashboardTypesService.js +72 -139
  350. package/dist/services/DoiService.d.ts +1 -1
  351. package/dist/services/DoiService.d.ts.map +1 -1
  352. package/dist/services/DoiService.js +71 -45
  353. package/dist/services/FigshareService.d.ts +1 -1
  354. package/dist/services/FigshareService.d.ts.map +1 -1
  355. package/dist/services/FigshareService.js +73 -32
  356. package/dist/services/FormRecordConsistencyService.d.ts +8 -23
  357. package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
  358. package/dist/services/FormRecordConsistencyService.js +54 -70
  359. package/dist/services/FormsService.d.ts +91 -2
  360. package/dist/services/FormsService.d.ts.map +1 -1
  361. package/dist/services/FormsService.js +324 -64
  362. package/dist/services/HarvestRunService.d.ts +6 -3
  363. package/dist/services/HarvestRunService.d.ts.map +1 -1
  364. package/dist/services/HarvestRunService.js +161 -97
  365. package/dist/services/I18nEntriesService.d.ts +1 -0
  366. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  367. package/dist/services/I18nEntriesService.js +26 -6
  368. package/dist/services/OniService.d.ts +19 -62
  369. package/dist/services/OniService.d.ts.map +1 -1
  370. package/dist/services/OniService.js +223 -691
  371. package/dist/services/RDMPService.d.ts +1 -1
  372. package/dist/services/RDMPService.d.ts.map +1 -1
  373. package/dist/services/RDMPService.js +5 -5
  374. package/dist/services/RaidService.d.ts +19 -61
  375. package/dist/services/RaidService.d.ts.map +1 -1
  376. package/dist/services/RaidService.js +191 -530
  377. package/dist/services/RecordSchemaService.d.ts +440 -0
  378. package/dist/services/RecordSchemaService.d.ts.map +1 -0
  379. package/dist/services/RecordSchemaService.js +3061 -0
  380. package/dist/services/RecordTypesService.d.ts +29 -0
  381. package/dist/services/RecordTypesService.d.ts.map +1 -1
  382. package/dist/services/RecordTypesService.js +106 -11
  383. package/dist/services/RecordValidationService.d.ts +340 -0
  384. package/dist/services/RecordValidationService.d.ts.map +1 -0
  385. package/dist/services/RecordValidationService.js +1898 -0
  386. package/dist/services/RecordsService.d.ts +313 -22
  387. package/dist/services/RecordsService.d.ts.map +1 -1
  388. package/dist/services/RecordsService.js +4948 -509
  389. package/dist/services/SolrSearchService.d.ts +1 -1
  390. package/dist/services/SolrSearchService.d.ts.map +1 -1
  391. package/dist/services/SolrSearchService.js +42 -12
  392. package/dist/services/StandardDatastreamService.d.ts +4 -0
  393. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  394. package/dist/services/StandardDatastreamService.js +109 -45
  395. package/dist/services/TriggerService.d.ts.map +1 -1
  396. package/dist/services/TriggerService.js +54 -30
  397. package/dist/services/UsersService.d.ts +2 -1
  398. package/dist/services/UsersService.d.ts.map +1 -1
  399. package/dist/services/UsersService.js +364 -283
  400. package/dist/services/VocabularyService.d.ts +2 -0
  401. package/dist/services/VocabularyService.d.ts.map +1 -1
  402. package/dist/services/VocabularyService.js +61 -2
  403. package/dist/services/WorkflowStepsService.d.ts +11 -0
  404. package/dist/services/WorkflowStepsService.d.ts.map +1 -1
  405. package/dist/services/WorkflowStepsService.js +32 -3
  406. package/dist/services/WorkspaceService.d.ts +2 -2
  407. package/dist/services/WorkspaceService.d.ts.map +1 -1
  408. package/dist/services/WorkspaceService.js +5 -5
  409. package/dist/services/doi-v2/bindings.d.ts.map +1 -1
  410. package/dist/services/doi-v2/bindings.js +3 -20
  411. package/dist/services/doi-v2/config.d.ts +1 -0
  412. package/dist/services/doi-v2/config.d.ts.map +1 -1
  413. package/dist/services/doi-v2/config.js +13 -5
  414. package/dist/services/doi-v2/runtime.d.ts.map +1 -1
  415. package/dist/services/doi-v2/runtime.js +14 -54
  416. package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
  417. package/dist/services/figshare-v2/bindings.js +3 -20
  418. package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
  419. package/dist/services/figshare-v2/runtime.js +11 -58
  420. package/dist/services/form-record-access-user.d.ts +3 -0
  421. package/dist/services/form-record-access-user.d.ts.map +1 -0
  422. package/dist/services/form-record-access-user.js +23 -0
  423. package/dist/services/index.d.ts +9 -0
  424. package/dist/services/index.d.ts.map +1 -1
  425. package/dist/services/index.js +45 -3
  426. package/dist/services/integration-v2/bindings.d.ts +3 -0
  427. package/dist/services/integration-v2/bindings.d.ts.map +1 -0
  428. package/dist/services/integration-v2/bindings.js +91 -0
  429. package/dist/services/integration-v2/runtime.d.ts +3 -0
  430. package/dist/services/integration-v2/runtime.d.ts.map +1 -0
  431. package/dist/services/integration-v2/runtime.js +50 -0
  432. package/dist/services/internal-record-schema-authorization.d.ts +8 -0
  433. package/dist/services/internal-record-schema-authorization.d.ts.map +1 -0
  434. package/dist/services/internal-record-schema-authorization.js +16 -0
  435. package/dist/services/oni-v2/audit.d.ts +19 -0
  436. package/dist/services/oni-v2/audit.d.ts.map +1 -0
  437. package/dist/services/oni-v2/audit.js +50 -0
  438. package/dist/services/oni-v2/bindings.d.ts +7 -0
  439. package/dist/services/oni-v2/bindings.d.ts.map +1 -0
  440. package/dist/services/oni-v2/bindings.js +31 -0
  441. package/dist/services/oni-v2/config.d.ts +12 -0
  442. package/dist/services/oni-v2/config.d.ts.map +1 -0
  443. package/dist/services/oni-v2/config.js +134 -0
  444. package/dist/services/oni-v2/context.d.ts +3 -0
  445. package/dist/services/oni-v2/context.d.ts.map +1 -0
  446. package/dist/services/oni-v2/context.js +17 -0
  447. package/dist/services/oni-v2/crate.d.ts +17 -0
  448. package/dist/services/oni-v2/crate.d.ts.map +1 -0
  449. package/dist/services/oni-v2/crate.js +504 -0
  450. package/dist/services/oni-v2/flydriveOcflStore.d.ts +69 -0
  451. package/dist/services/oni-v2/flydriveOcflStore.d.ts.map +1 -0
  452. package/dist/services/oni-v2/flydriveOcflStore.js +325 -0
  453. package/dist/services/oni-v2/ingestion.d.ts +37 -0
  454. package/dist/services/oni-v2/ingestion.d.ts.map +1 -0
  455. package/dist/services/oni-v2/ingestion.js +91 -0
  456. package/dist/services/oni-v2/mapping.d.ts +17 -0
  457. package/dist/services/oni-v2/mapping.d.ts.map +1 -0
  458. package/dist/services/oni-v2/mapping.js +137 -0
  459. package/dist/services/oni-v2/repository.d.ts +9 -0
  460. package/dist/services/oni-v2/repository.d.ts.map +1 -0
  461. package/dist/services/oni-v2/repository.js +180 -0
  462. package/dist/services/oni-v2/runtime.d.ts +23 -0
  463. package/dist/services/oni-v2/runtime.d.ts.map +1 -0
  464. package/dist/services/oni-v2/runtime.js +121 -0
  465. package/dist/services/oni-v2/templating.d.ts +11 -0
  466. package/dist/services/oni-v2/templating.d.ts.map +1 -0
  467. package/dist/services/oni-v2/templating.js +27 -0
  468. package/dist/services/oni-v2/types.d.ts +100 -0
  469. package/dist/services/oni-v2/types.d.ts.map +1 -0
  470. package/dist/services/oni-v2/types.js +3 -0
  471. package/dist/services/raid-v2/audit.d.ts +10 -0
  472. package/dist/services/raid-v2/audit.d.ts.map +1 -0
  473. package/dist/services/raid-v2/audit.js +29 -0
  474. package/dist/services/raid-v2/errors.d.ts +85 -0
  475. package/dist/services/raid-v2/errors.d.ts.map +1 -0
  476. package/dist/services/raid-v2/errors.js +36 -0
  477. package/dist/services/raid-v2/http.d.ts +4 -0
  478. package/dist/services/raid-v2/http.d.ts.map +1 -0
  479. package/dist/services/raid-v2/http.js +84 -0
  480. package/dist/services/raid-v2/logger.d.ts +8 -0
  481. package/dist/services/raid-v2/logger.d.ts.map +1 -0
  482. package/dist/services/raid-v2/logger.js +30 -0
  483. package/dist/services/raid-v2/mapping.d.ts +9 -0
  484. package/dist/services/raid-v2/mapping.d.ts.map +1 -0
  485. package/dist/services/raid-v2/mapping.js +168 -0
  486. package/dist/services/raid-v2/runtime.d.ts +5 -0
  487. package/dist/services/raid-v2/runtime.d.ts.map +1 -0
  488. package/dist/services/raid-v2/runtime.js +135 -0
  489. package/dist/services/raid-v2/tags.d.ts +11 -0
  490. package/dist/services/raid-v2/tags.d.ts.map +1 -0
  491. package/dist/services/raid-v2/tags.js +12 -0
  492. package/dist/services/raid-v2/types.d.ts +66 -0
  493. package/dist/services/raid-v2/types.d.ts.map +1 -0
  494. package/dist/services/raid-v2/types.js +3 -0
  495. package/dist/services/record-hooks/coordinator.d.ts +64 -0
  496. package/dist/services/record-hooks/coordinator.d.ts.map +1 -0
  497. package/dist/services/record-hooks/coordinator.js +276 -0
  498. package/dist/visitor/client.visitor.d.ts +6 -0
  499. package/dist/visitor/client.visitor.d.ts.map +1 -1
  500. package/dist/visitor/client.visitor.js +59 -14
  501. package/dist/visitor/construct.visitor.d.ts +27 -1
  502. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  503. package/dist/visitor/construct.visitor.js +265 -177
  504. package/dist/visitor/context-variables.visitor.d.ts +3 -1
  505. package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
  506. package/dist/visitor/context-variables.visitor.js +15 -1
  507. package/dist/visitor/data-value.visitor.d.ts +6 -0
  508. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  509. package/dist/visitor/data-value.visitor.js +10 -1
  510. package/dist/visitor/json-type-def.visitor.d.ts +6 -0
  511. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  512. package/dist/visitor/json-type-def.visitor.js +10 -1
  513. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +11 -0
  514. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  515. package/dist/visitor/migrate-config-v4-v5.visitor.js +228 -133
  516. package/dist/visitor/related-object-data-inline.visitor.d.ts +31 -0
  517. package/dist/visitor/related-object-data-inline.visitor.d.ts.map +1 -0
  518. package/dist/visitor/related-object-data-inline.visitor.js +96 -0
  519. package/dist/visitor/template.visitor.d.ts +17 -2
  520. package/dist/visitor/template.visitor.d.ts.map +1 -1
  521. package/dist/visitor/template.visitor.js +60 -22
  522. package/dist/visitor/validator.visitor.d.ts +49 -7
  523. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  524. package/dist/visitor/validator.visitor.js +275 -178
  525. package/dist/waterline-models/AttachmentMetadata.d.ts +22 -0
  526. package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -1
  527. package/dist/waterline-models/AttachmentMetadata.js +147 -3
  528. package/dist/waterline-models/BrandingConfig.d.ts +7 -0
  529. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  530. package/dist/waterline-models/BrandingConfig.js +16 -1
  531. package/dist/waterline-models/BrandingConfigHistory.d.ts +11 -2
  532. package/dist/waterline-models/BrandingConfigHistory.d.ts.map +1 -1
  533. package/dist/waterline-models/BrandingConfigHistory.js +21 -1
  534. package/dist/waterline-models/DashboardConfiguration.d.ts +29 -0
  535. package/dist/waterline-models/DashboardConfiguration.d.ts.map +1 -0
  536. package/dist/waterline-models/DashboardConfiguration.js +52 -0
  537. package/dist/waterline-models/RecordType.d.ts +9 -0
  538. package/dist/waterline-models/RecordType.d.ts.map +1 -1
  539. package/dist/waterline-models/RecordType.js +16 -1
  540. package/dist/waterline-models/User.d.ts.map +1 -1
  541. package/dist/waterline-models/User.js +10 -15
  542. package/dist/waterline-models/index.d.ts +2 -0
  543. package/dist/waterline-models/index.d.ts.map +1 -1
  544. package/dist/waterline-models/index.js +4 -1
  545. package/package.json +60 -47
  546. package/dist/config/datapubs.config.d.ts +0 -72
  547. package/dist/config/datapubs.config.d.ts.map +0 -1
  548. package/dist/config/datapubs.config.js +0 -74
@@ -22,6 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  };
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.Controllers = void 0;
25
+ const promises_1 = require("node:stream/promises");
25
26
  const rxjs_1 = require("rxjs");
26
27
  const operators_1 = require("rxjs/operators");
27
28
  const index_1 = require("../index");
@@ -31,6 +32,8 @@ const check_disk_space_1 = __importDefault(require("check-disk-space"));
31
32
  const ContextVariableUtils_1 = require("../utilities/ContextVariableUtils");
32
33
  const recordtype_config_1 = require("../config/recordtype.config");
33
34
  const TusStorageManagerDataStore_1 = require("../storage/TusStorageManagerDataStore");
35
+ const RecordSaveResponse_1 = require("../RecordSaveResponse");
36
+ const RecordHttpConcurrency_1 = require("../RecordHttpConcurrency");
34
37
  /**
35
38
  * Package that contains all Controllers.
36
39
  */
@@ -93,9 +96,12 @@ var Controllers;
93
96
  'getAllDashboardTypes',
94
97
  'getDashboardType',
95
98
  'getDashboardView',
99
+ 'getDashboardWorkflowSettings',
100
+ 'getDashboardViewSettings',
96
101
  'redirectLegacyConsolidatedDashboard',
97
102
  'renderDeletedRecords',
98
103
  'getDeletedRecordList',
104
+ 'getDeletedRecord',
99
105
  'restoreRecord',
100
106
  'destroyDeletedRecord',
101
107
  'renderDashboardView',
@@ -132,6 +138,215 @@ var Controllers;
132
138
  asError(error) {
133
139
  return error instanceof Error ? error : new Error(String(error));
134
140
  }
141
+ saveContext(req, operation, validationOperation, targetStep, concurrency) {
142
+ const locals = req.options?.locals;
143
+ return (0, RecordSaveResponse_1.createRecordSaveContext)({
144
+ requestId: (0, RecordSaveResponse_1.readSaveRequestId)(req.headers),
145
+ routeFamily: 'browser',
146
+ operation,
147
+ portal: typeof locals?.portal === 'string' ? locals.portal : undefined,
148
+ targetStep: typeof targetStep === 'string' ? targetStep.trim() : undefined,
149
+ validationOperation,
150
+ validationRequestParameters: (0, RecordSaveResponse_1.normalizeRecordValidationRequestFacts)(req.params, req.query),
151
+ ...(concurrency ? { concurrency } : {}),
152
+ });
153
+ }
154
+ mutationSaveContext(req, oid, operation, validationOperation, targetStep, formBacked = false) {
155
+ const parsed = (0, RecordHttpConcurrency_1.parsePublicRecordConcurrencyRequest)(req.headers, oid, { formBacked });
156
+ if (!parsed.valid)
157
+ return parsed;
158
+ return {
159
+ valid: true,
160
+ context: this.saveContext(req, operation, validationOperation, targetStep, parsed.context),
161
+ };
162
+ }
163
+ /**
164
+ * Fingerprint the form contract this response delivers, through the same
165
+ * authoritative service routine a save recomputes. A create has no stored
166
+ * record, so its contract is described by the starting workflow step. A
167
+ * target transition is a save intent and does not change the form that
168
+ * was delivered to the browser.
169
+ */
170
+ async generatedFormFingerprint(brand, currentRec, requestedRecordType, sourceForm) {
171
+ const formConfig = sourceForm.configuration;
172
+ if (!formConfig) {
173
+ throw new Error('The current form configuration is unavailable.');
174
+ }
175
+ const recordTypeName = String(currentRec?.metaMetadata?.type ?? requestedRecordType ?? formConfig.type ?? '').trim();
176
+ const recordType = (await (0, rxjs_1.firstValueFrom)(RecordTypesService.get(brand, recordTypeName)));
177
+ let fingerprintRecord;
178
+ if (currentRec) {
179
+ fingerprintRecord = currentRec;
180
+ }
181
+ else {
182
+ const effectiveStep = (await (0, rxjs_1.firstValueFrom)(WorkflowStepsService.getFirst(recordType)));
183
+ fingerprintRecord = {
184
+ metaMetadata: {
185
+ brandId: String(brand?.id ?? ''),
186
+ type: String(recordType?.['name'] ?? recordTypeName),
187
+ form: String(_.get(effectiveStep, 'config.form', '')),
188
+ },
189
+ workflow: { stage: String(_.get(effectiveStep, 'name', '')) },
190
+ };
191
+ }
192
+ const fingerprint = await this.recordsService.getRecordFormFingerprint(fingerprintRecord, recordType, sourceForm);
193
+ if (!fingerprint) {
194
+ throw new Error('The current form concurrency fingerprint could not be generated.');
195
+ }
196
+ return fingerprint;
197
+ }
198
+ /** Read routing intent only from the explicit server-owned source. */
199
+ requestString(source, name) {
200
+ const value = source?.[name];
201
+ return typeof value === 'string' ? value.trim() || undefined : undefined;
202
+ }
203
+ recordBelongsToBrand(record, brand) {
204
+ const activeBrandId = String(brand?.id ?? '').trim();
205
+ const recordBrandId = String(_.get(record, 'metaMetadata.brandId', '') ?? '').trim();
206
+ return Boolean(activeBrandId) && recordBrandId === activeBrandId;
207
+ }
208
+ sendUnexpectedSaveFailure(req, res, action, error, meta) {
209
+ const rawType = error instanceof Error ? error.name : typeof error;
210
+ const errorType = /^[A-Za-z][A-Za-z0-9_.-]{0,63}$/.test(rawType) ? rawType : 'UnknownError';
211
+ sails.log.error('record_save_request_failed', {
212
+ event: 'record_save_request_failed',
213
+ action,
214
+ error_type: errorType,
215
+ });
216
+ if (this.getApiVersion(req) === '1.0') {
217
+ return this.sendResp(req, res, {
218
+ status: 500,
219
+ v1: { message: TranslationService.t('@record-save-failed') },
220
+ });
221
+ }
222
+ return this.sendResp(req, res, {
223
+ status: 500,
224
+ displayErrors: [{ code: 'record-save-failed', title: '@record-save-failed' }],
225
+ ...(meta ? { meta: { ...meta } } : {}),
226
+ });
227
+ }
228
+ sendConcurrencyRequestFailure(req, res, failure) {
229
+ return this.sendResp(req, res, (0, RecordHttpConcurrency_1.recordConcurrencyRequestFailureResponse)(this.getApiVersion(req), failure));
230
+ }
231
+ legacySaveBody(result) {
232
+ return {
233
+ success: result.success,
234
+ oid: result.oid,
235
+ message: result.message,
236
+ data: result.data,
237
+ metadata: result.metadata,
238
+ details: result.details,
239
+ totalItems: result.totalItems,
240
+ items: result.items,
241
+ ...(result.workspaceOid ? { workspaceOid: result.workspaceOid } : {}),
242
+ ...(result.workspaceData !== undefined ? { workspaceData: result.workspaceData } : {}),
243
+ };
244
+ }
245
+ sendSaveFailure(req, res, result, detail) {
246
+ const status = (0, RecordSaveResponse_1.recordSaveFailureStatus)(result);
247
+ const headerOption = (0, RecordHttpConcurrency_1.recordSaveResultHeaderOption)(result);
248
+ if (this.getApiVersion(req) === '1.0') {
249
+ return this.sendResp(req, res, {
250
+ status: (0, RecordSaveResponse_1.isRecordConflictStatus)(status) ? status : 500,
251
+ v1: { message: detail },
252
+ ...headerOption,
253
+ });
254
+ }
255
+ return this.sendResp(req, res, {
256
+ status,
257
+ displayErrors: (0, RecordSaveResponse_1.recordSaveDisplayErrors)(result, detail),
258
+ meta: { ...result },
259
+ ...headerOption,
260
+ });
261
+ }
262
+ async sendLifecycleResult(req, res, brand, oid, result, detail) {
263
+ if (!result.wasPersisted()) {
264
+ if (!(await this.projectSafeSaveFailure(req, brand, oid, result))) {
265
+ return this.sendPrivateSaveFailure(req, res);
266
+ }
267
+ return this.sendSaveFailure(req, res, result, detail);
268
+ }
269
+ return this.sendResp(req, res, {
270
+ data: result.data ?? result,
271
+ meta: { ...result },
272
+ v1: this.legacySaveBody(result),
273
+ headers: (0, RecordHttpConcurrency_1.recordSaveResultHeaders)(result),
274
+ });
275
+ }
276
+ /**
277
+ * A failed public save may expose the latest projection only while the
278
+ * caller still has view access. The typed service outcome remains the
279
+ * authority for the status; this helper only narrows response data.
280
+ */
281
+ async projectSafeSaveFailure(req, brand, oid, result) {
282
+ // Only a certified non-write reloads and re-projects current state. An
283
+ // ambiguous outcome must stay a 5xx rather than be narrowed to a 403.
284
+ const certifiedNonWrite = result.outcome === 'not-saved' &&
285
+ result.problems.some(problem => problem.kind === 'conflict' || problem.kind === 'authorization');
286
+ if (!certifiedNonWrite) {
287
+ return true;
288
+ }
289
+ result.setProjectedMetadata(null);
290
+ let current = null;
291
+ try {
292
+ current = await this.recordsService.getMeta(oid);
293
+ }
294
+ catch {
295
+ current = null;
296
+ }
297
+ if (!current || _.isEmpty(current)) {
298
+ try {
299
+ current = await this.recordsService.getDeletedRecordMeta(oid, brand);
300
+ }
301
+ catch {
302
+ return false;
303
+ }
304
+ }
305
+ if (!current ||
306
+ _.isEmpty(current) ||
307
+ !this.recordBelongsToBrand(current, brand) ||
308
+ !(await (0, rxjs_1.firstValueFrom)(this.hasViewAccess(brand, req.user ?? {}, current)))) {
309
+ result.setConcurrencyMetadata(undefined);
310
+ return false;
311
+ }
312
+ const hasEditAccess = await (0, rxjs_1.firstValueFrom)(this.hasEditAccess(brand, req.user ?? {}, current));
313
+ if (!hasEditAccess) {
314
+ result.problems = [
315
+ (0, RecordSaveResponse_1.recordSaveProblem)('authorization', 'response', '@record-save-record-validation-edit-unauthorized', 'record-validation-edit-unauthorized'),
316
+ ];
317
+ }
318
+ const representation = (0, RecordHttpConcurrency_1.recordRepresentationConcurrency)(current);
319
+ result.setConcurrencyMetadata({ ...result.concurrency, ...representation.metadata });
320
+ const formName = String(current.metaMetadata?.form ?? '').trim();
321
+ if (!formName) {
322
+ // Without an authoritative form there is no safe field-level
323
+ // projection. Keep the bounded conflict coordinates, but never fall
324
+ // back to the unrestricted stored metadata.
325
+ return true;
326
+ }
327
+ try {
328
+ const formMode = hasEditAccess ? 'edit' : 'view';
329
+ const clientFormConfig = await this.getEffectiveClientFormConfig(req, brand, current, formName, hasEditAccess, formMode);
330
+ if (!clientFormConfig)
331
+ return true;
332
+ result.setProjectedMetadata(await FormRecordConsistencyService.projectMetadataClientFormConfig(current.metadata, clientFormConfig, formMode, sails.config.reusableFormDefinitions));
333
+ }
334
+ catch {
335
+ // A projection failure must not fall back to unrestricted metadata.
336
+ result.setProjectedMetadata(null);
337
+ }
338
+ return true;
339
+ }
340
+ sendPrivateSaveFailure(req, res) {
341
+ return this.sendResp(req, res, {
342
+ status: 403,
343
+ displayErrors: [{ code: 'not-authorised' }],
344
+ ...(this.getApiVersion(req) === '1.0' ? { v1: { message: TranslationService.t('not-authorised') } } : {}),
345
+ });
346
+ }
347
+ publicValidationOperation(req) {
348
+ return (0, RecordSaveResponse_1.parsePublicValidationOperation)(req.query?.operation);
349
+ }
135
350
  getReqBrand(req) {
136
351
  return BrandingService.getBrand(req.session.branding ?? '');
137
352
  }
@@ -159,8 +374,12 @@ var Controllers;
159
374
  return normalizedRecordTypeName;
160
375
  }
161
376
  shouldIncludeRelationships(req) {
162
- const include = String(req.param('include') ?? req.query.include ?? '').trim().toLowerCase();
163
- const includeRelationships = String(req.param('includeRelationships') ?? req.query.includeRelationships ?? '').trim().toLowerCase();
377
+ const include = String(req.param('include') ?? req.query.include ?? '')
378
+ .trim()
379
+ .toLowerCase();
380
+ const includeRelationships = String(req.param('includeRelationships') ?? req.query.includeRelationships ?? '')
381
+ .trim()
382
+ .toLowerCase();
164
383
  return include.split(',').includes('relationships') || includeRelationships === 'true';
165
384
  }
166
385
  parseRelationshipExpandOptions(req, defaultDepth = 1) {
@@ -169,11 +388,16 @@ var Controllers;
169
388
  if (!normalized) {
170
389
  return undefined;
171
390
  }
172
- return normalized.split(',').map((item) => item.trim()).filter(Boolean);
391
+ return normalized
392
+ .split(',')
393
+ .map(item => item.trim())
394
+ .filter(Boolean);
173
395
  };
174
396
  const depthValue = req.param('relationshipDepth') ?? req.query.relationshipDepth;
175
397
  const parsedDepth = Number(depthValue);
176
- const fields = String(req.param('fields') ?? req.query.fields ?? '').trim().toLowerCase();
398
+ const fields = String(req.param('fields') ?? req.query.fields ?? '')
399
+ .trim()
400
+ .toLowerCase();
177
401
  return {
178
402
  depth: Number.isFinite(parsedDepth) && parsedDepth >= 0 ? parsedDepth : defaultDepth,
179
403
  includeRelationIds: parseCsv(req.param('relationshipIds') ?? req.query.relationshipIds),
@@ -184,7 +408,9 @@ var Controllers;
184
408
  async filterRelationshipGraphByAccess(brand, user, graph) {
185
409
  const filteredRelatedObjects = {};
186
410
  const allowedTargetOids = new Set();
187
- const omittedByAccess = { ...(graph.omittedByAccess ?? {}) };
411
+ const omittedByAccess = {
412
+ ...(graph.omittedByAccess ?? {}),
413
+ };
188
414
  for (const [recordType, records] of Object.entries(graph.relatedObjects ?? {})) {
189
415
  const keptRecords = [];
190
416
  for (const recordValue of records ?? []) {
@@ -226,6 +452,46 @@ var Controllers;
226
452
  processedRelationships: Object.keys(graph.relatedObjects ?? {}),
227
453
  };
228
454
  }
455
+ /**
456
+ * Build the client form used by the record metadata read and save-sync paths.
457
+ * The false edit lookup / edit form mode pairing is inherited from getMeta and
458
+ * has not been independently reviewed; keep both values explicit at call sites.
459
+ */
460
+ async getEffectiveClientFormConfig(req, brand, record, formName, formLookupEditMode, formMode) {
461
+ const metaMetadata = record.metaMetadata;
462
+ const brandId = String(metaMetadata?.['brandId'] ?? brand.id);
463
+ const formRecord = await (0, rxjs_1.firstValueFrom)(FormsService.getFormByName(formName, formLookupEditMode, brandId));
464
+ const formConfig = formRecord?.configuration;
465
+ if (!formConfig) {
466
+ return undefined;
467
+ }
468
+ const userRoles = (req.user?.['roles'] ?? [])
469
+ .map((role) => String(role['name'] ?? ''))
470
+ .filter((name) => !!name);
471
+ const reusableFormDefs = sails.config.reusableFormDefinitions;
472
+ const contextVariablesMap = ContextVariableUtils_1.ContextVariableUtils.evaluateContextVariables(req, record);
473
+ return FormsService.buildClientFormConfig(formConfig, formMode, userRoles, record.metadata, reusableFormDefs, String(brand?.name ?? ''), contextVariablesMap, { user: req.user, brand });
474
+ }
475
+ async getPostSaveMetadata(req, brand, savedRecord, targetStep) {
476
+ if (!savedRecord || targetStep || sails.config.record?.form?.returnMetadataOnSave === false) {
477
+ return null;
478
+ }
479
+ try {
480
+ const formName = savedRecord.metaMetadata?.['form'];
481
+ if (typeof formName !== 'string' || formName.length === 0) {
482
+ return null;
483
+ }
484
+ const clientFormConfig = await this.getEffectiveClientFormConfig(req, brand, savedRecord, formName, false, 'edit');
485
+ if (!clientFormConfig) {
486
+ return null;
487
+ }
488
+ return await FormRecordConsistencyService.projectMetadataClientFormConfig(savedRecord.metadata, clientFormConfig, 'edit', sails.config.reusableFormDefinitions);
489
+ }
490
+ catch (error) {
491
+ sails.log.error(`Failed to project post-save metadata for record ${savedRecord?.redboxOid ?? 'unknown'}:`, error);
492
+ return null;
493
+ }
494
+ }
229
495
  async getMeta(req, res) {
230
496
  const brand = this.getReqBrand(req);
231
497
  const oid = req.param('oid') ?? '';
@@ -239,24 +505,16 @@ var Controllers;
239
505
  }
240
506
  const hasViewAccess = await (0, rxjs_1.firstValueFrom)(this.hasViewAccess(brand, req.user ?? {}, record));
241
507
  if (hasViewAccess) {
508
+ const representation = (0, RecordHttpConcurrency_1.recordRepresentationConcurrency)(record);
242
509
  const formName = record.metaMetadata?.['form'];
243
510
  if (formName) {
244
511
  try {
245
- const brandId = String(record.metaMetadata?.['brandId'] ?? brand.id);
246
- const formRecord = await (0, rxjs_1.firstValueFrom)(FormsService.getFormByName(formName, false, brandId));
247
- const formConfig = formRecord?.configuration;
248
- if (formConfig) {
249
- const userRoles = (req.user?.['roles'] ?? []).map((role) => String(role['name'] ?? '')).filter((name) => !!name);
512
+ const hasEditAccess = await (0, rxjs_1.firstValueFrom)(this.hasEditAccess(brand, req.user ?? {}, record));
513
+ const formMode = hasEditAccess ? 'edit' : 'view';
514
+ const clientFormConfig = await this.getEffectiveClientFormConfig(req, brand, record, formName, hasEditAccess, formMode);
515
+ if (clientFormConfig) {
250
516
  const reusableFormDefs = sails.config.reusableFormDefinitions;
251
- const contextVariablesMap = ContextVariableUtils_1.ContextVariableUtils.evaluateContextVariables(req, record);
252
- const clientFormConfig = await FormsService.buildClientFormConfig(formConfig, 'edit', userRoles, record.metadata, reusableFormDefs, String(brand?.name ?? ''), contextVariablesMap);
253
- const emptyOriginal = {
254
- redboxOid: record.redboxOid,
255
- metaMetadata: record.metaMetadata,
256
- metadata: {}
257
- };
258
- const filteredRecord = await FormRecordConsistencyService.mergeRecordClientFormConfig(emptyOriginal, record, clientFormConfig, 'edit', reusableFormDefs);
259
- record.metadata = filteredRecord.metadata;
517
+ record.metadata = await FormRecordConsistencyService.projectMetadataClientFormConfig(record.metadata, clientFormConfig, formMode, reusableFormDefs);
260
518
  }
261
519
  }
262
520
  catch (formErr) {
@@ -269,30 +527,36 @@ var Controllers;
269
527
  }
270
528
  }
271
529
  if (!this.shouldIncludeRelationships(req)) {
272
- return this.sendResp(req, res, { data: record.metadata, meta: { oid: record.redboxOid }, v1: record.metadata });
530
+ return this.sendResp(req, res, {
531
+ data: record.metadata,
532
+ meta: { oid: record.redboxOid, ...representation.metadata },
533
+ v1: record.metadata,
534
+ headers: representation.headers,
535
+ });
273
536
  }
274
537
  const relationshipOptions = this.parseRelationshipExpandOptions(req, 1);
275
538
  const relationships = await this.recordsService.getRelatedRecords(record.redboxOid, brand, relationshipOptions);
276
539
  const filteredRelationships = await this.filterRelationshipGraphByAccess(brand, req.user ?? {}, relationships);
277
540
  return this.sendResp(req, res, {
278
541
  data: record.metadata,
279
- meta: { oid: record.redboxOid, relationships: filteredRelationships },
542
+ meta: { oid: record.redboxOid, ...representation.metadata, relationships: filteredRelationships },
280
543
  v1: { ...record.metadata, relationships: filteredRelationships },
544
+ headers: representation.headers,
281
545
  });
282
546
  }
283
547
  else {
284
548
  return this.sendResp(req, res, {
285
549
  status: 403,
286
- displayErrors: [{ code: "error-403-heading" }],
550
+ displayErrors: [{ code: 'error-403-heading' }],
287
551
  meta: { oid: record.redboxOid },
288
- v1: { status: "Access Denied" },
552
+ v1: { status: 'Access Denied' },
289
553
  });
290
554
  }
291
555
  }
292
556
  catch (err) {
293
557
  return this.sendResp(req, res, {
294
558
  errors: [this.asError(err)],
295
- displayErrors: [{ detail: "Error retrieving metadata" }],
559
+ displayErrors: [{ detail: 'Error retrieving metadata' }],
296
560
  meta: { oid: oid },
297
561
  });
298
562
  }
@@ -300,11 +564,11 @@ var Controllers;
300
564
  async getMetaDefault(req, res) {
301
565
  const brand = this.getReqBrand(req);
302
566
  const recordType = req.param('name') ?? '';
303
- const editMode = req.query.edit == "true";
567
+ const editMode = req.query.edit == 'true';
304
568
  // TODO: is there a permission check needed for the default form config values?
305
569
  // get the default data model for the form with 'name'
306
570
  const form = await (0, rxjs_1.firstValueFrom)(FormsService.getFormByStartingWorkflowStep(brand, recordType, editMode));
307
- const formMode = editMode ? "edit" : "view";
571
+ const formMode = editMode ? 'edit' : 'view';
308
572
  const reusableFormDefs = sails.config.reusableFormDefinitions;
309
573
  const formConfig = form?.configuration;
310
574
  if (!formConfig) {
@@ -320,7 +584,7 @@ var Controllers;
320
584
  meta: {
321
585
  formName: form?.name,
322
586
  recordType: recordType,
323
- editMode: editMode
587
+ editMode: editMode,
324
588
  },
325
589
  v1: modelDataDefault,
326
590
  });
@@ -401,7 +665,7 @@ var Controllers;
401
665
  if (!form) {
402
666
  return this.sendResp(req, res, {
403
667
  status: 404,
404
- displayErrors: [{ detail: 'Form not found' }]
668
+ displayErrors: [{ detail: 'Form not found' }],
405
669
  });
406
670
  }
407
671
  // Deprecated: customAngularApp has been removed from FormConfigFrame
@@ -413,7 +677,7 @@ var Controllers;
413
677
  if (!form) {
414
678
  return this.sendResp(req, res, {
415
679
  status: 404,
416
- displayErrors: [{ detail: 'Form not found' }]
680
+ displayErrors: [{ detail: 'Form not found' }],
417
681
  });
418
682
  }
419
683
  // Deprecated: customAngularApp has been removed from FormConfigFrame
@@ -421,7 +685,7 @@ var Controllers;
421
685
  }, error => {
422
686
  return this.sendResp(req, res, {
423
687
  errors: [this.asError(error)],
424
- displayErrors: [{ detail: "Failed to load form" }],
688
+ displayErrors: [{ detail: 'Failed to load form' }],
425
689
  });
426
690
  });
427
691
  }
@@ -448,13 +712,13 @@ var Controllers;
448
712
  }
449
713
  }
450
714
  hasEditAccess(brand, user, currentRec) {
451
- sails.log.verbose("Current Record: ");
715
+ sails.log.verbose('Current Record: ');
452
716
  sails.log.verbose(currentRec);
453
717
  const u = user ?? {};
454
718
  return (0, rxjs_1.of)(this.recordsService.hasEditAccess(brand, u, (u['roles'] ?? []), currentRec));
455
719
  }
456
720
  hasViewAccess(brand, user, currentRec) {
457
- sails.log.verbose("Current Record: ");
721
+ sails.log.verbose('Current Record: ');
458
722
  sails.log.verbose(currentRec);
459
723
  const u = user ?? {};
460
724
  return (0, rxjs_1.of)(this.recordsService.hasViewAccess(brand, u, (u['roles'] ?? []), currentRec));
@@ -463,7 +727,7 @@ var Controllers;
463
727
  const brand = this.getReqBrand(req);
464
728
  const recordType = req.param('name');
465
729
  const oid = req.param('oid')?.toString()?.trim() || null;
466
- const editMode = req.query.edit == "true";
730
+ const editMode = req.query.edit == 'true';
467
731
  const formParam = req.param('formName');
468
732
  try {
469
733
  let form = null;
@@ -504,55 +768,91 @@ var Controllers;
504
768
  return this.sendResp(req, res, {
505
769
  status: 500,
506
770
  displayErrors: [{ code: 'view-error-no-permissions' }],
507
- v1: { message: TranslationService.t('view-error-no-permissions') }
771
+ v1: { message: TranslationService.t('view-error-no-permissions') },
772
+ });
773
+ }
774
+ const authoritativeFormName = String(currentRec.metaMetadata?.form ?? '').trim();
775
+ const requestedFormName = typeof formParam === 'string' ? formParam.trim() : '';
776
+ if (!authoritativeFormName) {
777
+ return this.sendResp(req, res, {
778
+ status: 500,
779
+ displayErrors: [{ detail: `The authoritative form is unavailable for OID: ${oid}` }],
780
+ v1: { message: `The authoritative form is unavailable for OID: ${oid}` },
781
+ });
782
+ }
783
+ if (requestedFormName && requestedFormName !== authoritativeFormName) {
784
+ return this.sendResp(req, res, {
785
+ status: 409,
786
+ displayErrors: [{ code: 'form-definition-changed' }],
787
+ v1: { message: TranslationService.t('form-definition-changed') },
508
788
  });
509
789
  }
510
- // get the form config
511
- form = await FormsService.getForm(brand, formParam, editMode, '', currentRec);
790
+ // The stored workflow/form reference owns the delivered contract.
791
+ // A route parameter may confirm that identity but cannot select a
792
+ // different form for an existing record.
793
+ form = (await FormsService.getForm(brand, authoritativeFormName, editMode, '', currentRec));
512
794
  if (_.isEmpty(form)) {
513
795
  const msg = `Error, getting form ${formParam} for OID: ${oid}`;
514
796
  return this.sendResp(req, res, {
515
797
  status: 500,
516
798
  displayErrors: [{ detail: msg }],
517
- v1: { message: msg }
799
+ v1: { message: msg },
518
800
  });
519
801
  }
520
802
  // let hasEditAccess = await firstValueFrom(this.hasEditAccess(brand, req.user, currentRec));
521
803
  // FormsService.filterFieldsHasEditAccess(form.fields, hasEditAccess);
522
804
  }
523
805
  // process the form config to provide only the fields accessible by the current user
524
- const formMode = editMode ? "edit" : "view";
525
- const userRoles = (req.user?.['roles'] ?? []).map((role) => String(role['name'] ?? '')).filter((name) => !!name);
806
+ const formMode = editMode ? 'edit' : 'view';
807
+ const userRoles = (req.user?.['roles'] ?? [])
808
+ .map((role) => String(role['name'] ?? ''))
809
+ .filter((name) => !!name);
526
810
  const recordData = currentRec;
527
811
  const reusableFormDefs = sails.config.reusableFormDefinitions;
528
812
  const contextVariablesMap = ContextVariableUtils_1.ContextVariableUtils.evaluateContextVariables(req, currentRec);
529
813
  const formConfig = form?.configuration;
530
- if (!formConfig) {
814
+ if (!form || !formConfig) {
531
815
  const msg = `Form configuration not found for form ${formParam}, record type ${recordType}, oid ${oid}`;
532
816
  return this.sendResp(req, res, {
533
817
  status: 500,
534
818
  displayErrors: [{ detail: msg }],
535
- v1: { message: msg }
819
+ v1: { message: msg },
536
820
  });
537
821
  }
538
- const mergedForm = await FormsService.buildClientFormConfig(formConfig, formMode, userRoles, recordData?.metadata ?? null, reusableFormDefs, String(brand?.name ?? ''), contextVariablesMap);
539
- const prehydrateService = sails.services.formpayloadprehydrateservice;
822
+ const mergedForm = await FormsService.buildClientFormConfig(formConfig, formMode, userRoles, recordData?.metadata ?? null, reusableFormDefs, String(brand?.name ?? ''), contextVariablesMap, { user: req.user, brand });
823
+ const validationOperations = await FormsService.discoverValidationOperations({
824
+ brand,
825
+ form,
826
+ recordType: String(currentRec?.metaMetadata?.type ?? recordType ?? formConfig.type ?? ''),
827
+ record: currentRec,
828
+ user: req.user,
829
+ editable: editMode,
830
+ targetStep: typeof req.query?.targetStep === 'string' ? req.query.targetStep : undefined,
831
+ });
832
+ const prehydrateService = sails.services
833
+ .formpayloadprehydrateservice;
540
834
  const prehydrate = await prehydrateService.build({
541
835
  branding: brand,
542
- formConfig: mergedForm
836
+ formConfig: mergedForm,
543
837
  });
838
+ const formFingerprint = await this.generatedFormFingerprint(brand, currentRec, recordType, form);
839
+ const representation = currentRec ? (0, RecordHttpConcurrency_1.recordRepresentationConcurrency)(currentRec) : undefined;
544
840
  // return the form config
545
841
  if (!_.isEmpty(mergedForm)) {
546
842
  return this.sendResp(req, res, {
547
843
  data: mergedForm,
548
844
  meta: {
549
- formName: formParam,
845
+ formName: String(form.name ?? currentRec?.metaMetadata?.form ?? formParam ?? ''),
550
846
  recordType: recordType,
551
847
  oid: oid,
552
848
  workflow: recordData?.workflow,
553
- contextVariables: contextVariablesMap
849
+ contextVariables: contextVariablesMap,
850
+ validationOperations,
851
+ formFingerprint,
852
+ ...(representation?.metadata ?? {}),
554
853
  },
555
854
  prehydrate,
855
+ headers: representation?.headers,
556
856
  });
557
857
  }
558
858
  else {
@@ -560,14 +860,15 @@ var Controllers;
560
860
  return this.sendResp(req, res, {
561
861
  status: 500,
562
862
  displayErrors: [{ detail: msg }],
563
- v1: { message: msg }
863
+ v1: { message: msg },
564
864
  });
565
865
  }
566
866
  }
567
867
  catch (error) {
568
868
  const msg = error.message;
569
- const displayError = { title: "Error getting form definition", detail: msg };
869
+ const displayError = { title: 'Error getting form definition', detail: msg };
570
870
  return this.sendResp(req, res, {
871
+ status: 500,
571
872
  errors: [this.asError(error)],
572
873
  displayErrors: [displayError],
573
874
  v1: msg,
@@ -579,35 +880,56 @@ var Controllers;
579
880
  }
580
881
  async createInternal(req, res) {
581
882
  try {
883
+ const parsedOperation = this.publicValidationOperation(req);
884
+ if (!parsedOperation.valid) {
885
+ return this.sendResp(req, res, {
886
+ status: 400,
887
+ displayErrors: [{ code: 'record-validation-operation-invalid' }],
888
+ });
889
+ }
582
890
  const brand = this.getReqBrand(req);
583
891
  const metadata = req.body;
584
892
  const record = {
585
- metaMetadata: {}
893
+ metaMetadata: {},
586
894
  };
587
- const recType = req.param('recordType');
588
- const targetStep = req.param('targetStep');
895
+ const recType = this.requestString(req.params, 'recordType');
896
+ const targetStep = this.requestString(req.query, 'targetStep');
897
+ const saveRequest = this.mutationSaveContext(req, undefined, targetStep ? 'transition' : 'create', parsedOperation.value, targetStep, true);
898
+ if (!saveRequest.valid) {
899
+ return this.sendConcurrencyRequestFailure(req, res, saveRequest);
900
+ }
589
901
  record.authorization = {
590
902
  view: [req.user['username']],
591
- edit: [req.user['username']]
903
+ edit: [req.user['username']],
592
904
  };
593
905
  record.metadata = metadata;
594
- const recordType = await (0, rxjs_1.firstValueFrom)(RecordTypesService.get(brand, recType));
906
+ const recordType = await (0, rxjs_1.firstValueFrom)(RecordTypesService.get(brand, recType ?? ''));
595
907
  const user = req.user;
596
908
  sails.log.verbose(`RecordController - createRecord - enter`);
597
- const createResponse = await this.recordsService.create(brand, record, recordType, user, true, true, targetStep);
598
- if (createResponse && _.isFunction(createResponse.isSuccessful) && createResponse.isSuccessful()) {
909
+ const createResponse = await this.recordsService.create(brand, record, recordType, user, true, true, targetStep, saveRequest.context);
910
+ if (createResponse.wasPersisted()) {
911
+ let savedRecord = null;
912
+ try {
913
+ savedRecord = await this.recordsService.getMeta(createResponse.oid);
914
+ const postSaveMetadata = await this.getPostSaveMetadata(req, brand, savedRecord, targetStep);
915
+ if (postSaveMetadata !== null) {
916
+ createResponse.metadata = postSaveMetadata;
917
+ }
918
+ }
919
+ catch (error) {
920
+ sails.log.error(`RecordController - response projection failed for oid ${createResponse.oid} (requestId ${createResponse.requestId})`, error);
921
+ createResponse.setProjectedMetadata(null);
922
+ createResponse.addProblem((0, RecordSaveResponse_1.recordSaveProblem)('system', 'response', '@record-save-response-projection-failed', 'response-projection-failed'));
923
+ }
599
924
  return this.sendResp(req, res, {
600
- data: await this.recordsService.getMeta(createResponse.oid),
925
+ data: savedRecord,
601
926
  meta: { ...createResponse },
602
- v1: createResponse,
927
+ ...(this.getApiVersion(req) === '1.0' ? { v1: this.legacySaveBody(createResponse) } : {}),
928
+ headers: (0, RecordHttpConcurrency_1.recordSaveResultHeaders)(createResponse),
603
929
  });
604
930
  }
605
931
  else {
606
- return this.sendResp(req, res, {
607
- status: 500,
608
- displayErrors: [{ detail: createResponse.message }],
609
- meta: { ...createResponse },
610
- });
932
+ return this.sendSaveFailure(req, res, createResponse, createResponse.message);
611
933
  }
612
934
  }
613
935
  catch (error) {
@@ -621,41 +943,84 @@ var Controllers;
621
943
  const brand = this.getReqBrand(req);
622
944
  const oid = req.param('oid');
623
945
  const user = req.user;
624
- const currentRec = await (0, rxjs_1.firstValueFrom)(this.getRecord(oid));
625
- if (!_.isEmpty(brand)) {
946
+ if (!oid || _.isEmpty(brand)) {
947
+ return this.sendResp(req, res, { status: 404, displayErrors: [{ code: 'missing-record' }] });
948
+ }
949
+ let currentRec;
950
+ try {
951
+ currentRec = await (0, rxjs_1.firstValueFrom)(this.getRecord(oid));
952
+ }
953
+ catch {
954
+ return this.sendResp(req, res, { status: 404, displayErrors: [{ code: 'missing-record' }] });
955
+ }
956
+ if (!this.recordBelongsToBrand(currentRec, brand)) {
957
+ return this.sendResp(req, res, { status: 404, displayErrors: [{ code: 'missing-record' }] });
958
+ }
959
+ try {
626
960
  const hasEditAccess = await (0, rxjs_1.firstValueFrom)(this.hasEditAccess(brand, user, currentRec));
627
- if (hasEditAccess) {
628
- const recordType = await (0, rxjs_1.firstValueFrom)(RecordTypesService.get(brand, currentRec.metaMetadata.type));
629
- const response = await this.recordsService.delete(oid, false, currentRec, recordType, user ?? {});
630
- if (response && response.isSuccessful()) {
631
- const resp = {
632
- success: true,
633
- oid: oid
634
- };
635
- sails.log.verbose(`RecordController - delete - Successfully deleted: ${oid}`);
636
- return this.sendResp(req, res, { data: resp });
637
- }
638
- else {
639
- return this.sendResp(req, res, {
640
- status: 500,
641
- displayErrors: [{ detail: response.message }]
642
- });
643
- }
644
- }
645
- else {
961
+ if (!hasEditAccess) {
646
962
  return this.sendResp(req, res, {
647
- status: 500,
648
- displayErrors: [{ code: 'edit-error-no-permissions' }]
963
+ status: 403,
964
+ displayErrors: [{ code: 'edit-error-no-permissions' }],
649
965
  });
650
966
  }
651
- }
652
- else {
967
+ const recordType = await (0, rxjs_1.firstValueFrom)(RecordTypesService.get(brand, currentRec.metaMetadata.type));
968
+ const saveRequest = this.mutationSaveContext(req, oid, 'delete');
969
+ if (!saveRequest.valid)
970
+ return this.sendConcurrencyRequestFailure(req, res, saveRequest);
971
+ const response = await this.recordsService.delete(oid, false, currentRec, recordType, user ?? {}, saveRequest.context);
972
+ return this.sendLifecycleResult(req, res, brand, oid, response, TranslationService.t('failed-delete'));
973
+ }
974
+ catch {
653
975
  return this.sendResp(req, res, {
654
976
  status: 500,
655
- displayErrors: [{ code: 'failed-delete' }]
977
+ displayErrors: [{ code: 'failed-delete' }],
656
978
  });
657
979
  }
658
980
  }
981
+ async getDeletedRecord(req, res) {
982
+ const oid = req.param('oid');
983
+ const brand = this.getReqBrand(req);
984
+ if (!oid || !brand?.id)
985
+ return this.sendResp(req, res, { status: 404 });
986
+ const record = await this.recordsService.getDeletedRecordMeta(oid, brand);
987
+ if (!record)
988
+ return this.sendResp(req, res, { status: 404 });
989
+ if (!(await (0, rxjs_1.firstValueFrom)(this.hasViewAccess(brand, req.user, record)))) {
990
+ return this.sendResp(req, res, { status: 403 });
991
+ }
992
+ const representation = (0, RecordHttpConcurrency_1.recordRepresentationConcurrency)(record);
993
+ const formName = String(record.metaMetadata?.['form'] ?? '').trim();
994
+ if (formName) {
995
+ try {
996
+ const hasEditAccess = await (0, rxjs_1.firstValueFrom)(this.hasEditAccess(brand, req.user ?? {}, record));
997
+ const formMode = hasEditAccess ? 'edit' : 'view';
998
+ const clientFormConfig = await this.getEffectiveClientFormConfig(req, brand, record, formName, hasEditAccess, formMode);
999
+ if (clientFormConfig) {
1000
+ record.metadata = await FormRecordConsistencyService.projectMetadataClientFormConfig(record.metadata, clientFormConfig, formMode, sails.config.reusableFormDefinitions);
1001
+ }
1002
+ }
1003
+ catch (error) {
1004
+ sails.log.error(`Failed to filter deleted metadata for record ${oid} using form ${formName}:`, error);
1005
+ return this.sendResp(req, res, {
1006
+ status: 500,
1007
+ displayErrors: [{ detail: 'Failed to filter metadata for this record.' }],
1008
+ meta: { oid },
1009
+ });
1010
+ }
1011
+ }
1012
+ return this.sendResp(req, res, {
1013
+ data: record.metadata,
1014
+ meta: {
1015
+ oid,
1016
+ lifecycleState: record.lifecycleState,
1017
+ lifecycle: record.lifecycle,
1018
+ ...representation.metadata,
1019
+ },
1020
+ v1: record.metadata,
1021
+ headers: representation.headers,
1022
+ });
1023
+ }
659
1024
  async restoreRecord(req, res) {
660
1025
  const oid = req.param('oid');
661
1026
  const msgFailed = TranslationService.t('failed-restore');
@@ -667,37 +1032,21 @@ var Controllers;
667
1032
  v1: {
668
1033
  success: false,
669
1034
  oid: oid,
670
- message: msgFailed
1035
+ message: msgFailed,
671
1036
  },
672
1037
  });
673
1038
  }
674
1039
  const user = req.user;
675
- const response = await this.recordsService.restoreRecord(oid, user ?? {});
676
- if (response && response.isSuccessful()) {
677
- const resp = {
678
- success: true,
679
- oid: oid
680
- };
681
- sails.log.verbose(`Successfully restored: ${oid}`);
682
- return this.sendResp(req, res, {
683
- data: await this.recordsService.getMeta(oid),
684
- meta: resp,
685
- v1: resp,
686
- });
687
- }
688
- else {
689
- const data = {
690
- success: false,
691
- oid: oid,
692
- message: response.message
693
- };
694
- return this.sendResp(req, res, {
695
- status: 500,
696
- displayErrors: [{ code: 'failed-restore', detail: response.message }],
697
- meta: { oid: oid },
698
- v1: data,
699
- });
700
- }
1040
+ const brand = this.getReqBrand(req);
1041
+ const deleted = await this.recordsService.getDeletedRecordMeta(oid, brand);
1042
+ if (!deleted || !(await (0, rxjs_1.firstValueFrom)(this.hasEditAccess(brand, user, deleted)))) {
1043
+ return this.sendResp(req, res, { status: 404 });
1044
+ }
1045
+ const saveRequest = this.mutationSaveContext(req, oid, 'restore');
1046
+ if (!saveRequest.valid)
1047
+ return this.sendConcurrencyRequestFailure(req, res, saveRequest);
1048
+ const response = await this.recordsService.restoreRecord(oid, user ?? {}, brand, saveRequest.context);
1049
+ return this.sendLifecycleResult(req, res, brand, oid, response, msgFailed);
701
1050
  }
702
1051
  async destroyDeletedRecord(req, res) {
703
1052
  const oid = req.param('oid');
@@ -709,47 +1058,58 @@ var Controllers;
709
1058
  v1: {
710
1059
  success: false,
711
1060
  oid: oid,
712
- message: TranslationService.t('failed-destroy')
1061
+ message: TranslationService.t('failed-destroy'),
713
1062
  },
714
1063
  });
715
1064
  }
716
1065
  const user = req.user;
717
- const response = await this.recordsService.destroyDeletedRecord(oid, user ?? {});
718
- if (response && response.isSuccessful()) {
719
- const resp = {
720
- success: true,
721
- oid: oid
722
- };
723
- sails.log.verbose(`Successfully destroyed: ${oid}`);
724
- return this.sendResp(req, res, { data: resp });
725
- }
726
- else {
727
- return this.sendResp(req, res, {
728
- status: 500,
729
- displayErrors: [{ code: 'failed-destroy' }],
730
- meta: { oid: oid },
731
- v1: {
732
- success: false,
733
- oid: oid,
734
- message: response.message
735
- },
736
- });
737
- }
1066
+ const brand = this.getReqBrand(req);
1067
+ const deleted = await this.recordsService.getDeletedRecordMeta(oid, brand);
1068
+ if (!deleted || !(await (0, rxjs_1.firstValueFrom)(this.hasEditAccess(brand, user, deleted)))) {
1069
+ return this.sendResp(req, res, { status: 404 });
1070
+ }
1071
+ const saveRequest = this.mutationSaveContext(req, oid, 'purge');
1072
+ if (!saveRequest.valid)
1073
+ return this.sendConcurrencyRequestFailure(req, res, saveRequest);
1074
+ const response = await this.recordsService.destroyDeletedRecord(oid, user ?? {}, brand, saveRequest.context);
1075
+ return this.sendLifecycleResult(req, res, brand, oid, response, TranslationService.t('failed-destroy'));
738
1076
  }
739
1077
  update(req, res) {
740
- this.updateInternal(req, res).then(() => { });
1078
+ void this.updateInternal(req, res).catch(error => {
1079
+ this.sendUnexpectedSaveFailure(req, res, 'update', error);
1080
+ });
741
1081
  }
742
1082
  async updateInternal(req, res) {
1083
+ const parsedOperation = this.publicValidationOperation(req);
1084
+ if (!parsedOperation.valid) {
1085
+ return this.sendResp(req, res, {
1086
+ status: 400,
1087
+ displayErrors: [{ code: 'record-validation-operation-invalid' }],
1088
+ });
1089
+ }
743
1090
  const brand = this.getReqBrand(req);
744
- const oid = req.param('oid');
745
- const targetStep = req.param('targetStep');
746
- const shouldMerge = req.param('merge', 'false')?.toString() === 'true';
1091
+ const oid = this.requestString(req.params, 'oid') ?? '';
1092
+ const targetStep = this.requestString(req.query, 'targetStep');
1093
+ const shouldMerge = this.requestString(req.query, 'merge') === 'true';
1094
+ const saveRequest = this.mutationSaveContext(req, oid, targetStep ? 'transition' : 'update', parsedOperation.value, targetStep, true);
1095
+ if (!saveRequest.valid) {
1096
+ return this.sendConcurrencyRequestFailure(req, res, saveRequest);
1097
+ }
747
1098
  // If the sync completed before the async is done, maybe the user is cleared?
748
1099
  // So clone the user for the async triggers.
749
1100
  const user = _.cloneDeep(req.user);
750
- let metadata = req.body;
1101
+ const metadata = req.body;
751
1102
  sails.log.verbose(`RecordController - updateInternal - enter`);
752
- const currentRec = await (0, rxjs_1.firstValueFrom)(this.getRecord(oid));
1103
+ let currentRec;
1104
+ try {
1105
+ currentRec = await (0, rxjs_1.firstValueFrom)(this.getRecord(oid));
1106
+ }
1107
+ catch {
1108
+ return this.sendResp(req, res, { status: 404, displayErrors: [{ code: 'missing-record' }] });
1109
+ }
1110
+ if (!this.recordBelongsToBrand(currentRec, brand)) {
1111
+ return this.sendResp(req, res, { status: 404, displayErrors: [{ code: 'missing-record' }] });
1112
+ }
753
1113
  const hasEditAccess = await (0, rxjs_1.firstValueFrom)(this.hasEditAccess(brand, user, currentRec));
754
1114
  if (!hasEditAccess) {
755
1115
  return this.sendResp(req, res, { status: 403, displayErrors: [{ code: 'not-authorised' }] });
@@ -762,37 +1122,41 @@ var Controllers;
762
1122
  let response;
763
1123
  try {
764
1124
  sails.log.verbose(`RecordController - updateInternal - before updateMeta`);
765
- if (shouldMerge) {
766
- metadata = this.mergeRecordMetadata(currentRec.metadata, metadata);
767
- }
768
- response = await this.recordsService.updateMeta(brand, oid, currentRec, user, true, true, nextStepResp, metadata);
1125
+ response = await this.recordsService.updateMeta(brand, oid, currentRec, user, true, true, nextStepResp, shouldMerge ? { metadata, mode: 'merge', arrayMergeMode: 'replace' } : { metadata, mode: 'replace' }, saveRequest.context);
769
1126
  sails.log.verbose(JSON.stringify(response));
770
- if (response && response.isSuccessful()) {
1127
+ // Both persisted outcomes are HTTP 200; warnings stay inside the
1128
+ // typed `meta` result rather than becoming an error response.
1129
+ if (response.wasPersisted()) {
771
1130
  sails.log.verbose(`RecordController - updateInternal - before ajaxOk`);
1131
+ let savedRecord = null;
1132
+ try {
1133
+ savedRecord = await this.recordsService.getMeta(oid);
1134
+ const postSaveMetadata = await this.getPostSaveMetadata(req, brand, savedRecord, nextStepResp);
1135
+ if (postSaveMetadata !== null) {
1136
+ response.metadata = postSaveMetadata;
1137
+ }
1138
+ }
1139
+ catch (error) {
1140
+ sails.log.error(`RecordController - response projection failed for oid ${oid} (requestId ${response.requestId})`, error);
1141
+ response.setProjectedMetadata(null);
1142
+ response.addProblem((0, RecordSaveResponse_1.recordSaveProblem)('system', 'response', '@record-save-response-projection-failed', 'response-projection-failed'));
1143
+ }
772
1144
  return this.sendResp(req, res, {
773
- data: await this.recordsService.getMeta(oid),
774
- meta: response ? { ...response } : undefined,
775
- v1: response,
1145
+ data: savedRecord,
1146
+ meta: { ...response },
1147
+ ...(this.getApiVersion(req) === '1.0' ? { v1: this.legacySaveBody(response) } : {}),
1148
+ headers: (0, RecordHttpConcurrency_1.recordSaveResultHeaders)(response),
776
1149
  });
777
1150
  }
778
1151
  else {
779
- return this.sendResp(req, res, {
780
- status: 500,
781
- displayErrors: [{ detail: "Failed to get record data" }],
782
- meta: response ? { ...response } : undefined,
783
- v1: response,
784
- });
1152
+ if (!(await this.projectSafeSaveFailure(req, brand, oid, response))) {
1153
+ return this.sendPrivateSaveFailure(req, res);
1154
+ }
1155
+ return this.sendSaveFailure(req, res, response, 'Failed to get record data');
785
1156
  }
786
1157
  }
787
1158
  catch (error) {
788
- const errorMessage = this.getErrorMessage(error);
789
- sails.log.error('RecordController - updateInternal - Failed to run post-save hooks when onUpdate... or Error updating meta:');
790
- return this.sendResp(req, res, {
791
- errors: [this.asError(error)],
792
- displayErrors: [{ detail: errorMessage }],
793
- meta: response ? { ...response } : undefined,
794
- v1: errorMessage,
795
- });
1159
+ return this.sendUnexpectedSaveFailure(req, res, 'update', error, response);
796
1160
  }
797
1161
  }
798
1162
  //TODO: check if this deprecated?
@@ -802,8 +1166,7 @@ var Controllers;
802
1166
  }
803
1167
  saveAuthorization(brand, oid, currentRec, authorization, user) {
804
1168
  const editAccessResp = this.hasEditAccess(brand, user, currentRec);
805
- return editAccessResp
806
- .pipe((0, operators_1.map)(hasEditAccess => {
1169
+ return editAccessResp.pipe((0, operators_1.map)(hasEditAccess => {
807
1170
  if (hasEditAccess) {
808
1171
  currentRec.authorization = authorization;
809
1172
  return this.updateAuthorization(brand, oid, currentRec, user);
@@ -811,7 +1174,7 @@ var Controllers;
811
1174
  else {
812
1175
  return {
813
1176
  code: 403,
814
- message: "Not authorized to edit"
1177
+ message: 'Not authorized to edit',
815
1178
  };
816
1179
  }
817
1180
  }));
@@ -831,10 +1194,10 @@ var Controllers;
831
1194
  return (0, rxjs_1.throwError)(new Error(`Failed to update meta, brand's don't match: ${metaMetadata['brandId']} != ${brand.id}, with oid: ${oid}`));
832
1195
  }
833
1196
  metaMetadata['lastSavedBy'] = user?.['username'];
834
- metaMetadata['lastSaveDate'] = luxon_1.DateTime.local().toISO();
1197
+ metaMetadata['lastSaveDate'] = luxon_1.DateTime.utc().toISO();
835
1198
  sails.log.verbose(`Calling record service...`);
836
1199
  sails.log.verbose(currentRec);
837
- return (0, rxjs_1.from)(this.recordsService.updateMeta(brand, oid, currentRec, user ?? {}));
1200
+ return (0, rxjs_1.from)(this.recordsService.updateMeta(brand, oid, currentRec, user ?? {}, true, true, {}, { metadata: currentRec.metadata, mode: 'pre-applied' }));
838
1201
  }
839
1202
  updateAuthorization(brand, oid, currentRec, user) {
840
1203
  const metaMetadata = currentRec['metaMetadata'];
@@ -843,57 +1206,53 @@ var Controllers;
843
1206
  }
844
1207
  return (0, rxjs_1.from)(this.recordsService.updateMeta(brand, oid, currentRec, user ?? {}));
845
1208
  }
846
- stepTo(req, res) {
1209
+ async stepTo(req, res) {
847
1210
  const brand = this.getReqBrand(req);
848
1211
  const metadata = req.body;
849
- const oid = req.param('oid');
850
- const targetStep = req.param('targetStep');
851
- let origRecord = null;
852
- return this.getRecord(oid).pipe((0, operators_1.mergeMap)(currentRec => {
853
- origRecord = _.cloneDeep(currentRec);
854
- return this.hasEditAccess(brand, req.user, currentRec)
855
- .pipe((0, operators_1.mergeMap)(hasEditAccess => {
856
- if (!hasEditAccess) {
857
- return (0, rxjs_1.throwError)(new Error(TranslationService.t('edit-error-no-permissions')));
858
- }
859
- return RecordTypesService.get(brand, origRecord.metaMetadata.type);
860
- }), (0, operators_1.mergeMap)(recType => {
861
- return WorkflowStepsService.get(recType, targetStep)
862
- .pipe((0, operators_1.mergeMap)(nextStep => {
863
- currentRec.metadata = metadata;
864
- sails.log.verbose("Current rec:");
865
- sails.log.verbose(currentRec);
866
- sails.log.verbose("Next step:");
867
- sails.log.verbose(nextStep);
868
- this.recordsService.setWorkflowStepRelatedMetadata(currentRec, nextStep);
869
- return this.updateMetadata(brand, oid, currentRec, req.user);
870
- }));
871
- }));
872
- }))
873
- .subscribe((response) => {
874
- const responseValue = response;
875
- return responseValue.subscribe((innerResp) => {
876
- const r = innerResp;
877
- sails.log.error(r);
878
- if (r && r.isSuccessful?.()) {
879
- r.success = true;
880
- this.sendResp(req, res, { data: r });
881
- }
882
- else {
883
- this.sendResp(req, res, {
884
- status: 500,
885
- meta: r,
886
- v1: r
887
- });
888
- }
889
- }, (error) => {
890
- this.sendResp(req, res, {
891
- errors: [this.asError(error)],
892
- displayErrors: [{ title: "Error updating meta", detail: error.message }],
893
- v1: error.message
894
- });
1212
+ const oid = this.requestString(req.params, 'oid') ?? '';
1213
+ const targetStep = this.requestString(req.params, 'targetStep');
1214
+ const parsedOperation = (0, RecordSaveResponse_1.parsePublicValidationOperation)(req.query?.operation);
1215
+ if (!parsedOperation.valid) {
1216
+ return this.sendResp(req, res, {
1217
+ status: 400,
1218
+ displayErrors: [{ code: 'record-validation-operation-invalid' }],
895
1219
  });
896
- });
1220
+ }
1221
+ const saveRequest = this.mutationSaveContext(req, oid, 'transition', parsedOperation.value, targetStep, true);
1222
+ if (!saveRequest.valid) {
1223
+ return this.sendConcurrencyRequestFailure(req, res, saveRequest);
1224
+ }
1225
+ try {
1226
+ const currentRec = await (0, rxjs_1.firstValueFrom)(this.getRecord(oid));
1227
+ if (!this.recordBelongsToBrand(currentRec, brand)) {
1228
+ return this.sendResp(req, res, { status: 404, displayErrors: [{ code: 'missing-record' }] });
1229
+ }
1230
+ const hasEditAccess = await (0, rxjs_1.firstValueFrom)(this.hasEditAccess(brand, req.user, currentRec));
1231
+ if (!hasEditAccess) {
1232
+ return this.sendResp(req, res, {
1233
+ status: 403,
1234
+ displayErrors: [{ code: 'not-authorised', detail: TranslationService.t('edit-error-no-permissions') }],
1235
+ });
1236
+ }
1237
+ const recordType = await (0, rxjs_1.firstValueFrom)(RecordTypesService.get(brand, currentRec.metaMetadata.type));
1238
+ const nextStep = await (0, rxjs_1.firstValueFrom)(WorkflowStepsService.get(recordType, targetStep ?? ''));
1239
+ const response = await this.recordsService.updateMeta(brand, oid, currentRec, req.user ?? {}, true, true, nextStep, { metadata, mode: 'replace' }, saveRequest.context);
1240
+ if (response.wasPersisted()) {
1241
+ return this.sendResp(req, res, {
1242
+ data: response,
1243
+ meta: { ...response },
1244
+ ...(this.getApiVersion(req) === '1.0' ? { v1: this.legacySaveBody(response) } : {}),
1245
+ headers: (0, RecordHttpConcurrency_1.recordSaveResultHeaders)(response),
1246
+ });
1247
+ }
1248
+ if (!(await this.projectSafeSaveFailure(req, brand, oid, response))) {
1249
+ return this.sendPrivateSaveFailure(req, res);
1250
+ }
1251
+ return this.sendSaveFailure(req, res, response, 'Error updating meta');
1252
+ }
1253
+ catch (error) {
1254
+ return this.sendUnexpectedSaveFailure(req, res, 'transition', error);
1255
+ }
897
1256
  }
898
1257
  async search(req, res) {
899
1258
  const brand = this.getReqBrand(req);
@@ -931,13 +1290,13 @@ var Controllers;
931
1290
  _.forEach(exactSearchNames, (exactSearch) => {
932
1291
  exactSearches.push({
933
1292
  name: exactSearch,
934
- value: req.query[`exact_${exactSearch}`]
1293
+ value: req.query[`exact_${exactSearch}`],
935
1294
  });
936
1295
  });
937
1296
  _.forEach(facetSearchNames, (facetSearch) => {
938
1297
  facetSearches.push({
939
1298
  name: facetSearch,
940
- value: req.query[`facet_${facetSearch}`]
1299
+ value: req.query[`facet_${facetSearch}`],
941
1300
  });
942
1301
  });
943
1302
  try {
@@ -962,7 +1321,7 @@ var Controllers;
962
1321
  const recordType = req.param('recordType');
963
1322
  const brand = this.getReqBrand(req);
964
1323
  RecordTypesService.get(brand, recordType).subscribe(recordType => {
965
- const recordTypeModel = new index_1.RecordTypeResponseModel(_.get(recordType, 'name'), _.get(recordType, 'packageType'), _.get(recordType, 'searchFilters'), _.get(recordType, 'searchable'), (0, recordtype_config_1.normalizeRecordRelations)(String(_.get(recordType, 'name', _.get(recordType, 'id', ''))), _.get(recordType, 'relatedTo')));
1324
+ const recordTypeModel = new index_1.RecordTypeResponseModel(_.get(recordType, 'name'), _.get(recordType, 'packageType'), _.get(recordType, 'searchFilters'), _.get(recordType, 'searchable'), (0, recordtype_config_1.normalizeRecordRelations)(String(_.get(recordType, 'name', _.get(recordType, 'id', ''))), _.get(recordType, 'relatedTo')), _.get(recordType, 'concurrentModification'));
966
1325
  this.sendResp(req, res, { data: recordTypeModel });
967
1326
  }, error => {
968
1327
  this.sendResp(req, res, {
@@ -980,7 +1339,7 @@ var Controllers;
980
1339
  RecordTypesService.getAll(brand).subscribe(recordTypes => {
981
1340
  const recordTypeModels = [];
982
1341
  for (const recType of recordTypes) {
983
- const recordTypeModel = new index_1.RecordTypeResponseModel(_.get(recType, 'name'), _.get(recType, 'packageType'), _.get(recType, 'searchFilters'), _.get(recType, 'searchable'), (0, recordtype_config_1.normalizeRecordRelations)(String(_.get(recType, 'name', '')), _.get(recType, 'relatedTo')));
1342
+ const recordTypeModel = new index_1.RecordTypeResponseModel(_.get(recType, 'name'), _.get(recType, 'packageType'), _.get(recType, 'searchFilters'), _.get(recType, 'searchable'), (0, recordtype_config_1.normalizeRecordRelations)(String(_.get(recType, 'name', '')), _.get(recType, 'relatedTo')), _.get(recType, 'concurrentModification'));
984
1343
  recordTypeModels.push(recordTypeModel);
985
1344
  }
986
1345
  this.sendResp(req, res, { data: recordTypeModels });
@@ -988,70 +1347,107 @@ var Controllers;
988
1347
  this.sendResp(req, res, { errors: [this.asError(error)], v1: error.message });
989
1348
  });
990
1349
  }
991
- getDashboardType(req, res) {
1350
+ async buildDashboardTypeResponse(brand, dashboardType) {
1351
+ const name = String(_.get(dashboardType, 'name', ''));
1352
+ return new index_1.DashboardTypeResponseModel({
1353
+ name,
1354
+ description: _.get(dashboardType, 'description'),
1355
+ formatRules: (await DashboardConfigService.getDashboardContext(brand, name)),
1356
+ searchable: _.get(dashboardType, 'searchable'),
1357
+ system: _.get(dashboardType, 'system'),
1358
+ });
1359
+ }
1360
+ sendDashboardConfigError(req, res, error) {
1361
+ const typed = error;
1362
+ if (typed?.status && typed?.code) {
1363
+ return this.sendResp(req, res, {
1364
+ status: typed.status,
1365
+ displayErrors: [{ status: String(typed.status), code: typed.code, detail: typed.message }],
1366
+ headers: this.getNoCacheHeaders(),
1367
+ });
1368
+ }
1369
+ return this.sendResp(req, res, { status: 500, errors: [this.asError(error)], headers: this.getNoCacheHeaders() });
1370
+ }
1371
+ async getDashboardType(req, res) {
992
1372
  const dashboardTypeParam = req.param('dashboardType') || '';
993
1373
  const brand = this.getReqBrand(req);
994
- DashboardTypesService.get(brand, dashboardTypeParam).subscribe(dashboardType => {
995
- const dashboardTypeModel = new index_1.DashboardTypeResponseModel({
996
- name: String(_.get(dashboardType, 'name', '')),
997
- description: _.get(dashboardType, 'description'),
998
- formatRules: (_.get(dashboardType, 'formatRules') ?? {}),
999
- tableConfig: _.get(dashboardType, 'tableConfig'),
1000
- searchable: _.get(dashboardType, 'searchable'),
1001
- system: _.get(dashboardType, 'system'),
1002
- });
1003
- this.sendResp(req, res, { data: dashboardTypeModel });
1004
- }, error => {
1005
- this.sendResp(req, res, { errors: [this.asError(error)], v1: error.message });
1006
- });
1374
+ try {
1375
+ const dashboardType = await (0, rxjs_1.firstValueFrom)(DashboardTypesService.get(brand, dashboardTypeParam));
1376
+ const data = await this.buildDashboardTypeResponse(brand, (dashboardType ?? { name: dashboardTypeParam }));
1377
+ return this.sendResp(req, res, { data });
1378
+ }
1379
+ catch (error) {
1380
+ return this.sendDashboardConfigError(req, res, error);
1381
+ }
1007
1382
  }
1008
1383
  isValidDashboardViewDefinition(dashboardView) {
1009
1384
  if (!dashboardView || !_.isObject(dashboardView)) {
1010
1385
  return false;
1011
1386
  }
1012
1387
  const view = dashboardView;
1013
- return _.isString(view.name)
1014
- && !_.isEmpty(view.name.trim())
1015
- && _.isString(view.titleLabelKey)
1016
- && !_.isEmpty(view.titleLabelKey.trim())
1017
- && _.isString(view.dashboardType)
1018
- && !_.isEmpty(view.dashboardType.trim())
1019
- && _.isString(view.sourceRecordType)
1020
- && !_.isEmpty(view.sourceRecordType.trim())
1021
- && _.isArray(view.steps)
1022
- && view.steps.length > 0
1023
- && view.steps.every((step) => {
1388
+ return (_.isString(view.name) &&
1389
+ !_.isEmpty(view.name.trim()) &&
1390
+ _.isString(view.titleLabelKey) &&
1391
+ !_.isEmpty(view.titleLabelKey.trim()) &&
1392
+ _.isString(view.dashboardType) &&
1393
+ !_.isEmpty(view.dashboardType.trim()) &&
1394
+ _.isString(view.sourceRecordType) &&
1395
+ !_.isEmpty(view.sourceRecordType.trim()) &&
1396
+ _.isArray(view.steps) &&
1397
+ view.steps.length > 0 &&
1398
+ view.steps.every(step => {
1024
1399
  const dashboardViewStep = step;
1025
- return _.isObject(step)
1026
- && _.isString(dashboardViewStep.name)
1027
- && !_.isEmpty(dashboardViewStep.name.trim())
1028
- && _.isString(dashboardViewStep.sourceRecordType)
1029
- && !_.isEmpty(dashboardViewStep.sourceRecordType.trim())
1030
- && (dashboardViewStep.fetchMode === 'allForRecordType' || dashboardViewStep.fetchMode === 'workflowStage')
1031
- && _.isObject(dashboardViewStep.dashboardTable);
1032
- });
1400
+ return (_.isObject(step) &&
1401
+ _.isString(dashboardViewStep.name) &&
1402
+ !_.isEmpty(dashboardViewStep.name.trim()) &&
1403
+ _.isString(dashboardViewStep.sourceRecordType) &&
1404
+ !_.isEmpty(dashboardViewStep.sourceRecordType.trim()) &&
1405
+ (dashboardViewStep.fetchMode === 'allForRecordType' || dashboardViewStep.fetchMode === 'workflowStage'));
1406
+ }));
1033
1407
  }
1034
- getAllDashboardTypes(req, res) {
1408
+ async getAllDashboardTypes(req, res) {
1035
1409
  const brand = this.getReqBrand(req);
1036
- DashboardTypesService.getAll(brand).subscribe(dashboardTypes => {
1037
- const dashboardTypesModel = { dashboardTypes: [] };
1038
- const dashboardTypesModelList = [];
1410
+ try {
1411
+ const dashboardTypes = await (0, rxjs_1.firstValueFrom)(DashboardTypesService.getAll(brand));
1412
+ const models = [];
1039
1413
  for (const dashboardType of dashboardTypes) {
1040
- const dashboardTypeModel = new index_1.DashboardTypeResponseModel({
1041
- name: String(_.get(dashboardType, 'name', '')),
1042
- description: _.get(dashboardType, 'description'),
1043
- formatRules: (_.get(dashboardType, 'formatRules') ?? {}),
1044
- tableConfig: _.get(dashboardType, 'tableConfig'),
1045
- searchable: _.get(dashboardType, 'searchable'),
1046
- system: _.get(dashboardType, 'system'),
1047
- });
1048
- dashboardTypesModelList.push(dashboardTypeModel);
1414
+ models.push(await this.buildDashboardTypeResponse(brand, dashboardType));
1049
1415
  }
1050
- _.set(dashboardTypesModel, 'dashboardTypes', dashboardTypesModelList);
1051
- this.sendResp(req, res, { data: dashboardTypesModel });
1052
- }, error => {
1053
- this.sendResp(req, res, { errors: [this.asError(error)], v1: error.message });
1054
- });
1416
+ return this.sendResp(req, res, { data: { dashboardTypes: models } });
1417
+ }
1418
+ catch (error) {
1419
+ return this.sendDashboardConfigError(req, res, error);
1420
+ }
1421
+ }
1422
+ /**
1423
+ * Independent settings for every stage of a record type, from one
1424
+ * configuration snapshot. Available to ordinary dashboard users.
1425
+ */
1426
+ async getDashboardWorkflowSettings(req, res) {
1427
+ const recordType = String(req.param('recordType') ?? '').trim();
1428
+ if (!recordType) {
1429
+ return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Record Type is required' }] });
1430
+ }
1431
+ try {
1432
+ const data = await DashboardConfigService.getRuntimeSettings(this.getReqBrand(req), 'workflow', recordType);
1433
+ return this.sendResp(req, res, { data, headers: this.getNoCacheHeaders() });
1434
+ }
1435
+ catch (error) {
1436
+ return this.sendDashboardConfigError(req, res, error);
1437
+ }
1438
+ }
1439
+ async getDashboardViewSettings(req, res) {
1440
+ const dashboardView = String(req.param('dashboardView') ?? '').trim();
1441
+ if (!this.isValidDashboardViewDefinition(DashboardTypesService.getDashboardView(dashboardView))) {
1442
+ return this.sendResp(req, res, { status: 404, displayErrors: [{ detail: 'Dashboard view provided is not valid' }] });
1443
+ }
1444
+ try {
1445
+ const data = await DashboardConfigService.getRuntimeSettings(this.getReqBrand(req), 'view', dashboardView);
1446
+ return this.sendResp(req, res, { data, headers: this.getNoCacheHeaders() });
1447
+ }
1448
+ catch (error) {
1449
+ return this.sendDashboardConfigError(req, res, error);
1450
+ }
1055
1451
  }
1056
1452
  getDashboardView(req, res) {
1057
1453
  const dashboardViewParam = String(req.param('dashboardView') ?? '').trim();
@@ -1061,7 +1457,10 @@ var Controllers;
1061
1457
  try {
1062
1458
  const dashboardView = DashboardTypesService.getDashboardView(dashboardViewParam);
1063
1459
  if (!this.isValidDashboardViewDefinition(dashboardView)) {
1064
- return this.sendResp(req, res, { status: 404, displayErrors: [{ detail: 'Dashboard view provided is not valid' }] });
1460
+ return this.sendResp(req, res, {
1461
+ status: 404,
1462
+ displayErrors: [{ detail: 'Dashboard view provided is not valid' }],
1463
+ });
1065
1464
  }
1066
1465
  return this.sendResp(req, res, { data: new index_1.DashboardViewResponseModel(dashboardView) });
1067
1466
  }
@@ -1153,9 +1552,7 @@ var Controllers;
1153
1552
  const brandPortalPrefix = BrandingService.getBrandAndPortalPath(req);
1154
1553
  const defaultAttachmentPrefix = `${brandPortalPrefix}/record/${oid}`;
1155
1554
  const companionAttachmentPrefix = `${brandPortalPrefix}/companion/record/${oid}`;
1156
- const prefix = [defaultAttachmentPrefix, companionAttachmentPrefix]
1157
- .find((candidatePrefix) => req.url.startsWith(candidatePrefix) || req.path.startsWith(candidatePrefix))
1158
- ?? defaultAttachmentPrefix;
1555
+ const prefix = [defaultAttachmentPrefix, companionAttachmentPrefix].find(candidatePrefix => req.url.startsWith(candidatePrefix) || req.path.startsWith(candidatePrefix)) ?? defaultAttachmentPrefix;
1159
1556
  const tusReq = req;
1160
1557
  tusReq._tusOriginalUrl = req.url;
1161
1558
  tusReq._tusBaseUrl = prefix;
@@ -1209,7 +1606,7 @@ var Controllers;
1209
1606
  return originalEnd();
1210
1607
  });
1211
1608
  }
1212
- if (oid == "pending-oid") {
1609
+ if (oid == 'pending-oid') {
1213
1610
  await this.tusServer.handle(req, res);
1214
1611
  return;
1215
1612
  }
@@ -1218,11 +1615,11 @@ var Controllers;
1218
1615
  if (method == 'get') {
1219
1616
  const hasViewAccess = await (0, rxjs_1.firstValueFrom)(this.hasViewAccess(brand, req.user, currentRec));
1220
1617
  if (!hasViewAccess) {
1221
- sails.log.error("Error: edit error no permissions in do attachment.");
1618
+ sails.log.error('Error: edit error no permissions in do attachment.');
1222
1619
  return this.sendResp(req, res, {
1223
1620
  status: 403,
1224
1621
  errors: [this.asError(new Error(TranslationService.t('edit-error-no-permissions')))],
1225
- displayErrors: [{ code: 'edit-error-no-permissions' }]
1622
+ displayErrors: [{ code: 'edit-error-no-permissions' }],
1226
1623
  });
1227
1624
  }
1228
1625
  // check if this attachId exists in the record
@@ -1230,9 +1627,10 @@ var Controllers;
1230
1627
  _.each(currentRec.metaMetadata.attachmentFields, (attField) => {
1231
1628
  if (!found) {
1232
1629
  const attFieldVal = currentRec.metadata[attField];
1233
- found = _.find(attFieldVal, (attVal) => {
1234
- return attVal['fileId'] == attachId;
1235
- }) ?? null;
1630
+ found =
1631
+ _.find(attFieldVal, (attVal) => {
1632
+ return attVal['fileId'] == attachId;
1633
+ }) ?? null;
1236
1634
  if (found) {
1237
1635
  return false;
1238
1636
  }
@@ -1240,14 +1638,14 @@ var Controllers;
1240
1638
  return undefined;
1241
1639
  });
1242
1640
  if (!found) {
1243
- sails.log.verbose("Error: Attachment not found in do attachment.");
1641
+ sails.log.verbose('Error: Attachment not found in do attachment.');
1244
1642
  if (!this.isAjax(req)) {
1245
1643
  return res.notFound();
1246
1644
  }
1247
1645
  return this.sendResp(req, res, {
1248
1646
  status: 404,
1249
1647
  errors: [this.asError(new Error(TranslationService.t('attachment-not-found')))],
1250
- displayErrors: [{ code: 'attachment-not-found' }]
1648
+ displayErrors: [{ code: 'attachment-not-found' }],
1251
1649
  });
1252
1650
  }
1253
1651
  let mimeType = found['mimeType'];
@@ -1256,17 +1654,29 @@ var Controllers;
1256
1654
  mimeType = 'application/octet-stream';
1257
1655
  }
1258
1656
  const size = found['size'];
1259
- sails.log.verbose("found.name " + found['name']);
1657
+ sails.log.verbose('found.name ' + found['name']);
1260
1658
  sails.log.verbose(`Returning datastream observable of ${oid}: ${found['name']}, attachId: ${attachId}`);
1261
1659
  try {
1262
- const response = await that.datastreamService.getDatastream(oid, attachId, { username: String(req.user?.username ?? '') || undefined });
1660
+ const response = await that.datastreamService.getDatastream(oid, attachId, {
1661
+ username: String(req.user?.username ?? '') || undefined,
1662
+ });
1263
1663
  res.set('Content-Type', mimeType);
1264
1664
  if (!_.isEmpty(size)) {
1265
1665
  res.set('Content-Length', size);
1266
1666
  }
1267
1667
  res.attachment(found['name']);
1268
1668
  if (response.readstream) {
1269
- response.readstream.pipe(res);
1669
+ // The client may have disconnected while getDatastream was pending.
1670
+ if (res.destroyed) {
1671
+ if ('destroy' in response.readstream && typeof response.readstream.destroy === 'function') {
1672
+ response.readstream.destroy();
1673
+ }
1674
+ else {
1675
+ response.readstream.resume();
1676
+ }
1677
+ return;
1678
+ }
1679
+ await (0, promises_1.pipeline)(response.readstream, res);
1270
1680
  }
1271
1681
  else {
1272
1682
  const body = response.body ?? '';
@@ -1276,18 +1686,33 @@ var Controllers;
1276
1686
  return (0, rxjs_1.of)(oid);
1277
1687
  }
1278
1688
  catch (error) {
1689
+ if (res.destroyed) {
1690
+ const code = error instanceof Error && 'code' in error ? error.code : undefined;
1691
+ if (code !== 'ERR_STREAM_PREMATURE_CLOSE' && code !== 'ABORT_ERR') {
1692
+ sails.log.error('Attachment download failed', error);
1693
+ }
1694
+ return;
1695
+ }
1279
1696
  const errorMessage = this.getErrorMessage(error);
1280
1697
  if (this.isAjax(req)) {
1281
1698
  return this.sendResp(req, res, { errors: [this.asError(error)], v1: errorMessage });
1282
1699
  }
1283
1700
  else if (errorMessage == TranslationService.t('edit-error-no-permissions')) {
1284
- return this.sendResp(req, res, { status: 403, errors: [this.asError(error)], displayErrors: [{ code: 'edit-error-no-permissions' }] });
1701
+ return this.sendResp(req, res, {
1702
+ status: 403,
1703
+ errors: [this.asError(error)],
1704
+ displayErrors: [{ code: 'edit-error-no-permissions' }],
1705
+ });
1285
1706
  }
1286
1707
  else if (errorMessage == TranslationService.t('attachment-not-found')) {
1287
1708
  if (!this.isAjax(req)) {
1288
1709
  return res.notFound();
1289
1710
  }
1290
- return this.sendResp(req, res, { status: 404, errors: [this.asError(error)], displayErrors: [{ code: 'attachment-not-found' }] });
1711
+ return this.sendResp(req, res, {
1712
+ status: 404,
1713
+ errors: [this.asError(error)],
1714
+ displayErrors: [{ code: 'attachment-not-found' }],
1715
+ });
1291
1716
  }
1292
1717
  else {
1293
1718
  return this.sendResp(req, res, { status: 500, errors: [this.asError(error)] });
@@ -1297,11 +1722,11 @@ var Controllers;
1297
1722
  else {
1298
1723
  const hasEditAccess = await (0, rxjs_1.firstValueFrom)(this.hasEditAccess(brand, req.user, currentRec));
1299
1724
  if (!hasEditAccess) {
1300
- sails.log.error("Error: edit error no permissions in do attachment.");
1725
+ sails.log.error('Error: edit error no permissions in do attachment.');
1301
1726
  return this.sendResp(req, res, {
1302
1727
  status: 403,
1303
1728
  errors: [this.asError(new Error(TranslationService.t('edit-error-no-permissions')))],
1304
- displayErrors: [{ code: 'edit-error-no-permissions' }]
1729
+ displayErrors: [{ code: 'edit-error-no-permissions' }],
1305
1730
  });
1306
1731
  }
1307
1732
  sails.log.verbose(req.headers);
@@ -1318,7 +1743,7 @@ var Controllers;
1318
1743
  sails.log.error(errorMessage + ' Total File Size ' + thresholdAppliedFileSize + ' Total Free Space ' + diskSpace.free);
1319
1744
  return this.sendResp(req, res, {
1320
1745
  status: 500,
1321
- errors: [this.asError(new Error(errorMessage))]
1746
+ errors: [this.asError(new Error(errorMessage))],
1322
1747
  });
1323
1748
  }
1324
1749
  }
@@ -1330,14 +1755,17 @@ var Controllers;
1330
1755
  async getWorkflowSteps(req, res) {
1331
1756
  const recordTypeName = req.param('recordType');
1332
1757
  const brand = this.getReqBrand(req);
1333
- const normalizedRecordTypeName = typeof recordTypeName === 'string' ? recordTypeName.trim() : "";
1758
+ const normalizedRecordTypeName = typeof recordTypeName === 'string' ? recordTypeName.trim() : '';
1334
1759
  if (!normalizedRecordTypeName) {
1335
1760
  return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Record Type is required' }] });
1336
1761
  }
1337
1762
  try {
1338
1763
  const recordType = await (0, rxjs_1.firstValueFrom)(RecordTypesService.get(brand, normalizedRecordTypeName));
1339
1764
  if (recordType == null) {
1340
- return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Record Type provided is not valid' }] });
1765
+ return this.sendResp(req, res, {
1766
+ status: 400,
1767
+ displayErrors: [{ detail: 'Record Type provided is not valid' }],
1768
+ });
1341
1769
  }
1342
1770
  const wfSteps = await (0, rxjs_1.firstValueFrom)(WorkflowStepsService.getAllForRecordType(recordType));
1343
1771
  return this.sendResp(req, res, { data: wfSteps });
@@ -1416,7 +1844,12 @@ var Controllers;
1416
1844
  });
1417
1845
  }
1418
1846
  const response = await this.recordsService.getResolvedPermissionsSummary(oid);
1419
- return this.sendResp(req, res, { data: response });
1847
+ const representation = (0, RecordHttpConcurrency_1.recordRepresentationConcurrency)(record);
1848
+ return this.sendResp(req, res, {
1849
+ data: response,
1850
+ meta: { oid: record.redboxOid, ...representation.metadata },
1851
+ headers: representation.headers,
1852
+ });
1420
1853
  }
1421
1854
  catch (error) {
1422
1855
  return this.sendResp(req, res, {
@@ -1442,7 +1875,9 @@ var Controllers;
1442
1875
  displayErrors: [{ code: 'error-403-heading' }],
1443
1876
  });
1444
1877
  }
1445
- const attachments = await this.recordsService.getAttachments(oid, undefined, { username: String(req.user?.username ?? '') || undefined });
1878
+ const attachments = await this.recordsService.getAttachments(oid, undefined, {
1879
+ username: String(req.user?.username ?? '') || undefined,
1880
+ });
1446
1881
  return this.sendResp(req, res, { data: attachments });
1447
1882
  }
1448
1883
  catch (error) {
@@ -1466,13 +1901,25 @@ var Controllers;
1466
1901
  else {
1467
1902
  const fileName = req.param('fileName') ? req.param('fileName') : datastreamId;
1468
1903
  res.set('Content-Type', 'application/octet-stream');
1469
- sails.log.verbose("fileName " + fileName);
1904
+ sails.log.verbose('fileName ' + fileName);
1470
1905
  res.attachment(fileName);
1471
1906
  sails.log.verbose(`Returning datastream observable of ${oid}: ${fileName}, datastreamId: ${datastreamId}`);
1472
1907
  try {
1473
- const response = await this.datastreamService.getDatastream(oid, datastreamId, { username: String(req.user?.username ?? '') || undefined });
1908
+ const response = await this.datastreamService.getDatastream(oid, datastreamId, {
1909
+ username: String(req.user?.username ?? '') || undefined,
1910
+ });
1474
1911
  if (response.readstream) {
1475
- response.readstream.pipe(res);
1912
+ // The client may have disconnected while getDatastream was pending.
1913
+ if (res.destroyed) {
1914
+ if ('destroy' in response.readstream && typeof response.readstream.destroy === 'function') {
1915
+ response.readstream.destroy();
1916
+ }
1917
+ else {
1918
+ response.readstream.resume();
1919
+ }
1920
+ return;
1921
+ }
1922
+ await (0, promises_1.pipeline)(response.readstream, res);
1476
1923
  }
1477
1924
  else {
1478
1925
  const body = response.body ?? '';
@@ -1482,15 +1929,30 @@ var Controllers;
1482
1929
  return (0, rxjs_1.of)(oid);
1483
1930
  }
1484
1931
  catch (error) {
1932
+ if (res.destroyed) {
1933
+ const code = error instanceof Error && 'code' in error ? error.code : undefined;
1934
+ if (code !== 'ERR_STREAM_PREMATURE_CLOSE' && code !== 'ABORT_ERR') {
1935
+ sails.log.error('Attachment download failed', error);
1936
+ }
1937
+ return;
1938
+ }
1485
1939
  const errorMessage = this.getErrorMessage(error);
1486
1940
  if (this.isAjax(req)) {
1487
1941
  return this.sendResp(req, res, { errors: [this.asError(error)], v1: errorMessage });
1488
1942
  }
1489
1943
  else if (errorMessage == TranslationService.t('edit-error-no-permissions')) {
1490
- return this.sendResp(req, res, { status: 403, errors: [this.asError(error)], displayErrors: [{ code: 'edit-error-no-permissions' }] });
1944
+ return this.sendResp(req, res, {
1945
+ status: 403,
1946
+ errors: [this.asError(error)],
1947
+ displayErrors: [{ code: 'edit-error-no-permissions' }],
1948
+ });
1491
1949
  }
1492
1950
  else if (errorMessage == TranslationService.t('attachment-not-found')) {
1493
- return this.sendResp(req, res, { status: 404, errors: [this.asError(error)], displayErrors: [{ code: 'attachment-not-found' }] });
1951
+ return this.sendResp(req, res, {
1952
+ status: 404,
1953
+ errors: [this.asError(error)],
1954
+ displayErrors: [{ code: 'attachment-not-found' }],
1955
+ });
1494
1956
  }
1495
1957
  else {
1496
1958
  return this.sendResp(req, res, { status: 500, errors: [this.asError(error)] });
@@ -1513,7 +1975,9 @@ var Controllers;
1513
1975
  let packageType = req.param('packageType') ? req.param('packageType') : '';
1514
1976
  let dashboardType = req.param('dashboardType') ? req.param('dashboardType') : 'standard';
1515
1977
  const locals = req.options?.locals;
1516
- let titleLabel = req.param('titleLabel') ? this.translate(req.param('titleLabel'), locals) : `${this.translate('edit-dashboard', locals)} ${this.translate(recordType + '-title-label', locals)}`;
1978
+ let titleLabel = req.param('titleLabel')
1979
+ ? this.translate(req.param('titleLabel'), locals)
1980
+ : `${this.translate('edit-dashboard', locals)} ${this.translate(recordType + '-title-label', locals)}`;
1517
1981
  if (recordType == 'workspace') {
1518
1982
  if (packageType == '') {
1519
1983
  packageType = 'workspace';
@@ -1555,7 +2019,10 @@ var Controllers;
1555
2019
  }
1556
2020
  const dashboardView = DashboardTypesService.getDashboardView(dashboardViewName);
1557
2021
  if (!this.isValidDashboardViewDefinition(dashboardView)) {
1558
- return this.sendResp(req, res, { status: 404, displayErrors: [{ detail: 'Dashboard view provided is not valid' }] });
2022
+ return this.sendResp(req, res, {
2023
+ status: 404,
2024
+ displayErrors: [{ detail: 'Dashboard view provided is not valid' }],
2025
+ });
1559
2026
  }
1560
2027
  const titleLabel = this.translate(dashboardView.titleLabelKey || dashboardView.name, locals);
1561
2028
  return this.sendView(req, res, 'dashboard', {
@@ -1575,7 +2042,7 @@ var Controllers;
1575
2042
  const brand = this.getReqBrand(req);
1576
2043
  const editAccessOnly = req.query.editOnly;
1577
2044
  let roles = [];
1578
- let username = "guest";
2045
+ let username = 'guest';
1579
2046
  let user = {};
1580
2047
  if (req.isAuthenticated()) {
1581
2048
  roles = (req.user['roles'] ?? []);
@@ -1635,8 +2102,8 @@ var Controllers;
1635
2102
  const errorMessage = this.getErrorMessage(error);
1636
2103
  this.sendResp(req, res, {
1637
2104
  errors: [this.asError(error)],
1638
- displayErrors: [{ title: "Error updating meta", detail: errorMessage }],
1639
- v1: errorMessage
2105
+ displayErrors: [{ title: 'Error updating meta', detail: errorMessage }],
2106
+ v1: errorMessage,
1640
2107
  });
1641
2108
  }
1642
2109
  }
@@ -1644,7 +2111,7 @@ var Controllers;
1644
2111
  const brand = this.getReqBrand(req);
1645
2112
  const editAccessOnly = req.query.editOnly;
1646
2113
  let roles = [];
1647
- let username = "guest";
2114
+ let username = 'guest';
1648
2115
  let user = {};
1649
2116
  if (req.isAuthenticated()) {
1650
2117
  roles = (req.user['roles'] ?? []);
@@ -1700,8 +2167,8 @@ var Controllers;
1700
2167
  const errorMessage = this.getErrorMessage(error);
1701
2168
  this.sendResp(req, res, {
1702
2169
  errors: [this.asError(error)],
1703
- displayErrors: [{ title: "Error updating meta", detail: errorMessage }],
1704
- v1: errorMessage
2170
+ displayErrors: [{ title: 'Error updating meta', detail: errorMessage }],
2171
+ v1: errorMessage,
1705
2172
  });
1706
2173
  }
1707
2174
  }
@@ -1736,26 +2203,27 @@ var Controllers;
1736
2203
  const totalItems = results.totalItems;
1737
2204
  const startIndex = start;
1738
2205
  const noItems = rows;
1739
- const pageNumber = (startIndex / noItems) + 1;
2206
+ const pageNumber = startIndex / noItems + 1;
1740
2207
  const response = {};
1741
- response["totalItems"] = totalItems;
1742
- response["currentPage"] = pageNumber;
1743
- response["noItems"] = noItems;
2208
+ response['totalItems'] = totalItems;
2209
+ response['currentPage'] = pageNumber;
2210
+ response['noItems'] = noItems;
1744
2211
  const items = [];
1745
2212
  const docs = results.items;
1746
2213
  for (let i = 0; i < docs.length; i++) {
1747
2214
  const doc = docs[i];
1748
2215
  const item = {};
1749
- item["oid"] = doc["redboxOid"];
1750
- const docMetadata = (doc["metadata"] ?? {});
1751
- item["title"] = docMetadata["title"];
1752
- item["metadata"] = this.getDocMetadata(doc);
1753
- item["dateCreated"] = doc["dateCreated"];
1754
- item["dateModified"] = doc["lastSaveDate"];
1755
- item["hasEditAccess"] = this.recordsService.hasEditAccess(brand, user, roles, doc);
2216
+ item['oid'] = doc['redboxOid'];
2217
+ item['revision'] = (0, RecordHttpConcurrency_1.recordRepresentationRevision)(doc);
2218
+ const docMetadata = (doc['metadata'] ?? {});
2219
+ item['title'] = docMetadata['title'];
2220
+ item['metadata'] = this.getDocMetadata(doc);
2221
+ item['dateCreated'] = doc['dateCreated'];
2222
+ item['dateModified'] = doc['lastSaveDate'];
2223
+ item['hasEditAccess'] = this.recordsService.hasEditAccess(brand, user, roles, doc);
1756
2224
  items.push(item);
1757
2225
  }
1758
- response["items"] = items;
2226
+ response['items'] = items;
1759
2227
  return response;
1760
2228
  }
1761
2229
  async getDeletedRecords(workflowState, recordType, start, rows, user, roles, brand, editAccessOnly = undefined, packageType = undefined, sort = undefined, filterFields = undefined, filterString = undefined, filterMode = undefined) {
@@ -1774,41 +2242,41 @@ var Controllers;
1774
2242
  const totalItems = results.totalItems;
1775
2243
  const startIndex = start;
1776
2244
  const noItems = rows;
1777
- const pageNumber = (startIndex / noItems) + 1;
2245
+ const pageNumber = startIndex / noItems + 1;
1778
2246
  const response = {};
1779
- response["totalItems"] = totalItems;
1780
- response["currentPage"] = pageNumber;
1781
- response["noItems"] = noItems;
2247
+ response['totalItems'] = totalItems;
2248
+ response['currentPage'] = pageNumber;
2249
+ response['noItems'] = noItems;
1782
2250
  const items = [];
1783
2251
  const docs = results.items;
1784
2252
  for (let i = 0; i < docs.length; i++) {
1785
2253
  const doc = docs[i];
1786
2254
  const item = {};
1787
- const delRecordMeta = (doc["deletedRecordMetadata"] ?? {});
1788
- item["oid"] = doc["redboxOid"];
1789
- const delRecordMetadata = (delRecordMeta["metadata"] ?? {});
1790
- item["title"] = delRecordMetadata["title"];
1791
- item["dateCreated"] = delRecordMeta["dateCreated"];
1792
- item["dateModified"] = delRecordMeta["lastSaveDate"];
1793
- item["dateDeleted"] = doc["dateDeleted"];
2255
+ const delRecordMeta = (doc['deletedRecordMetadata'] ?? {});
2256
+ item['oid'] = doc['redboxOid'];
2257
+ item['revision'] = (0, RecordHttpConcurrency_1.recordRepresentationRevision)(doc);
2258
+ item['lifecycleState'] = doc['lifecycleState'] ?? 'deleted';
2259
+ const lifecycleOperation = (doc['lifecycleOperation'] ?? {});
2260
+ if (Object.keys(lifecycleOperation).length > 0) {
2261
+ item['lifecycle'] = {
2262
+ kind: lifecycleOperation['kind'],
2263
+ attempts: lifecycleOperation['attempts'],
2264
+ startedAt: lifecycleOperation['startedAt'],
2265
+ updatedAt: lifecycleOperation['updatedAt'],
2266
+ ...(lifecycleOperation['errorCode'] ? { errorCode: lifecycleOperation['errorCode'] } : {}),
2267
+ };
2268
+ }
2269
+ const delRecordMetadata = (delRecordMeta['metadata'] ?? {});
2270
+ item['title'] = delRecordMetadata['title'];
2271
+ item['dateCreated'] = delRecordMeta['dateCreated'];
2272
+ item['dateModified'] = delRecordMeta['lastSaveDate'];
2273
+ item['dateDeleted'] = doc['dateDeleted'];
1794
2274
  items.push(item);
1795
2275
  }
1796
- response["items"] = items;
2276
+ response['items'] = items;
1797
2277
  return response;
1798
2278
  }
1799
- mergeRecordMetadata(currentMetadata, newMetadata) {
1800
- // Merge the current and new metadata into a new object, replacing the current metadata property values with the new property values.
1801
- return _.mergeWith({}, currentMetadata, newMetadata, (objValue, srcValue) => {
1802
- if (Array.isArray(objValue)) {
1803
- // Merge behavior for arrays is to replace the existing array with the new array.
1804
- // This has the implicit assumption that arrays are complete, not partial.
1805
- // This makes more sense than concatenating because usually an array will contain all items, not a subset of the items.
1806
- return srcValue;
1807
- }
1808
- return undefined;
1809
- });
1810
- }
1811
2279
  }
1812
2280
  Controllers.Record = Record;
1813
2281
  })(Controllers || (exports.Controllers = Controllers = {}));
1814
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkQ29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVycy9SZWNvcmRDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwRkFBMEY7QUFDMUYsRUFBRTtBQUNGLDZCQUE2QjtBQUM3QiwwQkFBMEI7QUFDMUIsRUFBRTtBQUNGLHVFQUF1RTtBQUN2RSx1RUFBdUU7QUFDdkUsb0VBQW9FO0FBQ3BFLHNDQUFzQztBQUN0QyxFQUFFO0FBQ0Ysa0VBQWtFO0FBQ2xFLGlFQUFpRTtBQUNqRSxnRUFBZ0U7QUFDaEUsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiwwRUFBMEU7QUFDMUUsMEVBQTBFO0FBQzFFLDhEQUE4RDs7Ozs7O0FBRTlELCtCQUVjO0FBQ2QsOENBQTBEO0FBQzFELG9DQWFrQjtBQUNsQixpQ0FBaUM7QUFDakMsd0NBQTBEO0FBRTFELHdFQUE2RDtBQUU3RCw0RUFBeUU7QUFFekUsbUVBQXVFO0FBSXZFLHNGQUFtRjtBQVluRjs7R0FFRztBQUVILElBQWlCLFdBQVcsQ0E0NEQzQjtBQTU0REQsV0FBaUIsV0FBVztJQUMxQjs7Ozs7Ozs7T0FRRztJQUNILE1BQWEsTUFBTyxTQUFRLG1CQUFXLENBQUMsSUFBSSxDQUFDLFVBQVU7UUFFckQsY0FBYyxDQUFrQjtRQUNoQyxhQUFhLENBQWlCO1FBQzlCLGlCQUFpQixDQUFxQjtRQUUvQixJQUFJO1lBQ1QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQTJDLENBQUM7WUFDakYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBOEMsQ0FBQztZQUV2RixNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixFQUFFLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUN0RyxNQUFN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
2282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkQ29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVycy9SZWNvcmRDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwRkFBMEY7QUFDMUYsRUFBRTtBQUNGLDZCQUE2QjtBQUM3QiwwQkFBMEI7QUFDMUIsRUFBRTtBQUNGLHVFQUF1RTtBQUN2RSx1RUFBdUU7QUFDdkUsb0VBQW9FO0FBQ3BFLHNDQUFzQztBQUN0QyxFQUFFO0FBQ0Ysa0VBQWtFO0FBQ2xFLGlFQUFpRTtBQUNqRSxnRUFBZ0U7QUFDaEUsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiwwRUFBMEU7QUFDMUUsMEVBQTBFO0FBQzFFLDhEQUE4RDs7Ozs7O0FBRTlELG1EQUFnRDtBQUNoRCwrQkFBd0U7QUFDeEUsOENBQTBEO0FBQzFELG9DQWNrQjtBQUNsQixpQ0FBaUM7QUFDakMsd0NBQTBEO0FBRTFELHdFQUE2RDtBQUU3RCw0RUFBeUU7QUFFekUsbUVBQXVFO0FBR3ZFLHNGQUFtRjtBQUVuRiw4REFVK0I7QUFFL0Isb0VBT2tDO0FBZ0JsQzs7R0FFRztBQUVILElBQWlCLFdBQVcsQ0E4dEYzQjtBQTl0RkQsV0FBaUIsV0FBVztJQUMxQjs7Ozs7Ozs7T0FRRztJQUNILE1BQWEsTUFBTyxTQUFRLG1CQUFXLENBQUMsSUFBSSxDQUFDLFVBQVU7UUFDckQsY0FBYyxDQUFrQjtRQUNoQyxhQUFhLENBQWlCO1FBQzlCLGlCQUFpQixDQUFxQjtRQUUvQixJQUFJO1lBQ1QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQTJDLENBQUM7WUFDakYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBOEMsQ0FBQztZQUV2RixNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUNwQixPQUFPLEVBQ1AsQ0FBQywyQkFBMkIs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