@researchdatabox/redbox-core 5.0.4 → 5.1.0-beta.12573

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/dist/AttachmentStagingIdentity.d.ts +3 -0
  2. package/dist/AttachmentStagingIdentity.d.ts.map +1 -0
  3. package/dist/AttachmentStagingIdentity.js +10 -0
  4. package/dist/CoreController.d.ts +7 -3
  5. package/dist/CoreController.d.ts.map +1 -1
  6. package/dist/CoreController.js +85 -3
  7. package/dist/DatastreamService.d.ts +5 -1
  8. package/dist/DatastreamService.d.ts.map +1 -1
  9. package/dist/HarvestRunService.d.ts +4 -3
  10. package/dist/HarvestRunService.d.ts.map +1 -1
  11. package/dist/HarvestRunService.js +1 -1
  12. package/dist/RecordConcurrencyObservability.d.ts +51 -0
  13. package/dist/RecordConcurrencyObservability.d.ts.map +1 -0
  14. package/dist/RecordConcurrencyObservability.js +136 -0
  15. package/dist/RecordEntityTag.d.ts +31 -0
  16. package/dist/RecordEntityTag.d.ts.map +1 -0
  17. package/dist/RecordEntityTag.js +101 -0
  18. package/dist/RecordFormFingerprint.d.ts +7 -0
  19. package/dist/RecordFormFingerprint.d.ts.map +1 -0
  20. package/dist/RecordFormFingerprint.js +106 -0
  21. package/dist/RecordHttpConcurrency.d.ts +60 -0
  22. package/dist/RecordHttpConcurrency.d.ts.map +1 -0
  23. package/dist/RecordHttpConcurrency.js +181 -0
  24. package/dist/RecordSaveResponse.d.ts +219 -0
  25. package/dist/RecordSaveResponse.d.ts.map +1 -0
  26. package/dist/RecordSaveResponse.js +639 -0
  27. package/dist/RecordStorageConcurrency.d.ts +49 -0
  28. package/dist/RecordStorageConcurrency.d.ts.map +1 -0
  29. package/dist/RecordStorageConcurrency.js +103 -0
  30. package/dist/RecordWriteClassification.d.ts +12 -0
  31. package/dist/RecordWriteClassification.d.ts.map +1 -0
  32. package/dist/RecordWriteClassification.js +70 -0
  33. package/dist/RecordsService.d.ts +109 -13
  34. package/dist/RecordsService.d.ts.map +1 -1
  35. package/dist/RecordsService.js +44 -1
  36. package/dist/SearchService.d.ts +2 -1
  37. package/dist/SearchService.d.ts.map +1 -1
  38. package/dist/StorageService.d.ts +49 -9
  39. package/dist/StorageService.d.ts.map +1 -1
  40. package/dist/StorageService.js +19 -1
  41. package/dist/StorageServiceResponse.d.ts +22 -1
  42. package/dist/StorageServiceResponse.d.ts.map +1 -1
  43. package/dist/StorageServiceResponse.js +22 -4
  44. package/dist/action-execution/audit.d.ts +41 -0
  45. package/dist/action-execution/audit.d.ts.map +1 -0
  46. package/dist/action-execution/audit.js +122 -0
  47. package/dist/action-execution/executor.d.ts +24 -0
  48. package/dist/action-execution/executor.d.ts.map +1 -0
  49. package/dist/action-execution/executor.js +435 -0
  50. package/dist/action-execution/failure.d.ts +49 -0
  51. package/dist/action-execution/failure.d.ts.map +1 -0
  52. package/dist/action-execution/failure.js +129 -0
  53. package/dist/action-execution/index.d.ts +7 -0
  54. package/dist/action-execution/index.d.ts.map +1 -0
  55. package/dist/action-execution/index.js +23 -0
  56. package/dist/action-execution/legacy-result.d.ts +21 -0
  57. package/dist/action-execution/legacy-result.d.ts.map +1 -0
  58. package/dist/action-execution/legacy-result.js +70 -0
  59. package/dist/action-execution/policy.d.ts +12 -0
  60. package/dist/action-execution/policy.d.ts.map +1 -0
  61. package/dist/action-execution/policy.js +138 -0
  62. package/dist/action-execution/types.d.ts +121 -0
  63. package/dist/action-execution/types.d.ts.map +1 -0
  64. package/dist/action-execution/types.js +22 -0
  65. package/dist/api-routes/groups/branding.d.ts +8 -0
  66. package/dist/api-routes/groups/branding.d.ts.map +1 -1
  67. package/dist/api-routes/groups/branding.js +86 -11
  68. package/dist/api-routes/groups/dashboard-config.d.ts +12 -9
  69. package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -1
  70. package/dist/api-routes/groups/dashboard-config.js +136 -73
  71. package/dist/api-routes/groups/forms.d.ts.map +1 -1
  72. package/dist/api-routes/groups/forms.js +10 -2
  73. package/dist/api-routes/groups/record-schemas.d.ts +5 -0
  74. package/dist/api-routes/groups/record-schemas.d.ts.map +1 -0
  75. package/dist/api-routes/groups/record-schemas.js +181 -0
  76. package/dist/api-routes/groups/records.d.ts +1 -0
  77. package/dist/api-routes/groups/records.d.ts.map +1 -1
  78. package/dist/api-routes/groups/records.js +141 -26
  79. package/dist/api-routes/index.d.ts +3 -0
  80. package/dist/api-routes/index.d.ts.map +1 -1
  81. package/dist/api-routes/index.js +4 -1
  82. package/dist/api-routes/openapi.d.ts.map +1 -1
  83. package/dist/api-routes/openapi.js +7 -5
  84. package/dist/api-routes/record-schema-openapi.d.ts +26 -0
  85. package/dist/api-routes/record-schema-openapi.d.ts.map +1 -0
  86. package/dist/api-routes/record-schema-openapi.js +38 -0
  87. package/dist/api-routes/record-schema-response.d.ts +40 -0
  88. package/dist/api-routes/record-schema-response.d.ts.map +1 -0
  89. package/dist/api-routes/record-schema-response.js +89 -0
  90. package/dist/api-routes/request-extraction.d.ts.map +1 -1
  91. package/dist/api-routes/request-extraction.js +10 -8
  92. package/dist/api-routes/route-factory.d.ts.map +1 -1
  93. package/dist/api-routes/route-factory.js +2 -1
  94. package/dist/api-routes/route-registry.d.ts.map +1 -1
  95. package/dist/api-routes/route-registry.js +3 -1
  96. package/dist/api-routes/schemas/common.d.ts +36 -0
  97. package/dist/api-routes/schemas/common.d.ts.map +1 -1
  98. package/dist/api-routes/schemas/common.js +95 -5
  99. package/dist/api-routes/schemas/responses.d.ts +1424 -1
  100. package/dist/api-routes/schemas/responses.d.ts.map +1 -1
  101. package/dist/api-routes/schemas/responses.js +382 -60
  102. package/dist/api-routes/types.d.ts +1 -0
  103. package/dist/api-routes/types.d.ts.map +1 -1
  104. package/dist/api-routes/validation.d.ts +5 -1
  105. package/dist/api-routes/validation.d.ts.map +1 -1
  106. package/dist/api-routes/validation.js +14 -15
  107. package/dist/bootstrap.d.ts +3 -1
  108. package/dist/bootstrap.d.ts.map +1 -1
  109. package/dist/bootstrap.js +58 -41
  110. package/dist/config/agendaQueue.config.d.ts +3 -0
  111. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  112. package/dist/config/agendaQueue.config.js +29 -2
  113. package/dist/config/branding.config.d.ts +13 -0
  114. package/dist/config/branding.config.d.ts.map +1 -1
  115. package/dist/config/branding.config.js +34 -2
  116. package/dist/config/brandingConfigurationDefaults.config.d.ts +4 -0
  117. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  118. package/dist/config/brandingConfigurationDefaults.config.js +42 -3
  119. package/dist/config/index.d.ts +12 -4
  120. package/dist/config/index.d.ts.map +1 -1
  121. package/dist/config/index.js +7 -4
  122. package/dist/config/policies.config.d.ts.map +1 -1
  123. package/dist/config/policies.config.js +37 -23
  124. package/dist/config/raid.config.d.ts +7 -4
  125. package/dist/config/raid.config.d.ts.map +1 -1
  126. package/dist/config/raid.config.js +21 -35
  127. package/dist/config/record.config.d.ts +3 -0
  128. package/dist/config/record.config.d.ts.map +1 -1
  129. package/dist/config/record.config.js +37 -35
  130. package/dist/config/recordSchema.config.d.ts +68 -0
  131. package/dist/config/recordSchema.config.d.ts.map +1 -0
  132. package/dist/config/recordSchema.config.js +173 -0
  133. package/dist/config/recordValidation.config.d.ts +19 -0
  134. package/dist/config/recordValidation.config.d.ts.map +1 -0
  135. package/dist/config/recordValidation.config.js +10 -0
  136. package/dist/config/recordtype.config.d.ts +32 -9
  137. package/dist/config/recordtype.config.d.ts.map +1 -1
  138. package/dist/config/recordtype.config.js +4 -7
  139. package/dist/config/routes.config.d.ts.map +1 -1
  140. package/dist/config/routes.config.js +135 -53
  141. package/dist/config/workflow.config.d.ts +6 -0
  142. package/dist/config/workflow.config.d.ts.map +1 -1
  143. package/dist/config/workflow.config.js +1 -1
  144. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  145. package/dist/configmodels/AdminSidebarConfig.js +4 -2
  146. package/dist/configmodels/ConfigModels.d.ts +1 -1
  147. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  148. package/dist/configmodels/ConfigModels.js +26 -9
  149. package/dist/configmodels/DashboardFieldCatalogue.d.ts +67 -0
  150. package/dist/configmodels/DashboardFieldCatalogue.d.ts.map +1 -0
  151. package/dist/configmodels/DashboardFieldCatalogue.js +174 -0
  152. package/dist/configmodels/DashboardSettings.d.ts +191 -0
  153. package/dist/configmodels/DashboardSettings.d.ts.map +1 -0
  154. package/dist/configmodels/DashboardSettings.js +705 -0
  155. package/dist/configmodels/FigsharePublishing.d.ts +1 -1
  156. package/dist/configmodels/OniPublishing.d.ts +205 -0
  157. package/dist/configmodels/OniPublishing.d.ts.map +1 -0
  158. package/dist/configmodels/OniPublishing.js +335 -0
  159. package/dist/configmodels/RaidPublishing.d.ts +97 -0
  160. package/dist/configmodels/RaidPublishing.d.ts.map +1 -0
  161. package/dist/configmodels/RaidPublishing.js +35 -0
  162. package/dist/configmodels/WebAnalytics.d.ts +55 -0
  163. package/dist/configmodels/WebAnalytics.d.ts.map +1 -0
  164. package/dist/configmodels/WebAnalytics.js +61 -0
  165. package/dist/controllers/AppConfigController.d.ts.map +1 -1
  166. package/dist/controllers/AppConfigController.js +4 -1
  167. package/dist/controllers/BrandingAppController.d.ts +29 -7
  168. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  169. package/dist/controllers/BrandingAppController.js +265 -69
  170. package/dist/controllers/BrandingController.d.ts +24 -1
  171. package/dist/controllers/BrandingController.d.ts.map +1 -1
  172. package/dist/controllers/BrandingController.js +173 -43
  173. package/dist/controllers/BrandingControllerSupport.d.ts +20 -0
  174. package/dist/controllers/BrandingControllerSupport.d.ts.map +1 -0
  175. package/dist/controllers/BrandingControllerSupport.js +80 -0
  176. package/dist/controllers/DashboardConfigController.d.ts +6 -2
  177. package/dist/controllers/DashboardConfigController.d.ts.map +1 -1
  178. package/dist/controllers/DashboardConfigController.js +18 -4
  179. package/dist/controllers/DynamicAssetController.d.ts +7 -5
  180. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  181. package/dist/controllers/DynamicAssetController.js +21 -12
  182. package/dist/controllers/RecordController.d.ts +45 -4
  183. package/dist/controllers/RecordController.d.ts.map +1 -1
  184. package/dist/controllers/RecordController.js +778 -345
  185. package/dist/controllers/index.d.ts.map +1 -1
  186. package/dist/controllers/index.js +4 -1
  187. package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
  188. package/dist/controllers/webservice/AdminController.js +4 -3
  189. package/dist/controllers/webservice/BrandingController.d.ts +26 -1
  190. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  191. package/dist/controllers/webservice/BrandingController.js +292 -116
  192. package/dist/controllers/webservice/DashboardConfigController.d.ts +25 -17
  193. package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -1
  194. package/dist/controllers/webservice/DashboardConfigController.js +90 -205
  195. package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
  196. package/dist/controllers/webservice/FormManagementController.js +37 -3
  197. package/dist/controllers/webservice/RecordController.d.ts +15 -1
  198. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  199. package/dist/controllers/webservice/RecordController.js +647 -267
  200. package/dist/controllers/webservice/RecordSchemaController.d.ts +32 -0
  201. package/dist/controllers/webservice/RecordSchemaController.d.ts.map +1 -0
  202. package/dist/controllers/webservice/RecordSchemaController.js +356 -0
  203. package/dist/controllers/webservice/RecordTypeController.d.ts +6 -1
  204. package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
  205. package/dist/controllers/webservice/RecordTypeController.js +21 -3
  206. package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
  207. package/dist/controllers/webservice/SearchController.js +7 -3
  208. package/dist/hooks/defineRedboxHook.d.ts +3 -0
  209. package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
  210. package/dist/hooks/defineRedboxHook.js +4 -1
  211. package/dist/index.d.ts +50 -23
  212. package/dist/index.d.ts.map +1 -1
  213. package/dist/index.js +90 -2
  214. package/dist/loader/bootstrapShimRuntime.d.ts +1 -1
  215. package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -1
  216. package/dist/loader/bootstrapShimRuntime.js +20 -12
  217. package/dist/loader/index.d.ts +9 -0
  218. package/dist/loader/index.d.ts.map +1 -1
  219. package/dist/loader/index.js +93 -4
  220. package/dist/model/BrandingTypeface.d.ts +70 -0
  221. package/dist/model/BrandingTypeface.d.ts.map +1 -0
  222. package/dist/model/BrandingTypeface.js +116 -0
  223. package/dist/model/BuildResponse.d.ts +25 -11
  224. package/dist/model/BuildResponse.d.ts.map +1 -1
  225. package/dist/model/BuildResponse.js +4 -3
  226. package/dist/model/DashboardTypeResponseModel.d.ts +6 -0
  227. package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
  228. package/dist/model/DashboardTypeResponseModel.js +7 -1
  229. package/dist/model/DashboardViewResponseModel.d.ts +5 -1
  230. package/dist/model/DashboardViewResponseModel.d.ts.map +1 -1
  231. package/dist/model/DashboardViewResponseModel.js +6 -3
  232. package/dist/model/RBValidationError.d.ts +17 -0
  233. package/dist/model/RBValidationError.d.ts.map +1 -1
  234. package/dist/model/RBValidationError.js +37 -1
  235. package/dist/model/RecordTypeResponseModel.d.ts +12 -4
  236. package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
  237. package/dist/model/RecordTypeResponseModel.js +11 -2
  238. package/dist/model/index.d.ts +5 -1
  239. package/dist/model/index.d.ts.map +1 -1
  240. package/dist/model/index.js +5 -2
  241. package/dist/model/record-contract.d.ts +42 -0
  242. package/dist/model/record-contract.d.ts.map +1 -0
  243. package/dist/model/record-contract.js +3 -0
  244. package/dist/model/storage/BrandingModel.d.ts +7 -0
  245. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  246. package/dist/model/storage/BrandingModel.js +7 -1
  247. package/dist/model/storage/DeletedRecordModel.d.ts +35 -0
  248. package/dist/model/storage/DeletedRecordModel.d.ts.map +1 -1
  249. package/dist/model/storage/DeletedRecordModel.js +62 -1
  250. package/dist/model/storage/IntegrationAuditModel.d.ts +16 -2
  251. package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
  252. package/dist/model/storage/IntegrationAuditModel.js +15 -1
  253. package/dist/model/storage/RecordAuditModel.d.ts +11 -1
  254. package/dist/model/storage/RecordAuditModel.d.ts.map +1 -1
  255. package/dist/model/storage/RecordAuditModel.js +8 -2
  256. package/dist/model/storage/RecordModel.d.ts +8 -2
  257. package/dist/model/storage/RecordModel.d.ts.map +1 -1
  258. package/dist/model/storage/RecordTypeModel.d.ts +6 -0
  259. package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
  260. package/dist/model/storage/RecordTypeModel.js +4 -1
  261. package/dist/model/storage/index.d.ts +12 -10
  262. package/dist/model/storage/index.d.ts.map +1 -1
  263. package/dist/model/storage/index.js +24 -2
  264. package/dist/model/storage/record-schema.d.ts +115 -0
  265. package/dist/model/storage/record-schema.d.ts.map +1 -0
  266. package/dist/model/storage/record-schema.js +3 -0
  267. package/dist/policies/checkAuth.d.ts +2 -6
  268. package/dist/policies/checkAuth.d.ts.map +1 -1
  269. package/dist/policies/checkAuth.js +32 -9
  270. package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
  271. package/dist/policies/contentSecurityPolicy.js +85 -2
  272. package/dist/policies/index.d.ts +3 -2
  273. package/dist/policies/index.d.ts.map +1 -1
  274. package/dist/policies/index.js +4 -2
  275. package/dist/policies/validateApiContractRequest.d.ts.map +1 -1
  276. package/dist/policies/validateApiContractRequest.js +49 -11
  277. package/dist/record-contract/ajv-error-mapper.d.ts +34 -0
  278. package/dist/record-contract/ajv-error-mapper.d.ts.map +1 -0
  279. package/dist/record-contract/ajv-error-mapper.js +153 -0
  280. package/dist/record-contract/canonical-json.d.ts +20 -0
  281. package/dist/record-contract/canonical-json.d.ts.map +1 -0
  282. package/dist/record-contract/canonical-json.js +126 -0
  283. package/dist/record-contract/codes.d.ts +36 -0
  284. package/dist/record-contract/codes.d.ts.map +1 -0
  285. package/dist/record-contract/codes.js +38 -0
  286. package/dist/record-contract/contributor-registry.d.ts +76 -0
  287. package/dist/record-contract/contributor-registry.d.ts.map +1 -0
  288. package/dist/record-contract/contributor-registry.js +126 -0
  289. package/dist/record-contract/core-contributors.d.ts +44 -0
  290. package/dist/record-contract/core-contributors.d.ts.map +1 -0
  291. package/dist/record-contract/core-contributors.js +395 -0
  292. package/dist/record-contract/deep-freeze.d.ts +3 -0
  293. package/dist/record-contract/deep-freeze.d.ts.map +1 -0
  294. package/dist/record-contract/deep-freeze.js +23 -0
  295. package/dist/record-contract/index.d.ts +13 -0
  296. package/dist/record-contract/index.d.ts.map +1 -0
  297. package/dist/record-contract/index.js +29 -0
  298. package/dist/record-contract/json-pointer.d.ts +20 -0
  299. package/dist/record-contract/json-pointer.d.ts.map +1 -0
  300. package/dist/record-contract/json-pointer.js +70 -0
  301. package/dist/record-contract/json-schema-renderer.d.ts +51 -0
  302. package/dist/record-contract/json-schema-renderer.d.ts.map +1 -0
  303. package/dist/record-contract/json-schema-renderer.js +450 -0
  304. package/dist/record-contract/record-contract-compiler.d.ts +42 -0
  305. package/dist/record-contract/record-contract-compiler.d.ts.map +1 -0
  306. package/dist/record-contract/record-contract-compiler.js +775 -0
  307. package/dist/record-contract/record-contract-context.d.ts +91 -0
  308. package/dist/record-contract/record-contract-context.d.ts.map +1 -0
  309. package/dist/record-contract/record-contract-context.js +39 -0
  310. package/dist/record-contract/record-json-schema-artifact.d.ts +74 -0
  311. package/dist/record-contract/record-json-schema-artifact.d.ts.map +1 -0
  312. package/dist/record-contract/record-json-schema-artifact.js +309 -0
  313. package/dist/record-contract/record-json-schema-etag.d.ts +15 -0
  314. package/dist/record-contract/record-json-schema-etag.d.ts.map +1 -0
  315. package/dist/record-contract/record-json-schema-etag.js +41 -0
  316. package/dist/record-contract/types.d.ts +151 -0
  317. package/dist/record-contract/types.d.ts.map +1 -0
  318. package/dist/record-contract/types.js +6 -0
  319. package/dist/services/AppConfigService.d.ts +6 -0
  320. package/dist/services/AppConfigService.d.ts.map +1 -1
  321. package/dist/services/AppConfigService.js +23 -1
  322. package/dist/services/AttachmentMetadataService.d.ts +58 -0
  323. package/dist/services/AttachmentMetadataService.d.ts.map +1 -1
  324. package/dist/services/AttachmentMetadataService.js +643 -8
  325. package/dist/services/BrandingLogoService.d.ts +6 -1
  326. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  327. package/dist/services/BrandingLogoService.js +77 -9
  328. package/dist/services/BrandingService.d.ts +171 -9
  329. package/dist/services/BrandingService.d.ts.map +1 -1
  330. package/dist/services/BrandingService.js +572 -68
  331. package/dist/services/BrandingThemeCssService.d.ts +17 -1
  332. package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
  333. package/dist/services/BrandingThemeCssService.js +71 -9
  334. package/dist/services/BrandingTypefaceService.d.ts +74 -0
  335. package/dist/services/BrandingTypefaceService.d.ts.map +1 -0
  336. package/dist/services/BrandingTypefaceService.js +359 -0
  337. package/dist/services/BrandingWoff2Inspector.d.ts +17 -0
  338. package/dist/services/BrandingWoff2Inspector.d.ts.map +1 -0
  339. package/dist/services/BrandingWoff2Inspector.js +402 -0
  340. package/dist/services/DashboardConfigService.d.ts +214 -54
  341. package/dist/services/DashboardConfigService.d.ts.map +1 -1
  342. package/dist/services/DashboardConfigService.js +829 -261
  343. package/dist/services/DashboardLegacyConversion.d.ts +82 -0
  344. package/dist/services/DashboardLegacyConversion.d.ts.map +1 -0
  345. package/dist/services/DashboardLegacyConversion.js +427 -0
  346. package/dist/services/DashboardTypesService.d.ts +15 -4
  347. package/dist/services/DashboardTypesService.d.ts.map +1 -1
  348. package/dist/services/DashboardTypesService.js +72 -139
  349. package/dist/services/DoiService.d.ts +1 -1
  350. package/dist/services/DoiService.d.ts.map +1 -1
  351. package/dist/services/DoiService.js +71 -45
  352. package/dist/services/FigshareService.d.ts.map +1 -1
  353. package/dist/services/FigshareService.js +8 -7
  354. package/dist/services/FormRecordConsistencyService.d.ts +8 -23
  355. package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
  356. package/dist/services/FormRecordConsistencyService.js +54 -70
  357. package/dist/services/FormsService.d.ts +91 -2
  358. package/dist/services/FormsService.d.ts.map +1 -1
  359. package/dist/services/FormsService.js +324 -64
  360. package/dist/services/HarvestRunService.d.ts +6 -3
  361. package/dist/services/HarvestRunService.d.ts.map +1 -1
  362. package/dist/services/HarvestRunService.js +161 -97
  363. package/dist/services/I18nEntriesService.d.ts +11 -11
  364. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  365. package/dist/services/I18nEntriesService.js +71 -48
  366. package/dist/services/OniService.d.ts +19 -62
  367. package/dist/services/OniService.d.ts.map +1 -1
  368. package/dist/services/OniService.js +223 -691
  369. package/dist/services/RDMPService.d.ts +1 -1
  370. package/dist/services/RDMPService.d.ts.map +1 -1
  371. package/dist/services/RDMPService.js +5 -5
  372. package/dist/services/RaidService.d.ts +19 -61
  373. package/dist/services/RaidService.d.ts.map +1 -1
  374. package/dist/services/RaidService.js +191 -530
  375. package/dist/services/RecordSchemaService.d.ts +440 -0
  376. package/dist/services/RecordSchemaService.d.ts.map +1 -0
  377. package/dist/services/RecordSchemaService.js +3061 -0
  378. package/dist/services/RecordTypesService.d.ts +29 -0
  379. package/dist/services/RecordTypesService.d.ts.map +1 -1
  380. package/dist/services/RecordTypesService.js +106 -11
  381. package/dist/services/RecordValidationService.d.ts +340 -0
  382. package/dist/services/RecordValidationService.d.ts.map +1 -0
  383. package/dist/services/RecordValidationService.js +1898 -0
  384. package/dist/services/RecordsService.d.ts +317 -26
  385. package/dist/services/RecordsService.d.ts.map +1 -1
  386. package/dist/services/RecordsService.js +5145 -765
  387. package/dist/services/SolrSearchService.d.ts +1 -1
  388. package/dist/services/SolrSearchService.d.ts.map +1 -1
  389. package/dist/services/SolrSearchService.js +42 -12
  390. package/dist/services/StandardDatastreamService.d.ts +4 -0
  391. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  392. package/dist/services/StandardDatastreamService.js +106 -44
  393. package/dist/services/TriggerService.d.ts.map +1 -1
  394. package/dist/services/TriggerService.js +54 -30
  395. package/dist/services/UsersService.d.ts +2 -1
  396. package/dist/services/UsersService.d.ts.map +1 -1
  397. package/dist/services/UsersService.js +364 -283
  398. package/dist/services/VocabularyService.d.ts +2 -0
  399. package/dist/services/VocabularyService.d.ts.map +1 -1
  400. package/dist/services/VocabularyService.js +61 -2
  401. package/dist/services/WorkflowStepsService.d.ts +11 -0
  402. package/dist/services/WorkflowStepsService.d.ts.map +1 -1
  403. package/dist/services/WorkflowStepsService.js +32 -3
  404. package/dist/services/WorkspaceService.d.ts +2 -2
  405. package/dist/services/WorkspaceService.d.ts.map +1 -1
  406. package/dist/services/WorkspaceService.js +5 -5
  407. package/dist/services/doi-v2/bindings.d.ts.map +1 -1
  408. package/dist/services/doi-v2/bindings.js +3 -20
  409. package/dist/services/doi-v2/config.d.ts +1 -0
  410. package/dist/services/doi-v2/config.d.ts.map +1 -1
  411. package/dist/services/doi-v2/config.js +13 -5
  412. package/dist/services/doi-v2/runtime.d.ts.map +1 -1
  413. package/dist/services/doi-v2/runtime.js +14 -54
  414. package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
  415. package/dist/services/figshare-v2/bindings.js +3 -20
  416. package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
  417. package/dist/services/figshare-v2/runtime.js +11 -58
  418. package/dist/services/figshare-v2/worker.d.ts.map +1 -1
  419. package/dist/services/figshare-v2/worker.js +254 -74
  420. package/dist/services/form-record-access-user.d.ts +3 -0
  421. package/dist/services/form-record-access-user.d.ts.map +1 -0
  422. package/dist/services/form-record-access-user.js +23 -0
  423. package/dist/services/index.d.ts +9 -0
  424. package/dist/services/index.d.ts.map +1 -1
  425. package/dist/services/index.js +45 -3
  426. package/dist/services/integration-v2/bindings.d.ts +3 -0
  427. package/dist/services/integration-v2/bindings.d.ts.map +1 -0
  428. package/dist/services/integration-v2/bindings.js +91 -0
  429. package/dist/services/integration-v2/runtime.d.ts +3 -0
  430. package/dist/services/integration-v2/runtime.d.ts.map +1 -0
  431. package/dist/services/integration-v2/runtime.js +50 -0
  432. package/dist/services/internal-record-schema-authorization.d.ts +8 -0
  433. package/dist/services/internal-record-schema-authorization.d.ts.map +1 -0
  434. package/dist/services/internal-record-schema-authorization.js +16 -0
  435. package/dist/services/oni-v2/audit.d.ts +19 -0
  436. package/dist/services/oni-v2/audit.d.ts.map +1 -0
  437. package/dist/services/oni-v2/audit.js +50 -0
  438. package/dist/services/oni-v2/bindings.d.ts +7 -0
  439. package/dist/services/oni-v2/bindings.d.ts.map +1 -0
  440. package/dist/services/oni-v2/bindings.js +31 -0
  441. package/dist/services/oni-v2/config.d.ts +12 -0
  442. package/dist/services/oni-v2/config.d.ts.map +1 -0
  443. package/dist/services/oni-v2/config.js +134 -0
  444. package/dist/services/oni-v2/context.d.ts +3 -0
  445. package/dist/services/oni-v2/context.d.ts.map +1 -0
  446. package/dist/services/oni-v2/context.js +17 -0
  447. package/dist/services/oni-v2/crate.d.ts +17 -0
  448. package/dist/services/oni-v2/crate.d.ts.map +1 -0
  449. package/dist/services/oni-v2/crate.js +504 -0
  450. package/dist/services/oni-v2/flydriveOcflStore.d.ts +69 -0
  451. package/dist/services/oni-v2/flydriveOcflStore.d.ts.map +1 -0
  452. package/dist/services/oni-v2/flydriveOcflStore.js +325 -0
  453. package/dist/services/oni-v2/ingestion.d.ts +37 -0
  454. package/dist/services/oni-v2/ingestion.d.ts.map +1 -0
  455. package/dist/services/oni-v2/ingestion.js +91 -0
  456. package/dist/services/oni-v2/mapping.d.ts +17 -0
  457. package/dist/services/oni-v2/mapping.d.ts.map +1 -0
  458. package/dist/services/oni-v2/mapping.js +137 -0
  459. package/dist/services/oni-v2/repository.d.ts +9 -0
  460. package/dist/services/oni-v2/repository.d.ts.map +1 -0
  461. package/dist/services/oni-v2/repository.js +180 -0
  462. package/dist/services/oni-v2/runtime.d.ts +23 -0
  463. package/dist/services/oni-v2/runtime.d.ts.map +1 -0
  464. package/dist/services/oni-v2/runtime.js +121 -0
  465. package/dist/services/oni-v2/templating.d.ts +11 -0
  466. package/dist/services/oni-v2/templating.d.ts.map +1 -0
  467. package/dist/services/oni-v2/templating.js +27 -0
  468. package/dist/services/oni-v2/types.d.ts +100 -0
  469. package/dist/services/oni-v2/types.d.ts.map +1 -0
  470. package/dist/services/oni-v2/types.js +3 -0
  471. package/dist/services/raid-v2/audit.d.ts +10 -0
  472. package/dist/services/raid-v2/audit.d.ts.map +1 -0
  473. package/dist/services/raid-v2/audit.js +29 -0
  474. package/dist/services/raid-v2/errors.d.ts +85 -0
  475. package/dist/services/raid-v2/errors.d.ts.map +1 -0
  476. package/dist/services/raid-v2/errors.js +36 -0
  477. package/dist/services/raid-v2/http.d.ts +4 -0
  478. package/dist/services/raid-v2/http.d.ts.map +1 -0
  479. package/dist/services/raid-v2/http.js +84 -0
  480. package/dist/services/raid-v2/logger.d.ts +8 -0
  481. package/dist/services/raid-v2/logger.d.ts.map +1 -0
  482. package/dist/services/raid-v2/logger.js +30 -0
  483. package/dist/services/raid-v2/mapping.d.ts +9 -0
  484. package/dist/services/raid-v2/mapping.d.ts.map +1 -0
  485. package/dist/services/raid-v2/mapping.js +168 -0
  486. package/dist/services/raid-v2/runtime.d.ts +5 -0
  487. package/dist/services/raid-v2/runtime.d.ts.map +1 -0
  488. package/dist/services/raid-v2/runtime.js +135 -0
  489. package/dist/services/raid-v2/tags.d.ts +11 -0
  490. package/dist/services/raid-v2/tags.d.ts.map +1 -0
  491. package/dist/services/raid-v2/tags.js +12 -0
  492. package/dist/services/raid-v2/types.d.ts +66 -0
  493. package/dist/services/raid-v2/types.d.ts.map +1 -0
  494. package/dist/services/raid-v2/types.js +3 -0
  495. package/dist/services/record-hooks/coordinator.d.ts +64 -0
  496. package/dist/services/record-hooks/coordinator.d.ts.map +1 -0
  497. package/dist/services/record-hooks/coordinator.js +276 -0
  498. package/dist/visitor/client.visitor.d.ts +6 -0
  499. package/dist/visitor/client.visitor.d.ts.map +1 -1
  500. package/dist/visitor/client.visitor.js +59 -14
  501. package/dist/visitor/construct.visitor.d.ts +27 -1
  502. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  503. package/dist/visitor/construct.visitor.js +265 -177
  504. package/dist/visitor/context-variables.visitor.d.ts +3 -1
  505. package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
  506. package/dist/visitor/context-variables.visitor.js +15 -1
  507. package/dist/visitor/data-value.visitor.d.ts +6 -0
  508. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  509. package/dist/visitor/data-value.visitor.js +10 -1
  510. package/dist/visitor/json-type-def.visitor.d.ts +6 -0
  511. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  512. package/dist/visitor/json-type-def.visitor.js +10 -1
  513. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +11 -0
  514. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  515. package/dist/visitor/migrate-config-v4-v5.visitor.js +228 -133
  516. package/dist/visitor/related-object-data-inline.visitor.d.ts +31 -0
  517. package/dist/visitor/related-object-data-inline.visitor.d.ts.map +1 -0
  518. package/dist/visitor/related-object-data-inline.visitor.js +96 -0
  519. package/dist/visitor/template.visitor.d.ts +17 -2
  520. package/dist/visitor/template.visitor.d.ts.map +1 -1
  521. package/dist/visitor/template.visitor.js +60 -22
  522. package/dist/visitor/validator.visitor.d.ts +49 -7
  523. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  524. package/dist/visitor/validator.visitor.js +275 -178
  525. package/dist/waterline-models/AttachmentMetadata.d.ts +22 -0
  526. package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -1
  527. package/dist/waterline-models/AttachmentMetadata.js +147 -3
  528. package/dist/waterline-models/BrandingConfig.d.ts +7 -0
  529. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  530. package/dist/waterline-models/BrandingConfig.js +16 -1
  531. package/dist/waterline-models/BrandingConfigHistory.d.ts +11 -2
  532. package/dist/waterline-models/BrandingConfigHistory.d.ts.map +1 -1
  533. package/dist/waterline-models/BrandingConfigHistory.js +21 -1
  534. package/dist/waterline-models/DashboardConfiguration.d.ts +29 -0
  535. package/dist/waterline-models/DashboardConfiguration.d.ts.map +1 -0
  536. package/dist/waterline-models/DashboardConfiguration.js +52 -0
  537. package/dist/waterline-models/RecordType.d.ts +9 -0
  538. package/dist/waterline-models/RecordType.d.ts.map +1 -1
  539. package/dist/waterline-models/RecordType.js +16 -1
  540. package/dist/waterline-models/User.d.ts.map +1 -1
  541. package/dist/waterline-models/User.js +10 -15
  542. package/dist/waterline-models/index.d.ts +2 -0
  543. package/dist/waterline-models/index.d.ts.map +1 -1
  544. package/dist/waterline-models/index.js +4 -1
  545. package/package.json +59 -45
  546. package/dist/config/datapubs.config.d.ts +0 -72
  547. package/dist/config/datapubs.config.d.ts.map +0 -1
  548. package/dist/config/datapubs.config.js +0 -74
