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

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 (609) hide show
  1. package/dist/CoreController.d.ts +3 -7
  2. package/dist/CoreController.d.ts.map +1 -1
  3. package/dist/CoreController.js +3 -85
  4. package/dist/DatastreamService.d.ts +2 -4
  5. package/dist/DatastreamService.d.ts.map +1 -1
  6. package/dist/HarvestRunService.d.ts +3 -4
  7. package/dist/HarvestRunService.d.ts.map +1 -1
  8. package/dist/HarvestRunService.js +1 -1
  9. package/dist/QueueService.d.ts +1 -1
  10. package/dist/QueueService.d.ts.map +1 -1
  11. package/dist/RecordWriteOptions.d.ts +21 -0
  12. package/dist/RecordWriteOptions.d.ts.map +1 -0
  13. package/dist/RecordWriteOptions.js +17 -0
  14. package/dist/RecordsService.d.ts +14 -105
  15. package/dist/RecordsService.d.ts.map +1 -1
  16. package/dist/RecordsService.js +1 -44
  17. package/dist/SearchService.d.ts +1 -2
  18. package/dist/SearchService.d.ts.map +1 -1
  19. package/dist/StorageService.d.ts +20 -48
  20. package/dist/StorageService.d.ts.map +1 -1
  21. package/dist/StorageService.js +1 -19
  22. package/dist/StorageServiceResponse.d.ts +1 -22
  23. package/dist/StorageServiceResponse.d.ts.map +1 -1
  24. package/dist/StorageServiceResponse.js +4 -22
  25. package/dist/api-routes/groups/branding.d.ts +0 -8
  26. package/dist/api-routes/groups/branding.d.ts.map +1 -1
  27. package/dist/api-routes/groups/branding.js +11 -86
  28. package/dist/api-routes/groups/dashboard-config.d.ts +9 -12
  29. package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -1
  30. package/dist/api-routes/groups/dashboard-config.js +73 -136
  31. package/dist/api-routes/groups/forms.d.ts.map +1 -1
  32. package/dist/api-routes/groups/forms.js +2 -10
  33. package/dist/api-routes/groups/records.d.ts +0 -1
  34. package/dist/api-routes/groups/records.d.ts.map +1 -1
  35. package/dist/api-routes/groups/records.js +26 -141
  36. package/dist/api-routes/index.d.ts +0 -3
  37. package/dist/api-routes/index.d.ts.map +1 -1
  38. package/dist/api-routes/index.js +1 -4
  39. package/dist/api-routes/openapi.d.ts.map +1 -1
  40. package/dist/api-routes/openapi.js +5 -7
  41. package/dist/api-routes/request-extraction.d.ts.map +1 -1
  42. package/dist/api-routes/request-extraction.js +8 -10
  43. package/dist/api-routes/route-factory.d.ts.map +1 -1
  44. package/dist/api-routes/route-factory.js +1 -2
  45. package/dist/api-routes/route-registry.d.ts.map +1 -1
  46. package/dist/api-routes/route-registry.js +1 -3
  47. package/dist/api-routes/schemas/common.d.ts +0 -36
  48. package/dist/api-routes/schemas/common.d.ts.map +1 -1
  49. package/dist/api-routes/schemas/common.js +5 -95
  50. package/dist/api-routes/schemas/responses.d.ts +1 -1424
  51. package/dist/api-routes/schemas/responses.d.ts.map +1 -1
  52. package/dist/api-routes/schemas/responses.js +60 -382
  53. package/dist/api-routes/types.d.ts +0 -1
  54. package/dist/api-routes/types.d.ts.map +1 -1
  55. package/dist/api-routes/validation.d.ts +1 -5
  56. package/dist/api-routes/validation.d.ts.map +1 -1
  57. package/dist/api-routes/validation.js +15 -14
  58. package/dist/bootstrap.d.ts +1 -3
  59. package/dist/bootstrap.d.ts.map +1 -1
  60. package/dist/bootstrap.js +41 -58
  61. package/dist/config/agendaQueue.config.d.ts +0 -3
  62. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  63. package/dist/config/agendaQueue.config.js +11 -29
  64. package/dist/config/branding.config.d.ts +0 -13
  65. package/dist/config/branding.config.d.ts.map +1 -1
  66. package/dist/config/branding.config.js +2 -34
  67. package/dist/config/brandingConfigurationDefaults.config.d.ts +0 -4
  68. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  69. package/dist/config/brandingConfigurationDefaults.config.js +3 -42
  70. package/dist/config/datapubs.config.d.ts +72 -0
  71. package/dist/config/datapubs.config.d.ts.map +1 -0
  72. package/dist/config/datapubs.config.js +74 -0
  73. package/dist/config/i18n.config.d.ts +4 -0
  74. package/dist/config/i18n.config.d.ts.map +1 -1
  75. package/dist/config/i18n.config.js +1 -1
  76. package/dist/config/index.d.ts +4 -12
  77. package/dist/config/index.d.ts.map +1 -1
  78. package/dist/config/index.js +4 -7
  79. package/dist/config/policies.config.d.ts.map +1 -1
  80. package/dist/config/policies.config.js +23 -37
  81. package/dist/config/raid.config.d.ts +4 -7
  82. package/dist/config/raid.config.d.ts.map +1 -1
  83. package/dist/config/raid.config.js +35 -21
  84. package/dist/config/record.config.d.ts +0 -3
  85. package/dist/config/record.config.d.ts.map +1 -1
  86. package/dist/config/record.config.js +35 -37
  87. package/dist/config/recordtype.config.d.ts +9 -32
  88. package/dist/config/recordtype.config.d.ts.map +1 -1
  89. package/dist/config/recordtype.config.js +7 -4
  90. package/dist/config/routes.config.d.ts.map +1 -1
  91. package/dist/config/routes.config.js +53 -135
  92. package/dist/config/workflow.config.d.ts +0 -6
  93. package/dist/config/workflow.config.d.ts.map +1 -1
  94. package/dist/config/workflow.config.js +1 -1
  95. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  96. package/dist/configmodels/AdminSidebarConfig.js +2 -4
  97. package/dist/configmodels/ConfigModels.d.ts +1 -1
  98. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  99. package/dist/configmodels/ConfigModels.js +9 -26
  100. package/dist/configmodels/FigsharePublishing.d.ts +103 -0
  101. package/dist/configmodels/FigsharePublishing.d.ts.map +1 -1
  102. package/dist/configmodels/FigsharePublishing.js +36 -2
  103. package/dist/controllers/AppConfigController.d.ts.map +1 -1
  104. package/dist/controllers/AppConfigController.js +1 -4
  105. package/dist/controllers/BrandingAppController.d.ts +7 -29
  106. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  107. package/dist/controllers/BrandingAppController.js +69 -265
  108. package/dist/controllers/BrandingController.d.ts +1 -24
  109. package/dist/controllers/BrandingController.d.ts.map +1 -1
  110. package/dist/controllers/BrandingController.js +43 -173
  111. package/dist/controllers/DashboardConfigController.d.ts +2 -6
  112. package/dist/controllers/DashboardConfigController.d.ts.map +1 -1
  113. package/dist/controllers/DashboardConfigController.js +4 -18
  114. package/dist/controllers/DynamicAssetController.d.ts +5 -7
  115. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  116. package/dist/controllers/DynamicAssetController.js +12 -21
  117. package/dist/controllers/RecordAuditController.d.ts.map +1 -1
  118. package/dist/controllers/RecordAuditController.js +24 -6
  119. package/dist/controllers/RecordController.d.ts +4 -45
  120. package/dist/controllers/RecordController.d.ts.map +1 -1
  121. package/dist/controllers/RecordController.js +345 -778
  122. package/dist/controllers/index.d.ts.map +1 -1
  123. package/dist/controllers/index.js +1 -4
  124. package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
  125. package/dist/controllers/webservice/AdminController.js +3 -4
  126. package/dist/controllers/webservice/BrandingController.d.ts +1 -26
  127. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  128. package/dist/controllers/webservice/BrandingController.js +116 -292
  129. package/dist/controllers/webservice/DashboardConfigController.d.ts +17 -25
  130. package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -1
  131. package/dist/controllers/webservice/DashboardConfigController.js +205 -90
  132. package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
  133. package/dist/controllers/webservice/FormManagementController.js +3 -37
  134. package/dist/controllers/webservice/RecordController.d.ts +1 -15
  135. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  136. package/dist/controllers/webservice/RecordController.js +267 -647
  137. package/dist/controllers/webservice/RecordTypeController.d.ts +1 -6
  138. package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
  139. package/dist/controllers/webservice/RecordTypeController.js +3 -21
  140. package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
  141. package/dist/controllers/webservice/SearchController.js +3 -7
  142. package/dist/hooks/defineRedboxHook.d.ts +0 -3
  143. package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
  144. package/dist/hooks/defineRedboxHook.js +1 -4
  145. package/dist/index.d.ts +25 -50
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +4 -90
  148. package/dist/loader/bootstrapShimRuntime.d.ts +1 -1
  149. package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -1
  150. package/dist/loader/bootstrapShimRuntime.js +12 -20
  151. package/dist/loader/index.d.ts +0 -9
  152. package/dist/loader/index.d.ts.map +1 -1
  153. package/dist/loader/index.js +4 -93
  154. package/dist/model/BuildResponse.d.ts +11 -25
  155. package/dist/model/BuildResponse.d.ts.map +1 -1
  156. package/dist/model/BuildResponse.js +3 -4
  157. package/dist/model/DashboardTypeResponseModel.d.ts +0 -6
  158. package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
  159. package/dist/model/DashboardTypeResponseModel.js +1 -7
  160. package/dist/model/DashboardViewResponseModel.d.ts +1 -5
  161. package/dist/model/DashboardViewResponseModel.d.ts.map +1 -1
  162. package/dist/model/DashboardViewResponseModel.js +3 -6
  163. package/dist/model/RBValidationError.d.ts +0 -17
  164. package/dist/model/RBValidationError.d.ts.map +1 -1
  165. package/dist/model/RBValidationError.js +1 -37
  166. package/dist/model/RecordTypeResponseModel.d.ts +4 -12
  167. package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
  168. package/dist/model/RecordTypeResponseModel.js +2 -11
  169. package/dist/model/index.d.ts +1 -5
  170. package/dist/model/index.d.ts.map +1 -1
  171. package/dist/model/index.js +2 -5
  172. package/dist/model/storage/BrandingModel.d.ts +0 -7
  173. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  174. package/dist/model/storage/BrandingModel.js +1 -7
  175. package/dist/model/storage/DeletedRecordModel.d.ts +0 -35
  176. package/dist/model/storage/DeletedRecordModel.d.ts.map +1 -1
  177. package/dist/model/storage/DeletedRecordModel.js +1 -62
  178. package/dist/model/storage/FigshareSyncModel.d.ts +126 -0
  179. package/dist/model/storage/FigshareSyncModel.d.ts.map +1 -0
  180. package/dist/model/storage/FigshareSyncModel.js +3 -0
  181. package/dist/model/storage/IntegrationAuditModel.d.ts +2 -16
  182. package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
  183. package/dist/model/storage/IntegrationAuditModel.js +1 -15
  184. package/dist/model/storage/RecordAuditModel.d.ts +4 -11
  185. package/dist/model/storage/RecordAuditModel.d.ts.map +1 -1
  186. package/dist/model/storage/RecordAuditModel.js +30 -8
  187. package/dist/model/storage/RecordModel.d.ts +3 -6
  188. package/dist/model/storage/RecordModel.d.ts.map +1 -1
  189. package/dist/model/storage/RecordTypeModel.d.ts +0 -6
  190. package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
  191. package/dist/model/storage/RecordTypeModel.js +1 -4
  192. package/dist/model/storage/index.d.ts +10 -12
  193. package/dist/model/storage/index.d.ts.map +1 -1
  194. package/dist/model/storage/index.js +2 -24
  195. package/dist/policies/checkAuth.d.ts +6 -2
  196. package/dist/policies/checkAuth.d.ts.map +1 -1
  197. package/dist/policies/checkAuth.js +9 -32
  198. package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
  199. package/dist/policies/contentSecurityPolicy.js +2 -85
  200. package/dist/policies/index.d.ts +2 -3
  201. package/dist/policies/index.d.ts.map +1 -1
  202. package/dist/policies/index.js +2 -4
  203. package/dist/policies/validateApiContractRequest.d.ts.map +1 -1
  204. package/dist/policies/validateApiContractRequest.js +11 -49
  205. package/dist/services/AgendaQueueService.d.ts +1 -1
  206. package/dist/services/AgendaQueueService.d.ts.map +1 -1
  207. package/dist/services/AgendaQueueService.js +7 -4
  208. package/dist/services/AppConfigService.d.ts +0 -6
  209. package/dist/services/AppConfigService.d.ts.map +1 -1
  210. package/dist/services/AppConfigService.js +1 -23
  211. package/dist/services/AttachmentMetadataService.d.ts +0 -58
  212. package/dist/services/AttachmentMetadataService.d.ts.map +1 -1
  213. package/dist/services/AttachmentMetadataService.js +8 -643
  214. package/dist/services/BrandingLogoService.d.ts +1 -6
  215. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  216. package/dist/services/BrandingLogoService.js +9 -77
  217. package/dist/services/BrandingService.d.ts +9 -171
  218. package/dist/services/BrandingService.d.ts.map +1 -1
  219. package/dist/services/BrandingService.js +68 -572
  220. package/dist/services/BrandingThemeCssService.d.ts +1 -17
  221. package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
  222. package/dist/services/BrandingThemeCssService.js +9 -71
  223. package/dist/services/DashboardConfigService.d.ts +54 -214
  224. package/dist/services/DashboardConfigService.d.ts.map +1 -1
  225. package/dist/services/DashboardConfigService.js +261 -829
  226. package/dist/services/DashboardTypesService.d.ts +4 -15
  227. package/dist/services/DashboardTypesService.d.ts.map +1 -1
  228. package/dist/services/DashboardTypesService.js +139 -72
  229. package/dist/services/DoiService.d.ts +1 -1
  230. package/dist/services/DoiService.d.ts.map +1 -1
  231. package/dist/services/DoiService.js +45 -71
  232. package/dist/services/FigshareService.d.ts +15 -10
  233. package/dist/services/FigshareService.d.ts.map +1 -1
  234. package/dist/services/FigshareService.js +82 -583
  235. package/dist/services/FormRecordConsistencyService.d.ts +23 -8
  236. package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
  237. package/dist/services/FormRecordConsistencyService.js +70 -54
  238. package/dist/services/FormsService.d.ts +2 -91
  239. package/dist/services/FormsService.d.ts.map +1 -1
  240. package/dist/services/FormsService.js +64 -324
  241. package/dist/services/HarvestRunService.d.ts +3 -6
  242. package/dist/services/HarvestRunService.d.ts.map +1 -1
  243. package/dist/services/HarvestRunService.js +97 -161
  244. package/dist/services/I18nEntriesService.d.ts +2 -1
  245. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  246. package/dist/services/I18nEntriesService.js +45 -30
  247. package/dist/services/OniService.d.ts +62 -19
  248. package/dist/services/OniService.d.ts.map +1 -1
  249. package/dist/services/OniService.js +691 -223
  250. package/dist/services/RDMPService.d.ts +1 -1
  251. package/dist/services/RDMPService.d.ts.map +1 -1
  252. package/dist/services/RDMPService.js +5 -5
  253. package/dist/services/RaidService.d.ts +61 -19
  254. package/dist/services/RaidService.d.ts.map +1 -1
  255. package/dist/services/RaidService.js +530 -191
  256. package/dist/services/RecordTypesService.d.ts +0 -29
  257. package/dist/services/RecordTypesService.d.ts.map +1 -1
  258. package/dist/services/RecordTypesService.js +11 -106
  259. package/dist/services/RecordsService.d.ts +26 -313
  260. package/dist/services/RecordsService.d.ts.map +1 -1
  261. package/dist/services/RecordsService.js +763 -5089
  262. package/dist/services/SolrSearchService.d.ts +1 -1
  263. package/dist/services/SolrSearchService.d.ts.map +1 -1
  264. package/dist/services/SolrSearchService.js +12 -42
  265. package/dist/services/StandardDatastreamService.d.ts +5 -4
  266. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  267. package/dist/services/StandardDatastreamService.js +61 -106
  268. package/dist/services/TriggerService.d.ts.map +1 -1
  269. package/dist/services/TriggerService.js +30 -54
  270. package/dist/services/UsersService.d.ts +1 -2
  271. package/dist/services/UsersService.d.ts.map +1 -1
  272. package/dist/services/UsersService.js +283 -364
  273. package/dist/services/VocabularyService.d.ts +0 -2
  274. package/dist/services/VocabularyService.d.ts.map +1 -1
  275. package/dist/services/VocabularyService.js +2 -61
  276. package/dist/services/WorkflowStepsService.d.ts +0 -11
  277. package/dist/services/WorkflowStepsService.d.ts.map +1 -1
  278. package/dist/services/WorkflowStepsService.js +3 -32
  279. package/dist/services/WorkspaceService.d.ts +2 -2
  280. package/dist/services/WorkspaceService.d.ts.map +1 -1
  281. package/dist/services/WorkspaceService.js +5 -5
  282. package/dist/services/doi-v2/bindings.d.ts.map +1 -1
  283. package/dist/services/doi-v2/bindings.js +20 -3
  284. package/dist/services/doi-v2/config.d.ts +0 -1
  285. package/dist/services/doi-v2/config.d.ts.map +1 -1
  286. package/dist/services/doi-v2/config.js +5 -13
  287. package/dist/services/doi-v2/runtime.d.ts.map +1 -1
  288. package/dist/services/doi-v2/runtime.js +54 -14
  289. package/dist/services/figshare-v2/admin.d.ts +16 -0
  290. package/dist/services/figshare-v2/admin.d.ts.map +1 -0
  291. package/dist/services/figshare-v2/admin.js +283 -0
  292. package/dist/services/figshare-v2/assets.d.ts +20 -1
  293. package/dist/services/figshare-v2/assets.d.ts.map +1 -1
  294. package/dist/services/figshare-v2/assets.js +16 -1
  295. package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
  296. package/dist/services/figshare-v2/bindings.js +20 -3
  297. package/dist/services/figshare-v2/config.d.ts +8 -2
  298. package/dist/services/figshare-v2/config.d.ts.map +1 -1
  299. package/dist/services/figshare-v2/config.js +31 -3
  300. package/dist/services/figshare-v2/execution.d.ts +25 -0
  301. package/dist/services/figshare-v2/execution.d.ts.map +1 -0
  302. package/dist/services/figshare-v2/execution.js +49 -0
  303. package/dist/services/figshare-v2/http.d.ts +6 -1
  304. package/dist/services/figshare-v2/http.d.ts.map +1 -1
  305. package/dist/services/figshare-v2/http.js +69 -12
  306. package/dist/services/figshare-v2/identity.d.ts +12 -0
  307. package/dist/services/figshare-v2/identity.d.ts.map +1 -0
  308. package/dist/services/figshare-v2/identity.js +78 -0
  309. package/dist/services/figshare-v2/managed-assets.d.ts +9 -0
  310. package/dist/services/figshare-v2/managed-assets.d.ts.map +1 -0
  311. package/dist/services/figshare-v2/managed-assets.js +229 -0
  312. package/dist/services/figshare-v2/plan.d.ts.map +1 -1
  313. package/dist/services/figshare-v2/plan.js +2 -9
  314. package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
  315. package/dist/services/figshare-v2/runtime.js +58 -11
  316. package/dist/services/figshare-v2/source-intent.d.ts +9 -0
  317. package/dist/services/figshare-v2/source-intent.d.ts.map +1 -0
  318. package/dist/services/figshare-v2/source-intent.js +93 -0
  319. package/dist/services/figshare-v2/status.d.ts +4 -0
  320. package/dist/services/figshare-v2/status.d.ts.map +1 -0
  321. package/dist/services/figshare-v2/status.js +29 -0
  322. package/dist/services/figshare-v2/sync-store.d.ts +27 -0
  323. package/dist/services/figshare-v2/sync-store.d.ts.map +1 -0
  324. package/dist/services/figshare-v2/sync-store.js +139 -0
  325. package/dist/services/figshare-v2/types.d.ts +3 -0
  326. package/dist/services/figshare-v2/types.d.ts.map +1 -1
  327. package/dist/services/figshare-v2/types.js +1 -1
  328. package/dist/services/figshare-v2/worker.d.ts +16 -0
  329. package/dist/services/figshare-v2/worker.d.ts.map +1 -0
  330. package/dist/services/figshare-v2/worker.js +572 -0
  331. package/dist/services/index.d.ts +0 -9
  332. package/dist/services/index.d.ts.map +1 -1
  333. package/dist/services/index.js +3 -45
  334. package/dist/utilities/TranslationHtml.d.ts +3 -0
  335. package/dist/utilities/TranslationHtml.d.ts.map +1 -0
  336. package/dist/utilities/TranslationHtml.js +46 -0
  337. package/dist/visitor/client.visitor.d.ts +0 -6
  338. package/dist/visitor/client.visitor.d.ts.map +1 -1
  339. package/dist/visitor/client.visitor.js +14 -59
  340. package/dist/visitor/construct.visitor.d.ts +1 -27
  341. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  342. package/dist/visitor/construct.visitor.js +177 -265
  343. package/dist/visitor/context-variables.visitor.d.ts +1 -3
  344. package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
  345. package/dist/visitor/context-variables.visitor.js +1 -15
  346. package/dist/visitor/data-value.visitor.d.ts +0 -6
  347. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  348. package/dist/visitor/data-value.visitor.js +1 -10
  349. package/dist/visitor/json-type-def.visitor.d.ts +0 -6
  350. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  351. package/dist/visitor/json-type-def.visitor.js +1 -10
  352. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +0 -11
  353. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  354. package/dist/visitor/migrate-config-v4-v5.visitor.js +133 -228
  355. package/dist/visitor/template.visitor.d.ts +2 -17
  356. package/dist/visitor/template.visitor.d.ts.map +1 -1
  357. package/dist/visitor/template.visitor.js +22 -60
  358. package/dist/visitor/validator.visitor.d.ts +7 -49
  359. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  360. package/dist/visitor/validator.visitor.js +178 -275
  361. package/dist/waterline-models/AttachmentMetadata.d.ts +0 -22
  362. package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -1
  363. package/dist/waterline-models/AttachmentMetadata.js +3 -147
  364. package/dist/waterline-models/BrandingConfig.d.ts +0 -7
  365. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  366. package/dist/waterline-models/BrandingConfig.js +1 -16
  367. package/dist/waterline-models/BrandingConfigHistory.d.ts +2 -11
  368. package/dist/waterline-models/BrandingConfigHistory.d.ts.map +1 -1
  369. package/dist/waterline-models/BrandingConfigHistory.js +1 -21
  370. package/dist/waterline-models/FigshareSync.d.ts +41 -0
  371. package/dist/waterline-models/FigshareSync.d.ts.map +1 -0
  372. package/dist/waterline-models/FigshareSync.js +168 -0
  373. package/dist/waterline-models/RecordType.d.ts +0 -9
  374. package/dist/waterline-models/RecordType.d.ts.map +1 -1
  375. package/dist/waterline-models/RecordType.js +1 -16
  376. package/dist/waterline-models/User.d.ts.map +1 -1
  377. package/dist/waterline-models/User.js +15 -10
  378. package/dist/waterline-models/index.d.ts +2 -2
  379. package/dist/waterline-models/index.d.ts.map +1 -1
  380. package/dist/waterline-models/index.js +4 -4
  381. package/package.json +46 -59
  382. package/dist/AttachmentStagingIdentity.d.ts +0 -3
  383. package/dist/AttachmentStagingIdentity.d.ts.map +0 -1
  384. package/dist/AttachmentStagingIdentity.js +0 -10
  385. package/dist/RecordConcurrencyObservability.d.ts +0 -51
  386. package/dist/RecordConcurrencyObservability.d.ts.map +0 -1
  387. package/dist/RecordConcurrencyObservability.js +0 -136
  388. package/dist/RecordEntityTag.d.ts +0 -31
  389. package/dist/RecordEntityTag.d.ts.map +0 -1
  390. package/dist/RecordEntityTag.js +0 -101
  391. package/dist/RecordFormFingerprint.d.ts +0 -7
  392. package/dist/RecordFormFingerprint.d.ts.map +0 -1
  393. package/dist/RecordFormFingerprint.js +0 -106
  394. package/dist/RecordHttpConcurrency.d.ts +0 -60
  395. package/dist/RecordHttpConcurrency.d.ts.map +0 -1
  396. package/dist/RecordHttpConcurrency.js +0 -181
  397. package/dist/RecordSaveResponse.d.ts +0 -219
  398. package/dist/RecordSaveResponse.d.ts.map +0 -1
  399. package/dist/RecordSaveResponse.js +0 -639
  400. package/dist/RecordStorageConcurrency.d.ts +0 -48
  401. package/dist/RecordStorageConcurrency.d.ts.map +0 -1
  402. package/dist/RecordStorageConcurrency.js +0 -103
  403. package/dist/RecordWriteClassification.d.ts +0 -12
  404. package/dist/RecordWriteClassification.d.ts.map +0 -1
  405. package/dist/RecordWriteClassification.js +0 -70
  406. package/dist/action-execution/audit.d.ts +0 -41
  407. package/dist/action-execution/audit.d.ts.map +0 -1
  408. package/dist/action-execution/audit.js +0 -122
  409. package/dist/action-execution/executor.d.ts +0 -24
  410. package/dist/action-execution/executor.d.ts.map +0 -1
  411. package/dist/action-execution/executor.js +0 -435
  412. package/dist/action-execution/failure.d.ts +0 -49
  413. package/dist/action-execution/failure.d.ts.map +0 -1
  414. package/dist/action-execution/failure.js +0 -129
  415. package/dist/action-execution/index.d.ts +0 -7
  416. package/dist/action-execution/index.d.ts.map +0 -1
  417. package/dist/action-execution/index.js +0 -23
  418. package/dist/action-execution/legacy-result.d.ts +0 -21
  419. package/dist/action-execution/legacy-result.d.ts.map +0 -1
  420. package/dist/action-execution/legacy-result.js +0 -70
  421. package/dist/action-execution/policy.d.ts +0 -12
  422. package/dist/action-execution/policy.d.ts.map +0 -1
  423. package/dist/action-execution/policy.js +0 -138
  424. package/dist/action-execution/types.d.ts +0 -121
  425. package/dist/action-execution/types.d.ts.map +0 -1
  426. package/dist/action-execution/types.js +0 -22
  427. package/dist/api-routes/groups/record-schemas.d.ts +0 -5
  428. package/dist/api-routes/groups/record-schemas.d.ts.map +0 -1
  429. package/dist/api-routes/groups/record-schemas.js +0 -181
  430. package/dist/api-routes/record-schema-openapi.d.ts +0 -26
  431. package/dist/api-routes/record-schema-openapi.d.ts.map +0 -1
  432. package/dist/api-routes/record-schema-openapi.js +0 -38
  433. package/dist/api-routes/record-schema-response.d.ts +0 -40
  434. package/dist/api-routes/record-schema-response.d.ts.map +0 -1
  435. package/dist/api-routes/record-schema-response.js +0 -89
  436. package/dist/config/recordSchema.config.d.ts +0 -68
  437. package/dist/config/recordSchema.config.d.ts.map +0 -1
  438. package/dist/config/recordSchema.config.js +0 -173
  439. package/dist/config/recordValidation.config.d.ts +0 -19
  440. package/dist/config/recordValidation.config.d.ts.map +0 -1
  441. package/dist/config/recordValidation.config.js +0 -10
  442. package/dist/configmodels/DashboardFieldCatalogue.d.ts +0 -67
  443. package/dist/configmodels/DashboardFieldCatalogue.d.ts.map +0 -1
  444. package/dist/configmodels/DashboardFieldCatalogue.js +0 -174
  445. package/dist/configmodels/DashboardSettings.d.ts +0 -191
  446. package/dist/configmodels/DashboardSettings.d.ts.map +0 -1
  447. package/dist/configmodels/DashboardSettings.js +0 -705
  448. package/dist/configmodels/OniPublishing.d.ts +0 -205
  449. package/dist/configmodels/OniPublishing.d.ts.map +0 -1
  450. package/dist/configmodels/OniPublishing.js +0 -335
  451. package/dist/configmodels/RaidPublishing.d.ts +0 -97
  452. package/dist/configmodels/RaidPublishing.d.ts.map +0 -1
  453. package/dist/configmodels/RaidPublishing.js +0 -35
  454. package/dist/configmodels/WebAnalytics.d.ts +0 -55
  455. package/dist/configmodels/WebAnalytics.d.ts.map +0 -1
  456. package/dist/configmodels/WebAnalytics.js +0 -61
  457. package/dist/controllers/BrandingControllerSupport.d.ts +0 -20
  458. package/dist/controllers/BrandingControllerSupport.d.ts.map +0 -1
  459. package/dist/controllers/BrandingControllerSupport.js +0 -80
  460. package/dist/controllers/webservice/RecordSchemaController.d.ts +0 -32
  461. package/dist/controllers/webservice/RecordSchemaController.d.ts.map +0 -1
  462. package/dist/controllers/webservice/RecordSchemaController.js +0 -356
  463. package/dist/model/BrandingTypeface.d.ts +0 -70
  464. package/dist/model/BrandingTypeface.d.ts.map +0 -1
  465. package/dist/model/BrandingTypeface.js +0 -116
  466. package/dist/model/record-contract.d.ts +0 -42
  467. package/dist/model/record-contract.d.ts.map +0 -1
  468. package/dist/model/record-contract.js +0 -3
  469. package/dist/model/storage/record-schema.d.ts +0 -115
  470. package/dist/model/storage/record-schema.d.ts.map +0 -1
  471. package/dist/model/storage/record-schema.js +0 -3
  472. package/dist/record-contract/ajv-error-mapper.d.ts +0 -34
  473. package/dist/record-contract/ajv-error-mapper.d.ts.map +0 -1
  474. package/dist/record-contract/ajv-error-mapper.js +0 -153
  475. package/dist/record-contract/canonical-json.d.ts +0 -20
  476. package/dist/record-contract/canonical-json.d.ts.map +0 -1
  477. package/dist/record-contract/canonical-json.js +0 -126
  478. package/dist/record-contract/codes.d.ts +0 -36
  479. package/dist/record-contract/codes.d.ts.map +0 -1
  480. package/dist/record-contract/codes.js +0 -38
  481. package/dist/record-contract/contributor-registry.d.ts +0 -76
  482. package/dist/record-contract/contributor-registry.d.ts.map +0 -1
  483. package/dist/record-contract/contributor-registry.js +0 -126
  484. package/dist/record-contract/core-contributors.d.ts +0 -44
  485. package/dist/record-contract/core-contributors.d.ts.map +0 -1
  486. package/dist/record-contract/core-contributors.js +0 -395
  487. package/dist/record-contract/deep-freeze.d.ts +0 -3
  488. package/dist/record-contract/deep-freeze.d.ts.map +0 -1
  489. package/dist/record-contract/deep-freeze.js +0 -23
  490. package/dist/record-contract/index.d.ts +0 -13
  491. package/dist/record-contract/index.d.ts.map +0 -1
  492. package/dist/record-contract/index.js +0 -29
  493. package/dist/record-contract/json-pointer.d.ts +0 -20
  494. package/dist/record-contract/json-pointer.d.ts.map +0 -1
  495. package/dist/record-contract/json-pointer.js +0 -70
  496. package/dist/record-contract/json-schema-renderer.d.ts +0 -51
  497. package/dist/record-contract/json-schema-renderer.d.ts.map +0 -1
  498. package/dist/record-contract/json-schema-renderer.js +0 -450
  499. package/dist/record-contract/record-contract-compiler.d.ts +0 -42
  500. package/dist/record-contract/record-contract-compiler.d.ts.map +0 -1
  501. package/dist/record-contract/record-contract-compiler.js +0 -775
  502. package/dist/record-contract/record-contract-context.d.ts +0 -91
  503. package/dist/record-contract/record-contract-context.d.ts.map +0 -1
  504. package/dist/record-contract/record-contract-context.js +0 -39
  505. package/dist/record-contract/record-json-schema-artifact.d.ts +0 -74
  506. package/dist/record-contract/record-json-schema-artifact.d.ts.map +0 -1
  507. package/dist/record-contract/record-json-schema-artifact.js +0 -309
  508. package/dist/record-contract/record-json-schema-etag.d.ts +0 -15
  509. package/dist/record-contract/record-json-schema-etag.d.ts.map +0 -1
  510. package/dist/record-contract/record-json-schema-etag.js +0 -41
  511. package/dist/record-contract/types.d.ts +0 -151
  512. package/dist/record-contract/types.d.ts.map +0 -1
  513. package/dist/record-contract/types.js +0 -6
  514. package/dist/services/BrandingTypefaceService.d.ts +0 -74
  515. package/dist/services/BrandingTypefaceService.d.ts.map +0 -1
  516. package/dist/services/BrandingTypefaceService.js +0 -359
  517. package/dist/services/BrandingWoff2Inspector.d.ts +0 -17
  518. package/dist/services/BrandingWoff2Inspector.d.ts.map +0 -1
  519. package/dist/services/BrandingWoff2Inspector.js +0 -402
  520. package/dist/services/DashboardLegacyConversion.d.ts +0 -82
  521. package/dist/services/DashboardLegacyConversion.d.ts.map +0 -1
  522. package/dist/services/DashboardLegacyConversion.js +0 -427
  523. package/dist/services/RecordSchemaService.d.ts +0 -440
  524. package/dist/services/RecordSchemaService.d.ts.map +0 -1
  525. package/dist/services/RecordSchemaService.js +0 -3061
  526. package/dist/services/RecordValidationService.d.ts +0 -340
  527. package/dist/services/RecordValidationService.d.ts.map +0 -1
  528. package/dist/services/RecordValidationService.js +0 -1898
  529. package/dist/services/form-record-access-user.d.ts +0 -3
  530. package/dist/services/form-record-access-user.d.ts.map +0 -1
  531. package/dist/services/form-record-access-user.js +0 -23
  532. package/dist/services/integration-v2/bindings.d.ts +0 -3
  533. package/dist/services/integration-v2/bindings.d.ts.map +0 -1
  534. package/dist/services/integration-v2/bindings.js +0 -91
  535. package/dist/services/integration-v2/runtime.d.ts +0 -3
  536. package/dist/services/integration-v2/runtime.d.ts.map +0 -1
  537. package/dist/services/integration-v2/runtime.js +0 -50
  538. package/dist/services/internal-record-schema-authorization.d.ts +0 -8
  539. package/dist/services/internal-record-schema-authorization.d.ts.map +0 -1
  540. package/dist/services/internal-record-schema-authorization.js +0 -16
  541. package/dist/services/oni-v2/audit.d.ts +0 -19
  542. package/dist/services/oni-v2/audit.d.ts.map +0 -1
  543. package/dist/services/oni-v2/audit.js +0 -50
  544. package/dist/services/oni-v2/bindings.d.ts +0 -7
  545. package/dist/services/oni-v2/bindings.d.ts.map +0 -1
  546. package/dist/services/oni-v2/bindings.js +0 -31
  547. package/dist/services/oni-v2/config.d.ts +0 -12
  548. package/dist/services/oni-v2/config.d.ts.map +0 -1
  549. package/dist/services/oni-v2/config.js +0 -134
  550. package/dist/services/oni-v2/context.d.ts +0 -3
  551. package/dist/services/oni-v2/context.d.ts.map +0 -1
  552. package/dist/services/oni-v2/context.js +0 -17
  553. package/dist/services/oni-v2/crate.d.ts +0 -17
  554. package/dist/services/oni-v2/crate.d.ts.map +0 -1
  555. package/dist/services/oni-v2/crate.js +0 -504
  556. package/dist/services/oni-v2/flydriveOcflStore.d.ts +0 -69
  557. package/dist/services/oni-v2/flydriveOcflStore.d.ts.map +0 -1
  558. package/dist/services/oni-v2/flydriveOcflStore.js +0 -325
  559. package/dist/services/oni-v2/ingestion.d.ts +0 -37
  560. package/dist/services/oni-v2/ingestion.d.ts.map +0 -1
  561. package/dist/services/oni-v2/ingestion.js +0 -91
  562. package/dist/services/oni-v2/mapping.d.ts +0 -17
  563. package/dist/services/oni-v2/mapping.d.ts.map +0 -1
  564. package/dist/services/oni-v2/mapping.js +0 -137
  565. package/dist/services/oni-v2/repository.d.ts +0 -9
  566. package/dist/services/oni-v2/repository.d.ts.map +0 -1
  567. package/dist/services/oni-v2/repository.js +0 -180
  568. package/dist/services/oni-v2/runtime.d.ts +0 -23
  569. package/dist/services/oni-v2/runtime.d.ts.map +0 -1
  570. package/dist/services/oni-v2/runtime.js +0 -121
  571. package/dist/services/oni-v2/templating.d.ts +0 -11
  572. package/dist/services/oni-v2/templating.d.ts.map +0 -1
  573. package/dist/services/oni-v2/templating.js +0 -27
  574. package/dist/services/oni-v2/types.d.ts +0 -100
  575. package/dist/services/oni-v2/types.d.ts.map +0 -1
  576. package/dist/services/oni-v2/types.js +0 -3
  577. package/dist/services/raid-v2/audit.d.ts +0 -10
  578. package/dist/services/raid-v2/audit.d.ts.map +0 -1
  579. package/dist/services/raid-v2/audit.js +0 -29
  580. package/dist/services/raid-v2/errors.d.ts +0 -85
  581. package/dist/services/raid-v2/errors.d.ts.map +0 -1
  582. package/dist/services/raid-v2/errors.js +0 -36
  583. package/dist/services/raid-v2/http.d.ts +0 -4
  584. package/dist/services/raid-v2/http.d.ts.map +0 -1
  585. package/dist/services/raid-v2/http.js +0 -84
  586. package/dist/services/raid-v2/logger.d.ts +0 -8
  587. package/dist/services/raid-v2/logger.d.ts.map +0 -1
  588. package/dist/services/raid-v2/logger.js +0 -30
  589. package/dist/services/raid-v2/mapping.d.ts +0 -9
  590. package/dist/services/raid-v2/mapping.d.ts.map +0 -1
  591. package/dist/services/raid-v2/mapping.js +0 -168
  592. package/dist/services/raid-v2/runtime.d.ts +0 -5
  593. package/dist/services/raid-v2/runtime.d.ts.map +0 -1
  594. package/dist/services/raid-v2/runtime.js +0 -135
  595. package/dist/services/raid-v2/tags.d.ts +0 -11
  596. package/dist/services/raid-v2/tags.d.ts.map +0 -1
  597. package/dist/services/raid-v2/tags.js +0 -12
  598. package/dist/services/raid-v2/types.d.ts +0 -66
  599. package/dist/services/raid-v2/types.d.ts.map +0 -1
  600. package/dist/services/raid-v2/types.js +0 -3
  601. package/dist/services/record-hooks/coordinator.d.ts +0 -64
  602. package/dist/services/record-hooks/coordinator.d.ts.map +0 -1
  603. package/dist/services/record-hooks/coordinator.js +0 -276
  604. package/dist/visitor/related-object-data-inline.visitor.d.ts +0 -31
  605. package/dist/visitor/related-object-data-inline.visitor.d.ts.map +0 -1
  606. package/dist/visitor/related-object-data-inline.visitor.js +0 -96
  607. package/dist/waterline-models/DashboardConfiguration.d.ts +0 -29
  608. package/dist/waterline-models/DashboardConfiguration.d.ts.map +0 -1
  609. package/dist/waterline-models/DashboardConfiguration.js +0 -52
