@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@researchdatabox/redbox-core",
3
- "version": "5.0.4-beta.12498",
3
+ "version": "5.0.4",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,20 +10,11 @@
10
10
  ],
11
11
  "scripts": {
12
12
  "test": "TS_NODE_PROJECT=test/tsconfig.json mocha",
13
- "test:record-contracts": "prettier --check \"scripts/verify-record-contract-coverage.ts\" && npm run typecheck:record-contracts && npm run typecheck:record-schema-tests && TS_NODE_PROJECT=scripts/tsconfig.json node --no-experimental-strip-types -r ts-node/register/transpile-only scripts/verify-record-contract-coverage.ts",
14
- "test:record-schema-rollout": "npm run test:record-schema-rollout:format && npm run typecheck:record-contracts && npm run test:record-schema-rollout:unit && npm run test:record-schema-rollout:disabled && npm run test:record-schema-rollout:runtime && npm run test:record-schema-rollout:evidence",
15
- "test:record-schema-rollout:format": "prettier --check \"scripts/verify-record-schema-rollout.ts\" \"test/unit/record-contract/record-schema-rollout-evidence-command.test.ts\" \"test/snapshots/record-schema-shadow-rollout.json\" \"../../test/integration/services/RecordsService.test.ts\"",
16
- "test:record-schema-rollout:unit": "TS_NODE_PROJECT=test/tsconfig.json mocha --no-config --node-option no-experimental-strip-types --require ts-node/register/transpile-only --require chai --require test/setup.ts --timeout 5000 test/unit/record-contract/record-schema-rollout-evidence-command.test.ts",
17
- "test:record-schema-rollout:disabled": "TS_NODE_PROJECT=test/tsconfig.json mocha --no-config --fail-zero --node-option no-experimental-strip-types --require ts-node/register/transpile-only --require chai --require test/setup.ts --timeout 5000 test/services/RecordsService.test.ts --grep \"leaves the non-schema create chain unchanged while record schemas are disabled|preserves baseline update outputs and legacy structural validation while record schemas are disabled|preserves baseline transition outputs and workflow semantics while record schemas are disabled|preserves baseline browser merge and array replacement while record schemas are disabled\"",
18
- "test:record-schema-rollout:runtime": "npm --prefix ../.. run test:record-schema-rollout:runtime",
19
- "test:record-schema-rollout:evidence": "TS_NODE_PROJECT=scripts/tsconfig.json node --no-experimental-strip-types -r ts-node/register/transpile-only scripts/verify-record-schema-rollout.ts",
20
13
  "build": "rm -rf dist && tsc",
21
- "lint": "cd ../.. && oxlint packages/redbox-core/src packages/redbox-core/scripts",
22
- "lint:fix": "cd ../.. && oxlint packages/redbox-core/src packages/redbox-core/scripts --fix",
14
+ "lint": "cd ../.. && oxlint packages/redbox-core/src",
15
+ "lint:fix": "cd ../.. && oxlint packages/redbox-core/src --fix",
23
16
  "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
24
17
  "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
25
- "typecheck:record-contracts": "tsc --noEmit -p scripts/tsconfig.json",
26
- "typecheck:record-schema-tests": "tsc --noEmit -p test/tsconfig.record-schema.json",
27
18
  "typecheck:strict": "tsc --noEmit -p tsconfig.strict.json",
28
19
  "generate-openapi": "ts-node --transpile-only scripts/generate-openapi.ts",
29
20
  "doc:api": "npm run generate-openapi --",
@@ -32,95 +23,90 @@
32
23
  "author": "",
33
24
  "license": "ISC",
34
25
  "dependencies": {
35
- "@agendajs/mongo-backend": "4.0.3",
36
- "@apidevtools/swagger-parser": "13.1.0",
37
- "@aws-sdk/s3-request-presigner": "3.1135.0",
38
- "@jsonjoy.com/json-pointer": "18.24.0",
39
- "@ocfl/ocfl": "0.4.0",
26
+ "@agendajs/mongo-backend": "4.0.2",
27
+ "@apidevtools/swagger-parser": "12.1.0",
28
+ "@aws-sdk/s3-request-presigner": "3.1092.0",
40
29
  "@opentelemetry/api": "1.9.1",
41
- "@researchdatabox/agenda-sqs-backend": "5.0.4-beta.12498",
42
- "@researchdatabox/raido-openapi-generated-node": "5.0.4-beta.12498",
43
- "@researchdatabox/rva-registry-openapi-generated-node": "5.0.4-beta.12498",
44
- "@researchdatabox/sails-ng-common": "5.0.4-beta.12498",
45
- "@tus/file-store": "2.1.1",
46
- "@tus/s3-store": "2.0.6",
47
- "@tus/server": "2.4.5",
30
+ "@researchdatabox/agenda-sqs-backend": "5.0.4",
31
+ "@researchdatabox/raido-openapi-generated-node": "5.0.4",
32
+ "@researchdatabox/rva-registry-openapi-generated-node": "5.0.4",
33
+ "@researchdatabox/sails-ng-common": "5.0.4",
34
+ "@tus/file-store": "2.1.0",
35
+ "@tus/s3-store": "2.0.4",
36
+ "@tus/server": "2.4.1",
48
37
  "@types/express": "5.0.6",
49
38
  "@types/lodash": "4.17.24",
50
39
  "@types/node": "24.12.4",
51
- "@uppy/companion": "7.0.0",
52
- "agenda": "6.2.6",
53
- "ajv": "8.20.0",
40
+ "agenda": "6.2.5",
54
41
  "async": "3.2.6",
55
- "axios": "1.20.0",
42
+ "axios": "1.18.0",
56
43
  "bcryptjs": "3.0.3",
57
44
  "check-disk-space": "3.4.0",
58
45
  "clean-css": "5.3.3",
59
46
  "compression": "1.8.2",
60
47
  "connect-mongo": "6.0.0",
61
48
  "copy-webpack-plugin": "14.0.0",
62
- "css-loader": "7.1.5",
49
+ "css-loader": "7.1.4",
63
50
  "css-minimizer-webpack-plugin": "8.0.0",
64
- "csv-parser": "3.2.1",
65
- "csv-stringify": "6.9.0",
51
+ "csv-stringify": "6.8.1",
66
52
  "dompurify": "3.4.16",
67
- "effect": "3.22.2",
53
+ "effect": "3.21.3",
68
54
  "ejs": "6.0.1",
69
55
  "express": "5.2.1",
70
56
  "express-session": "1.19.0",
71
57
  "flat": "6.0.1",
72
58
  "flydrive": "2.1.0",
73
- "fs-extra": "11.4.1",
59
+ "fs-extra": "11.3.6",
74
60
  "genson-js": "0.0.8",
75
61
  "glob": "13.0.6",
76
62
  "graceful-fs": "4.2.11",
77
- "handlebars": "4.7.9",
78
- "i18next": "26.4.2",
79
- "js-yaml": "5.4.2",
80
- "jsdom": "30.1.1",
81
- "jsonata": "2.2.2",
63
+ "handlebars": "4.7.10",
64
+ "i18next": "26.3.6",
65
+ "jsdom": "29.1.1",
66
+ "jsonata": "2.2.1",
67
+ "language-data-commons-vocabs": "1.0.1",
82
68
  "lodash": "4.18.1",
83
69
  "lucene-escape-query": "1.0.1",
84
70
  "luxon": "3.7.2",
85
71
  "mime-types": "3.0.2",
86
72
  "mini-css-extract-plugin": "2.10.2",
87
- "moment": "2.31.0",
88
- "mongodb": "7.7.0",
73
+ "moment": "2.30.1",
74
+ "mongodb": "7.5.0",
89
75
  "node-cache": "5.1.2",
90
76
  "node-schedule": "2.1.1",
91
- "nodemailer": "10.0.13",
77
+ "nodemailer": "9.1.1",
92
78
  "numeral": "2.0.6",
93
- "openid-client": "6.8.8",
79
+ "oni-ocfl": "npm:@researchdatabox/oni-ocfl@1.4.0",
80
+ "openid-client": "6.8.4",
94
81
  "passport": "0.7.0",
95
82
  "passport-http-bearer": "1.0.1",
96
83
  "passport-jwt": "4.0.1",
97
84
  "passport-local": "1.0.0",
98
85
  "pino": "10.3.1",
99
- "pino-logfmt": "1.1.5",
86
+ "pino-logfmt": "1.1.4",
100
87
  "reflect-metadata": "0.2.2",
101
88
  "resolve-url-loader": "5.0.0",
102
89
  "ro-crate": "3.7.2",
103
90
  "rxjs": "7.8.2",
104
91
  "sails": "1.5.18",
105
92
  "sails-mongo": "2.1.2",
106
- "sass": "1.105.1",
107
- "sass-loader": "17.0.1",
93
+ "sass": "1.101.0",
94
+ "sass-loader": "17.0.0",
108
95
  "skipper": "0.9.8",
109
96
  "skipper-gridfs": "1.0.2",
110
97
  "typescript": "5.9.3",
111
- "typescript-json-schema": "0.68.0",
98
+ "typescript-json-schema": "0.67.4",
112
99
  "umzug": "3.8.3",
113
100
  "url-pattern": "1.0.3",
114
- "uuid": "14.0.2",
115
- "wawoff2": "2.0.1",
116
- "webpack": "5.111.1",
101
+ "uuid": "14.0.1",
102
+ "webpack": "5.108.4",
117
103
  "wkt-parser-helper": "7.1.0",
118
- "yaml": "2.9.1",
119
- "zod": "4.6.5",
120
- "@asteasolutions/zod-to-openapi": "9.1.0"
104
+ "yaml": "2.9.0",
105
+ "zod": "4.4.3",
106
+ "@asteasolutions/zod-to-openapi": "8.5.0"
121
107
  },
122
108
  "overrides": {
123
- "axios": "1.20.0",
109
+ "axios": "1.18.0",
124
110
  "fast-xml-parser": "5.10.1",
125
111
  "immutable": "5.1.8",
126
112
  "sails-mongo": {
@@ -129,7 +115,7 @@
129
115
  "srvx": "0.11.13",
130
116
  "serialize-javascript": "7.0.5",
131
117
  "svgo": "4.0.2",
132
- "uuid": "14.0.2",
118
+ "uuid": "14.0.1",
133
119
  "@parcel/watcher": {
134
120
  "picomatch": "4.0.4"
135
121
  },
@@ -142,18 +128,19 @@
142
128
  "ro-crate-modes": "git+https://github.com/Language-Research-Technology/ro-crate-modes.git#3d80adab4cf94c5e3df4756d0160a342b5e3d74e"
143
129
  },
144
130
  "devDependencies": {
131
+ "@jsonjoy.com/json-pointer": "18.24.0",
145
132
  "@tsconfig/node24": "24.0.4",
146
133
  "@types/chai": "5.2.3",
147
134
  "@types/ejs": "3.1.5",
148
135
  "@types/express-session": "1.19.0",
149
136
  "@types/fs-extra": "11.0.4",
150
137
  "@types/graceful-fs": "4.1.9",
151
- "@types/jsdom": "30.0.0",
138
+ "@types/jsdom": "28.0.3",
152
139
  "@types/luxon": "3.7.1",
153
140
  "@types/mime-types": "3.0.1",
154
141
  "@types/mocha": "10.0.10",
155
142
  "@types/node-schedule": "2.1.8",
156
- "@types/nodemailer": "8.0.2",
143
+ "@types/nodemailer": "8.0.1",
157
144
  "@types/numeral": "2.0.5",
158
145
  "@types/passport-http-bearer": "1.0.42",
159
146
  "@types/passport-jwt": "4.0.1",
@@ -163,10 +150,10 @@
163
150
  "mocha": "11.7.6",
164
151
  "mocha-junit-reporter": "2.2.1",
165
152
  "nyc": "18.0.0",
166
- "oxlint": "1.86.0",
167
- "prettier": "3.9.9",
153
+ "oxlint": "1.74.0",
154
+ "prettier": "3.8.4",
168
155
  "serialize-javascript": "7.0.5",
169
- "sinon": "22.1.0",
156
+ "sinon": "22.0.0",
170
157
  "ts-node": "10.9.2"
171
158
  },
172
159
  "nyc": {
@@ -1,3 +0,0 @@
1
- /** A staging object ID is one bounded key segment, never a path. */
2
- export declare function normalizeAttachmentStagingFileId(value: unknown): string | undefined;
3
- //# sourceMappingURL=AttachmentStagingIdentity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AttachmentStagingIdentity.d.ts","sourceRoot":"","sources":["../src/AttachmentStagingIdentity.ts"],"names":[],"mappings":"AAEA,oEAAoE;AACpE,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGnF"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.normalizeAttachmentStagingFileId = normalizeAttachmentStagingFileId;
4
- const ATTACHMENT_STAGING_FILE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
5
- /** A staging object ID is one bounded key segment, never a path. */
6
- function normalizeAttachmentStagingFileId(value) {
7
- const normalized = typeof value === 'string' ? value.trim() : '';
8
- return ATTACHMENT_STAGING_FILE_ID_PATTERN.test(normalized) ? normalized : undefined;
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0YWNobWVudFN0YWdpbmdJZGVudGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9BdHRhY2htZW50U3RhZ2luZ0lkZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsNEVBR0M7QUFORCxNQUFNLGtDQUFrQyxHQUFHLHFDQUFxQyxDQUFDO0FBRWpGLG9FQUFvRTtBQUNwRSxTQUFnQixnQ0FBZ0MsQ0FBQyxLQUFjO0lBQzdELE1BQU0sVUFBVSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakUsT0FBTyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3RGLENBQUMifQ==
@@ -1,51 +0,0 @@
1
- import { type Attributes } from '@opentelemetry/api';
2
- import { type RecordConcurrencyProblemCode, type RecordConcurrencyResolution, type RecordConcurrentModificationMode, type RecordSaveOutcome, type RecordSavePhase } from '@researchdatabox/sails-ng-common';
3
- import type { RecordSaveOperation, RecordSaveRouteFamily } from './RecordSaveResponse';
4
- export type RecordConcurrencyEventKind = 'save-outcome' | 'internal-retry' | 'lifecycle-recovery';
5
- export type RecordConcurrencyPreconditionResult = 'not-applicable' | 'missing' | 'matching' | 'stale';
6
- export interface RecordConcurrencyEvent {
7
- readonly kind: RecordConcurrencyEventKind;
8
- readonly routeFamily: RecordSaveRouteFamily;
9
- readonly writeKind: RecordSaveOperation;
10
- /** Configured record-type reference, for protected structured logs only. */
11
- readonly recordType?: string;
12
- readonly phase: RecordSavePhase;
13
- readonly outcome: RecordSaveOutcome | 'attempted' | 'exhausted' | 'completed' | 'cancelled' | 'retained';
14
- readonly mode?: RecordConcurrentModificationMode;
15
- readonly expectedRevision?: number;
16
- readonly currentRevision?: number;
17
- readonly precondition: RecordConcurrencyPreconditionResult;
18
- readonly problemKind?: string;
19
- readonly problemCode?: RecordConcurrencyProblemCode | string;
20
- readonly resolution?: RecordConcurrencyResolution;
21
- readonly errorType?: string;
22
- }
23
- export interface SafeRecordConcurrencyEvent {
24
- readonly kind: string;
25
- readonly routeFamily: string;
26
- readonly writeKind: string;
27
- readonly recordType?: string;
28
- readonly phase: string;
29
- readonly outcome: string;
30
- readonly mode?: string;
31
- readonly expectedRevision?: number;
32
- readonly currentRevision?: number;
33
- readonly precondition: string;
34
- readonly problemKind?: string;
35
- readonly problemCode?: string;
36
- readonly resolution?: string;
37
- readonly errorType?: string;
38
- }
39
- /** Low-cardinality metric labels. Identifiers and revisions are deliberately impossible to add here. */
40
- export declare function recordConcurrencyMetricLabels(event: RecordConcurrencyEvent): Attributes;
41
- /**
42
- * Emit one value-free structured event and its bounded counters.
43
- *
44
- * Revision coordinates are bounded integers, and record type is log-only
45
- * because deployments may have an unbounded extension set. Identifiers are
46
- * deliberately absent, these values are never copied to metric labels, and
47
- * this contract has no fields capable of carrying record values, headers,
48
- * paths, or exceptions.
49
- */
50
- export declare function emitRecordConcurrencyEvent(event: RecordConcurrencyEvent, logger?: Pick<Console, 'info' | 'warn'>): Readonly<SafeRecordConcurrencyEvent>;
51
- //# sourceMappingURL=RecordConcurrencyObservability.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecordConcurrencyObservability.d.ts","sourceRoot":"","sources":["../src/RecordConcurrencyObservability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAIL,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,gCAAgC,EACrC,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAEvF,MAAM,MAAM,0BAA0B,GAAG,cAAc,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;AAClG,MAAM,MAAM,mCAAmC,GAAG,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAEtG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;IACzG,QAAQ,CAAC,IAAI,CAAC,EAAE,gCAAgC,CAAC;IACjD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,mCAAmC,CAAC;IAC3D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,4BAA4B,GAAG,MAAM,CAAC;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,2BAA2B,CAAC;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AA0DD,wGAAwG;AACxG,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,sBAAsB,GAAG,UAAU,CAYvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,sBAAsB,EAC7B,MAAM,GAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAa,GACjD,QAAQ,CAAC,0BAA0B,CAAC,CAiDtC"}
@@ -1,136 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.recordConcurrencyMetricLabels = recordConcurrencyMetricLabels;
4
- exports.emitRecordConcurrencyEvent = emitRecordConcurrencyEvent;
5
- const api_1 = require("@opentelemetry/api");
6
- const sails_ng_common_1 = require("@researchdatabox/sails-ng-common");
7
- const conflictCodes = new Set(sails_ng_common_1.RECORD_CONCURRENCY_PROBLEM_CODES);
8
- const eventKinds = new Set(['save-outcome', 'internal-retry', 'lifecycle-recovery']);
9
- const routeFamilies = new Set(['browser', 'api', 'internal']);
10
- const writeKinds = new Set(['create', 'update', 'transition', 'delete', 'restore', 'purge']);
11
- const phases = new Set(['pre-save', 'persistence', 'attachments', 'post-save', 'response', 'transport']);
12
- const outcomes = new Set([
13
- 'saved',
14
- 'saved-with-warnings',
15
- 'not-saved',
16
- 'unknown',
17
- 'attempted',
18
- 'exhausted',
19
- 'completed',
20
- 'cancelled',
21
- 'retained',
22
- ]);
23
- const preconditions = new Set(['not-applicable', 'missing', 'matching', 'stale']);
24
- const modes = new Set(sails_ng_common_1.RECORD_CONCURRENT_MODIFICATION_MODES);
25
- const resolutions = new Set(sails_ng_common_1.RECORD_CONCURRENCY_RESOLUTIONS);
26
- const problemKinds = new Set(['validation', 'processing', 'authorization', 'conflict', 'system', 'network']);
27
- const safeLogReferencePattern = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
28
- function boundedMetricLabel(value, allowed, fallback) {
29
- return typeof value === 'string' && allowed.has(value) ? value : fallback;
30
- }
31
- function boundedLogReference(value, fallback) {
32
- return typeof value === 'string' && safeLogReferencePattern.test(value.trim()) ? value.trim() : fallback;
33
- }
34
- function boundedRevision(value) {
35
- return Number.isSafeInteger(value) && Number(value) >= 0 ? Number(value) : undefined;
36
- }
37
- const meter = api_1.metrics.getMeter('redbox.record-concurrency');
38
- const preconditionCounter = meter.createCounter('record_concurrency_precondition_total', {
39
- description: 'Record mutation preconditions by bounded policy and result.',
40
- unit: '{precondition}',
41
- });
42
- const conflictCounter = meter.createCounter('record_concurrency_conflict_total', {
43
- description: 'Certified record concurrency conflicts by safe code and write kind.',
44
- unit: '{conflict}',
45
- });
46
- const resolutionCounter = meter.createCounter('record_concurrency_resolution_total', {
47
- description: 'Record mutation results by normalized concurrency resolution.',
48
- unit: '{resolution}',
49
- });
50
- const internalRetryCounter = meter.createCounter('record_concurrency_internal_retry_total', {
51
- description: 'Bounded recomputable internal mutation retries.',
52
- unit: '{retry}',
53
- });
54
- const lifecycleRecoveryCounter = meter.createCounter('record_concurrency_lifecycle_recovery_total', {
55
- description: 'Lifecycle recovery results by operation and bounded outcome.',
56
- unit: '{recovery}',
57
- });
58
- /** Low-cardinality metric labels. Identifiers and revisions are deliberately impossible to add here. */
59
- function recordConcurrencyMetricLabels(event) {
60
- return {
61
- event_kind: boundedMetricLabel(event.kind, eventKinds, 'other'),
62
- route_family: boundedMetricLabel(event.routeFamily, routeFamilies, 'other'),
63
- write_kind: boundedMetricLabel(event.writeKind, writeKinds, 'other'),
64
- phase: boundedMetricLabel(event.phase, phases, 'other'),
65
- outcome: boundedMetricLabel(event.outcome, outcomes, 'other'),
66
- precondition: boundedMetricLabel(event.precondition, preconditions, 'other'),
67
- mode: event.mode === undefined ? 'unavailable' : boundedMetricLabel(event.mode, modes, 'other'),
68
- problem_code: event.problemCode ? (conflictCodes.has(event.problemCode) ? event.problemCode : 'other') : 'none',
69
- resolution: event.resolution === undefined ? 'direct' : boundedMetricLabel(event.resolution, resolutions, 'other'),
70
- };
71
- }
72
- /**
73
- * Emit one value-free structured event and its bounded counters.
74
- *
75
- * Revision coordinates are bounded integers, and record type is log-only
76
- * because deployments may have an unbounded extension set. Identifiers are
77
- * deliberately absent, these values are never copied to metric labels, and
78
- * this contract has no fields capable of carrying record values, headers,
79
- * paths, or exceptions.
80
- */
81
- function emitRecordConcurrencyEvent(event, logger = sails.log) {
82
- const expectedRevision = boundedRevision(event.expectedRevision);
83
- const currentRevision = boundedRevision(event.currentRevision);
84
- const safeEvent = Object.freeze({
85
- kind: boundedMetricLabel(event.kind, eventKinds, 'other'),
86
- routeFamily: boundedMetricLabel(event.routeFamily, routeFamilies, 'other'),
87
- writeKind: boundedMetricLabel(event.writeKind, writeKinds, 'other'),
88
- ...(event.recordType === undefined ? {} : { recordType: boundedLogReference(event.recordType, 'unavailable') }),
89
- phase: boundedMetricLabel(event.phase, phases, 'other'),
90
- outcome: boundedMetricLabel(event.outcome, outcomes, 'other'),
91
- ...(event.mode === undefined ? {} : { mode: boundedMetricLabel(event.mode, modes, 'other') }),
92
- ...(expectedRevision === undefined ? {} : { expectedRevision }),
93
- ...(currentRevision === undefined ? {} : { currentRevision }),
94
- precondition: boundedMetricLabel(event.precondition, preconditions, 'other'),
95
- ...(event.problemKind === undefined
96
- ? {}
97
- : { problemKind: boundedMetricLabel(event.problemKind, problemKinds, 'other') }),
98
- ...(event.problemCode === undefined
99
- ? {}
100
- : { problemCode: conflictCodes.has(event.problemCode) ? event.problemCode : 'other' }),
101
- ...(event.resolution === undefined
102
- ? {}
103
- : { resolution: boundedMetricLabel(event.resolution, resolutions, 'other') }),
104
- ...(event.errorType === undefined ? {} : { errorType: boundedLogReference(event.errorType, 'other') }),
105
- });
106
- const logDetails = Object.freeze({ event: 'record_concurrency_event', ...safeEvent });
107
- const isWarning = Boolean(safeEvent.errorType || safeEvent.problemKind || safeEvent.problemCode) ||
108
- safeEvent.outcome === 'not-saved' ||
109
- safeEvent.outcome === 'unknown' ||
110
- safeEvent.outcome === 'saved-with-warnings' ||
111
- safeEvent.outcome === 'exhausted' ||
112
- safeEvent.outcome === 'retained';
113
- if (isWarning) {
114
- logger.warn('record_concurrency_event', logDetails);
115
- }
116
- else {
117
- logger.info('record_concurrency_event', logDetails);
118
- }
119
- const labels = recordConcurrencyMetricLabels(event);
120
- if (safeEvent.kind === 'save-outcome') {
121
- if (safeEvent.writeKind !== 'create')
122
- preconditionCounter.add(1, labels);
123
- if (safeEvent.problemCode && conflictCodes.has(safeEvent.problemCode))
124
- conflictCounter.add(1, labels);
125
- if (safeEvent.resolution)
126
- resolutionCounter.add(1, labels);
127
- }
128
- else if (safeEvent.kind === 'internal-retry') {
129
- internalRetryCounter.add(1, labels);
130
- }
131
- else if (safeEvent.kind === 'lifecycle-recovery') {
132
- lifecycleRecoveryCounter.add(1, labels);
133
- }
134
- return safeEvent;
135
- }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkQ29uY3VycmVuY3lPYnNlcnZhYmlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1JlY29yZENvbmN1cnJlbmN5T2JzZXJ2YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTRHQSxzRUFZQztBQVdELGdFQW9EQztBQXZMRCw0Q0FBOEQ7QUFDOUQsc0VBUzBDO0FBeUMxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBUyxrREFBZ0MsQ0FBQyxDQUFDO0FBQ3hFLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFTLENBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQztBQUM3RixNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN0RSxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNyRyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBUyxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNqSCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBUztJQUMvQixPQUFPO0lBQ1AscUJBQXFCO0lBQ3JCLFdBQVc7SUFDWCxTQUFTO0lBQ1QsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0lBQ1gsV0FBVztJQUNYLFVBQVU7Q0FDWCxDQUFDLENBQUM7QUFDSCxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBUyxDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMxRixNQUFNLEtBQUssR0FB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
@@ -1,31 +0,0 @@
1
- import { type RecordEntityTag } from '@researchdatabox/sails-ng-common';
2
- export type { RecordEntityTag } from '@researchdatabox/sails-ng-common';
3
- export type RecordEntityTagParseFailureReason = 'missing' | 'malformed' | 'too-long' | 'multiple' | 'weak' | 'wildcard' | 'record-mismatch';
4
- export interface ParsedRecordEntityTag {
5
- readonly entityTag: RecordEntityTag;
6
- readonly expectedRevision: number;
7
- }
8
- export type RecordEntityTagParseResult = {
9
- readonly valid: true;
10
- readonly value: ParsedRecordEntityTag;
11
- } | {
12
- readonly valid: false;
13
- readonly reason: RecordEntityTagParseFailureReason;
14
- };
15
- /**
16
- * Format the sole record entity-tag representation. Callers must treat the
17
- * returned quoted value as opaque and must never derive it from the numeric
18
- * revision on the client.
19
- */
20
- export declare function formatRecordEntityTag(recordOid: string, revision: number): RecordEntityTag;
21
- /**
22
- * Parse one exact `If-Match` tag for a known record. Arrays, comma-joined
23
- * lists, weak validators, wildcards, malformed values, and tags bound to
24
- * another OID are all rejected, and no raw header text is returned or logged.
25
- *
26
- * An old but well-formed tag for the same record parses successfully: deciding
27
- * that it is stale belongs to the policy and compare-and-set boundary, not to
28
- * request parsing.
29
- */
30
- export declare function parseRecordEntityTag(value: unknown, recordOid: string): RecordEntityTagParseResult;
31
- //# sourceMappingURL=RecordEntityTag.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecordEntityTag.d.ts","sourceRoot":"","sources":["../src/RecordEntityTag.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,eAAe,EACrB,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,MAAM,iCAAiC,GACzC,SAAS,GACT,WAAW,GACX,UAAU,GACV,UAAU,GACV,MAAM,GACN,UAAU,GACV,iBAAiB,CAAC;AAEtB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,MAAM,0BAA0B,GAClC;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,GAC/D;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,iCAAiC,CAAA;CAAE,CAAC;AA8BlF;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAU1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,0BAA0B,CA+ClG"}
@@ -1,101 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatRecordEntityTag = formatRecordEntityTag;
4
- exports.parseRecordEntityTag = parseRecordEntityTag;
5
- const node_crypto_1 = require("node:crypto");
6
- const sails_ng_common_1 = require("@researchdatabox/sails-ng-common");
7
- /**
8
- * The record OID is server-supplied route context, not client input, so an
9
- * unusable value is a programming error rather than a request-contract error.
10
- */
11
- function assertRecordOid(recordOid) {
12
- if (typeof recordOid !== 'string' ||
13
- recordOid.length === 0 ||
14
- recordOid.length > sails_ng_common_1.RECORD_ENTITY_TAG_RECORD_ID_MAX_LENGTH) {
15
- throw new TypeError('Record OID must be a non-empty bounded string.');
16
- }
17
- }
18
- /**
19
- * Bind identity and revision into a fixed-width payload. The digest is an
20
- * unkeyed hash: it makes a tag from another record fail to match and keeps the
21
- * tag bounded regardless of OID length. It is not a signature and carries no
22
- * authorization.
23
- */
24
- function identityDigest(recordOid, revision) {
25
- return (0, node_crypto_1.createHash)('sha256')
26
- .update(`${sails_ng_common_1.RECORD_ENTITY_TAG_VERSION}\0${recordOid.length}\0`, 'utf8')
27
- .update(recordOid, 'utf8')
28
- .update(`\0${revision}`, 'utf8')
29
- .digest('base64url');
30
- }
31
- /**
32
- * Format the sole record entity-tag representation. Callers must treat the
33
- * returned quoted value as opaque and must never derive it from the numeric
34
- * revision on the client.
35
- */
36
- function formatRecordEntityTag(recordOid, revision) {
37
- assertRecordOid(recordOid);
38
- if (!(0, sails_ng_common_1.isRecordRevision)(revision)) {
39
- throw new TypeError('Record revision must be a non-negative safe integer.');
40
- }
41
- const entityTag = `"${sails_ng_common_1.RECORD_ENTITY_TAG_VERSION}.${revision}.${identityDigest(recordOid, revision)}"`;
42
- if (!(0, sails_ng_common_1.isRecordEntityTag)(entityTag)) {
43
- throw new Error('Generated record entity tag did not satisfy the shared contract.');
44
- }
45
- return entityTag;
46
- }
47
- /**
48
- * Parse one exact `If-Match` tag for a known record. Arrays, comma-joined
49
- * lists, weak validators, wildcards, malformed values, and tags bound to
50
- * another OID are all rejected, and no raw header text is returned or logged.
51
- *
52
- * An old but well-formed tag for the same record parses successfully: deciding
53
- * that it is stale belongs to the policy and compare-and-set boundary, not to
54
- * request parsing.
55
- */
56
- function parseRecordEntityTag(value, recordOid) {
57
- assertRecordOid(recordOid);
58
- if (value === undefined || value === null) {
59
- return { valid: false, reason: 'missing' };
60
- }
61
- if (Array.isArray(value)) {
62
- return { valid: false, reason: 'multiple' };
63
- }
64
- if (typeof value !== 'string') {
65
- return { valid: false, reason: 'malformed' };
66
- }
67
- // Bound the untrusted header before any further work.
68
- if (value.length > sails_ng_common_1.RECORD_ENTITY_TAG_MAX_LENGTH) {
69
- return { valid: false, reason: 'too-long' };
70
- }
71
- const normalized = value.trim();
72
- // Once a header field is present, an empty value is malformed. Only the
73
- // absence of the field is a missing precondition.
74
- if (normalized.length === 0) {
75
- return { valid: false, reason: 'malformed' };
76
- }
77
- if (normalized === '*') {
78
- return { valid: false, reason: 'wildcard' };
79
- }
80
- if (/^W\//i.test(normalized)) {
81
- return { valid: false, reason: 'weak' };
82
- }
83
- if (normalized.includes(',')) {
84
- return { valid: false, reason: 'multiple' };
85
- }
86
- const match = sails_ng_common_1.RECORD_ENTITY_TAG_PATTERN.exec(normalized);
87
- if (!match) {
88
- return { valid: false, reason: 'malformed' };
89
- }
90
- const expectedRevision = Number(match[1]);
91
- if (!(0, sails_ng_common_1.isRecordRevision)(expectedRevision)) {
92
- return { valid: false, reason: 'malformed' };
93
- }
94
- // Recomputing the whole tag proves the digest binds this OID and revision.
95
- const expectedTag = formatRecordEntityTag(recordOid, expectedRevision);
96
- if (normalized !== expectedTag) {
97
- return { valid: false, reason: 'record-mismatch' };
98
- }
99
- return { valid: true, value: { entityTag: expectedTag, expectedRevision } };
100
- }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkRW50aXR5VGFnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1JlY29yZEVudGl0eVRhZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdFQSxzREFVQztBQVdELG9EQStDQztBQXBJRCw2Q0FBeUM7QUFDekMsc0VBUTBDO0FBc0IxQzs7O0dBR0c7QUFDSCxTQUFTLGVBQWUsQ0FBQyxTQUFpQjtJQUN4QyxJQUNFLE9BQU8sU0FBUyxLQUFLLFFBQVE7UUFDN0IsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ3RCLFNBQVMsQ0FBQyxNQUFNLEdBQUcsd0RBQXNDLEVBQ3pELENBQUM7UUFDRCxNQUFNLElBQUksU0FBUyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDeEUsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsY0FBYyxDQUFDLFNBQWlCLEVBQUUsUUFBZ0I7SUFDekQsT0FBTyxJQUFBLHdCQUFVLEVBQUMsUUFBUSxDQUFDO1NBQ3hCLE1BQU0sQ0FBQyxHQUFHLDJDQUF5QixLQUFLLFNBQVMsQ0FBQyxNQUFNLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckUsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUM7U0FDekIsTUFBTSxDQUFDLEtBQUssUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDO1NBQy9CLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFNBQWlCLEVBQUUsUUFBZ0I7SUFDdkUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLElBQUksQ0FBQyxJQUFBLGtDQUFnQixFQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLDJDQUF5QixJQUFJLFFBQVEsSUFBSSxj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
@@ -1,7 +0,0 @@
1
- import { type RecordFormFingerprint } from '@researchdatabox/sails-ng-common';
2
- /**
3
- * Build a stable, bounded fingerprint for an authoritative form contract.
4
- * Accessors are never invoked and the serialized contract is never retained.
5
- */
6
- export declare function formatRecordFormFingerprint(value: unknown): RecordFormFingerprint | undefined;
7
- //# sourceMappingURL=RecordFormFingerprint.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecordFormFingerprint.d.ts","sourceRoot":"","sources":["../src/RecordFormFingerprint.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAKvG;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,CAuF7F"}