@@ -27,9 +27,16 @@ const context_1 = require("./context");
27
27
  const IntegrationAuditModel_1 = require("../../model/storage/IntegrationAuditModel");
28
28
  const RecordWriteOptions_1 = require("../../RecordWriteOptions");
29
29
  const contentHash = (value) => {
30
- const canonical = (v) => Array.isArray(v) ? v.map(canonical) : v && typeof v === 'object'
31
- ? Object.fromEntries(Object.entries(v).sort(([a], [b]) => a.localeCompare(b)).map(([k, x]) => [k, canonical(x)])) : v;
32
- return (0, node_crypto_1.createHash)('sha256').update(JSON.stringify(canonical(value))).digest('hex');
30
+ const canonical = (v) => Array.isArray(v)
31
+ ? v.map(canonical)
32
+ : v && typeof v === 'object'
33
+ ? Object.fromEntries(Object.entries(v)
34
+ .sort(([a], [b]) => a.localeCompare(b))
35
+ .map(([k, x]) => [k, canonical(x)]))
36
+ : v;
37
+ return (0, node_crypto_1.createHash)('sha256')
38
+ .update(JSON.stringify(canonical(value)))
39
+ .digest('hex');
33
40
  };
34
41
  exports.contentHash = contentHash;
35
42
  function getSyncStore() {
@@ -37,9 +44,19 @@ function getSyncStore() {
37
44
  return new sync_store_1.FigshareSyncStore(manager);
38
45
  }
39
46
  function projectionPaths(config) {
40
- return [...new Set([config.record.articleIdPath, config.record.statusPath, config.record.errorPath, config.record.syncStatePath,
41
- config.record.dataLocationsPath, config.record.allFilesUploadedPath, config.writeBack.articleId, ...config.writeBack.articleUrls,
42
- ...config.writeBack.extraFields.map(f => f.targetPath)].filter((p) => !!p))];
47
+ return [
48
+ ...new Set([
49
+ config.record.articleIdPath,
50
+ config.record.statusPath,
51
+ config.record.errorPath,
52
+ config.record.syncStatePath,
53
+ config.record.dataLocationsPath,
54
+ config.record.allFilesUploadedPath,
55
+ config.writeBack.articleId,
56
+ ...config.writeBack.articleUrls,
57
+ ...config.writeBack.extraFields.map(f => f.targetPath),
58
+ ].filter((p) => !!p)),
59
+ ];
43
60
  }
44
61
  /** Source import never acknowledges before durable state exists. Queue delivery is disposable. */
45
62
  async function importRecordIntent(store, record) {
@@ -93,7 +110,7 @@ async function dispatchFigshare() {
93
110
  break;
94
111
  for (const due of page) {
95
112
  seen.add(due.oid);
96
- if (!await store.dispatchClaim(due.oid))
113
+ if (!(await store.dispatchClaim(due.oid)))
97
114
  continue;
98
115
  try {
99
116
  const fresh = await RecordsService.getMeta(due.oid);
@@ -119,8 +136,11 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
119
136
  if (!record) {
120
137
  const existing = await store.get(oid);
121
138
  if (existing)
122
- await store.change(oid, s => { s.status = 'cancelled'; for (const work of Object.values(s.work))
123
- work.dueAt = null; });
139
+ await store.change(oid, s => {
140
+ s.status = 'cancelled';
141
+ for (const work of Object.values(s.work))
142
+ work.dueAt = null;
143
+ });
124
144
  return;
125
145
  }
126
146
  if (record.metaMetadata.brandId !== brandId)
@@ -152,7 +172,11 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
152
172
  await store.renew(oid, owner, settings.leaseMs);
153
173
  if (job.touch)
154
174
  await job.touch();
155
- })().catch(() => abort.abort()).finally(() => { heartbeatBusy = false; });
175
+ })()
176
+ .catch(() => abort.abort())
177
+ .finally(() => {
178
+ heartbeatBusy = false;
179
+ });
156
180
  }, settings.heartbeatMs);