@@ -1,106 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatRecordFormFingerprint = formatRecordFormFingerprint;
4
- const node_crypto_1 = require("node:crypto");
5
- const sails_ng_common_1 = require("@researchdatabox/sails-ng-common");
6
- const RECORD_FORM_FINGERPRINT_MAX_BYTES = 1_048_576;
7
- const RECORD_FORM_FINGERPRINT_MAX_NODES = 50_000;
8
- /**
9
- * Build a stable, bounded fingerprint for an authoritative form contract.
10
- * Accessors are never invoked and the serialized contract is never retained.
11
- */
12
- function formatRecordFormFingerprint(value) {
13
- const hash = (0, node_crypto_1.createHash)('sha256');
14
- const seen = new WeakSet();
15
- let bytes = 0;
16
- let nodes = 0;
17
- let bounded = true;
18
- const append = (part) => {
19
- if (!bounded)
20
- return;
21
- const size = Buffer.byteLength(part);
22
- if (bytes + size > RECORD_FORM_FINGERPRINT_MAX_BYTES) {
23
- bounded = false;
24
- return;
25
- }
26
- bytes += size;
27
- hash.update(part);
28
- };
29
- const walk = (item) => {
30
- nodes += 1;
31
- if (nodes > RECORD_FORM_FINGERPRINT_MAX_NODES) {
32
- bounded = false;
33
- return;
34
- }
35
- if (item === null || typeof item === 'boolean' || typeof item === 'string') {
36
- append(JSON.stringify(item));
37
- return;
38
- }
39
- if (typeof item === 'number') {
40
- append(Number.isFinite(item) ? JSON.stringify(item) : JSON.stringify(String(item)));
41
- return;
42
- }
43
- if (typeof item === 'undefined') {
44
- append('"[undefined]"');
45
- return;
46
- }
47
- if (typeof item === 'function') {
48
- append(JSON.stringify(`[function:${Function.prototype.toString.call(item)}]`));
49
- return;
50
- }
51
- if (typeof item !== 'object') {
52
- append(JSON.stringify(String(item)));
53
- return;
54
- }
55
- if (seen.has(item)) {
56
- append('"[circular]"');
57
- return;
58
- }
59
- seen.add(item);
60
- try {
61
- const descriptors = Object.getOwnPropertyDescriptors(item);
62
- if (Array.isArray(item)) {
63
- append('[');
64
- for (let index = 0; index < item.length && bounded; index += 1) {
65
- if (index > 0)
66
- append(',');
67
- const descriptor = descriptors[String(index)];
68
- if (descriptor && 'value' in descriptor)
69
- walk(descriptor.value);
70
- else
71
- append('"[accessor-or-hole]"');
72
- }
73
- append(']');
74
- return;
75
- }
76
- append('{');
77
- let first = true;
78
- for (const key of Object.keys(descriptors).sort()) {
79
- const descriptor = descriptors[key];
80
- if (!descriptor.enumerable)
81
- continue;
82
- if (!first)
83
- append(',');
84
- first = false;
85
- append(JSON.stringify(key));
86
- append(':');
87
- if ('value' in descriptor)
88
- walk(descriptor.value);
89
- else
90
- append('"[accessor]"');
91
- if (!bounded)
92
- break;
93
- }
94
- append('}');
95
- }
96
- finally {
97
- seen.delete(item);
98
- }
99
- };
100
- walk(value);
101
- if (!bounded)
102
- return undefined;
103
- const fingerprint = `sha256:${hash.digest('hex')}`;
104
- return (0, sails_ng_common_1.isRecordFormFingerprint)(fingerprint) ? fingerprint : undefined;
105
- }
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkRm9ybUZpbmdlcnByaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1JlY29yZEZvcm1GaW5nZXJwcmludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBLGtFQXVGQztBQWpHRCw2Q0FBeUM7QUFDekMsc0VBQXVHO0FBRXZHLE1BQU0saUNBQWlDLEdBQUcsU0FBUyxDQUFDO0FBQ3BELE1BQU0saUNBQWlDLEdBQUcsTUFBTSxDQUFDO0FBRWpEOzs7R0FHRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLEtBQWM7SUFDeEQsTUFBTSxJQUFJLEdBQUcsSUFBQSx3QkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFDbkMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRW5CLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBWSxFQUFRLEVBQUU7UUFDcEMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLGlDQUFpQyxFQUFFLENBQUM7WUFDckQsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNoQixPQUFPO1FBQ1QsQ0FBQztRQUNELEtBQUssSUFBSSxJQUFJLENBQUM7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBYSxFQUFRLEVBQUU7UUFDbkMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNYLElBQUksS0FBSyxHQUFHLGlDQUFpQyxFQUFFLENBQUM7WUFDOUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNo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
@@ -1,60 +0,0 @@
1
- import { type RecordConcurrencyMetadata, type RecordSaveResult } from '@researchdatabox/sails-ng-common';
2
- import type { RecordConcurrencyContext } from './RecordSaveResponse';
3
- export declare const RECORD_HTTP_HEADERS: Readonly<{
4
- ifMatch: "If-Match";
5
- entityTag: "ETag";
6
- formFingerprint: "X-ReDBox-Form-Fingerprint";
7
- resolution: "X-ReDBox-Concurrency-Resolution";
8
- resolutionOfRequestId: "X-ReDBox-Resolution-Of-Request-Id";
9
- saveRequestId: "X-ReDBox-Save-Request-Id";
10
- }>;
11
- export type PublicRecordConcurrencyRequestErrorCode = 'record-if-match-invalid' | 'record-form-fingerprint-invalid' | 'record-concurrency-resolution-invalid' | 'record-concurrency-request-linkage-invalid';
12
- export type PublicRecordConcurrencyRequestResult = {
13
- readonly valid: true;
14
- readonly context: RecordConcurrencyContext;
15
- } | {
16
- readonly valid: false;
17
- readonly code: PublicRecordConcurrencyRequestErrorCode;
18
- readonly header: string;
19
- };
20
- export interface PublicRecordConcurrencyRequestOptions {
21
- /** Only generated browser-form submissions bind to a form definition. */
22
- readonly formBacked?: boolean;
23
- }
24
- /**
25
- * Normalize public optimistic-concurrency headers once at the HTTP boundary.
26
- * Staleness and policy remain RecordsService/storage decisions; malformed
27
- * request contracts are rejected before candidate work begins.
28
- */
29
- export declare function parsePublicRecordConcurrencyRequest(headers: Readonly<Record<string, unknown>> | undefined, recordOid: string | undefined, options?: PublicRecordConcurrencyRequestOptions): PublicRecordConcurrencyRequestResult;
30
- export declare function recordConcurrencyRequestFailureResponse(apiVersion: string, failure: {
31
- readonly code: string;
32
- readonly header: string;
33
- }): Record<string, unknown>;
34
- export interface RecordRepresentationConcurrency {
35
- readonly headers: Readonly<Record<string, string>>;
36
- readonly metadata: RecordConcurrencyMetadata;
37
- }
38
- /**
39
- * Revision of one stored active or tombstone representation. A record written
40
- * before the revision migration reads as the initial revision; anything else
41
- * non-conforming is a storage fault rather than a value to guess at.
42
- */
43
- export declare function recordRepresentationRevision(record: unknown): number;
44
- /**
45
- * Build read-side revision metadata and the `ETag` header from server-owned
46
- * record fields only. Collection rows carry the numeric revision alone: a row
47
- * is not an individual representation, so it gets no entity tag.
48
- */
49
- export declare function recordRepresentationConcurrency(record: unknown): RecordRepresentationConcurrency;
50
- /** Emit only the authoritative entity tag carried by a typed save result. */
51
- export declare function recordSaveResultHeaders(result: Pick<RecordSaveResult, 'concurrency'> | null | undefined): Readonly<Record<string, string>>;
52
- /**
53
- * Spreadable response fragment. The `headers` key is omitted entirely when a
54
- * result carries no authoritative tag, so responses that never had one keep
55
- * their existing shape.
56
- */
57
- export declare function recordSaveResultHeaderOption(result: Pick<RecordSaveResult, 'concurrency'> | null | undefined): {
58
- headers?: Readonly<Record<string, string>>;
59
- };
60
- //# sourceMappingURL=RecordHttpConcurrency.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecordHttpConcurrency.d.ts","sourceRoot":"","sources":["../src/RecordHttpConcurrency.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,yBAAyB,EAE9B,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGrE,eAAO,MAAM,mBAAmB;;;;;;;EAO9B,CAAC;AAEH,MAAM,MAAM,uCAAuC,GAC/C,yBAAyB,GACzB,iCAAiC,GACjC,uCAAuC,GACvC,4CAA4C,CAAC;AAEjD,MAAM,MAAM,oCAAoC,GAC5C;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAA;CAAE,GACpE;IACE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,uCAAuC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,WAAW,qCAAqC;IACpD,yEAAyE;IACzE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAqCD;;;;GAIG;AACH,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,EACtD,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,GAAE,qCAA0C,GAClD,oCAAoC,CA2EtC;AAED,wBAAgB,uCAAuC,CACrD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;CAC9C;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAUpE;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,OAAO,GAAG,+BAA+B,CAWhG;AAED,6EAA6E;AAC7E,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG,IAAI,GAAG,SAAS,GAC/D,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAGlC;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG;IAC9G,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5C,CAGA"}
@@ -1,181 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RECORD_HTTP_HEADERS = void 0;
4
- exports.parsePublicRecordConcurrencyRequest = parsePublicRecordConcurrencyRequest;
5
- exports.recordConcurrencyRequestFailureResponse = recordConcurrencyRequestFailureResponse;
6
- exports.recordRepresentationRevision = recordRepresentationRevision;
7
- exports.recordRepresentationConcurrency = recordRepresentationConcurrency;
8
- exports.recordSaveResultHeaders = recordSaveResultHeaders;
9
- exports.recordSaveResultHeaderOption = recordSaveResultHeaderOption;
10
- const sails_ng_common_1 = require("@researchdatabox/sails-ng-common");
11
- const RecordEntityTag_1 = require("./RecordEntityTag");
12
- const RecordStorageConcurrency_1 = require("./RecordStorageConcurrency");
13
- exports.RECORD_HTTP_HEADERS = Object.freeze({
14
- ifMatch: 'If-Match',
15
- entityTag: 'ETag',
16
- formFingerprint: 'X-ReDBox-Form-Fingerprint',
17
- resolution: 'X-ReDBox-Concurrency-Resolution',
18
- resolutionOfRequestId: 'X-ReDBox-Resolution-Of-Request-Id',
19
- saveRequestId: 'X-ReDBox-Save-Request-Id',
20
- });
21
- const PUBLIC_MUTATION_RESOLUTIONS = new Set([
22
- 'direct',
23
- 'client-auto-merged',
24
- 'client-manually-resolved',
25
- ]);
26
- /** Node normalizes incoming request-header names to lowercase. */
27
- function readHeader(headers, name) {
28
- if (!headers || typeof headers !== 'object' || Array.isArray(headers))
29
- return undefined;
30
- return headers[name.toLowerCase()];
31
- }
32
- /** `null` marks a present but unusable value, including a duplicate-value array. */
33
- function singleStringHeader(value) {
34
- if (value === undefined)
35
- return undefined;
36
- return typeof value === 'string' ? value : null;
37
- }
38
- /** `null` for a present but unusable value is deliberately preserved, not trimmed away. */
39
- function trimmedHeader(value) {
40
- const header = singleStringHeader(value);
41
- return typeof header === 'string' ? header.trim() : header;
42
- }
43
- /** Clients may only claim resolutions a client can actually perform. */
44
- function isPublicMutationResolution(value) {
45
- return (0, sails_ng_common_1.isRecordConcurrencyResolution)(value) && PUBLIC_MUTATION_RESOLUTIONS.has(value);
46
- }
47
- /** Create routes accept no precondition: absent is fine, anything else is not. */
48
- function createRouteEntityTagResult(value) {
49
- const absent = value === undefined;
50
- return { valid: false, reason: absent ? 'missing' : 'malformed' };
51
- }
52
- /**
53
- * Normalize public optimistic-concurrency headers once at the HTTP boundary.
54
- * Staleness and policy remain RecordsService/storage decisions; malformed
55
- * request contracts are rejected before candidate work begins.
56
- */
57
- function parsePublicRecordConcurrencyRequest(headers, recordOid, options = {}) {
58
- const ifMatchValue = readHeader(headers, exports.RECORD_HTTP_HEADERS.ifMatch);
59
- // Create has no prior representation, so any supplied precondition is a
60
- // request-contract error rather than something to compare.
61
- let parsedTag;
62
- try {
63
- parsedTag =
64
- recordOid === undefined
65
- ? createRouteEntityTagResult(ifMatchValue)
66
- : (0, RecordEntityTag_1.parseRecordEntityTag)(ifMatchValue, recordOid);
67
- }
68
- catch {
69
- return { valid: false, code: 'record-if-match-invalid', header: exports.RECORD_HTTP_HEADERS.ifMatch };
70
- }
71
- if (!parsedTag.valid && parsedTag.reason !== 'missing') {
72
- return { valid: false, code: 'record-if-match-invalid', header: exports.RECORD_HTTP_HEADERS.ifMatch };
73
- }
74
- // Only a generated browser form binds to a form definition; other routes
75
- // ignore the header rather than validating a value they never compare.
76
- const suppliedFingerprint = options.formBacked
77
- ? singleStringHeader(readHeader(headers, exports.RECORD_HTTP_HEADERS.formFingerprint))
78
- : undefined;
79
- const formFingerprint = (0, sails_ng_common_1.isRecordFormFingerprint)(suppliedFingerprint) ? suppliedFingerprint : undefined;
80
- if (suppliedFingerprint !== undefined && formFingerprint === undefined) {
81
- return { valid: false, code: 'record-form-fingerprint-invalid', header: exports.RECORD_HTTP_HEADERS.formFingerprint };
82
- }
83
- // Once an update caller adopts the exact entity-tag protocol it must also
84
- // bind the generated form contract. A truly old update with neither header
85
- // is allowed through so strict policy can produce the specified review-only
86
- // 428 response. Create has no prior representation; a missing fingerprint
87
- // is therefore left to the record-type policy in RecordsService so default
88
- // last-write-wins/observe callers remain compatible.
89
- if (options.formBacked && !formFingerprint && parsedTag.valid) {
90
- return { valid: false, code: 'record-form-fingerprint-invalid', header: exports.RECORD_HTTP_HEADERS.formFingerprint };
91
- }
92
- const suppliedResolution = trimmedHeader(readHeader(headers, exports.RECORD_HTTP_HEADERS.resolution));
93
- const resolution = isPublicMutationResolution(suppliedResolution) ? suppliedResolution : undefined;
94
- if (suppliedResolution !== undefined && resolution === undefined) {
95
- return { valid: false, code: 'record-concurrency-resolution-invalid', header: exports.RECORD_HTTP_HEADERS.resolution };
96
- }
97
- // Linkage is required by, and only by, a client-resolved retry, and it names
98
- // the earlier attempt rather than this one.
99
- const suppliedLinkage = singleStringHeader(readHeader(headers, exports.RECORD_HTTP_HEADERS.resolutionOfRequestId));
100
- const saveRequestId = singleStringHeader(readHeader(headers, exports.RECORD_HTTP_HEADERS.saveRequestId));
101
- const linkageRequired = resolution === 'client-auto-merged' || resolution === 'client-manually-resolved';
102
- const linkageAcceptable = suppliedLinkage === undefined
103
- ? !linkageRequired
104
- : linkageRequired &&
105
- (0, sails_ng_common_1.isRecordSaveRequestId)(saveRequestId) &&
106
- (0, sails_ng_common_1.isRecordSaveRequestId)(suppliedLinkage) &&
107
- suppliedLinkage !== saveRequestId;
108
- if (!linkageAcceptable) {
109
- return {
110
- valid: false,
111
- code: 'record-concurrency-request-linkage-invalid',
112
- header: linkageRequired && !(0, sails_ng_common_1.isRecordSaveRequestId)(saveRequestId)
113
- ? exports.RECORD_HTTP_HEADERS.saveRequestId
114
- : exports.RECORD_HTTP_HEADERS.resolutionOfRequestId,
115
- };
116
- }
117
- return {
118
- valid: true,
119
- context: {
120
- entityTagSupplied: parsedTag.valid,
121
- ...(parsedTag.valid ? { expectedRevision: parsedTag.value.expectedRevision } : {}),
122
- ...(formFingerprint ? { formFingerprint } : {}),
123
- ...(resolution ? { resolution } : {}),
124
- ...(suppliedLinkage ? { resolutionOfRequestId: suppliedLinkage } : {}),
125
- },
126
- };
127
- }
128
- function recordConcurrencyRequestFailureResponse(apiVersion, failure) {
129
- return apiVersion === '1.0'
130
- ? { status: 400, v1: { message: 'Invalid record concurrency request.' } }
131
- : { status: 400, displayErrors: [{ code: failure.code, source: { header: failure.header } }] };
132
- }
133
- /**
134
- * Revision of one stored active or tombstone representation. A record written
135
- * before the revision migration reads as the initial revision; anything else
136
- * non-conforming is a storage fault rather than a value to guess at.
137
- */
138
- function recordRepresentationRevision(record) {
139
- if (!record || typeof record !== 'object' || Array.isArray(record)) {
140
- throw new TypeError('A record representation is required.');
141
- }
142
- const revision = record.revision;
143
- if (revision === undefined)
144
- return RecordStorageConcurrency_1.INITIAL_RECORD_REVISION;
145
- if (!(0, sails_ng_common_1.isRecordRevision)(revision)) {
146
- throw new TypeError('The record representation has no valid revision.');
147
- }
148
- return revision;
149
- }
150
- /**
151
- * Build read-side revision metadata and the `ETag` header from server-owned
152
- * record fields only. Collection rows carry the numeric revision alone: a row
153
- * is not an individual representation, so it gets no entity tag.
154
- */
155
- function recordRepresentationConcurrency(record) {
156
- const revision = recordRepresentationRevision(record);
157
- const oid = String(record.redboxOid ?? '').trim();
158
- if (!oid) {
159
- throw new TypeError('The record representation has no valid concurrency identity.');
160
- }
161
- const entityTag = (0, RecordEntityTag_1.formatRecordEntityTag)(oid, revision);
162
- return {
163
- headers: { [exports.RECORD_HTTP_HEADERS.entityTag]: entityTag },
164
- metadata: { revision, entityTag },
165
- };
166
- }
167
- /** Emit only the authoritative entity tag carried by a typed save result. */
168
- function recordSaveResultHeaders(result) {
169
- const entityTag = result?.concurrency?.entityTag;
170
- return (0, sails_ng_common_1.isRecordEntityTag)(entityTag) ? { [exports.RECORD_HTTP_HEADERS.entityTag]: entityTag } : {};
171
- }
172
- /**
173
- * Spreadable response fragment. The `headers` key is omitted entirely when a
174
- * result carries no authoritative tag, so responses that never had one keep
175
- * their existing shape.
176
- */
177
- function recordSaveResultHeaderOption(result) {
178
- const headers = recordSaveResultHeaders(result);
179
- return Object.keys(headers).length > 0 ? { headers } : {};
180
- }
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkSHR0cENvbmN1cnJlbmN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1JlY29yZEh0dHBDb25jdXJyZW5jeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFrRkEsa0ZBK0VDO0FBRUQsMEZBT0M7QUFZRCxvRUFVQztBQU9ELDBFQVdDO0FBR0QsMERBS0M7QUFPRCxvRUFLQztBQXRPRCxzRUFTMEM7QUFDMUMsdURBQWlIO0FBRWpILHlFQUFxRTtBQUV4RCxRQUFBLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDL0MsT0FBTyxFQUFFLFVBQVU7SUFDbkIsU0FBUyxFQUFFLE1BQU07SUFDakIsZUFBZSxFQUFFLDJCQUEyQjtJQUM1QyxVQUFVLEVBQUUsaUNBQWlDO0lBQzdDLHFCQUFxQixFQUFFLG1DQUFtQztJQUMxRCxhQUFhLEVBQUUsMEJBQTBCO0NBQzFDLENBQUMsQ0FBQztBQXFCSCxNQUFNLDJCQUEyQixHQUE2QyxJQUFJLEdBQUcsQ0FBQztJQUNwRixRQUFRO0lBQ1Isb0JBQW9CO0lBQ3BCLDBCQUEwQjtDQUMzQixDQUFDLENBQUM7QUFFSCxrRUFBa0U7QUFDbEUsU0FBUyxVQUFVLENBQUMsT0FBc0QsRUFBRSxJQUFZO0lBQ3RGLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDeEYsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELG9GQUFvRjtBQUNwRixTQUFTLGtCQUFrQixDQUFDLEtBQWM7SUFDeEMsSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzFDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FB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
@@ -1,219 +0,0 @@
1
- import { isRecordSaveRequestId, RecordAttachmentCompletionItem, RecordConcurrencyMetadata, RecordConcurrencyResolution, RecordSaveIssue, RecordSaveLifecyclePhase, RecordSaveProblem, RecordSaveProblemKind, RecordSaveResult, RecordSaveOutcome, StorageMutationApplicationState } from '@researchdatabox/sails-ng-common';
2
- import type { RecordContractCompleteness, RecordContractEnforcement } from './record-contract/types';
3
- import { StorageMutationResponse, StorageServiceResponse } from './StorageServiceResponse';
4
- export type RecordSaveRouteFamily = 'browser' | 'api' | 'internal';
5
- export type RecordSaveOperation = 'create' | 'update' | 'transition' | 'delete' | 'restore' | 'purge';
6
- export type NormalizedRecordSchemaOperation = string;
7
- export type RecordValidationContextJSONValue = string | number | boolean | null | readonly RecordValidationContextJSONValue[] | {
8
- readonly [key: string]: RecordValidationContextJSONValue;
9
- };
10
- /** Reasons approved for the narrowly scoped internal validation bypass. */
11
- export declare const RECORD_VALIDATION_BYPASS_REASONS: readonly ["historical-record-repair", "trusted-data-migration", "configuration-recovery"];
12
- export type RecordValidationBypassReason = (typeof RECORD_VALIDATION_BYPASS_REASONS)[number];
13
- export declare function isRecordValidationBypassReason(value: unknown): value is RecordValidationBypassReason;
14
- /**
15
- * Deliberately awkward internal-only capability. A string flag is not a
16
- * bypass: callers must identify the responsible service and use an approved
17
- * reason so the decision can be durably audited.
18
- */
19
- export interface InternalRecordValidationBypass {
20
- readonly mode: 'bypass';
21
- readonly reason: RecordValidationBypassReason;
22
- readonly actor: {
23
- readonly kind: 'service';
24
- readonly id: string;
25
- };
26
- }
27
- /** Runtime guard for JavaScript callers crossing the internal capability boundary. */
28
- export declare function isInternalRecordValidationBypass(value: unknown): value is InternalRecordValidationBypass;
29
- export interface RecordSaveSchemaOutcomeInput {
30
- readonly digest: string;
31
- readonly immutableUrl: string;
32
- readonly completeness: RecordContractCompleteness;
33
- readonly enforcement: RecordContractEnforcement;
34
- }
35
- export type RecordSaveSchemaOutcomeMetadata = Readonly<RecordSaveSchemaOutcomeInput>;
36
- export interface RecordSaveContext {
37
- readonly requestId: string;
38
- readonly routeFamily?: RecordSaveRouteFamily;
39
- readonly operation?: RecordSaveOperation;
40
- /** Factory-normalized portal copied from the server-owned matched request context. */
41
- readonly portal?: string;
42
- /** Server-owned workflow target copied from the matched route, not inferred from a resolved step object. */
43
- readonly targetStep?: string;
44
- /** Server-owned business intent; never conflated with the CRUD operation. */
45
- readonly validationOperation?: string;
46
- /** Factory-normalized operation shared by schema resolution and the existing validator phase. */
47
- readonly schemaOperation?: NormalizedRecordSchemaOperation;
48
- /** Raw schema ETag precondition copied only from a trusted transport header. */
49
- readonly ifMatch?: string;
50
- /** Explicit, JSON-only request facts; the validation config allowlist narrows these again. */
51
- readonly validationRequestParameters?: Readonly<Record<string, RecordValidationContextJSONValue>>;
52
- /** Server-owned, JSON-only execution facts. Never place sessions, headers, or tokens here. */
53
- readonly validationRuntimeContext?: Readonly<Record<string, RecordValidationContextJSONValue>>;
54
- /** Accepted only when routeFamily is explicitly `internal`. */
55
- readonly validationBypass?: InternalRecordValidationBypass;
56
- /** Trusted transport-neutral optimistic-concurrency facts. */
57
- readonly concurrency?: RecordConcurrencyContext;
58
- }
59
- /** Trusted values accepted by the save-context factory. */
60
- export interface RecordSaveContextOptions {
61
- readonly requestId?: string;
62
- readonly routeFamily?: RecordSaveRouteFamily;
63
- readonly operation?: RecordSaveOperation;
64
- /** Server-owned portal selected by the trusted transport adapter. */
65
- readonly portal?: string;
66
- readonly targetStep?: string;
67
- readonly validationOperation?: string;
68
- readonly validationRequestParameters?: Readonly<Record<string, RecordValidationContextJSONValue>>;
69
- readonly validationRuntimeContext?: Readonly<Record<string, RecordValidationContextJSONValue>>;
70
- readonly validationBypass?: InternalRecordValidationBypass;
71
- /** Trusted transport-neutral optimistic-concurrency facts. */
72
- readonly concurrency?: unknown;
73
- /** Trusted transport adaptation for the raw If-Match header. */
74
- readonly recordSchemaIfMatch?: string;
75
- }
76
- /** Runtime counterpart to the nominal context type for JavaScript/service boundaries. */
77
- export declare function isRecordSaveContext(value: unknown): value is RecordSaveContext;
78
- /** Validate and brand the schema identity exposed by a completed save. */
79
- export declare function createRecordSaveSchemaOutcomeMetadata(metadata: unknown): RecordSaveSchemaOutcomeMetadata;
80
- /**
81
- * Normalized concurrency facts supplied by a controller or trusted internal
82
- * helper. Raw requests, headers, users, and record candidates must not cross
83
- * this boundary.
84
- */
85
- export interface RecordConcurrencyContext {
86
- readonly expectedRevision?: number;
87
- readonly entityTagSupplied: boolean;
88
- readonly formFingerprint?: string;
89
- readonly resolution?: RecordConcurrencyResolution;
90
- /** Diagnostic linkage only; this is not an idempotency key. */
91
- readonly resolutionOfRequestId?: string;
92
- }
93
- export declare const RECORD_VALIDATION_REQUEST_FACT_NAMES: readonly ["recordType", "targetStep", "merge", "datastreams"];
94
- /**
95
- * Project the same bounded request facts for browser and API transports.
96
- * Sources are checked in order and accessors are never invoked.
97
- */
98
- export declare function normalizeRecordValidationRequestFacts(...sources: readonly unknown[]): Readonly<Record<string, RecordValidationContextJSONValue>>;
99
- /** Shared transport-neutral runtime facts; public callers cannot add objects. */
100
- export declare function recordValidationRuntimeFacts(context: Pick<RecordSaveContext, 'routeFamily' | 'operation' | 'validationRuntimeContext'>, writeKind: RecordSaveOperation): Readonly<Record<string, RecordValidationContextJSONValue>>;
101
- export type PublicValidationOperationParseResult = {
102
- readonly valid: true;
103
- readonly value?: string;
104
- } | {
105
- readonly valid: false;
106
- };
107
- /** Narrow and trim the public operation field before it enters save context. */
108
- export declare function parsePublicValidationOperation(value: unknown): PublicValidationOperationParseResult;
109
- /** A typed response for record metadata save operations. */
110
- export declare class RecordSaveResponse extends StorageServiceResponse implements RecordSaveResult {
111
- #private;
112
- outcome: RecordSaveOutcome;
113
- problems: RecordSaveProblem[];
114
- completion: import("@researchdatabox/sails-ng-common").RecordSaveCompletion;
115
- requestId: string;
116
- readonly context: RecordSaveContext;
117
- concurrency?: RecordConcurrencyMetadata;
118
- /** Safe schema identity/result facts; never part of the stored record payload. */
119
- readonly schemaOutcome?: RecordSaveSchemaOutcomeMetadata;
120
- /** Legacy API v1 fields populated by the RDMP workspace post-save hook. */
121
- workspaceOid?: string;
122
- workspaceData?: unknown;
123
- constructor(context?: RecordSaveContext | string);
124
- /** True when the primary metadata mutation is known to have been applied. */
125
- wasPersisted(): boolean;
126
- /** True only when all required awaited save phases completed. */
127
- isComplete(): boolean;
128
- addProblem(problem: RecordSaveProblem): void;
129
- setAttachmentItems(items: readonly RecordAttachmentCompletionItem[]): void;
130
- setProjectedMetadata(metadata: Record<string, unknown> | null): void;
131
- /** Retain only bounded server-owned concurrency diagnostics. */
132
- setConcurrencyMetadata(metadata: unknown): void;
133
- /** Compatibility view used by save-pipeline code while the response owns its state directly. */
134
- get result(): RecordSaveResponse;
135
- confirmPrimaryPersistence(oid: string, source?: StorageServiceResponse): void;
136
- recordPrimaryNotApplied(problem?: RecordSaveProblem): void;
137
- recordPrimaryUnknown(problem?: RecordSaveProblem): void;
138
- recordPostPersistenceProblem(problem: RecordSaveProblem): void;
139
- recordWarning(problem: RecordSaveProblem): void;
140
- mergeLegacyHookFields(source: unknown): void;
141
- toResponse(): RecordSaveResponse;
142
- setSchemaOutcome(metadata: RecordSaveSchemaOutcomeInput): void;
143
- /**
144
- * A persisted save can only ever move from `saved` to `saved-with-warnings`.
145
- * Non-persisted outcomes are left untouched so a later warning cannot
146
- * manufacture a commit that never happened.
147
- */
148
- private downgradeCompleteSave;
149
- private recordPrimaryFailure;
150
- }
151
- /**
152
- * Small state owner used by RecordsService. Callers cannot accidentally
153
- * downgrade a confirmed commit while handling a later warning.
154
- */
155
- export declare class RecordSaveTracker {
156
- readonly context: RecordSaveContext;
157
- private readonly response;
158
- constructor(context: RecordSaveContext);
159
- get result(): RecordSaveResponse;
160
- confirmPrimaryPersistence(oid: string, source?: StorageServiceResponse): void;
161
- recordPrimaryNotApplied(problem?: RecordSaveProblem): void;
162
- recordPrimaryUnknown(problem?: RecordSaveProblem): void;
163
- recordPostPersistenceProblem(problem: RecordSaveProblem): void;
164
- /** Track a nonblocking warning before or after the primary commit. */
165
- recordWarning(problem: RecordSaveProblem): void;
166
- setAttachmentItems(items: readonly RecordAttachmentCompletionItem[]): void;
167
- setProjectedMetadata(metadata: Record<string, unknown> | null): void;
168
- setConcurrencyMetadata(metadata: unknown): void;
169
- setSchemaOutcome(metadata: RecordSaveSchemaOutcomeInput): void;
170
- /** Preserve the narrowly scoped legacy fields without exposing tracked save state to hooks. */
171
- mergeLegacyHookFields(source: unknown): void;
172
- /** A detached copy, so callers cannot mutate tracked state after the fact. */
173
- toResponse(): RecordSaveResponse;
174
- private recordPrimaryFailure;
175
- }
176
- /**
177
- * One canonical save request-correlation UUID. The format lives in the shared
178
- * package so browser, controller, and concurrency diagnostics agree.
179
- */
180
- export declare const isCanonicalSaveRequestId: typeof isRecordSaveRequestId;
181
- /** Drop every field outside the bounded server-owned concurrency allowlist. */
182
- export declare function normalizeRecordConcurrencyContext(value: unknown): RecordConcurrencyContext | undefined;
183
- export declare function createRecordSaveContext(context?: RecordSaveContextOptions): RecordSaveContext;
184
- /**
185
- * Read the client-supplied save request ID from request headers. Node
186
- * lower-cases incoming header names, and anything that is not a single
187
- * canonical UUID is replaced by a server-generated value.
188
- */
189
- export declare function readSaveRequestId(headers: Record<string, unknown> | undefined): string | undefined;
190
- export declare function isRecordConflictStatus(status: number): boolean;
191
- /**
192
- * HTTP status for a save that did not persist. Persisted outcomes never
193
- * reach here: once primary metadata is applied the route family decides the
194
- * success status and the warnings travel in the typed result.
195
- */
196
- export declare function recordSaveFailureStatus(result: Pick<RecordSaveResult, 'outcome' | 'problems'> | null | undefined): number;
197
- export interface RecordSaveDisplayError {
198
- readonly code?: string;
199
- readonly title?: string;
200
- readonly detail?: string;
201
- readonly source?: {
202
- readonly pointer?: string;
203
- };
204
- }
205
- /**
206
- * Project only the safe issue contract into the v2 JSON:API error array. The
207
- * complete typed result remains in `meta`; raw exceptions and candidates are
208
- * never used to infer a conflict.
209
- */
210
- export declare function recordSaveDisplayErrors(result: Pick<RecordSaveResult, 'problems'> | null | undefined, fallbackDetail: string): RecordSaveDisplayError[];
211
- export type StorageMutationLogger = (message: string, details?: Record<string, unknown>) => void;
212
- /**
213
- * Normalize old and new adapter responses at one boundary. Legacy success
214
- * is trusted temporarily for compatibility; legacy false is ambiguous
215
- * because a failed call is not proof that nothing was written.
216
- */
217
- export declare function resolveStorageMutationState(response: StorageServiceResponse | StorageMutationResponse | null | undefined, logDeprecation?: StorageMutationLogger): StorageMutationApplicationState;
218
- export declare function recordSaveProblem(kind: RecordSaveProblemKind, phase: RecordSaveLifecyclePhase, message: string, code?: string, issue?: Partial<RecordSaveIssue>): RecordSaveProblem;
219
- //# sourceMappingURL=RecordSaveResponse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecordSaveResponse.d.ts","sourceRoot":"","sources":["../src/RecordSaveResponse.ts"],"names":[],"mappings":"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"}