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

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 (616) 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/session.config.d.ts +2 -2
  93. package/dist/config/session.config.d.ts.map +1 -1
  94. package/dist/config/workflow.config.d.ts +0 -6
  95. package/dist/config/workflow.config.d.ts.map +1 -1
  96. package/dist/config/workflow.config.js +1 -1
  97. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  98. package/dist/configmodels/AdminSidebarConfig.js +2 -4
  99. package/dist/configmodels/ConfigModels.d.ts +1 -1
  100. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  101. package/dist/configmodels/ConfigModels.js +9 -26
  102. package/dist/configmodels/FigsharePublishing.d.ts +103 -0
  103. package/dist/configmodels/FigsharePublishing.d.ts.map +1 -1
  104. package/dist/configmodels/FigsharePublishing.js +36 -2
  105. package/dist/controllers/AppConfigController.d.ts.map +1 -1
  106. package/dist/controllers/AppConfigController.js +1 -4
  107. package/dist/controllers/BrandingAppController.d.ts +7 -29
  108. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  109. package/dist/controllers/BrandingAppController.js +69 -265
  110. package/dist/controllers/BrandingController.d.ts +1 -24
  111. package/dist/controllers/BrandingController.d.ts.map +1 -1
  112. package/dist/controllers/BrandingController.js +43 -173
  113. package/dist/controllers/DashboardConfigController.d.ts +2 -6
  114. package/dist/controllers/DashboardConfigController.d.ts.map +1 -1
  115. package/dist/controllers/DashboardConfigController.js +4 -18
  116. package/dist/controllers/DynamicAssetController.d.ts +5 -7
  117. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  118. package/dist/controllers/DynamicAssetController.js +12 -21
  119. package/dist/controllers/RecordAuditController.d.ts.map +1 -1
  120. package/dist/controllers/RecordAuditController.js +24 -6
  121. package/dist/controllers/RecordController.d.ts +4 -45
  122. package/dist/controllers/RecordController.d.ts.map +1 -1
  123. package/dist/controllers/RecordController.js +345 -778
  124. package/dist/controllers/index.d.ts.map +1 -1
  125. package/dist/controllers/index.js +1 -4
  126. package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
  127. package/dist/controllers/webservice/AdminController.js +3 -4
  128. package/dist/controllers/webservice/BrandingController.d.ts +1 -26
  129. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  130. package/dist/controllers/webservice/BrandingController.js +116 -292
  131. package/dist/controllers/webservice/DashboardConfigController.d.ts +17 -25
  132. package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -1
  133. package/dist/controllers/webservice/DashboardConfigController.js +205 -90
  134. package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
  135. package/dist/controllers/webservice/FormManagementController.js +3 -37
  136. package/dist/controllers/webservice/RecordController.d.ts +1 -15
  137. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  138. package/dist/controllers/webservice/RecordController.js +267 -647
  139. package/dist/controllers/webservice/RecordTypeController.d.ts +1 -6
  140. package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
  141. package/dist/controllers/webservice/RecordTypeController.js +3 -21
  142. package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
  143. package/dist/controllers/webservice/SearchController.js +3 -7
  144. package/dist/hooks/defineRedboxHook.d.ts +0 -3
  145. package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
  146. package/dist/hooks/defineRedboxHook.js +1 -4
  147. package/dist/index.d.ts +25 -50
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +4 -90
  150. package/dist/loader/bootstrapShimRuntime.d.ts +1 -1
  151. package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -1
  152. package/dist/loader/bootstrapShimRuntime.js +12 -20
  153. package/dist/loader/index.d.ts +0 -9
  154. package/dist/loader/index.d.ts.map +1 -1
  155. package/dist/loader/index.js +4 -93
  156. package/dist/middleware/redboxSession.d.ts.map +1 -1
  157. package/dist/middleware/redboxSession.js +15 -3
  158. package/dist/model/BuildResponse.d.ts +11 -25
  159. package/dist/model/BuildResponse.d.ts.map +1 -1
  160. package/dist/model/BuildResponse.js +3 -4
  161. package/dist/model/DashboardTypeResponseModel.d.ts +0 -6
  162. package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
  163. package/dist/model/DashboardTypeResponseModel.js +1 -7
  164. package/dist/model/DashboardViewResponseModel.d.ts +1 -5
  165. package/dist/model/DashboardViewResponseModel.d.ts.map +1 -1
  166. package/dist/model/DashboardViewResponseModel.js +3 -6
  167. package/dist/model/RBValidationError.d.ts +0 -17
  168. package/dist/model/RBValidationError.d.ts.map +1 -1
  169. package/dist/model/RBValidationError.js +1 -37
  170. package/dist/model/RecordTypeResponseModel.d.ts +4 -12
  171. package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
  172. package/dist/model/RecordTypeResponseModel.js +2 -11
  173. package/dist/model/index.d.ts +1 -5
  174. package/dist/model/index.d.ts.map +1 -1
  175. package/dist/model/index.js +2 -5
  176. package/dist/model/storage/BrandingModel.d.ts +0 -7
  177. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  178. package/dist/model/storage/BrandingModel.js +1 -7
  179. package/dist/model/storage/DeletedRecordModel.d.ts +0 -35
  180. package/dist/model/storage/DeletedRecordModel.d.ts.map +1 -1
  181. package/dist/model/storage/DeletedRecordModel.js +1 -62
  182. package/dist/model/storage/FigshareSyncModel.d.ts +126 -0
  183. package/dist/model/storage/FigshareSyncModel.d.ts.map +1 -0
  184. package/dist/model/storage/FigshareSyncModel.js +3 -0
  185. package/dist/model/storage/IntegrationAuditModel.d.ts +2 -16
  186. package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
  187. package/dist/model/storage/IntegrationAuditModel.js +1 -15
  188. package/dist/model/storage/RecordAuditModel.d.ts +4 -11
  189. package/dist/model/storage/RecordAuditModel.d.ts.map +1 -1
  190. package/dist/model/storage/RecordAuditModel.js +30 -8
  191. package/dist/model/storage/RecordModel.d.ts +3 -6
  192. package/dist/model/storage/RecordModel.d.ts.map +1 -1
  193. package/dist/model/storage/RecordTypeModel.d.ts +0 -6
  194. package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
  195. package/dist/model/storage/RecordTypeModel.js +1 -4
  196. package/dist/model/storage/index.d.ts +10 -12
  197. package/dist/model/storage/index.d.ts.map +1 -1
  198. package/dist/model/storage/index.js +2 -24
  199. package/dist/policies/checkAuth.d.ts +6 -2
  200. package/dist/policies/checkAuth.d.ts.map +1 -1
  201. package/dist/policies/checkAuth.js +9 -32
  202. package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
  203. package/dist/policies/contentSecurityPolicy.js +2 -85
  204. package/dist/policies/index.d.ts +2 -3
  205. package/dist/policies/index.d.ts.map +1 -1
  206. package/dist/policies/index.js +2 -4
  207. package/dist/policies/validateApiContractRequest.d.ts.map +1 -1
  208. package/dist/policies/validateApiContractRequest.js +11 -49
  209. package/dist/services/AgendaQueueService.d.ts +1 -1
  210. package/dist/services/AgendaQueueService.d.ts.map +1 -1
  211. package/dist/services/AgendaQueueService.js +7 -4
  212. package/dist/services/AppConfigService.d.ts +0 -6
  213. package/dist/services/AppConfigService.d.ts.map +1 -1
  214. package/dist/services/AppConfigService.js +1 -23
  215. package/dist/services/AttachmentMetadataService.d.ts +0 -58
  216. package/dist/services/AttachmentMetadataService.d.ts.map +1 -1
  217. package/dist/services/AttachmentMetadataService.js +8 -643
  218. package/dist/services/BrandingLogoService.d.ts +1 -6
  219. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  220. package/dist/services/BrandingLogoService.js +9 -77
  221. package/dist/services/BrandingService.d.ts +9 -171
  222. package/dist/services/BrandingService.d.ts.map +1 -1
  223. package/dist/services/BrandingService.js +68 -572
  224. package/dist/services/BrandingThemeCssService.d.ts +1 -17
  225. package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
  226. package/dist/services/BrandingThemeCssService.js +12 -71
  227. package/dist/services/BrandingThemeTokens.d.ts.map +1 -1
  228. package/dist/services/BrandingThemeTokens.js +2 -1
  229. package/dist/services/DashboardConfigService.d.ts +54 -214
  230. package/dist/services/DashboardConfigService.d.ts.map +1 -1
  231. package/dist/services/DashboardConfigService.js +261 -829
  232. package/dist/services/DashboardTypesService.d.ts +4 -15
  233. package/dist/services/DashboardTypesService.d.ts.map +1 -1
  234. package/dist/services/DashboardTypesService.js +139 -72
  235. package/dist/services/DoiService.d.ts +1 -1
  236. package/dist/services/DoiService.d.ts.map +1 -1
  237. package/dist/services/DoiService.js +45 -71
  238. package/dist/services/FigshareService.d.ts +15 -10
  239. package/dist/services/FigshareService.d.ts.map +1 -1
  240. package/dist/services/FigshareService.js +82 -583
  241. package/dist/services/FormRecordConsistencyService.d.ts +23 -8
  242. package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
  243. package/dist/services/FormRecordConsistencyService.js +70 -54
  244. package/dist/services/FormsService.d.ts +2 -91
  245. package/dist/services/FormsService.d.ts.map +1 -1
  246. package/dist/services/FormsService.js +64 -324
  247. package/dist/services/HarvestRunService.d.ts +3 -6
  248. package/dist/services/HarvestRunService.d.ts.map +1 -1
  249. package/dist/services/HarvestRunService.js +97 -161
  250. package/dist/services/I18nEntriesService.d.ts +2 -1
  251. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  252. package/dist/services/I18nEntriesService.js +45 -30
  253. package/dist/services/OniService.d.ts +62 -19
  254. package/dist/services/OniService.d.ts.map +1 -1
  255. package/dist/services/OniService.js +691 -223
  256. package/dist/services/RDMPService.d.ts +1 -1
  257. package/dist/services/RDMPService.d.ts.map +1 -1
  258. package/dist/services/RDMPService.js +5 -5
  259. package/dist/services/RaidService.d.ts +61 -19
  260. package/dist/services/RaidService.d.ts.map +1 -1
  261. package/dist/services/RaidService.js +530 -191
  262. package/dist/services/RecordTypesService.d.ts +0 -29
  263. package/dist/services/RecordTypesService.d.ts.map +1 -1
  264. package/dist/services/RecordTypesService.js +11 -106
  265. package/dist/services/RecordsService.d.ts +26 -313
  266. package/dist/services/RecordsService.d.ts.map +1 -1
  267. package/dist/services/RecordsService.js +763 -5089
  268. package/dist/services/SolrSearchService.d.ts +1 -1
  269. package/dist/services/SolrSearchService.d.ts.map +1 -1
  270. package/dist/services/SolrSearchService.js +12 -42
  271. package/dist/services/StandardDatastreamService.d.ts +5 -4
  272. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  273. package/dist/services/StandardDatastreamService.js +61 -106
  274. package/dist/services/TriggerService.d.ts.map +1 -1
  275. package/dist/services/TriggerService.js +30 -54
  276. package/dist/services/UsersService.d.ts +1 -2
  277. package/dist/services/UsersService.d.ts.map +1 -1
  278. package/dist/services/UsersService.js +283 -364
  279. package/dist/services/VocabularyService.d.ts +0 -2
  280. package/dist/services/VocabularyService.d.ts.map +1 -1
  281. package/dist/services/VocabularyService.js +2 -61
  282. package/dist/services/WorkflowStepsService.d.ts +0 -11
  283. package/dist/services/WorkflowStepsService.d.ts.map +1 -1
  284. package/dist/services/WorkflowStepsService.js +3 -32
  285. package/dist/services/WorkspaceService.d.ts +2 -2
  286. package/dist/services/WorkspaceService.d.ts.map +1 -1
  287. package/dist/services/WorkspaceService.js +5 -5
  288. package/dist/services/doi-v2/bindings.d.ts.map +1 -1
  289. package/dist/services/doi-v2/bindings.js +20 -3
  290. package/dist/services/doi-v2/config.d.ts +0 -1
  291. package/dist/services/doi-v2/config.d.ts.map +1 -1
  292. package/dist/services/doi-v2/config.js +5 -13
  293. package/dist/services/doi-v2/runtime.d.ts.map +1 -1
  294. package/dist/services/doi-v2/runtime.js +54 -14
  295. package/dist/services/figshare-v2/admin.d.ts +16 -0
  296. package/dist/services/figshare-v2/admin.d.ts.map +1 -0
  297. package/dist/services/figshare-v2/admin.js +283 -0
  298. package/dist/services/figshare-v2/assets.d.ts +20 -1
  299. package/dist/services/figshare-v2/assets.d.ts.map +1 -1
  300. package/dist/services/figshare-v2/assets.js +16 -1
  301. package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
  302. package/dist/services/figshare-v2/bindings.js +20 -3
  303. package/dist/services/figshare-v2/config.d.ts +8 -2
  304. package/dist/services/figshare-v2/config.d.ts.map +1 -1
  305. package/dist/services/figshare-v2/config.js +31 -3
  306. package/dist/services/figshare-v2/execution.d.ts +25 -0
  307. package/dist/services/figshare-v2/execution.d.ts.map +1 -0
  308. package/dist/services/figshare-v2/execution.js +49 -0
  309. package/dist/services/figshare-v2/http.d.ts +6 -1
  310. package/dist/services/figshare-v2/http.d.ts.map +1 -1
  311. package/dist/services/figshare-v2/http.js +69 -12
  312. package/dist/services/figshare-v2/identity.d.ts +12 -0
  313. package/dist/services/figshare-v2/identity.d.ts.map +1 -0
  314. package/dist/services/figshare-v2/identity.js +78 -0
  315. package/dist/services/figshare-v2/managed-assets.d.ts +9 -0
  316. package/dist/services/figshare-v2/managed-assets.d.ts.map +1 -0
  317. package/dist/services/figshare-v2/managed-assets.js +229 -0
  318. package/dist/services/figshare-v2/plan.d.ts.map +1 -1
  319. package/dist/services/figshare-v2/plan.js +2 -9
  320. package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
  321. package/dist/services/figshare-v2/runtime.js +58 -11
  322. package/dist/services/figshare-v2/source-intent.d.ts +9 -0
  323. package/dist/services/figshare-v2/source-intent.d.ts.map +1 -0
  324. package/dist/services/figshare-v2/source-intent.js +93 -0
  325. package/dist/services/figshare-v2/status.d.ts +4 -0
  326. package/dist/services/figshare-v2/status.d.ts.map +1 -0
  327. package/dist/services/figshare-v2/status.js +29 -0
  328. package/dist/services/figshare-v2/sync-store.d.ts +27 -0
  329. package/dist/services/figshare-v2/sync-store.d.ts.map +1 -0
  330. package/dist/services/figshare-v2/sync-store.js +139 -0
  331. package/dist/services/figshare-v2/types.d.ts +3 -0
  332. package/dist/services/figshare-v2/types.d.ts.map +1 -1
  333. package/dist/services/figshare-v2/types.js +1 -1
  334. package/dist/services/figshare-v2/worker.d.ts +16 -0
  335. package/dist/services/figshare-v2/worker.d.ts.map +1 -0
  336. package/dist/services/figshare-v2/worker.js +572 -0
  337. package/dist/services/index.d.ts +0 -9
  338. package/dist/services/index.d.ts.map +1 -1
  339. package/dist/services/index.js +3 -45
  340. package/dist/utilities/TranslationHtml.d.ts +3 -0
  341. package/dist/utilities/TranslationHtml.d.ts.map +1 -0
  342. package/dist/utilities/TranslationHtml.js +46 -0
  343. package/dist/visitor/client.visitor.d.ts +0 -6
  344. package/dist/visitor/client.visitor.d.ts.map +1 -1
  345. package/dist/visitor/client.visitor.js +14 -59
  346. package/dist/visitor/construct.visitor.d.ts +1 -27
  347. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  348. package/dist/visitor/construct.visitor.js +177 -265
  349. package/dist/visitor/context-variables.visitor.d.ts +1 -3
  350. package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
  351. package/dist/visitor/context-variables.visitor.js +1 -15
  352. package/dist/visitor/data-value.visitor.d.ts +0 -6
  353. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  354. package/dist/visitor/data-value.visitor.js +1 -10
  355. package/dist/visitor/json-type-def.visitor.d.ts +0 -6
  356. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  357. package/dist/visitor/json-type-def.visitor.js +1 -10
  358. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +0 -11
  359. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  360. package/dist/visitor/migrate-config-v4-v5.visitor.js +133 -228
  361. package/dist/visitor/template.visitor.d.ts +2 -17
  362. package/dist/visitor/template.visitor.d.ts.map +1 -1
  363. package/dist/visitor/template.visitor.js +22 -60
  364. package/dist/visitor/validator.visitor.d.ts +7 -49
  365. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  366. package/dist/visitor/validator.visitor.js +178 -275
  367. package/dist/waterline-models/AttachmentMetadata.d.ts +0 -22
  368. package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -1
  369. package/dist/waterline-models/AttachmentMetadata.js +3 -147
  370. package/dist/waterline-models/BrandingConfig.d.ts +0 -7
  371. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  372. package/dist/waterline-models/BrandingConfig.js +1 -16
  373. package/dist/waterline-models/BrandingConfigHistory.d.ts +2 -11
  374. package/dist/waterline-models/BrandingConfigHistory.d.ts.map +1 -1
  375. package/dist/waterline-models/BrandingConfigHistory.js +1 -21
  376. package/dist/waterline-models/FigshareSync.d.ts +41 -0
  377. package/dist/waterline-models/FigshareSync.d.ts.map +1 -0
  378. package/dist/waterline-models/FigshareSync.js +168 -0
  379. package/dist/waterline-models/RecordType.d.ts +0 -9
  380. package/dist/waterline-models/RecordType.d.ts.map +1 -1
  381. package/dist/waterline-models/RecordType.js +1 -16
  382. package/dist/waterline-models/User.d.ts +2 -2
  383. package/dist/waterline-models/User.d.ts.map +1 -1
  384. package/dist/waterline-models/User.js +17 -12
  385. package/dist/waterline-models/index.d.ts +2 -2
  386. package/dist/waterline-models/index.d.ts.map +1 -1
  387. package/dist/waterline-models/index.js +4 -4
  388. package/package.json +46 -59
  389. package/dist/AttachmentStagingIdentity.d.ts +0 -3
  390. package/dist/AttachmentStagingIdentity.d.ts.map +0 -1
  391. package/dist/AttachmentStagingIdentity.js +0 -10
  392. package/dist/RecordConcurrencyObservability.d.ts +0 -51
  393. package/dist/RecordConcurrencyObservability.d.ts.map +0 -1
  394. package/dist/RecordConcurrencyObservability.js +0 -136
  395. package/dist/RecordEntityTag.d.ts +0 -31
  396. package/dist/RecordEntityTag.d.ts.map +0 -1
  397. package/dist/RecordEntityTag.js +0 -101
  398. package/dist/RecordFormFingerprint.d.ts +0 -7
  399. package/dist/RecordFormFingerprint.d.ts.map +0 -1
  400. package/dist/RecordFormFingerprint.js +0 -106
  401. package/dist/RecordHttpConcurrency.d.ts +0 -60
  402. package/dist/RecordHttpConcurrency.d.ts.map +0 -1
  403. package/dist/RecordHttpConcurrency.js +0 -181
  404. package/dist/RecordSaveResponse.d.ts +0 -219
  405. package/dist/RecordSaveResponse.d.ts.map +0 -1
  406. package/dist/RecordSaveResponse.js +0 -639
  407. package/dist/RecordStorageConcurrency.d.ts +0 -48
  408. package/dist/RecordStorageConcurrency.d.ts.map +0 -1
  409. package/dist/RecordStorageConcurrency.js +0 -103
  410. package/dist/RecordWriteClassification.d.ts +0 -12
  411. package/dist/RecordWriteClassification.d.ts.map +0 -1
  412. package/dist/RecordWriteClassification.js +0 -70
  413. package/dist/action-execution/audit.d.ts +0 -41
  414. package/dist/action-execution/audit.d.ts.map +0 -1
  415. package/dist/action-execution/audit.js +0 -122
  416. package/dist/action-execution/executor.d.ts +0 -24
  417. package/dist/action-execution/executor.d.ts.map +0 -1
  418. package/dist/action-execution/executor.js +0 -435
  419. package/dist/action-execution/failure.d.ts +0 -49
  420. package/dist/action-execution/failure.d.ts.map +0 -1
  421. package/dist/action-execution/failure.js +0 -129
  422. package/dist/action-execution/index.d.ts +0 -7
  423. package/dist/action-execution/index.d.ts.map +0 -1
  424. package/dist/action-execution/index.js +0 -23
  425. package/dist/action-execution/legacy-result.d.ts +0 -21
  426. package/dist/action-execution/legacy-result.d.ts.map +0 -1
  427. package/dist/action-execution/legacy-result.js +0 -70
  428. package/dist/action-execution/policy.d.ts +0 -12
  429. package/dist/action-execution/policy.d.ts.map +0 -1
  430. package/dist/action-execution/policy.js +0 -138
  431. package/dist/action-execution/types.d.ts +0 -121
  432. package/dist/action-execution/types.d.ts.map +0 -1
  433. package/dist/action-execution/types.js +0 -22
  434. package/dist/api-routes/groups/record-schemas.d.ts +0 -5
  435. package/dist/api-routes/groups/record-schemas.d.ts.map +0 -1
  436. package/dist/api-routes/groups/record-schemas.js +0 -181
  437. package/dist/api-routes/record-schema-openapi.d.ts +0 -26
  438. package/dist/api-routes/record-schema-openapi.d.ts.map +0 -1
  439. package/dist/api-routes/record-schema-openapi.js +0 -38
  440. package/dist/api-routes/record-schema-response.d.ts +0 -40
  441. package/dist/api-routes/record-schema-response.d.ts.map +0 -1
  442. package/dist/api-routes/record-schema-response.js +0 -89
  443. package/dist/config/recordSchema.config.d.ts +0 -68
  444. package/dist/config/recordSchema.config.d.ts.map +0 -1
  445. package/dist/config/recordSchema.config.js +0 -173
  446. package/dist/config/recordValidation.config.d.ts +0 -19
  447. package/dist/config/recordValidation.config.d.ts.map +0 -1
  448. package/dist/config/recordValidation.config.js +0 -10
  449. package/dist/configmodels/DashboardFieldCatalogue.d.ts +0 -67
  450. package/dist/configmodels/DashboardFieldCatalogue.d.ts.map +0 -1
  451. package/dist/configmodels/DashboardFieldCatalogue.js +0 -174
  452. package/dist/configmodels/DashboardSettings.d.ts +0 -191
  453. package/dist/configmodels/DashboardSettings.d.ts.map +0 -1
  454. package/dist/configmodels/DashboardSettings.js +0 -705
  455. package/dist/configmodels/OniPublishing.d.ts +0 -205
  456. package/dist/configmodels/OniPublishing.d.ts.map +0 -1
  457. package/dist/configmodels/OniPublishing.js +0 -335
  458. package/dist/configmodels/RaidPublishing.d.ts +0 -97
  459. package/dist/configmodels/RaidPublishing.d.ts.map +0 -1
  460. package/dist/configmodels/RaidPublishing.js +0 -35
  461. package/dist/configmodels/WebAnalytics.d.ts +0 -55
  462. package/dist/configmodels/WebAnalytics.d.ts.map +0 -1
  463. package/dist/configmodels/WebAnalytics.js +0 -61
  464. package/dist/controllers/BrandingControllerSupport.d.ts +0 -20
  465. package/dist/controllers/BrandingControllerSupport.d.ts.map +0 -1
  466. package/dist/controllers/BrandingControllerSupport.js +0 -80
  467. package/dist/controllers/webservice/RecordSchemaController.d.ts +0 -32
  468. package/dist/controllers/webservice/RecordSchemaController.d.ts.map +0 -1
  469. package/dist/controllers/webservice/RecordSchemaController.js +0 -356
  470. package/dist/model/BrandingTypeface.d.ts +0 -70
  471. package/dist/model/BrandingTypeface.d.ts.map +0 -1
  472. package/dist/model/BrandingTypeface.js +0 -116
  473. package/dist/model/record-contract.d.ts +0 -42
  474. package/dist/model/record-contract.d.ts.map +0 -1
  475. package/dist/model/record-contract.js +0 -3
  476. package/dist/model/storage/record-schema.d.ts +0 -115
  477. package/dist/model/storage/record-schema.d.ts.map +0 -1
  478. package/dist/model/storage/record-schema.js +0 -3
  479. package/dist/record-contract/ajv-error-mapper.d.ts +0 -34
  480. package/dist/record-contract/ajv-error-mapper.d.ts.map +0 -1
  481. package/dist/record-contract/ajv-error-mapper.js +0 -153
  482. package/dist/record-contract/canonical-json.d.ts +0 -20
  483. package/dist/record-contract/canonical-json.d.ts.map +0 -1
  484. package/dist/record-contract/canonical-json.js +0 -126
  485. package/dist/record-contract/codes.d.ts +0 -36
  486. package/dist/record-contract/codes.d.ts.map +0 -1
  487. package/dist/record-contract/codes.js +0 -38
  488. package/dist/record-contract/contributor-registry.d.ts +0 -76
  489. package/dist/record-contract/contributor-registry.d.ts.map +0 -1
  490. package/dist/record-contract/contributor-registry.js +0 -126
  491. package/dist/record-contract/core-contributors.d.ts +0 -44
  492. package/dist/record-contract/core-contributors.d.ts.map +0 -1
  493. package/dist/record-contract/core-contributors.js +0 -395
  494. package/dist/record-contract/deep-freeze.d.ts +0 -3
  495. package/dist/record-contract/deep-freeze.d.ts.map +0 -1
  496. package/dist/record-contract/deep-freeze.js +0 -23
  497. package/dist/record-contract/index.d.ts +0 -13
  498. package/dist/record-contract/index.d.ts.map +0 -1
  499. package/dist/record-contract/index.js +0 -29
  500. package/dist/record-contract/json-pointer.d.ts +0 -20
  501. package/dist/record-contract/json-pointer.d.ts.map +0 -1
  502. package/dist/record-contract/json-pointer.js +0 -70
  503. package/dist/record-contract/json-schema-renderer.d.ts +0 -51
  504. package/dist/record-contract/json-schema-renderer.d.ts.map +0 -1
  505. package/dist/record-contract/json-schema-renderer.js +0 -450
  506. package/dist/record-contract/record-contract-compiler.d.ts +0 -42
  507. package/dist/record-contract/record-contract-compiler.d.ts.map +0 -1
  508. package/dist/record-contract/record-contract-compiler.js +0 -775
  509. package/dist/record-contract/record-contract-context.d.ts +0 -91
  510. package/dist/record-contract/record-contract-context.d.ts.map +0 -1
  511. package/dist/record-contract/record-contract-context.js +0 -39
  512. package/dist/record-contract/record-json-schema-artifact.d.ts +0 -74
  513. package/dist/record-contract/record-json-schema-artifact.d.ts.map +0 -1
  514. package/dist/record-contract/record-json-schema-artifact.js +0 -309
  515. package/dist/record-contract/record-json-schema-etag.d.ts +0 -15
  516. package/dist/record-contract/record-json-schema-etag.d.ts.map +0 -1
  517. package/dist/record-contract/record-json-schema-etag.js +0 -41
  518. package/dist/record-contract/types.d.ts +0 -151
  519. package/dist/record-contract/types.d.ts.map +0 -1
  520. package/dist/record-contract/types.js +0 -6
  521. package/dist/services/BrandingTypefaceService.d.ts +0 -74
  522. package/dist/services/BrandingTypefaceService.d.ts.map +0 -1
  523. package/dist/services/BrandingTypefaceService.js +0 -359
  524. package/dist/services/BrandingWoff2Inspector.d.ts +0 -17
  525. package/dist/services/BrandingWoff2Inspector.d.ts.map +0 -1
  526. package/dist/services/BrandingWoff2Inspector.js +0 -402
  527. package/dist/services/DashboardLegacyConversion.d.ts +0 -82
  528. package/dist/services/DashboardLegacyConversion.d.ts.map +0 -1
  529. package/dist/services/DashboardLegacyConversion.js +0 -427
  530. package/dist/services/RecordSchemaService.d.ts +0 -440
  531. package/dist/services/RecordSchemaService.d.ts.map +0 -1
  532. package/dist/services/RecordSchemaService.js +0 -3061
  533. package/dist/services/RecordValidationService.d.ts +0 -340
  534. package/dist/services/RecordValidationService.d.ts.map +0 -1
  535. package/dist/services/RecordValidationService.js +0 -1898
  536. package/dist/services/form-record-access-user.d.ts +0 -3
  537. package/dist/services/form-record-access-user.d.ts.map +0 -1
  538. package/dist/services/form-record-access-user.js +0 -23
  539. package/dist/services/integration-v2/bindings.d.ts +0 -3
  540. package/dist/services/integration-v2/bindings.d.ts.map +0 -1
  541. package/dist/services/integration-v2/bindings.js +0 -91
  542. package/dist/services/integration-v2/runtime.d.ts +0 -3
  543. package/dist/services/integration-v2/runtime.d.ts.map +0 -1
  544. package/dist/services/integration-v2/runtime.js +0 -50
  545. package/dist/services/internal-record-schema-authorization.d.ts +0 -8
  546. package/dist/services/internal-record-schema-authorization.d.ts.map +0 -1
  547. package/dist/services/internal-record-schema-authorization.js +0 -16
  548. package/dist/services/oni-v2/audit.d.ts +0 -19
  549. package/dist/services/oni-v2/audit.d.ts.map +0 -1
  550. package/dist/services/oni-v2/audit.js +0 -50
  551. package/dist/services/oni-v2/bindings.d.ts +0 -7
  552. package/dist/services/oni-v2/bindings.d.ts.map +0 -1
  553. package/dist/services/oni-v2/bindings.js +0 -31
  554. package/dist/services/oni-v2/config.d.ts +0 -12
  555. package/dist/services/oni-v2/config.d.ts.map +0 -1
  556. package/dist/services/oni-v2/config.js +0 -134
  557. package/dist/services/oni-v2/context.d.ts +0 -3
  558. package/dist/services/oni-v2/context.d.ts.map +0 -1
  559. package/dist/services/oni-v2/context.js +0 -17
  560. package/dist/services/oni-v2/crate.d.ts +0 -17
  561. package/dist/services/oni-v2/crate.d.ts.map +0 -1
  562. package/dist/services/oni-v2/crate.js +0 -504
  563. package/dist/services/oni-v2/flydriveOcflStore.d.ts +0 -69
  564. package/dist/services/oni-v2/flydriveOcflStore.d.ts.map +0 -1
  565. package/dist/services/oni-v2/flydriveOcflStore.js +0 -325
  566. package/dist/services/oni-v2/ingestion.d.ts +0 -37
  567. package/dist/services/oni-v2/ingestion.d.ts.map +0 -1
  568. package/dist/services/oni-v2/ingestion.js +0 -91
  569. package/dist/services/oni-v2/mapping.d.ts +0 -17
  570. package/dist/services/oni-v2/mapping.d.ts.map +0 -1
  571. package/dist/services/oni-v2/mapping.js +0 -137
  572. package/dist/services/oni-v2/repository.d.ts +0 -9
  573. package/dist/services/oni-v2/repository.d.ts.map +0 -1
  574. package/dist/services/oni-v2/repository.js +0 -180
  575. package/dist/services/oni-v2/runtime.d.ts +0 -23
  576. package/dist/services/oni-v2/runtime.d.ts.map +0 -1
  577. package/dist/services/oni-v2/runtime.js +0 -121
  578. package/dist/services/oni-v2/templating.d.ts +0 -11
  579. package/dist/services/oni-v2/templating.d.ts.map +0 -1
  580. package/dist/services/oni-v2/templating.js +0 -27
  581. package/dist/services/oni-v2/types.d.ts +0 -100
  582. package/dist/services/oni-v2/types.d.ts.map +0 -1
  583. package/dist/services/oni-v2/types.js +0 -3
  584. package/dist/services/raid-v2/audit.d.ts +0 -10
  585. package/dist/services/raid-v2/audit.d.ts.map +0 -1
  586. package/dist/services/raid-v2/audit.js +0 -29
  587. package/dist/services/raid-v2/errors.d.ts +0 -85
  588. package/dist/services/raid-v2/errors.d.ts.map +0 -1
  589. package/dist/services/raid-v2/errors.js +0 -36
  590. package/dist/services/raid-v2/http.d.ts +0 -4
  591. package/dist/services/raid-v2/http.d.ts.map +0 -1
  592. package/dist/services/raid-v2/http.js +0 -84
  593. package/dist/services/raid-v2/logger.d.ts +0 -8
  594. package/dist/services/raid-v2/logger.d.ts.map +0 -1
  595. package/dist/services/raid-v2/logger.js +0 -30
  596. package/dist/services/raid-v2/mapping.d.ts +0 -9
  597. package/dist/services/raid-v2/mapping.d.ts.map +0 -1
  598. package/dist/services/raid-v2/mapping.js +0 -168
  599. package/dist/services/raid-v2/runtime.d.ts +0 -5
  600. package/dist/services/raid-v2/runtime.d.ts.map +0 -1
  601. package/dist/services/raid-v2/runtime.js +0 -135
  602. package/dist/services/raid-v2/tags.d.ts +0 -11
  603. package/dist/services/raid-v2/tags.d.ts.map +0 -1
  604. package/dist/services/raid-v2/tags.js +0 -12
  605. package/dist/services/raid-v2/types.d.ts +0 -66
  606. package/dist/services/raid-v2/types.d.ts.map +0 -1
  607. package/dist/services/raid-v2/types.js +0 -3
  608. package/dist/services/record-hooks/coordinator.d.ts +0 -64
  609. package/dist/services/record-hooks/coordinator.d.ts.map +0 -1
  610. package/dist/services/record-hooks/coordinator.js +0 -276
  611. package/dist/visitor/related-object-data-inline.visitor.d.ts +0 -31
  612. package/dist/visitor/related-object-data-inline.visitor.d.ts.map +0 -1
  613. package/dist/visitor/related-object-data-inline.visitor.js +0 -96
  614. package/dist/waterline-models/DashboardConfiguration.d.ts +0 -29
  615. package/dist/waterline-models/DashboardConfiguration.d.ts.map +0 -1
  616. 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.5",
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.5",
31
+ "@researchdatabox/raido-openapi-generated-node": "5.0.5",
32
+ "@researchdatabox/rva-registry-openapi-generated-node": "5.0.5",
33
+ "@researchdatabox/sails-ng-common": "5.0.5",
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkQ29uY3VycmVuY3lPYnNlcnZhYmlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1JlY29yZENvbmN1cnJlbmN5T2JzZXJ2YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTRHQSxzRUFZQztBQVdELGdFQW9EQztBQXZMRCw0Q0FBOEQ7QUFDOUQsc0VBUzBDO0FBeUMxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBUyxrREFBZ0MsQ0FBQyxDQUFDO0FBQ3hFLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFTLENBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQztBQUM3RixNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN0RSxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNyRyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBUyxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNqSCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBUztJQUMvQixPQUFPO0lBQ1AscUJBQXFCO0lBQ3JCLFdBQVc7SUFDWCxTQUFTO0lBQ1QsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0lBQ1gsV0FBVztJQUNYLFVBQVU7Q0FDWCxDQUFDLENBQUM7QUFDSCxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBUyxDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMxRixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBUyxzREFBb0MsQ0FBQyxDQUFDO0FBQ3BFLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFTLGdEQUE4QixDQUFDLENBQUM7QUFDcEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQVMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDckgsTUFBTSx1QkFBdUIsR0FBRyxxQ0FBcUMsQ0FBQztBQUV0RSxTQUFTLGtCQUFrQixDQUFDLEtBQWMsRUFBRSxPQUE0QixFQUFFLFFBQWdCO0lBQ3hGLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzVFLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLEtBQWMsRUFBRSxRQUFnQjtJQUMzRCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzNHLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxLQUFjO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN2RixDQUFDO0FBRUQsTUFBTSxLQUFLLEdBQUcsYUFBTyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBQzVELE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyx1Q0FBdUMsRUFBRTtJQUN2RixXQUFXLEVBQUUsNkRBQTZEO0lBQzFFLElBQUksRUFBRSxnQkFBZ0I7Q0FDdkIsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxtQ0FBbUMsRUFBRTtJQUMvRSxXQUFXLEVBQUUscUVBQXFFO0lBQ2xGLElBQUksRUFBRSxZQUFZO0NBQ25CLENBQUMsQ0FBQztBQUNILE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxxQ0FBcUMsRUFBRTtJQUNuRixXQUFXLEVBQUUsK0RBQStEO0lBQzVFLElBQUksRUFBRSxjQUFjO0NBQ3JCLENBQUMsQ0FBQztBQUNILE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyx5Q0FBeUMsRUFBRTtJQUMxRixXQUFXLEVBQUUsaURBQWlEO0lBQzlELElBQUksRUFBRSxTQUFTO0NBQ2hCLENBQUMsQ0FBQztBQUNILE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyw2Q0FBNkMsRUFBRTtJQUNsRyxXQUFXLEVBQUUsOERBQThEO0lBQzNFLElBQUksRUFBRSxZQUFZO0NBQ25CLENBQUMsQ0FBQztBQUVILHdHQUF3RztBQUN4RyxTQUFnQiw2QkFBNkIsQ0FBQyxLQUE2QjtJQUN6RSxPQUFPO1FBQ0wsVUFBVSxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQztRQUMvRCxZQUFZLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDO1FBQzNFLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUM7UUFDcEUsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUN2RCxPQUFPLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO1FBQzdELFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUM7UUFDNUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUMvRixZQUFZLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07UUFDL0csVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQztLQUNuSCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQ3hDLEtBQTZCLEVBQzdCLFNBQXlDLEtBQUssQ0FBQyxHQUFHO0lBRWxELE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM5QixJQUFJLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDO1FBQ3pELFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUM7UUFDMUUsU0FBUyxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQztRQUNuRSxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQy9HLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUM7UUFDdkQsT0FBTyxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztRQUM3RCxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM3RixHQUFHLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztRQUMvRCxHQUFHLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDO1FBQzdELFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUM7UUFDNUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEtBQUssU0FBUztZQUNqQyxDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2xGLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxLQUFLLFNBQVM7WUFDakMsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hGLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLFNBQVM7WUFDaEMsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMvRSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO0tBQ3ZHLENBQUMsQ0FBQztJQUNILE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLE1BQU0sU0FBUyxHQUNiLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUM5RSxTQUFTLENBQUMsT0FBTyxLQUFLLFdBQVc7UUFDakMsU0FBUyxDQUFDLE9BQU8sS0FBSyxTQUFTO1FBQy9CLFNBQVMsQ0FBQyxPQUFPLEtBQUsscUJBQXFCO1FBQzNDLFNBQVMsQ0FBQyxPQUFPLEtBQUssV0FBVztRQUNqQyxTQUFTLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FBQztJQUNuQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLDZCQUE2QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssUUFBUTtZQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekUsSUFBSSxTQUFTLENBQUMsV0FBVyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RHLElBQUksU0FBUyxDQUFDLFVBQVU7WUFBRSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7U0FBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUMvQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7U0FBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssb0JBQW9CLEVBQUUsQ0FBQztRQUNuRCx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIn0=
@@ -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"}