157
181
  heartbeat.unref();
158
182
  const checkpoint = async (fn) => {
@@ -172,14 +196,17 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
172
196
  s.waitingReason = reason;
173
197
  // Readiness is an expected wait, not a failed attempt. Clear recovered polling
174
198
  // errors, while retaining a genuine terminal failure of unfinished source sync.
175
- const unresolvedSyncFailure = s.error?.terminal && (!s.error.kind || s.error.kind === 'sync')
176
- && s.work.sync.requested > s.work.sync.processed;
199
+ const unresolvedSyncFailure = s.error?.terminal &&
200
+ (!s.error.kind || s.error.kind === 'sync') &&
201
+ s.work.sync.requested > s.work.sync.processed;
177
202
  if (!unresolvedSyncFailure && (!s.error?.kind || s.error.kind === kind))
178
203
  delete s.error;
179
204
  if (s.work[kind].requested === startedWork[kind].requested)
180
205
  s.work[kind].dueAt = Date.now() + settings.observationMs;
181
206
  });
182
- const rawClient = config.runtime.mode === 'fixture' ? (0, http_1.makeFixtureClient)(config) : (0, http_1.makeLiveClient)(config, (0, context_1.createRunContext)(record, config, owner, 'worker'));
207
+ const rawClient = config.runtime.mode === 'fixture'
208
+ ? (0, http_1.makeFixtureClient)(config)
209
+ : (0, http_1.makeLiveClient)(config, (0, context_1.createRunContext)(record, config, owner, 'worker'));
183
210
  let article;
184
211
  let metadataChanged = false;
185
212
  const sourceGeneration = record.figshareSyncIntent?.generation ?? 0;
@@ -198,11 +225,14 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
198
225
  if (!fresh || fresh.metaMetadata.brandId !== brandId)
199
226
  throw new execution_1.FigshareWaiting('record_changed');
200
227
  const latestConfig = (0, config_1.resolveFigsharePublishingConfig)(fresh, { requireToken: false });
201
- if (!latestConfig?.processing?.enabled || latestConfig.processingError || (0, exports.contentHash)(latestConfig) !== (0, exports.contentHash)(config))
228
+ if (!latestConfig?.processing?.enabled ||
229
+ latestConfig.processingError ||
230
+ (0, exports.contentHash)(latestConfig) !== (0, exports.contentHash)(config))
202
231
  throw new execution_1.FigshareWaiting('configuration_changed');
203
- if (fresh.figshareSyncIntent?.readiness === 'initialising' || (fresh.figshareSyncIntent?.generation ?? 0) !== sourceGeneration)
232
+ if (fresh.figshareSyncIntent?.readiness === 'initialising' ||
233
+ (fresh.figshareSyncIntent?.generation ?? 0) !== sourceGeneration)
204
234
  throw new execution_1.FigshareWaiting('newer_save');
205
- if (kind === 'sync' && !await eligible(startedWork.sync.policies, fresh))
235
+ if (kind === 'sync' && !(await eligible(startedWork.sync.policies, fresh)))
206
236
  throw new execution_1.FigshareWaiting('eligibility');
207
237
  return fresh;
208
238
  };
@@ -227,20 +257,22 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
227
257
  if (key === 'custom_fields') {
228
258
  const remote = Array.isArray(current.custom_fields)
229
259
  ? Object.fromEntries(current.custom_fields.map(f => [f.name, f.value]))
230
- : current.custom_fields ?? {};
260
+ : (current.custom_fields ?? {});
231
261
  remoteFields[key] = Object.fromEntries(Object.keys(payload.custom_fields ?? {}).map(k => [k, remote[k]]));
232
262
  }
233
263
  else if (key === 'defined_type' && typeof payload[key] === 'string')
234
264
  remoteFields[key] = current.defined_type_name ?? current[key];
235
265
  else if (key === 'categories' && Array.isArray(current[key]))
236
- remoteFields[key] = current[key].map(value => typeof value === 'object' && value ? value.id : value);
266
+ remoteFields[key] = current[key].map(value => (typeof value === 'object' && value ? value.id : value));
237
267
  else if (key === 'authors' && Array.isArray(current[key]))
238
268
  remoteFields[key] = current[key].map(value => typeof value === 'object' && value ? { id: value.id } : value);
239
269
  else
240
270
  remoteFields[key] = current[key];
241
271
  }
242
272
  if ((0, exports.contentHash)(remoteFields) === hash) {
243
- await checkpoint(s => { s.checkpoints.metadata = hash; });
273
+ await checkpoint(s => {
274
+ s.checkpoints.metadata = hash;
275
+ });
244
276
  return current;
245
277
  }
246
278
  metadataChanged = true;
@@ -248,13 +280,15 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
248
280
  if (payload.custom_fields) {
249
281
  const remote = Array.isArray(current.custom_fields)
250
282
  ? Object.fromEntries(current.custom_fields.map(f => [f.name, f.value]))
251
- : current.custom_fields ?? {};
283
+ : (current.custom_fields ?? {});
252
284
  outgoing.custom_fields = { ...remote, ...payload.custom_fields };
253
285
  }
254
286
  const result = await send(outgoing);
255
- await checkpoint(s => { s.checkpoints.metadata = hash; });
287
+ await checkpoint(s => {
288
+ s.checkpoints.metadata = hash;
289
+ });
256
290
  return { ...result, id };
257
- }
291
+ },
258
292
  };
259
293
  const recovery = (fn) => execution_1.figshareExecution.run({ ...execution, binding: state.create?.binding ?? state.binding, recovery: true }, fn);
260
294
  try {
@@ -271,7 +305,7 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
271
305
  const user = await UsersService.getUserWithUsername(username).toPromise();
272
306
  if (!user || user.type !== userType || user.disabled === true)
273
307
  throw new execution_1.FigshareRepairRequired('Configured Figshare local service user is unavailable');
274
- if (!await RecordsService.hasEditAccess(brand, user, (user.roles ?? []).map(role => ({ ...role })), record))
308
+ if (!(await RecordsService.hasEditAccess(brand, user, (user.roles ?? []).map(role => ({ ...role })), record)))
275
309
  throw new execution_1.FigshareRepairRequired('Figshare service user does not have record edit access');
276
310
  if (!rawClient.getAccount)
277
311
  throw new execution_1.FigshareRepairRequired('Figshare client cannot verify authenticated account');
@@ -292,11 +326,21 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
292
326
  if (!lookup)
293
327
  throw new execution_1.FigshareRepairRequired('Storage adapter cannot verify legacy binding uniqueness');
294
328
  const matching = await lookup.call(RecordsService.getFigshareIntentStorage(), config.record.articleIdPath, legacyId);
295
- if (matching.some(other => other.redboxOid !== oid && (0, config_1.resolveFigsharePublishingConfig)(other)?.connection.baseUrl.replace(/\/+$/, '') === (0, identity_1.apiNamespace)(config)))
329
+ if (matching.some(other => other.redboxOid !== oid &&
330
+ (0, config_1.resolveFigsharePublishingConfig)(other)?.connection.baseUrl.replace(/\/+$/, '') === (0, identity_1.apiNamespace)(config)))
296
331
  throw new execution_1.FigshareRepairRequired('Duplicate legacy article bindings require repair before mutation');
297
332
  article = await rawClient.getArticle(legacyId);
298
- const binding = { namespace: (0, identity_1.apiNamespace)(config), accountId, ownerId: String(article.account_id ?? accountId), articleId: String(article.id) };
299
- await checkpoint(s => { s.binding = binding; s.namespace = binding.namespace; s.articleId = binding.articleId; });
333
+ const binding = {
334
+ namespace: (0, identity_1.apiNamespace)(config),
335
+ accountId,
336
+ ownerId: String(article.account_id ?? accountId),
337
+ articleId: String(article.id),
338
+ };
339
+ await checkpoint(s => {
340
+ s.binding = binding;
341
+ s.namespace = binding.namespace;
342
+ s.articleId = binding.articleId;
343
+ });
300
344
  execution.binding = binding;
301
345
  }
302
346
  }
@@ -309,10 +353,13 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
309
353
  [config.record.articleIdPath]: state.binding.articleId,
310
354
  [config.writeBack.articleId]: state.binding.articleId,
311
355
  [config.record.statusPath]: state.status,
312
- [config.record.errorPath]: state.error?.message ?? ''
356
+ [config.record.errorPath]: state.error?.message ?? '',
313
357
  };
314
358
  for (const path of config.writeBack.articleUrls)
315
- fields[path] = article?.url_public_html ?? article?.url_private_html ?? `${config.connection.frontEndUrl}/articles/${state.binding.articleId}`;
359
+ fields[path] =
360
+ article?.url_public_html ??
361
+ article?.url_private_html ??
362
+ `${config.connection.frontEndUrl}/articles/${state.binding.articleId}`;
316
363
  for (const binding of config.writeBack.extraFields) {
317
364
  const source = binding.from === 'article' ? article : binding.from === 'publishResult' ? state.publish : undefined;
318
365
  const value = lodash_1.default.get(source, binding.sourcePath);
@@ -320,7 +367,8 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
320
367
  fields[binding.targetPath] = value;
321
368
  }
322
369
  await store.assertOwner(oid, owner);
323
- if ((await RecordsService.setRecordFields(oid, fields, fresh.recordVersion ?? 0, projectionPaths(config), user)).updated)
370
+ if ((await RecordsService.setRecordFields(oid, fields, fresh.recordVersion ?? 0, projectionPaths(config), user))
371
+ .updated)
324
372
  return;
325
373
  }
326
374
  throw new execution_1.FigshareWaiting('record_changed');
@@ -330,9 +378,14 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
330
378
  await assertCurrent();
331
379
  if (!state.audit || state.auditClosed) {
332
380
  const audit = (0, audit_1.startFigshareAudit)(oid, IntegrationAuditModel_1.IntegrationAuditAction.syncRecordWithFigshare, (0, context_1.createRunContext)(record, config, owner, 'worker'), {
333
- sourceGeneration, requestedBy: startedWork.sync.requestedBy, requests: startedWork.sync.requested - startedWork.sync.processed
381
+ sourceGeneration,
382
+ requestedBy: startedWork.sync.requestedBy,
383
+ requests: startedWork.sync.requested - startedWork.sync.processed,
384
+ });
385
+ await checkpoint(s => {
386
+ s.audit = audit;
387
+ s.auditClosed = false;
334
388
  });
335
- await checkpoint(s => { s.audit = audit; s.auditClosed = false; });
336
389
  }
337
390
  if (!state.binding?.articleId) {
338
391
  if (state.create) {
@@ -340,42 +393,77 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
340
393
  if (!recovered)
341
394
  throw new execution_1.FigshareRepairRequired('Uncertain create has no unique visible token match; do not create again. Reconcile, then run abandon-create if no article exists');
342
395
  const binding = { ...state.create.binding, articleId: String(recovered.id) };
343
- await checkpoint(s => { s.binding = binding; s.namespace = binding.namespace; s.articleId = binding.articleId; s.create.verifiedId = binding.articleId; });
396
+ await checkpoint(s => {
397
+ s.binding = binding;
398
+ s.namespace = binding.namespace;
399
+ s.articleId = binding.articleId;
400
+ s.create.verifiedId = binding.articleId;
401
+ });
344
402
  execution.binding = binding;
345
403
  article = recovered;
346
404
  if (state.create.error && startedWork.sync.requested <= (state.createRequest ?? startedWork.sync.requested))
347
405
  throw new Error(state.create.error);
348
406
  }
349
407
  else {
350
- if ((state.waitingReason === 'uncertain_legacy_create' || (0, types_1.getRecordField)(record, config.record.syncStatePath)) && !state.create)
408
+ if ((state.waitingReason === 'uncertain_legacy_create' ||
409
+ (0, types_1.getRecordField)(record, config.record.syncStatePath)) &&
410
+ !state.create)
351
411
  throw new execution_1.FigshareRepairRequired('Legacy synchronisation evidence without an article ID requires migration review');
352
- const ownerId = config.impersonation?.operations.create === 'owner' ? await (0, identity_1.resolveCreationOwner)(rawClient, config, record, accountId) : accountId;
412
+ const ownerId = config.impersonation?.operations.create === 'owner'
413
+ ? await (0, identity_1.resolveCreationOwner)(rawClient, config, record, accountId)
414
+ : accountId;
353
415
  const binding = { namespace: (0, identity_1.apiNamespace)(config), accountId, ownerId };
354
416
  const operation = (0, identity_1.newCreateOperation)(binding);
355
- await checkpoint(s => { s.binding = binding; s.create = operation; s.createGeneration = sourceGeneration; s.createRequest = startedWork.sync.requested; });
417
+ await checkpoint(s => {
418
+ s.binding = binding;
419
+ s.create = operation;
420
+ s.createGeneration = sourceGeneration;
421
+ s.createRequest = startedWork.sync.requested;
422
+ });
356
423
  execution.binding = binding;
357
424
  try {
358
- const response = await (0, execution_1.workerClient)(rawClient).createArticle({ title: (0, identity_1.provisionalTitle)(operation.token) });
425
+ const response = await (0, execution_1.workerClient)(rawClient).createArticle({
426
+ title: (0, identity_1.provisionalTitle)(operation.token),
427
+ });
359
428
  if (response.id == null)
360
429
  throw new Error('Create response did not contain an article identity');
361
430
  article = await recovery(() => rawClient.getArticle(String(response.id)));
362
431
  if (article.title !== (0, identity_1.provisionalTitle)(operation.token))
363
432
  throw new execution_1.FigshareRepairRequired('Create response did not verify the operation token');
364
433
  const id = String(article.id);
365
- await checkpoint(s => { s.binding.articleId = id; s.namespace = binding.namespace; s.articleId = id; s.create.verifiedId = id; s.create.outcome = 'confirmed'; });
434
+ await checkpoint(s => {
435
+ s.binding.articleId = id;
436
+ s.namespace = binding.namespace;
437
+ s.articleId = id;
438
+ s.create.verifiedId = id;
439
+ s.create.outcome = 'confirmed';
440
+ });
366
441
  execution.binding = state.binding;
367
442
  }
368
443
  catch (error) {
369
444
  // Only the transport guard raises a wait here, and it refuses before sending, so nothing was created.
370
445
  if (error instanceof execution_1.FigshareWaiting) {
371
- await checkpoint(s => { delete s.create; delete s.createGeneration; delete s.createRequest; delete s.binding; });
446
+ await checkpoint(s => {
447
+ delete s.create;
448
+ delete s.createGeneration;
449
+ delete s.createRequest;
450
+ delete s.binding;
451
+ });
372
452
  throw error;
373
453
  }
374
- await checkpoint(s => { s.create.outcome = error instanceof http_1.FigshareHttpError && error.statusCode ? 'failed' : 'uncertain'; s.create.error = error instanceof Error ? error.message : String(error); });
454
+ await checkpoint(s => {
455
+ s.create.outcome = error instanceof http_1.FigshareHttpError && error.statusCode ? 'failed' : 'uncertain';
456
+ s.create.error = error instanceof Error ? error.message : String(error);
457
+ });
375
458
  const recovered = await recovery(() => (0, identity_1.recoverCreate)(rawClient, state.create));
376
459
  if (recovered) {
377
460
  const id = String(recovered.id);
378
- await checkpoint(s => { s.binding.articleId = id; s.namespace = binding.namespace; s.articleId = id; s.create.verifiedId = id; });
461
+ await checkpoint(s => {
462
+ s.binding.articleId = id;
463
+ s.namespace = binding.namespace;
464
+ s.articleId = id;
465
+ s.create.verifiedId = id;
466
+ });
379
467
  article = recovered;
380
468
  await project();
381
469
  }
@@ -388,7 +476,9 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
388
476
  article = await rawClient.getArticle(id);
389
477
  if (state.publish && state.publish.outcome !== 'observed') {
390
478
  if ((0, identity_1.observedPublished)(article) && Number(article.version ?? 0) > state.publish.previousVersion) {
391
- await checkpoint(s => { s.publish.outcome = 'observed'; });
479
+ await checkpoint(s => {
480
+ s.publish.outcome = 'observed';
481
+ });
392
482
  }
393
483
  else if ((0, runtime_1.isCurationLocked)(config, article)) {
394
484
  throw new execution_1.FigshareWaiting('curation');
@@ -396,7 +486,9 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
396
486
  else if (startedWork.sync.sourceGeneration > state.publish.generation) {
397
487
  // The read confirms the earlier request did not publish. A newer eligible source save supersedes it,
398
488
  // e.g. after a curator returns the article for changes, so its content syncs and publication is requested again.
399
- await checkpoint(s => { delete s.publish; });
489
+ await checkpoint(s => {
490
+ delete s.publish;
491
+ });
400
492
  }
401
493
  else if (state.publish.outcome === 'submitted' || state.publish.outcome === 'uncertain') {
402
494
  throw new execution_1.FigshareRepairRequired('Publication outcome is uncertain; confirm the article in Figshare, then run reset-publish');
@@ -420,28 +512,53 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
420
512
  }
421
513
  (0, types_1.setRecordField)(record, config.record.articleIdPath, id);
422
514
  const previousAssets = state.checkpoints.assets;
423
- await service.syncMetadata(record, { action: 'update', articleId: id, sameJob: true, syncState: { status: 'syncing', correlationId: owner } });
515
+ await service.syncMetadata(record, {
516
+ action: 'update',
517
+ articleId: id,
518
+ sameJob: true,
519
+ syncState: { status: 'syncing', correlationId: owner },
520
+ });
424
521
  const client = service.makeClient(config, record, owner, 'worker');
425
522
  await (0, managed_assets_1.mirrorManagedAssets)(client, config, record, id, state, checkpoint);
426
523
  const assetsChanged = previousAssets !== state.checkpoints.assets;
427
524
  await (0, embargo_1.syncEmbargoPhase)(client, config, record, id);
428
- await checkpoint(s => { s.checkpoints.embargo = (0, exports.contentHash)(config.embargo.mode === 'none' ? null : record.metadata); });
525
+ await checkpoint(s => {
526
+ s.checkpoints.embargo = (0, exports.contentHash)(config.embargo.mode === 'none' ? null : record.metadata);
527
+ });
429
528
  await assertCurrent();
430
529
  article = await rawClient.getArticle(id);
431
530
  const publishHash = (0, exports.contentHash)(state.checkpoints);
432
- const needsPublish = !(0, identity_1.observedPublished)(article) || (metadataChanged && config.article.republishOnMetadataChange) || (assetsChanged && config.article.republishOnAssetChange);
531
+ const needsPublish = !(0, identity_1.observedPublished)(article) ||
532
+ (metadataChanged && config.article.republishOnMetadataChange) ||
533
+ (assetsChanged && config.article.republishOnAssetChange);
433
534
  if (needsPublish && state.publish?.hash !== publishHash && config.article.publishMode !== 'manual') {
434
- await checkpoint(s => { s.publish = { generation: sourceGeneration, hash: publishHash, previousVersion: Number(article.version ?? 0), outcome: 'submitted', submittedAt: new Date().toISOString() }; });
535
+ await checkpoint(s => {
536
+ s.publish = {
537
+ generation: sourceGeneration,
538
+ hash: publishHash,
539
+ previousVersion: Number(article.version ?? 0),
540
+ outcome: 'submitted',
541
+ submittedAt: new Date().toISOString(),
542
+ };
543
+ });
435
544
  try {
436
545
  await client.publishArticle(id);
437
- await checkpoint(s => { s.publish.outcome = 'accepted'; });
546
+ await checkpoint(s => {
547
+ s.publish.outcome = 'accepted';
548
+ });
438
549
  }
439
550
  catch (error) {
440
- const body = error instanceof http_1.FigshareHttpError ? error.responseBody : undefined;
441
- const rejected = error instanceof http_1.FigshareHttpError && error.statusCode === 400
442
- && body?.code === 'BadRequest' && typeof body.message === 'string'
443
- && body.message.startsWith('Missing mandatory value:');
444
- await checkpoint(s => { s.publish.outcome = rejected ? 'rejected' : 'uncertain'; });
551
+ const body = error instanceof http_1.FigshareHttpError
552
+ ? error.responseBody
553
+ : undefined;
554
+ const rejected = error instanceof http_1.FigshareHttpError &&
555
+ error.statusCode === 400 &&
556
+ body?.code === 'BadRequest' &&
557
+ typeof body.message === 'string' &&
558
+ body.message.startsWith('Missing mandatory value:');
559
+ await checkpoint(s => {
560
+ s.publish.outcome = rejected ? 'rejected' : 'uncertain';
561
+ });
445
562
  throw error;
446
563
  }
447
564
  // Immediate publication is visible now; a curated article still reads private and waits for review.
@@ -451,7 +568,11 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
451
568
  await checkpoint(s => {
452
569
  s.status = (0, identity_1.observedPublished)(article) ? 'synced' : 'waiting';
453
570
  delete s.error;
454
- s.waitingReason = (0, identity_1.observedPublished)(article) ? undefined : config.article.publishMode === 'manual' ? 'manual_publication' : 'review';
571
+ s.waitingReason = (0, identity_1.observedPublished)(article)
572
+ ? undefined
573
+ : config.article.publishMode === 'manual'
574
+ ? 'manual_publication'
575
+ : 'review';
455
576
  s.work.observe.requested++;
456
577
  s.work.observe.dueAt = Date.now() + settings.observationMs;
457
578
  if (s.receipts.some(r => r.kind === 'hosted' && r.desired)) {
@@ -460,8 +581,13 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
460
581
  }
461
582
  });
462
583
  if (!state.auditClosed) {
463
- (0, audit_1.completeFigshareAudit)(state.audit, { message: 'Figshare content synchronised; publication is observed separately.', responseSummary: { articleId: id, sourceGeneration, requests: startedWork.sync.requested } });
464
- await checkpoint(s => { s.auditClosed = true; });
584
+ (0, audit_1.completeFigshareAudit)(state.audit, {
585
+ message: 'Figshare content synchronised; publication is observed separately.',
586
+ responseSummary: { articleId: id, sourceGeneration, requests: startedWork.sync.requested },
587
+ });
588
+ await checkpoint(s => {
589
+ s.auditClosed = true;
590
+ });
465
591
  }
466
592
  await project();
467
593
  }
@@ -474,10 +600,14 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
474
600
  }
475
601
  const id = state.binding.articleId;
476
602
  article = await rawClient.getArticle(id);
477
- await checkpoint(s => { s.publication = (0, identity_1.observedPublished)(article) ? 'published' : s.publish ? 'pending' : 'private'; s.embargoed = article.is_embargoed === true; s.observedAt = new Date().toISOString(); });
603
+ await checkpoint(s => {
604
+ s.publication = (0, identity_1.observedPublished)(article) ? 'published' : s.publish ? 'pending' : 'private';
605
+ s.embargoed = article.is_embargoed === true;
606
+ s.observedAt = new Date().toISOString();
607
+ });
478
608
  if (due('cleanup')) {
479
609
  kind = 'cleanup';
480
- if (startedWork.cleanup.policies.length && !await eligible(startedWork.cleanup.policies, record))
610
+ if (startedWork.cleanup.policies.length && !(await eligible(startedWork.cleanup.policies, record)))
481
611
  throw new execution_1.FigshareWaiting('cleanup_eligibility');
482
612
  for (let attempt = 0; attempt < 3; attempt++) {
483
613
  record = await RecordsService.getMeta(oid);
@@ -501,14 +631,21 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
501
631
  if (state.publish && state.publish.outcome !== 'observed') {
502
632
  if (Number(article.version ?? 0) <= state.publish.previousVersion)
503
633
  throw new execution_1.FigshareWaiting('publication_confirmation');
504
- await checkpoint(s => { s.publish.outcome = 'observed'; });
634
+ await checkpoint(s => {
635
+ s.publish.outcome = 'observed';
636
+ });
505
637
  }
506
638
  const publicationKey = `${id}:${article.version ?? article.published_date}`;
507
639
  if (state.publicationAuditKey !== publicationKey) {
508
640
  // Persist the marker first: recurring observation must not produce another event.
509
- await checkpoint(s => { s.publicationAuditKey = publicationKey; });
641
+ await checkpoint(s => {
642
+ s.publicationAuditKey = publicationKey;
643
+ });
510
644
  const publicationAudit = (0, audit_1.startFigshareAudit)(oid, IntegrationAuditModel_1.IntegrationAuditAction.publishAfterUploadFilesJob, (0, context_1.createRunContext)(record, config, owner, 'observation'), { articleId: id });
511
- (0, audit_1.completeFigshareAudit)(publicationAudit, { message: 'Figshare publication confirmed.', responseSummary: { articleId: id, version: article.version, publication: 'published' } });
645
+ (0, audit_1.completeFigshareAudit)(publicationAudit, {
646
+ message: 'Figshare publication confirmed.',
647
+ responseSummary: { articleId: id, version: article.version, publication: 'published' },
648
+ });
512
649
  }
513
650
  record = await RecordsService.getMeta(oid);
514
651
  // An abandoned intent carries no work; only an unimported live save is newer content.
@@ -518,25 +655,45 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
518
655
  if (state.receipts.some(r => !['available', 'removed'].includes(r.state)))
519
656
  throw new execution_1.FigshareWaiting('uploads');
520
657
  const transition = config.workflow.transitionJob;
521
- if (transition.enabled && record.workflow.stage !== transition.targetStep && article[transition.figshareTargetFieldKey] === transition.figshareTargetFieldValue) {
658
+ if (transition.enabled &&
659
+ record.workflow.stage !== transition.targetStep &&
660
+ article[transition.figshareTargetFieldKey] === transition.figshareTargetFieldValue) {
522
661
  // Current business eligibility is still required even though the source actor is not used again.
523
- if (!await eligible(state.work.sync.policies, record))
662
+ if (!(await eligible(state.work.sync.policies, record)))
524
663
  throw new execution_1.FigshareWaiting('workflow_eligibility');
525
664
  const recordType = await RecordTypesService.get(brand, record.metaMetadata.type).toPromise();
526
665
  if (!recordType)
527
- throw new execution_1.FigshareRepairRequired("Workflow record type is missing");
666
+ throw new execution_1.FigshareRepairRequired('Workflow record type is missing');
528
667
  const step = await WorkflowStepsService.get(recordType, transition.targetStep).toPromise();
529
668
  await store.assertOwner(oid, owner);
530
- const result = await RecordsService.updateMeta(brand, oid, record, user, true, true, step, record.metadata, { expectedVersion: record.recordVersion ?? 0, maintenance: true });
531
- if (!result.isSuccessful())
669
+ const result = await RecordsService.updateMetaInternal({
670
+ actor: { kind: 'service', id: 'FigshareService.observeWorkflow' },
671
+ authorization: { kind: 'record-edit' },
672
+ mutationClass: 'transition',
673
+ maintenance: true,
674
+ oid,
675
+ record,
676
+ brand,
677
+ user,
678
+ targetStep: step,
679
+ operation: 'transition',
680
+ });
681
+ if (result.problems.some(problem => problem.issues.some(issue => issue.code === 'record-revision-stale')))
682
+ throw new execution_1.FigshareWaiting('record_changed');
683
+ if (!result.isComplete())
532
684
  throw new execution_1.FigshareRepairRequired('Workflow hooks failed; inspect partial transition before resuming');
533
685
  }
534
686
  await finish('observe');
535
- await checkpoint(s => { s.status = 'synced'; delete s.waitingReason; });
687
+ await checkpoint(s => {
688
+ s.status = 'synced';
689
+ delete s.waitingReason;
690
+ });
536
691
  await project();
537
692
  }
538
693
  if (state.status === 'running')
539
- await checkpoint(s => { s.status = s.nextActionAt == null ? 'synced' : 'waiting'; });
694
+ await checkpoint(s => {
695
+ s.status = s.nextActionAt == null ? 'synced' : 'waiting';
696
+ });
540
697
  });
541
698
  }
542
699
  catch (error) {
@@ -547,19 +704,42 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
547
704
  }
548
705
  else {
549
706
  const message = error instanceof Error ? error.message : String(error);
550
- const category = error instanceof execution_1.FigshareRepairRequired ? 'repair' : error instanceof http_1.FigshareHttpError ? `http:${error.statusCode ?? 'transport'}` : 'configuration_or_operation';
707
+ const category = error instanceof execution_1.FigshareRepairRequired
708
+ ? 'repair'
709
+ : error instanceof http_1.FigshareHttpError
710
+ ? `http:${error.statusCode ?? 'transport'}`
711
+ : 'configuration_or_operation';
551
712
  await checkpoint(s => {
552
713
  const previous = s.error?.category === category && (!s.error.kind || s.error.kind === kind) ? s.error : undefined;
553
714
  const count = (previous?.count ?? 0) + 1;
554
- const terminal = category === 'repair' || (error instanceof http_1.FigshareHttpError && error.statusCode != null && error.statusCode >= 400 && error.statusCode < 500 && ![408, 429].includes(error.statusCode)) || count >= settings.maxAttempts;
555
- s.error = { kind, category, message, count, firstAt: previous?.firstAt ?? new Date().toISOString(), lastAt: new Date().toISOString(), terminal };
556
- s.status = terminal ? category === 'repair' ? 'repair_required' : 'failed' : 'retrying';
715
+ const terminal = category === 'repair' ||
716
+ (error instanceof http_1.FigshareHttpError &&
717
+ error.statusCode != null &&
718
+ error.statusCode >= 400 &&
719
+ error.statusCode < 500 &&
720
+ ![408, 429].includes(error.statusCode)) ||
721
+ count >= settings.maxAttempts;
722
+ s.error = {
723
+ kind,
724
+ category,
725
+ message,
726
+ count,
727
+ firstAt: previous?.firstAt ?? new Date().toISOString(),
728
+ lastAt: new Date().toISOString(),
729
+ terminal,
730
+ };
731
+ s.status = terminal ? (category === 'repair' ? 'repair_required' : 'failed') : 'retrying';
557
732
  if (s.work[kind].requested === startedWork[kind].requested)
558
733
  s.work[kind].dueAt = terminal ? null : Date.now() + settings.retryBaseMs * 2 ** (count - 1);
559
734
  });
560
735
  if (state.error?.terminal && !state.auditClosed && state.audit) {
561
- (0, audit_1.failFigshareAudit)(state.audit, new Error(message), { message, responseSummary: { articleId: state.binding?.articleId, attempts: state.error.count, category } });
562
- await checkpoint(s => { s.auditClosed = true; });
736
+ (0, audit_1.failFigshareAudit)(state.audit, new Error(message), {
737
+ message,
738
+ responseSummary: { articleId: state.binding?.articleId, attempts: state.error.count, category },
739
+ });
740
+ await checkpoint(s => {
741
+ s.auditClosed = true;
742
+ });
563
743
  }
564
744
  }
565
745
  }
@@ -569,4 +749,4 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
569
749
  await store.release(oid, owner);
570
750
  }
571
751
  }
572
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ZpZ3NoYXJlLXYyL3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUE4QkEsb0NBR0M7QUFDRCwwQ0FJQztBQUdELGdEQU9DO0FBT0QsNENBNkNDO0FBRUQsOENBaVhDO0FBdmRELG9EQUF1QjtBQUN2Qiw2Q0FBcUQ7QUFJckQsbUNBQXlEO0FBQ3pELDhFQUE0RztBQUM1RyxxQ0FBc0c7QUFDdEcsNkNBQW9FO0FBQ3BFLDJDQUErSDtBQUMvSCx5Q0FBd0k7QUFDeEksbURBQTJEO0FBQzNELGlDQUFtRztBQUNuRyx1Q0FBK0Q7QUFDL0QsdUNBQTZDO0FBQzdDLHFEQUEwRTtBQUMxRSxtQ0FBdUY7QUFDdkYsdUNBQTZDO0FBQzdDLHFGQUFtRjtBQUNuRixpRUFBK0Q7QUFNeEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFjLEVBQVUsRUFBRTtJQUNwRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBVyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7UUFDekcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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
752
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ZpZ3NoYXJlLXYyL3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFnRUEsb0NBR0M7QUFDRCwwQ0FnQkM7QUFHRCxnREFPQztBQU9ELDRDQWdEQztBQUVELDhDQXdwQkM7QUEveUJELG9EQUF1QjtBQUN2Qiw2Q0FBcUQ7QUFVckQsbUNBQXlEO0FBQ3pELDhFQUE0RztBQUM1RyxxQ0FBc0c7QUFDdEcsNkNBQW9FO0FBQ3BFLDJDQU1xQjtBQUNyQix5Q0FPb0I7QUFDcEIsbURBQTJEO0FBQzNELGlDQUFtRztBQUNuRyx1Q0FBK0Q7QUFDL0QsdUNBQTZDO0FBQzdDLHFEQUEwRTtBQUMxRSxtQ0FBdUY7QUFDdkYsdUNBQTZDO0FBQzdDLHFGQUFtRjtBQUNuRixpRUFBK0Q7QUFXeEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFjLEVBQVUsRUFBRTtJQUNwRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBVyxFQUFFLENBQ3hDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtZQUMxQixDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ2QsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN0QyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFD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