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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/dist/AttachmentStagingIdentity.d.ts +3 -0
  2. package/dist/AttachmentStagingIdentity.d.ts.map +1 -0
  3. package/dist/AttachmentStagingIdentity.js +10 -0
  4. package/dist/CoreController.d.ts +7 -3
  5. package/dist/CoreController.d.ts.map +1 -1
  6. package/dist/CoreController.js +85 -3
  7. package/dist/DatastreamService.d.ts +4 -0
  8. package/dist/DatastreamService.d.ts.map +1 -1
  9. package/dist/HarvestRunService.d.ts +4 -3
  10. package/dist/HarvestRunService.d.ts.map +1 -1
  11. package/dist/HarvestRunService.js +1 -1
  12. package/dist/RecordConcurrencyObservability.d.ts +51 -0
  13. package/dist/RecordConcurrencyObservability.d.ts.map +1 -0
  14. package/dist/RecordConcurrencyObservability.js +136 -0
  15. package/dist/RecordEntityTag.d.ts +31 -0
  16. package/dist/RecordEntityTag.d.ts.map +1 -0
  17. package/dist/RecordEntityTag.js +101 -0
  18. package/dist/RecordFormFingerprint.d.ts +7 -0
  19. package/dist/RecordFormFingerprint.d.ts.map +1 -0
  20. package/dist/RecordFormFingerprint.js +106 -0
  21. package/dist/RecordHttpConcurrency.d.ts +60 -0
  22. package/dist/RecordHttpConcurrency.d.ts.map +1 -0
  23. package/dist/RecordHttpConcurrency.js +181 -0
  24. package/dist/RecordSaveResponse.d.ts +219 -0
  25. package/dist/RecordSaveResponse.d.ts.map +1 -0
  26. package/dist/RecordSaveResponse.js +639 -0
  27. package/dist/RecordStorageConcurrency.d.ts +48 -0
  28. package/dist/RecordStorageConcurrency.d.ts.map +1 -0
  29. package/dist/RecordStorageConcurrency.js +103 -0
  30. package/dist/RecordWriteClassification.d.ts +12 -0
  31. package/dist/RecordWriteClassification.d.ts.map +1 -0
  32. package/dist/RecordWriteClassification.js +70 -0
  33. package/dist/RecordsService.d.ts +105 -12
  34. package/dist/RecordsService.d.ts.map +1 -1
  35. package/dist/RecordsService.js +44 -1
  36. package/dist/SearchService.d.ts +2 -1
  37. package/dist/SearchService.d.ts.map +1 -1
  38. package/dist/StorageService.d.ts +48 -8
  39. package/dist/StorageService.d.ts.map +1 -1
  40. package/dist/StorageService.js +19 -1
  41. package/dist/StorageServiceResponse.d.ts +22 -1
  42. package/dist/StorageServiceResponse.d.ts.map +1 -1
  43. package/dist/StorageServiceResponse.js +22 -4
  44. package/dist/action-execution/audit.d.ts +41 -0
  45. package/dist/action-execution/audit.d.ts.map +1 -0
  46. package/dist/action-execution/audit.js +122 -0
  47. package/dist/action-execution/executor.d.ts +24 -0
  48. package/dist/action-execution/executor.d.ts.map +1 -0
  49. package/dist/action-execution/executor.js +435 -0
  50. package/dist/action-execution/failure.d.ts +49 -0
  51. package/dist/action-execution/failure.d.ts.map +1 -0
  52. package/dist/action-execution/failure.js +129 -0
  53. package/dist/action-execution/index.d.ts +7 -0
  54. package/dist/action-execution/index.d.ts.map +1 -0
  55. package/dist/action-execution/index.js +23 -0
  56. package/dist/action-execution/legacy-result.d.ts +21 -0
  57. package/dist/action-execution/legacy-result.d.ts.map +1 -0
  58. package/dist/action-execution/legacy-result.js +70 -0
  59. package/dist/action-execution/policy.d.ts +12 -0
  60. package/dist/action-execution/policy.d.ts.map +1 -0
  61. package/dist/action-execution/policy.js +138 -0
  62. package/dist/action-execution/types.d.ts +121 -0
  63. package/dist/action-execution/types.d.ts.map +1 -0
  64. package/dist/action-execution/types.js +22 -0
  65. package/dist/api-routes/groups/branding.d.ts +8 -0
  66. package/dist/api-routes/groups/branding.d.ts.map +1 -1
  67. package/dist/api-routes/groups/branding.js +86 -11
  68. package/dist/api-routes/groups/dashboard-config.d.ts +12 -9
  69. package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -1
  70. package/dist/api-routes/groups/dashboard-config.js +136 -73
  71. package/dist/api-routes/groups/forms.d.ts.map +1 -1
  72. package/dist/api-routes/groups/forms.js +10 -2
  73. package/dist/api-routes/groups/record-schemas.d.ts +5 -0
  74. package/dist/api-routes/groups/record-schemas.d.ts.map +1 -0
  75. package/dist/api-routes/groups/record-schemas.js +181 -0
  76. package/dist/api-routes/groups/records.d.ts +1 -0
  77. package/dist/api-routes/groups/records.d.ts.map +1 -1
  78. package/dist/api-routes/groups/records.js +141 -26
  79. package/dist/api-routes/index.d.ts +3 -0
  80. package/dist/api-routes/index.d.ts.map +1 -1
  81. package/dist/api-routes/index.js +4 -1
  82. package/dist/api-routes/openapi.d.ts.map +1 -1
  83. package/dist/api-routes/openapi.js +7 -5
  84. package/dist/api-routes/record-schema-openapi.d.ts +26 -0
  85. package/dist/api-routes/record-schema-openapi.d.ts.map +1 -0
  86. package/dist/api-routes/record-schema-openapi.js +38 -0
  87. package/dist/api-routes/record-schema-response.d.ts +40 -0
  88. package/dist/api-routes/record-schema-response.d.ts.map +1 -0
  89. package/dist/api-routes/record-schema-response.js +89 -0
  90. package/dist/api-routes/request-extraction.d.ts.map +1 -1
  91. package/dist/api-routes/request-extraction.js +10 -8
  92. package/dist/api-routes/route-factory.d.ts.map +1 -1
  93. package/dist/api-routes/route-factory.js +2 -1
  94. package/dist/api-routes/route-registry.d.ts.map +1 -1
  95. package/dist/api-routes/route-registry.js +3 -1
  96. package/dist/api-routes/schemas/common.d.ts +36 -0
  97. package/dist/api-routes/schemas/common.d.ts.map +1 -1
  98. package/dist/api-routes/schemas/common.js +95 -5
  99. package/dist/api-routes/schemas/responses.d.ts +1424 -1
  100. package/dist/api-routes/schemas/responses.d.ts.map +1 -1
  101. package/dist/api-routes/schemas/responses.js +382 -60
  102. package/dist/api-routes/types.d.ts +1 -0
  103. package/dist/api-routes/types.d.ts.map +1 -1
  104. package/dist/api-routes/validation.d.ts +5 -1
  105. package/dist/api-routes/validation.d.ts.map +1 -1
  106. package/dist/api-routes/validation.js +14 -15
  107. package/dist/bootstrap.d.ts +3 -1
  108. package/dist/bootstrap.d.ts.map +1 -1
  109. package/dist/bootstrap.js +58 -41
  110. package/dist/config/agendaQueue.config.d.ts +3 -0
  111. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  112. package/dist/config/agendaQueue.config.js +29 -2
  113. package/dist/config/branding.config.d.ts +13 -0
  114. package/dist/config/branding.config.d.ts.map +1 -1
  115. package/dist/config/branding.config.js +34 -2
  116. package/dist/config/brandingConfigurationDefaults.config.d.ts +4 -0
  117. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  118. package/dist/config/brandingConfigurationDefaults.config.js +42 -3
  119. package/dist/config/index.d.ts +12 -4
  120. package/dist/config/index.d.ts.map +1 -1
  121. package/dist/config/index.js +7 -4
  122. package/dist/config/policies.config.d.ts.map +1 -1
  123. package/dist/config/policies.config.js +37 -23
  124. package/dist/config/raid.config.d.ts +7 -4
  125. package/dist/config/raid.config.d.ts.map +1 -1
  126. package/dist/config/raid.config.js +21 -35
  127. package/dist/config/record.config.d.ts +3 -0
  128. package/dist/config/record.config.d.ts.map +1 -1
  129. package/dist/config/record.config.js +37 -35
  130. package/dist/config/recordSchema.config.d.ts +68 -0
  131. package/dist/config/recordSchema.config.d.ts.map +1 -0
  132. package/dist/config/recordSchema.config.js +173 -0
  133. package/dist/config/recordValidation.config.d.ts +19 -0
  134. package/dist/config/recordValidation.config.d.ts.map +1 -0
  135. package/dist/config/recordValidation.config.js +10 -0
  136. package/dist/config/recordtype.config.d.ts +32 -9
  137. package/dist/config/recordtype.config.d.ts.map +1 -1
  138. package/dist/config/recordtype.config.js +4 -7
  139. package/dist/config/routes.config.d.ts.map +1 -1
  140. package/dist/config/routes.config.js +135 -53
  141. package/dist/config/workflow.config.d.ts +6 -0
  142. package/dist/config/workflow.config.d.ts.map +1 -1
  143. package/dist/config/workflow.config.js +1 -1
  144. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  145. package/dist/configmodels/AdminSidebarConfig.js +4 -2
  146. package/dist/configmodels/ConfigModels.d.ts +1 -1
  147. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  148. package/dist/configmodels/ConfigModels.js +26 -9
  149. package/dist/configmodels/DashboardFieldCatalogue.d.ts +67 -0
  150. package/dist/configmodels/DashboardFieldCatalogue.d.ts.map +1 -0
  151. package/dist/configmodels/DashboardFieldCatalogue.js +174 -0
  152. package/dist/configmodels/DashboardSettings.d.ts +191 -0
  153. package/dist/configmodels/DashboardSettings.d.ts.map +1 -0
  154. package/dist/configmodels/DashboardSettings.js +705 -0
  155. package/dist/configmodels/OniPublishing.d.ts +205 -0
  156. package/dist/configmodels/OniPublishing.d.ts.map +1 -0
  157. package/dist/configmodels/OniPublishing.js +335 -0
  158. package/dist/configmodels/RaidPublishing.d.ts +97 -0
  159. package/dist/configmodels/RaidPublishing.d.ts.map +1 -0
  160. package/dist/configmodels/RaidPublishing.js +35 -0
  161. package/dist/configmodels/WebAnalytics.d.ts +55 -0
  162. package/dist/configmodels/WebAnalytics.d.ts.map +1 -0
  163. package/dist/configmodels/WebAnalytics.js +61 -0
  164. package/dist/controllers/AppConfigController.d.ts.map +1 -1
  165. package/dist/controllers/AppConfigController.js +4 -1
  166. package/dist/controllers/BrandingAppController.d.ts +29 -7
  167. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  168. package/dist/controllers/BrandingAppController.js +265 -69
  169. package/dist/controllers/BrandingController.d.ts +24 -1
  170. package/dist/controllers/BrandingController.d.ts.map +1 -1
  171. package/dist/controllers/BrandingController.js +173 -43
  172. package/dist/controllers/BrandingControllerSupport.d.ts +20 -0
  173. package/dist/controllers/BrandingControllerSupport.d.ts.map +1 -0
  174. package/dist/controllers/BrandingControllerSupport.js +80 -0
  175. package/dist/controllers/DashboardConfigController.d.ts +6 -2
  176. package/dist/controllers/DashboardConfigController.d.ts.map +1 -1
  177. package/dist/controllers/DashboardConfigController.js +18 -4
  178. package/dist/controllers/DynamicAssetController.d.ts +7 -5
  179. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  180. package/dist/controllers/DynamicAssetController.js +21 -12
  181. package/dist/controllers/RecordController.d.ts +45 -4
  182. package/dist/controllers/RecordController.d.ts.map +1 -1
  183. package/dist/controllers/RecordController.js +778 -345
  184. package/dist/controllers/index.d.ts.map +1 -1
  185. package/dist/controllers/index.js +4 -1
  186. package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
  187. package/dist/controllers/webservice/AdminController.js +4 -3
  188. package/dist/controllers/webservice/BrandingController.d.ts +26 -1
  189. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  190. package/dist/controllers/webservice/BrandingController.js +292 -116
  191. package/dist/controllers/webservice/DashboardConfigController.d.ts +25 -17
  192. package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -1
  193. package/dist/controllers/webservice/DashboardConfigController.js +90 -205
  194. package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
  195. package/dist/controllers/webservice/FormManagementController.js +37 -3
  196. package/dist/controllers/webservice/RecordController.d.ts +15 -1
  197. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  198. package/dist/controllers/webservice/RecordController.js +647 -267
  199. package/dist/controllers/webservice/RecordSchemaController.d.ts +32 -0
  200. package/dist/controllers/webservice/RecordSchemaController.d.ts.map +1 -0
  201. package/dist/controllers/webservice/RecordSchemaController.js +356 -0
  202. package/dist/controllers/webservice/RecordTypeController.d.ts +6 -1
  203. package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
  204. package/dist/controllers/webservice/RecordTypeController.js +21 -3
  205. package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
  206. package/dist/controllers/webservice/SearchController.js +7 -3
  207. package/dist/hooks/defineRedboxHook.d.ts +3 -0
  208. package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
  209. package/dist/hooks/defineRedboxHook.js +4 -1
  210. package/dist/index.d.ts +50 -23
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +90 -2
  213. package/dist/loader/bootstrapShimRuntime.d.ts +1 -1
  214. package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -1
  215. package/dist/loader/bootstrapShimRuntime.js +20 -12
  216. package/dist/loader/index.d.ts +9 -0
  217. package/dist/loader/index.d.ts.map +1 -1
  218. package/dist/loader/index.js +93 -4
  219. package/dist/model/BrandingTypeface.d.ts +70 -0
  220. package/dist/model/BrandingTypeface.d.ts.map +1 -0
  221. package/dist/model/BrandingTypeface.js +116 -0
  222. package/dist/model/BuildResponse.d.ts +25 -11
  223. package/dist/model/BuildResponse.d.ts.map +1 -1
  224. package/dist/model/BuildResponse.js +4 -3
  225. package/dist/model/DashboardTypeResponseModel.d.ts +6 -0
  226. package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
  227. package/dist/model/DashboardTypeResponseModel.js +7 -1
  228. package/dist/model/DashboardViewResponseModel.d.ts +5 -1
  229. package/dist/model/DashboardViewResponseModel.d.ts.map +1 -1
  230. package/dist/model/DashboardViewResponseModel.js +6 -3
  231. package/dist/model/RBValidationError.d.ts +17 -0
  232. package/dist/model/RBValidationError.d.ts.map +1 -1
  233. package/dist/model/RBValidationError.js +37 -1
  234. package/dist/model/RecordTypeResponseModel.d.ts +12 -4
  235. package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
  236. package/dist/model/RecordTypeResponseModel.js +11 -2
  237. package/dist/model/index.d.ts +5 -1
  238. package/dist/model/index.d.ts.map +1 -1
  239. package/dist/model/index.js +5 -2
  240. package/dist/model/record-contract.d.ts +42 -0
  241. package/dist/model/record-contract.d.ts.map +1 -0
  242. package/dist/model/record-contract.js +3 -0
  243. package/dist/model/storage/BrandingModel.d.ts +7 -0
  244. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  245. package/dist/model/storage/BrandingModel.js +7 -1
  246. package/dist/model/storage/DeletedRecordModel.d.ts +35 -0
  247. package/dist/model/storage/DeletedRecordModel.d.ts.map +1 -1
  248. package/dist/model/storage/DeletedRecordModel.js +62 -1
  249. package/dist/model/storage/IntegrationAuditModel.d.ts +16 -2
  250. package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
  251. package/dist/model/storage/IntegrationAuditModel.js +15 -1
  252. package/dist/model/storage/RecordAuditModel.d.ts +11 -1
  253. package/dist/model/storage/RecordAuditModel.d.ts.map +1 -1
  254. package/dist/model/storage/RecordAuditModel.js +8 -2
  255. package/dist/model/storage/RecordModel.d.ts +6 -0
  256. package/dist/model/storage/RecordModel.d.ts.map +1 -1
  257. package/dist/model/storage/RecordTypeModel.d.ts +6 -0
  258. package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
  259. package/dist/model/storage/RecordTypeModel.js +4 -1
  260. package/dist/model/storage/index.d.ts +12 -10
  261. package/dist/model/storage/index.d.ts.map +1 -1
  262. package/dist/model/storage/index.js +24 -2
  263. package/dist/model/storage/record-schema.d.ts +115 -0
  264. package/dist/model/storage/record-schema.d.ts.map +1 -0
  265. package/dist/model/storage/record-schema.js +3 -0
  266. package/dist/policies/checkAuth.d.ts +2 -6
  267. package/dist/policies/checkAuth.d.ts.map +1 -1
  268. package/dist/policies/checkAuth.js +32 -9
  269. package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
  270. package/dist/policies/contentSecurityPolicy.js +85 -2
  271. package/dist/policies/index.d.ts +3 -2
  272. package/dist/policies/index.d.ts.map +1 -1
  273. package/dist/policies/index.js +4 -2
  274. package/dist/policies/validateApiContractRequest.d.ts.map +1 -1
  275. package/dist/policies/validateApiContractRequest.js +49 -11
  276. package/dist/record-contract/ajv-error-mapper.d.ts +34 -0
  277. package/dist/record-contract/ajv-error-mapper.d.ts.map +1 -0
  278. package/dist/record-contract/ajv-error-mapper.js +153 -0
  279. package/dist/record-contract/canonical-json.d.ts +20 -0
  280. package/dist/record-contract/canonical-json.d.ts.map +1 -0
  281. package/dist/record-contract/canonical-json.js +126 -0
  282. package/dist/record-contract/codes.d.ts +36 -0
  283. package/dist/record-contract/codes.d.ts.map +1 -0
  284. package/dist/record-contract/codes.js +38 -0
  285. package/dist/record-contract/contributor-registry.d.ts +76 -0
  286. package/dist/record-contract/contributor-registry.d.ts.map +1 -0
  287. package/dist/record-contract/contributor-registry.js +126 -0
  288. package/dist/record-contract/core-contributors.d.ts +44 -0
  289. package/dist/record-contract/core-contributors.d.ts.map +1 -0
  290. package/dist/record-contract/core-contributors.js +395 -0
  291. package/dist/record-contract/deep-freeze.d.ts +3 -0
  292. package/dist/record-contract/deep-freeze.d.ts.map +1 -0
  293. package/dist/record-contract/deep-freeze.js +23 -0
  294. package/dist/record-contract/index.d.ts +13 -0
  295. package/dist/record-contract/index.d.ts.map +1 -0
  296. package/dist/record-contract/index.js +29 -0
  297. package/dist/record-contract/json-pointer.d.ts +20 -0
  298. package/dist/record-contract/json-pointer.d.ts.map +1 -0
  299. package/dist/record-contract/json-pointer.js +70 -0
  300. package/dist/record-contract/json-schema-renderer.d.ts +51 -0
  301. package/dist/record-contract/json-schema-renderer.d.ts.map +1 -0
  302. package/dist/record-contract/json-schema-renderer.js +450 -0
  303. package/dist/record-contract/record-contract-compiler.d.ts +42 -0
  304. package/dist/record-contract/record-contract-compiler.d.ts.map +1 -0
  305. package/dist/record-contract/record-contract-compiler.js +775 -0
  306. package/dist/record-contract/record-contract-context.d.ts +91 -0
  307. package/dist/record-contract/record-contract-context.d.ts.map +1 -0
  308. package/dist/record-contract/record-contract-context.js +39 -0
  309. package/dist/record-contract/record-json-schema-artifact.d.ts +74 -0
  310. package/dist/record-contract/record-json-schema-artifact.d.ts.map +1 -0
  311. package/dist/record-contract/record-json-schema-artifact.js +309 -0
  312. package/dist/record-contract/record-json-schema-etag.d.ts +15 -0
  313. package/dist/record-contract/record-json-schema-etag.d.ts.map +1 -0
  314. package/dist/record-contract/record-json-schema-etag.js +41 -0
  315. package/dist/record-contract/types.d.ts +151 -0
  316. package/dist/record-contract/types.d.ts.map +1 -0
  317. package/dist/record-contract/types.js +6 -0
  318. package/dist/services/AppConfigService.d.ts +6 -0
  319. package/dist/services/AppConfigService.d.ts.map +1 -1
  320. package/dist/services/AppConfigService.js +23 -1
  321. package/dist/services/AttachmentMetadataService.d.ts +58 -0
  322. package/dist/services/AttachmentMetadataService.d.ts.map +1 -1
  323. package/dist/services/AttachmentMetadataService.js +643 -8
  324. package/dist/services/BrandingLogoService.d.ts +6 -1
  325. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  326. package/dist/services/BrandingLogoService.js +77 -9
  327. package/dist/services/BrandingService.d.ts +171 -9
  328. package/dist/services/BrandingService.d.ts.map +1 -1
  329. package/dist/services/BrandingService.js +572 -68
  330. package/dist/services/BrandingThemeCssService.d.ts +17 -1
  331. package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
  332. package/dist/services/BrandingThemeCssService.js +71 -9
  333. package/dist/services/BrandingTypefaceService.d.ts +74 -0
  334. package/dist/services/BrandingTypefaceService.d.ts.map +1 -0
  335. package/dist/services/BrandingTypefaceService.js +359 -0
  336. package/dist/services/BrandingWoff2Inspector.d.ts +17 -0
  337. package/dist/services/BrandingWoff2Inspector.d.ts.map +1 -0
  338. package/dist/services/BrandingWoff2Inspector.js +402 -0
  339. package/dist/services/DashboardConfigService.d.ts +214 -54
  340. package/dist/services/DashboardConfigService.d.ts.map +1 -1
  341. package/dist/services/DashboardConfigService.js +829 -261
  342. package/dist/services/DashboardLegacyConversion.d.ts +82 -0
  343. package/dist/services/DashboardLegacyConversion.d.ts.map +1 -0
  344. package/dist/services/DashboardLegacyConversion.js +427 -0
  345. package/dist/services/DashboardTypesService.d.ts +15 -4
  346. package/dist/services/DashboardTypesService.d.ts.map +1 -1
  347. package/dist/services/DashboardTypesService.js +72 -139
  348. package/dist/services/DoiService.d.ts +1 -1
  349. package/dist/services/DoiService.d.ts.map +1 -1
  350. package/dist/services/DoiService.js +71 -45
  351. package/dist/services/FigshareService.d.ts +1 -1
  352. package/dist/services/FigshareService.d.ts.map +1 -1
  353. package/dist/services/FigshareService.js +73 -32
  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 +1 -0
  364. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  365. package/dist/services/I18nEntriesService.js +26 -6
  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 +313 -22
  385. package/dist/services/RecordsService.d.ts.map +1 -1
  386. package/dist/services/RecordsService.js +4948 -509
  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/form-record-access-user.d.ts +3 -0
  419. package/dist/services/form-record-access-user.d.ts.map +1 -0
  420. package/dist/services/form-record-access-user.js +23 -0
  421. package/dist/services/index.d.ts +9 -0
  422. package/dist/services/index.d.ts.map +1 -1
  423. package/dist/services/index.js +45 -3
  424. package/dist/services/integration-v2/bindings.d.ts +3 -0
  425. package/dist/services/integration-v2/bindings.d.ts.map +1 -0
  426. package/dist/services/integration-v2/bindings.js +91 -0
  427. package/dist/services/integration-v2/runtime.d.ts +3 -0
  428. package/dist/services/integration-v2/runtime.d.ts.map +1 -0
  429. package/dist/services/integration-v2/runtime.js +50 -0
  430. package/dist/services/internal-record-schema-authorization.d.ts +8 -0
  431. package/dist/services/internal-record-schema-authorization.d.ts.map +1 -0
  432. package/dist/services/internal-record-schema-authorization.js +16 -0
  433. package/dist/services/oni-v2/audit.d.ts +19 -0
  434. package/dist/services/oni-v2/audit.d.ts.map +1 -0
  435. package/dist/services/oni-v2/audit.js +50 -0
  436. package/dist/services/oni-v2/bindings.d.ts +7 -0
  437. package/dist/services/oni-v2/bindings.d.ts.map +1 -0
  438. package/dist/services/oni-v2/bindings.js +31 -0
  439. package/dist/services/oni-v2/config.d.ts +12 -0
  440. package/dist/services/oni-v2/config.d.ts.map +1 -0
  441. package/dist/services/oni-v2/config.js +134 -0
  442. package/dist/services/oni-v2/context.d.ts +3 -0
  443. package/dist/services/oni-v2/context.d.ts.map +1 -0
  444. package/dist/services/oni-v2/context.js +17 -0
  445. package/dist/services/oni-v2/crate.d.ts +17 -0
  446. package/dist/services/oni-v2/crate.d.ts.map +1 -0
  447. package/dist/services/oni-v2/crate.js +504 -0
  448. package/dist/services/oni-v2/flydriveOcflStore.d.ts +69 -0
  449. package/dist/services/oni-v2/flydriveOcflStore.d.ts.map +1 -0
  450. package/dist/services/oni-v2/flydriveOcflStore.js +325 -0
  451. package/dist/services/oni-v2/ingestion.d.ts +37 -0
  452. package/dist/services/oni-v2/ingestion.d.ts.map +1 -0
  453. package/dist/services/oni-v2/ingestion.js +91 -0
  454. package/dist/services/oni-v2/mapping.d.ts +17 -0
  455. package/dist/services/oni-v2/mapping.d.ts.map +1 -0
  456. package/dist/services/oni-v2/mapping.js +137 -0
  457. package/dist/services/oni-v2/repository.d.ts +9 -0
  458. package/dist/services/oni-v2/repository.d.ts.map +1 -0
  459. package/dist/services/oni-v2/repository.js +180 -0
  460. package/dist/services/oni-v2/runtime.d.ts +23 -0
  461. package/dist/services/oni-v2/runtime.d.ts.map +1 -0
  462. package/dist/services/oni-v2/runtime.js +121 -0
  463. package/dist/services/oni-v2/templating.d.ts +11 -0
  464. package/dist/services/oni-v2/templating.d.ts.map +1 -0
  465. package/dist/services/oni-v2/templating.js +27 -0
  466. package/dist/services/oni-v2/types.d.ts +100 -0
  467. package/dist/services/oni-v2/types.d.ts.map +1 -0
  468. package/dist/services/oni-v2/types.js +3 -0
  469. package/dist/services/raid-v2/audit.d.ts +10 -0
  470. package/dist/services/raid-v2/audit.d.ts.map +1 -0
  471. package/dist/services/raid-v2/audit.js +29 -0
  472. package/dist/services/raid-v2/errors.d.ts +85 -0
  473. package/dist/services/raid-v2/errors.d.ts.map +1 -0
  474. package/dist/services/raid-v2/errors.js +36 -0
  475. package/dist/services/raid-v2/http.d.ts +4 -0
  476. package/dist/services/raid-v2/http.d.ts.map +1 -0
  477. package/dist/services/raid-v2/http.js +84 -0
  478. package/dist/services/raid-v2/logger.d.ts +8 -0
  479. package/dist/services/raid-v2/logger.d.ts.map +1 -0
  480. package/dist/services/raid-v2/logger.js +30 -0
  481. package/dist/services/raid-v2/mapping.d.ts +9 -0
  482. package/dist/services/raid-v2/mapping.d.ts.map +1 -0
  483. package/dist/services/raid-v2/mapping.js +168 -0
  484. package/dist/services/raid-v2/runtime.d.ts +5 -0
  485. package/dist/services/raid-v2/runtime.d.ts.map +1 -0
  486. package/dist/services/raid-v2/runtime.js +135 -0
  487. package/dist/services/raid-v2/tags.d.ts +11 -0
  488. package/dist/services/raid-v2/tags.d.ts.map +1 -0
  489. package/dist/services/raid-v2/tags.js +12 -0
  490. package/dist/services/raid-v2/types.d.ts +66 -0
  491. package/dist/services/raid-v2/types.d.ts.map +1 -0
  492. package/dist/services/raid-v2/types.js +3 -0
  493. package/dist/services/record-hooks/coordinator.d.ts +64 -0
  494. package/dist/services/record-hooks/coordinator.d.ts.map +1 -0
  495. package/dist/services/record-hooks/coordinator.js +276 -0
  496. package/dist/visitor/client.visitor.d.ts +6 -0
  497. package/dist/visitor/client.visitor.d.ts.map +1 -1
  498. package/dist/visitor/client.visitor.js +59 -14
  499. package/dist/visitor/construct.visitor.d.ts +27 -1
  500. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  501. package/dist/visitor/construct.visitor.js +265 -177
  502. package/dist/visitor/context-variables.visitor.d.ts +3 -1
  503. package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
  504. package/dist/visitor/context-variables.visitor.js +15 -1
  505. package/dist/visitor/data-value.visitor.d.ts +6 -0
  506. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  507. package/dist/visitor/data-value.visitor.js +10 -1
  508. package/dist/visitor/json-type-def.visitor.d.ts +6 -0
  509. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  510. package/dist/visitor/json-type-def.visitor.js +10 -1
  511. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +11 -0
  512. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  513. package/dist/visitor/migrate-config-v4-v5.visitor.js +228 -133
  514. package/dist/visitor/related-object-data-inline.visitor.d.ts +31 -0
  515. package/dist/visitor/related-object-data-inline.visitor.d.ts.map +1 -0
  516. package/dist/visitor/related-object-data-inline.visitor.js +96 -0
  517. package/dist/visitor/template.visitor.d.ts +17 -2
  518. package/dist/visitor/template.visitor.d.ts.map +1 -1
  519. package/dist/visitor/template.visitor.js +60 -22
  520. package/dist/visitor/validator.visitor.d.ts +49 -7
  521. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  522. package/dist/visitor/validator.visitor.js +275 -178
  523. package/dist/waterline-models/AttachmentMetadata.d.ts +22 -0
  524. package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -1
  525. package/dist/waterline-models/AttachmentMetadata.js +147 -3
  526. package/dist/waterline-models/BrandingConfig.d.ts +7 -0
  527. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  528. package/dist/waterline-models/BrandingConfig.js +16 -1
  529. package/dist/waterline-models/BrandingConfigHistory.d.ts +11 -2
  530. package/dist/waterline-models/BrandingConfigHistory.d.ts.map +1 -1
  531. package/dist/waterline-models/BrandingConfigHistory.js +21 -1
  532. package/dist/waterline-models/DashboardConfiguration.d.ts +29 -0
  533. package/dist/waterline-models/DashboardConfiguration.d.ts.map +1 -0
  534. package/dist/waterline-models/DashboardConfiguration.js +52 -0
  535. package/dist/waterline-models/RecordType.d.ts +9 -0
  536. package/dist/waterline-models/RecordType.d.ts.map +1 -1
  537. package/dist/waterline-models/RecordType.js +16 -1
  538. package/dist/waterline-models/User.d.ts.map +1 -1
  539. package/dist/waterline-models/User.js +10 -15
  540. package/dist/waterline-models/index.d.ts +2 -0
  541. package/dist/waterline-models/index.d.ts.map +1 -1
  542. package/dist/waterline-models/index.js +4 -1
  543. package/package.json +60 -47
  544. package/dist/config/datapubs.config.d.ts +0 -72
  545. package/dist/config/datapubs.config.d.ts.map +0 -1
  546. package/dist/config/datapubs.config.js +0 -74
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./failure"), exports);
19
+ __exportStar(require("./policy"), exports);
20
+ __exportStar(require("./legacy-result"), exports);
21
+ __exportStar(require("./executor"), exports);
22
+ __exportStar(require("./audit"), exports);
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9uLWV4ZWN1dGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXdCO0FBQ3hCLDRDQUEwQjtBQUMxQiwyQ0FBeUI7QUFDekIsa0RBQWdDO0FBQ2hDLDZDQUEyQjtBQUMzQiwwQ0FBd0IifQ==
@@ -0,0 +1,21 @@
1
+ import { Effect } from 'effect';
2
+ /**
3
+ * A mutable cell reporting whether the value a hook returned can genuinely be
4
+ * cancelled. It is only known after the hook has been invoked, which is later
5
+ * than the point where the action is described.
6
+ */
7
+ export interface CancellationCell {
8
+ value: boolean;
9
+ }
10
+ export interface LegacyEffectAdaptation {
11
+ effect: Effect.Effect<unknown, unknown, never>;
12
+ cooperativeCancellation: boolean;
13
+ }
14
+ /** Adapt whatever a legacy hook returned to an Effect. */
15
+ export declare function adaptLegacyHookResult(value: unknown): LegacyEffectAdaptation;
16
+ /**
17
+ * Wrap a legacy hook call so a synchronous throw is captured as a failure and
18
+ * the call itself is deferred until the attempt starts.
19
+ */
20
+ export declare function legacyHookToEffect(invoke: () => unknown, cancellation?: CancellationCell): Effect.Effect<unknown, unknown, never>;
21
+ //# sourceMappingURL=legacy-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-result.d.ts","sourceRoot":"","sources":["../../src/action-execution/legacy-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAmDD,0DAA0D;AAC1D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAW5E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,OAAO,EACrB,YAAY,GAAE,gBAAkC,GAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAMxC"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.adaptLegacyHookResult = adaptLegacyHookResult;
4
+ exports.legacyHookToEffect = legacyHookToEffect;
5
+ const effect_1 = require("effect");
6
+ const rxjs_1 = require("rxjs");
7
+ /** Legacy Observable hooks are first-value: later emissions are ignored. */
8
+ function observableEffect(observable) {
9
+ return effect_1.Effect.async((resume, signal) => {
10
+ let settled = false;
11
+ const settle = (effect) => {
12
+ if (settled) {
13
+ return;
14
+ }
15
+ settled = true;
16
+ resume(effect);
17
+ // A synchronous Observable settles while `subscribe` is still running,
18
+ // so unsubscribing waits until `subscription` has been assigned.
19
+ queueMicrotask(() => subscription.unsubscribe());
20
+ };
21
+ const subscription = observable.subscribe({
22
+ next: value => settle(effect_1.Effect.succeed(value)),
23
+ error: (error) => settle(effect_1.Effect.fail(error)),
24
+ complete: () => settle(effect_1.Effect.fail(new Error('Observable hook completed without a value'))),
25
+ });
26
+ signal.addEventListener('abort', () => {
27
+ settled = true;
28
+ subscription.unsubscribe();
29
+ }, { once: true });
30
+ });
31
+ }
32
+ /**
33
+ * There is deliberately no attempt to abort the Promise. Effect stops waiting
34
+ * once the fiber is interrupted, but an opaque Promise side effect continues,
35
+ * which is why Promise-backed hooks report non-cooperative cancellation.
36
+ */
37
+ function promiseEffect(promise) {
38
+ return effect_1.Effect.tryPromise({ try: () => promise, catch: error => error });
39
+ }
40
+ function isThenable(value) {
41
+ if (value === null || (typeof value !== 'object' && typeof value !== 'function')) {
42
+ return false;
43
+ }
44
+ return typeof value.then === 'function';
45
+ }
46
+ /** Adapt whatever a legacy hook returned to an Effect. */
47
+ function adaptLegacyHookResult(value) {
48
+ if (effect_1.Effect.isEffect(value)) {
49
+ return { effect: value, cooperativeCancellation: true };
50
+ }
51
+ if ((0, rxjs_1.isObservable)(value)) {
52
+ return { effect: observableEffect(value), cooperativeCancellation: true };
53
+ }
54
+ if (isThenable(value)) {
55
+ return { effect: promiseEffect(value), cooperativeCancellation: false };
56
+ }
57
+ return { effect: effect_1.Effect.succeed(value), cooperativeCancellation: true };
58
+ }
59
+ /**
60
+ * Wrap a legacy hook call so a synchronous throw is captured as a failure and
61
+ * the call itself is deferred until the attempt starts.
62
+ */
63
+ function legacyHookToEffect(invoke, cancellation = { value: true }) {
64
+ return effect_1.Effect.suspend(() => {
65
+ const adaptation = adaptLegacyHookResult(invoke());
66
+ cancellation.value = adaptation.cooperativeCancellation;
67
+ return adaptation.effect;
68
+ });
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LXJlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb24tZXhlY3V0aW9uL2xlZ2FjeS1yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFtRUEsc0RBV0M7QUFNRCxnREFTQztBQTdGRCxtQ0FBZ0M7QUFDaEMsK0JBQWdEO0FBZ0JoRCw0RUFBNEU7QUFDNUUsU0FBUyxnQkFBZ0IsQ0FBQyxVQUErQjtJQUN2RCxPQUFPLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXBCLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBOEMsRUFBUSxFQUFFO1lBQ3RFLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osT0FBTztZQUNULENBQUM7WUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2YsdUVBQXVFO1lBQ3ZFLGlFQUFpRTtZQUNqRSxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztZQUN4QyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QyxLQUFLLEVBQUUsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLENBQUM7U0FDNUYsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLGdCQUFnQixDQUNyQixPQUFPLEVBQ1AsR0FBRyxFQUFFO1lBQ0gsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNmLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QixDQUFDLEVBQ0QsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQ2YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLGFBQWEsQ0FBQyxPQUE2QjtJQUNsRCxPQUFPLGVBQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEtBQWM7SUFDaEMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDakYsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxPQUFRLEtBQThCLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztBQUNwRSxDQUFDO0FBRUQsMERBQTBEO0FBQzFELFNBQWdCLHFCQUFxQixDQUFDLEtBQWM7SUFDbEQsSUFBSSxlQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUErQyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3BHLENBQUM7SUFDRCxJQUFJLElBQUEsbUJBQVksRUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDMUUsQ0FBQztJQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUMxRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQ2hDLE1BQXFCLEVBQ3JCLGVBQWlDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUVoRCxPQUFPLGVBQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ3pCLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbkQsWUFBWSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsdUJBQXVCLENBQUM7UUFDeEQsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
@@ -0,0 +1,12 @@
1
+ import type { ActionExecutionMode, ActionExecutionPhase, ActionExecutionPolicy, RetryScheduleConfig } from './types';
2
+ export declare function validateActionId(id: unknown): string;
3
+ export declare function deriveActionId(mode: ActionExecutionMode | string, phase: ActionExecutionPhase | string, index: number, functionExpression: string): string;
4
+ export declare function resolveActionId(configuredId: unknown, mode: ActionExecutionMode | string, phase: ActionExecutionPhase | string, index: number, functionExpression: string): string;
5
+ export declare function validateActionExecutionPolicy(policy: unknown): ActionExecutionPolicy | undefined;
6
+ /**
7
+ * Delay before retry number `retryNumber` (1 is the delay after the first
8
+ * failed attempt). Jitter spreads the delay over 50%-150% of the base and is
9
+ * still capped at the configured maximum delay.
10
+ */
11
+ export declare function retryDelayMs(schedule: RetryScheduleConfig | undefined, retryNumber: number, random?: () => number): number;
12
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/action-execution/policy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EAErB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AA4DjB,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAKpD;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,mBAAmB,GAAG,MAAM,EAClC,KAAK,EAAE,oBAAoB,GAAG,MAAM,EACpC,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,GACzB,MAAM,CAGR;AAED,wBAAgB,eAAe,CAC7B,YAAY,EAAE,OAAO,EACrB,IAAI,EAAE,mBAAmB,GAAG,MAAM,EAClC,KAAK,EAAE,oBAAoB,GAAG,MAAM,EACpC,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,GACzB,MAAM,CAKR;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,CAyChG;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,mBAAmB,GAAG,SAAS,EACzC,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,MAAM,MAAoB,GACjC,MAAM,CAaR"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateActionId = validateActionId;
4
+ exports.deriveActionId = deriveActionId;
5
+ exports.resolveActionId = resolveActionId;
6
+ exports.validateActionExecutionPolicy = validateActionExecutionPolicy;
7
+ exports.retryDelayMs = retryDelayMs;
8
+ const node_crypto_1 = require("node:crypto");
9
+ const failure_1 = require("./failure");
10
+ const MAX_TIMEOUT_MS = 600_000;
11
+ const MAX_DELAY_MS = 60_000;
12
+ const MAX_ATTEMPTS = 5;
13
+ const ACTION_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
14
+ function isIntegerInRange(value, min, max) {
15
+ return typeof value === 'number' && Number.isInteger(value) && value >= min && value <= max;
16
+ }
17
+ function configurationError(message) {
18
+ throw new failure_1.ActionConfigurationError(message);
19
+ }
20
+ function validateJitter(value) {
21
+ if (value === undefined) {
22
+ return undefined;
23
+ }
24
+ if (typeof value !== 'boolean') {
25
+ configurationError('Retry jitter must be a boolean.');
26
+ }
27
+ return value;
28
+ }
29
+ function validateSchedule(schedule) {
30
+ if (!schedule || typeof schedule !== 'object') {
31
+ configurationError('Retry schedule must be an object.');
32
+ }
33
+ const value = schedule;
34
+ if (value.type !== 'fixed' && value.type !== 'exponential') {
35
+ configurationError('Retry schedule type must be fixed or exponential.');
36
+ }
37
+ if (!isIntegerInRange(value.delayMs, 0, MAX_DELAY_MS)) {
38
+ configurationError('Retry delayMs must be an integer from 0 through 60000.');
39
+ }
40
+ const jitter = validateJitter(value.jitter);
41
+ if (value.type === 'fixed') {
42
+ const result = { type: 'fixed', delayMs: value.delayMs };
43
+ if (jitter !== undefined) {
44
+ result.jitter = jitter;
45
+ }
46
+ return result;
47
+ }
48
+ if (!isIntegerInRange(value.maxDelayMs, 0, MAX_DELAY_MS) || value.maxDelayMs < value.delayMs) {
49
+ configurationError('Exponential maxDelayMs must be an integer no smaller than delayMs and no greater than 60000.');
50
+ }
51
+ const result = {
52
+ type: 'exponential',
53
+ delayMs: value.delayMs,
54
+ maxDelayMs: value.maxDelayMs,
55
+ };
56
+ if (jitter !== undefined) {
57
+ result.jitter = jitter;
58
+ }
59
+ return result;
60
+ }
61
+ function validateActionId(id) {
62
+ if (typeof id !== 'string' || !ACTION_ID_PATTERN.test(id.trim())) {
63
+ configurationError('Action id must be a non-empty string of at most 128 safe characters.');
64
+ }
65
+ return id.trim();
66
+ }
67
+ function deriveActionId(mode, phase, index, functionExpression) {
68
+ const digest = (0, node_crypto_1.createHash)('sha256').update(functionExpression).digest('hex').slice(0, 12);
69
+ return `${mode}.${phase}.${index}.${digest}`;
70
+ }
71
+ function resolveActionId(configuredId, mode, phase, index, functionExpression) {
72
+ if (configuredId === undefined) {
73
+ return deriveActionId(mode, phase, index, functionExpression);
74
+ }
75
+ return validateActionId(configuredId);
76
+ }
77
+ function validateActionExecutionPolicy(policy) {
78
+ if (policy === undefined || policy === null) {
79
+ return undefined;
80
+ }
81
+ if (typeof policy !== 'object' || Array.isArray(policy)) {
82
+ configurationError('Action execution policy must be an object.');
83
+ }
84
+ const value = policy;
85
+ const result = {};
86
+ if (value.timeoutMs !== undefined) {
87
+ if (!isIntegerInRange(value.timeoutMs, 1, MAX_TIMEOUT_MS)) {
88
+ configurationError('Action timeoutMs must be an integer from 1 through 600000.');
89
+ }
90
+ result.timeoutMs = value.timeoutMs;
91
+ }
92
+ if (value.retry !== undefined) {
93
+ if (!value.retry || typeof value.retry !== 'object' || Array.isArray(value.retry)) {
94
+ configurationError('Retry policy must be an object.');
95
+ }
96
+ const retry = value.retry;
97
+ if (retry.idempotent !== true) {
98
+ configurationError('Retry policy requires idempotent: true.');
99
+ }
100
+ if (!isIntegerInRange(retry.maxAttempts, 1, MAX_ATTEMPTS)) {
101
+ configurationError('Retry maxAttempts must be an integer from 1 through 5.');
102
+ }
103
+ let retryOn;
104
+ if (retry.retryOn !== undefined) {
105
+ if (!Array.isArray(retry.retryOn) || retry.retryOn.some(kind => !(0, failure_1.isActionFailureKind)(kind))) {
106
+ configurationError('Retry retryOn contains an unknown failure kind.');
107
+ }
108
+ retryOn = Array.from(new Set(retry.retryOn));
109
+ }
110
+ result.retry = {
111
+ maxAttempts: retry.maxAttempts,
112
+ retryOn: retryOn ?? ['transient'],
113
+ schedule: retry.schedule === undefined ? undefined : validateSchedule(retry.schedule),
114
+ idempotent: true,
115
+ };
116
+ }
117
+ return result;
118
+ }
119
+ /**
120
+ * Delay before retry number `retryNumber` (1 is the delay after the first
121
+ * failed attempt). Jitter spreads the delay over 50%-150% of the base and is
122
+ * still capped at the configured maximum delay.
123
+ */
124
+ function retryDelayMs(schedule, retryNumber, random = Math.random) {
125
+ if (!schedule) {
126
+ return 0;
127
+ }
128
+ let base = schedule.delayMs;
129
+ if (schedule.type === 'exponential') {
130
+ base = Math.min(schedule.maxDelayMs, schedule.delayMs * 2 ** Math.max(0, retryNumber - 1));
131
+ }
132
+ if (!schedule.jitter || base === 0) {
133
+ return base;
134
+ }
135
+ const sample = Math.min(1, Math.max(0, random()));
136
+ return Math.min(MAX_DELAY_MS, Math.round(base * (0.5 + sample)));
137
+ }
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbi1leGVjdXRpb24vcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0VBLDRDQUtDO0FBRUQsd0NBUUM7QUFFRCwwQ0FXQztBQUVELHNFQXlDQztBQU9ELG9DQWlCQztBQW5LRCw2Q0FBeUM7QUFDekMsdUNBQTBFO0FBUzFFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQUMvQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUM7QUFDNUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0saUJBQWlCLEdBQUcscUNBQXFDLENBQUM7QUFFaEUsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFjLEVBQUUsR0FBVyxFQUFFLEdBQVc7SUFDaEUsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksR0FBRyxJQUFJLEtBQUssSUFBSSxHQUFHLENBQUM7QUFDOUYsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsT0FBZTtJQUN6QyxNQUFNLElBQUksa0NBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQWM7SUFDcEMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDeEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDL0Isa0JBQWtCLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFpQjtJQUN6QyxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLGtCQUFrQixDQUFDLG1D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
@@ -0,0 +1,121 @@
1
+ import { Effect } from 'effect';
2
+ import type { RuntimeFiber } from 'effect/Fiber';
3
+ export declare const ACTION_FAILURE_KINDS: readonly ["configuration", "validation", "domain", "transient", "timeout", "interrupted", "unexpected"];
4
+ export type ActionFailureKind = (typeof ACTION_FAILURE_KINDS)[number];
5
+ export declare const ACTION_EXECUTION_STATUSES: readonly ["succeeded", "failed", "timed_out", "interrupted", "skipped", "dispatched"];
6
+ export type ActionExecutionStatus = (typeof ACTION_EXECUTION_STATUSES)[number];
7
+ export declare const ACTION_SKIPPED_REASONS: readonly ["prior_action_failed"];
8
+ export type ActionSkippedReason = (typeof ACTION_SKIPPED_REASONS)[number];
9
+ export type ActionExecutionMode = 'onCreate' | 'onUpdate' | 'onDelete' | 'onTransitionWorkflow';
10
+ export type ActionExecutionPhase = 'pre' | 'postSync' | 'post';
11
+ export interface ActionExecutionContext {
12
+ executionId: string;
13
+ phaseExecutionId: string;
14
+ mode: ActionExecutionMode;
15
+ phase: ActionExecutionPhase;
16
+ requestId?: string;
17
+ recordOid?: string;
18
+ }
19
+ export interface SafeActionFailure {
20
+ kind: ActionFailureKind;
21
+ code: string;
22
+ cancellationCooperative?: boolean;
23
+ }
24
+ export interface ActionExecutionResult {
25
+ actionId: string;
26
+ mode: ActionExecutionMode;
27
+ phase: ActionExecutionPhase;
28
+ index: number;
29
+ status: ActionExecutionStatus;
30
+ attempts: number;
31
+ startedAt: string;
32
+ completedAt: string;
33
+ durationMs: number;
34
+ failure?: SafeActionFailure;
35
+ skippedReason?: ActionSkippedReason;
36
+ }
37
+ export interface ActionExecutionReport {
38
+ context: ActionExecutionContext;
39
+ status: 'completed' | 'failed' | 'partial' | 'dispatched';
40
+ startedAt: string;
41
+ completedAt: string;
42
+ durationMs: number;
43
+ actions: ActionExecutionResult[];
44
+ }
45
+ export interface ActionExecutionPolicy {
46
+ timeoutMs?: number;
47
+ /**
48
+ * Retries only this hook action. `idempotent: true` does not make the
49
+ * enclosing record request replayable and never authorizes a CAS retry.
50
+ */
51
+ retry?: {
52
+ maxAttempts: number;
53
+ retryOn?: ActionFailureKind[];
54
+ schedule?: RetryScheduleConfig;
55
+ idempotent: true;
56
+ };
57
+ }
58
+ export type RetryScheduleConfig = {
59
+ type: 'fixed';
60
+ delayMs: number;
61
+ jitter?: boolean;
62
+ } | {
63
+ type: 'exponential';
64
+ delayMs: number;
65
+ maxDelayMs: number;
66
+ jitter?: boolean;
67
+ };
68
+ export interface ActionExecutionDependencies {
69
+ now?: () => Date;
70
+ random?: () => number;
71
+ /** Injectable backoff sleep. Defaults to Effect's live Clock service. */
72
+ sleep?: (durationMs: number) => Effect.Effect<void>;
73
+ uuid?: () => string;
74
+ logger?: ActionExecutionLogger;
75
+ supervisor?: ActionExecutionSupervisor;
76
+ /** Receives the terminal result of each detached action. */
77
+ onDetachedActionComplete?: (context: ActionExecutionContext, result: ActionExecutionResult) => void;
78
+ }
79
+ export interface ActionExecutionLogger {
80
+ debug?: (message: string, fields?: Record<string, unknown>) => void;
81
+ info?: (message: string, fields?: Record<string, unknown>) => void;
82
+ warn?: (message: string, fields?: Record<string, unknown>) => void;
83
+ error?: (message: string, fields?: Record<string, unknown>) => void;
84
+ }
85
+ export interface ActionExecutionSupervisor {
86
+ register?: (fiber: RuntimeFiber<unknown, unknown>) => void;
87
+ interruptAll?: () => void;
88
+ }
89
+ export interface ActionExecutionAction<A = unknown> {
90
+ actionId: string;
91
+ mode: ActionExecutionMode;
92
+ phase: ActionExecutionPhase;
93
+ index: number;
94
+ policy?: ActionExecutionPolicy;
95
+ /** Legacy Promise work is not cancellable even when the wait is timed out. */
96
+ cooperativeCancellation?: () => boolean;
97
+ invoke: () => Effect.Effect<A, unknown, never>;
98
+ }
99
+ export interface ActionExecutionOutcome {
100
+ report: ActionExecutionReport;
101
+ /** Kept in memory only for the compatibility adapter. */
102
+ terminalCause?: unknown;
103
+ }
104
+ export interface ActionExecutionOperation {
105
+ executionId: string;
106
+ mode: ActionExecutionMode;
107
+ requestId?: string;
108
+ recordOid?: string;
109
+ reports: ActionExecutionReport[];
110
+ startedAt: string;
111
+ completedThrough?: 'pre' | 'persistence' | 'postSync' | 'post-dispatch';
112
+ /** In-memory lifecycle state for detached actions; never persisted directly. */
113
+ detachedPending?: number;
114
+ detachedResults?: ActionExecutionResult[];
115
+ onDetachedComplete?: () => void;
116
+ detachedCompletedAt?: string;
117
+ /** In-memory guard/state for the exactly-once audit handoff. */
118
+ detachedAuditFinalized?: boolean;
119
+ operationCompletedLogged?: boolean;
120
+ }
121
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/action-execution/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ACTION_SKIPPED_REASONS = exports.ACTION_EXECUTION_STATUSES = exports.ACTION_FAILURE_KINDS = void 0;
4
+ exports.ACTION_FAILURE_KINDS = [
5
+ 'configuration',
6
+ 'validation',
7
+ 'domain',
8
+ 'transient',
9
+ 'timeout',
10
+ 'interrupted',
11
+ 'unexpected',
12
+ ];
13
+ exports.ACTION_EXECUTION_STATUSES = [
14
+ 'succeeded',
15
+ 'failed',
16
+ 'timed_out',
17
+ 'interrupted',
18
+ 'skipped',
19
+ 'dispatched',
20
+ ];
21
+ exports.ACTION_SKIPPED_REASONS = ['prior_action_failed'];
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9uLWV4ZWN1dGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHYSxRQUFBLG9CQUFvQixHQUFHO0lBQ2xDLGVBQWU7SUFDZixZQUFZO0lBQ1osUUFBUTtJQUNSLFdBQVc7SUFDWCxTQUFTO0lBQ1QsYUFBYTtJQUNiLFlBQVk7Q0FDSixDQUFDO0FBSUUsUUFBQSx5QkFBeUIsR0FBRztJQUN2QyxXQUFXO0lBQ1gsUUFBUTtJQUNSLFdBQVc7SUFDWCxhQUFhO0lBQ2IsU0FBUztJQUNULFlBQVk7Q0FDSixDQUFDO0FBSUUsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLHFCQUFxQixDQUFVLENBQUMifQ==
@@ -1,6 +1,14 @@
1
+ export declare const brandingConfigRoute: import("..").ApiRouteDefinition;
1
2
  export declare const brandingDraftRoute: import("..").ApiRouteDefinition;
3
+ export declare const brandingFaceUploadRoute: import("..").ApiRouteDefinition;
4
+ export declare const brandingFaceDeleteRoute: import("..").ApiRouteDefinition;
5
+ export declare const brandingUseDefaultRoute: import("..").ApiRouteDefinition;
6
+ export declare const brandingRevertRoute: import("..").ApiRouteDefinition;
2
7
  export declare const brandingPreviewRoute: import("..").ApiRouteDefinition;
8
+ export declare const brandingVersionsRoute: import("..").ApiRouteDefinition;
9
+ export declare const brandingVersionPreviewRoute: import("..").ApiRouteDefinition;
3
10
  export declare const brandingPublishRoute: import("..").ApiRouteDefinition;
11
+ export declare const brandingRestoreRoute: import("..").ApiRouteDefinition;
4
12
  export declare const brandingRollbackRoute: import("..").ApiRouteDefinition;
5
13
  export declare const brandingLogoRoute: import("..").ApiRouteDefinition;
6
14
  export declare const brandingFaviconRoute: import("..").ApiRouteDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"branding.d.ts","sourceRoot":"","sources":["../../../src/api-routes/groups/branding.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,kBAAkB,iCAa9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,iCAWhC,CAAC;AAEF,eAAO,MAAM,oBAAoB,iCAahC,CAAC;AAEF,eAAO,MAAM,qBAAqB,iCAajC,CAAC;AAEF,eAAO,MAAM,iBAAiB,iCAsB7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,iCAsBhC,CAAC;AAEF,eAAO,MAAM,oBAAoB,iCAWhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,mCAQ7B,CAAC"}
1
+ {"version":3,"file":"branding.d.ts","sourceRoot":"","sources":["../../../src/api-routes/groups/branding.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,mBAAmB,iCAW/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,iCAa9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,iCAwBnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,iCAcnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,iCAanC,CAAC;AAEF,eAAO,MAAM,mBAAmB,iCAa/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,iCAWhC,CAAC;AAEF,eAAO,MAAM,qBAAqB,iCAWjC,CAAC;AAEF,eAAO,MAAM,2BAA2B,iCAavC,CAAC;AAEF,eAAO,MAAM,oBAAoB,iCAahC,CAAC;AAEF,eAAO,MAAM,oBAAoB,iCAchC,CAAC;AAEF,eAAO,MAAM,qBAAqB,iCAgBjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,iCAsB7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,iCAsBhC,CAAC;AAEF,eAAO,MAAM,oBAAoB,iCAWhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,mCAgB7B,CAAC"}
@@ -1,33 +1,100 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.brandingApiRoutes = exports.brandingHistoryRoute = exports.brandingFaviconRoute = exports.brandingLogoRoute = exports.brandingRollbackRoute = exports.brandingPublishRoute = exports.brandingPreviewRoute = exports.brandingDraftRoute = void 0;
3
+ exports.brandingApiRoutes = exports.brandingHistoryRoute = exports.brandingFaviconRoute = exports.brandingLogoRoute = exports.brandingRollbackRoute = exports.brandingRestoreRoute = exports.brandingPublishRoute = exports.brandingVersionPreviewRoute = exports.brandingVersionsRoute = exports.brandingPreviewRoute = exports.brandingRevertRoute = exports.brandingUseDefaultRoute = exports.brandingFaceDeleteRoute = exports.brandingFaceUploadRoute = exports.brandingDraftRoute = exports.brandingConfigRoute = void 0;
4
4
  const route_factory_1 = require("../route-factory");
5
5
  const common_1 = require("../schemas/common");
6
+ exports.brandingConfigRoute = (0, route_factory_1.apiRoute)('get', '/:branding/:portal/api/branding/config', 'webservice/BrandingController', 'config', {}, {
7
+ tags: ['Branding'],
8
+ summary: 'Get branding Admin state',
9
+ responses: { 200: (0, common_1.responseField)(common_1.brandingAdminStateSchema, 'Active, draft, versions, limits, counters, warnings') },
10
+ });
6
11
  exports.brandingDraftRoute = (0, route_factory_1.apiRoute)('post', '/:branding/:portal/api/branding/draft', 'webservice/BrandingController', 'draft', {
7
12
  body: { required: true, content: { 'application/json': { schema: common_1.brandingDraftBody } } },
8
13
  }, {
9
14
  tags: ['Branding'],
10
- summary: 'Save draft branding',
11
- responses: { 200: (0, common_1.responseField)(common_1.brandingDraftResponseSchema, 'Branding draft saved') },
15
+ summary: 'Save colour draft with expected revision',
16
+ responses: { 200: (0, common_1.responseField)(common_1.brandingAdminStateSchema, 'Complete canonical Admin state') },
17
+ });
18
+ exports.brandingFaceUploadRoute = (0, route_factory_1.apiRoute)('put', '/:branding/:portal/api/branding/draft/typeface/faces/:slot', 'webservice/BrandingController', 'uploadFace', {
19
+ params: common_1.brandingSlotParams,
20
+ body: { content: { 'multipart/form-data': { schema: common_1.brandingFaceUploadBody } } },
21
+ files: {
22
+ face: {
23
+ required: true,
24
+ multiple: false,
25
+ // Default maximum; operator-configurable at runtime (see branding config).
26
+ // The service re-enforces the runtime value as the second boundary.
27
+ maxBytes: 2 * 1024 * 1024,
28
+ description: 'Typeface face upload (WOFF2 validated structurally; client MIME is not trusted)',
29
+ },
30
+ },
31
+ }, {
32
+ tags: ['Branding'],
33
+ summary: 'Upload a typeface face to the draft',
34
+ responses: { 200: (0, common_1.responseField)(common_1.brandingAdminStateSchema, 'Complete canonical Admin state') },
12
35
  });
13
- exports.brandingPreviewRoute = (0, route_factory_1.apiRoute)('post', '/:branding/:portal/api/branding/preview', 'webservice/BrandingController', 'preview', { body: { content: { 'application/json': { schema: common_1.brandingDraftBody } } } }, {
36
+ exports.brandingFaceDeleteRoute = (0, route_factory_1.apiRoute)('delete', '/:branding/:portal/api/branding/draft/typeface/faces/:slot', 'webservice/BrandingController', 'deleteFace', {
37
+ params: common_1.brandingSlotParams,
38
+ body: { content: { 'application/json': { schema: common_1.brandingExpectedRevisionBody } } },
39
+ }, {
40
+ tags: ['Branding'],
41
+ summary: 'Remove one draft typeface face',
42
+ responses: { 200: (0, common_1.responseField)(common_1.brandingAdminStateSchema, 'Complete canonical Admin state') },
43
+ });
44
+ exports.brandingUseDefaultRoute = (0, route_factory_1.apiRoute)('post', '/:branding/:portal/api/branding/draft/typeface/use-default', 'webservice/BrandingController', 'useDefault', {
45
+ body: { required: true, content: { 'application/json': { schema: common_1.brandingExpectedRevisionBody } } },
46
+ }, {
14
47
  tags: ['Branding'],
15
- summary: 'Create branding preview',
48
+ summary: 'Set the draft typeface to Default Typography',
49
+ responses: { 200: (0, common_1.responseField)(common_1.brandingAdminStateSchema, 'Complete canonical Admin state') },
50
+ });
51
+ exports.brandingRevertRoute = (0, route_factory_1.apiRoute)('post', '/:branding/:portal/api/branding/draft/typeface/revert', 'webservice/BrandingController', 'revert', {
52
+ body: { required: true, content: { 'application/json': { schema: common_1.brandingExpectedRevisionBody } } },
53
+ }, {
54
+ tags: ['Branding'],
55
+ summary: 'Copy the active typeface into the draft only',
56
+ responses: { 200: (0, common_1.responseField)(common_1.brandingAdminStateSchema, 'Complete canonical Admin state') },
57
+ });
58
+ exports.brandingPreviewRoute = (0, route_factory_1.apiRoute)('post', '/:branding/:portal/api/branding/preview', 'webservice/BrandingController', 'preview', { body: { content: { 'application/json': { schema: common_1.brandingExpectedRevisionBody } } } }, {
59
+ tags: ['Branding'],
60
+ summary: 'Create a single-use CSS preview for the exact draft revision',
16
61
  responses: { 200: (0, common_1.responseField)(common_1.brandingPreviewResponseSchema, 'Branding preview generated') },
17
62
  });
63
+ exports.brandingVersionsRoute = (0, route_factory_1.apiRoute)('get', '/:branding/:portal/api/branding/versions', 'webservice/BrandingController', 'versions', {}, {
64
+ tags: ['Branding'],
65
+ summary: 'List newest retained branding versions',
66
+ responses: { 200: (0, common_1.responseField)((0, common_1.arrayField)(common_1.brandingVersionEntrySchema), 'Retained versions newest first') },
67
+ });
68
+ exports.brandingVersionPreviewRoute = (0, route_factory_1.apiRoute)('post', '/:branding/:portal/api/branding/versions/:versionId/preview', 'webservice/BrandingController', 'versionPreview', {
69
+ params: common_1.brandingVersionIdParams,
70
+ }, {
71
+ tags: ['Branding'],
72
+ summary: 'Preview a retained version without mutating the draft',
73
+ responses: { 200: (0, common_1.responseField)(common_1.brandingPreviewResponseSchema, 'Historical preview generated') },
74
+ });
18
75
  exports.brandingPublishRoute = (0, route_factory_1.apiRoute)('post', '/:branding/:portal/api/branding/publish', 'webservice/BrandingController', 'publish', {
19
76
  body: { required: true, content: { 'application/json': { schema: common_1.brandingPublishBody } } },
20
77
  }, {
21
78
  tags: ['Branding'],
22
- summary: 'Publish branding',
23
- responses: { 200: (0, common_1.responseField)(common_1.brandingPublishResponseSchema, 'Branding published') },
79
+ summary: 'Publish the draft using both expected counters',
80
+ responses: { 200: (0, common_1.responseField)(common_1.brandingPublishStateResponseSchema, 'Complete Admin state after publish') },
81
+ });
82
+ exports.brandingRestoreRoute = (0, route_factory_1.apiRoute)('post', '/:branding/:portal/api/branding/restore/:versionId', 'webservice/BrandingController', 'restore', {
83
+ params: common_1.brandingVersionIdParams,
84
+ body: { required: true, content: { 'application/json': { schema: common_1.brandingRestoreBody } } },
85
+ }, {
86
+ tags: ['Branding'],
87
+ summary: 'Immediately restore a retained version as a new version',
88
+ responses: { 200: (0, common_1.responseField)(common_1.brandingPublishStateResponseSchema, 'Complete Admin state after restore') },
24
89
  });
25
90
  exports.brandingRollbackRoute = (0, route_factory_1.apiRoute)('post', '/:branding/:portal/api/branding/rollback/:versionId', 'webservice/BrandingController', 'rollback', {
26
- params: (0, common_1.objectField)({ versionId: (0, common_1.stringField)() }, ['versionId']),
91
+ params: common_1.brandingVersionIdParams,
92
+ body: { content: { 'application/json': { schema: common_1.brandingRestoreBody } } },
27
93
  }, {
28
94
  tags: ['Branding'],
29
- summary: 'Rollback branding',
30
- responses: { 200: (0, common_1.responseField)(common_1.brandingRollbackResponseSchema, 'Branding rollback complete') },
95
+ summary: 'Deprecated rollback alias with restore semantics',
96
+ description: 'Deprecated: calls the same implementation as restore, returns a Deprecation header, and will be removed in the next major release. Use restore instead.',
97
+ responses: { 200: (0, common_1.responseField)(common_1.brandingRollbackResponseSchema, 'Branding restore complete (deprecated alias)') },
31
98
  });
32
99
  exports.brandingLogoRoute = (0, route_factory_1.apiRoute)('post', '/:branding/:portal/api/branding/logo', 'webservice/BrandingController', 'logo', {
33
100
  body: { content: { 'multipart/form-data': { schema: common_1.logoUploadBody } } },
@@ -67,12 +134,20 @@ exports.brandingHistoryRoute = (0, route_factory_1.apiRoute)('get', '/:branding/
67
134
  responses: { 200: (0, common_1.responseField)((0, common_1.arrayField)(common_1.brandingHistoryRecordSchema), 'Branding history') },
68
135
  });
69
136
  exports.brandingApiRoutes = [
137
+ exports.brandingConfigRoute,
70
138
  exports.brandingDraftRoute,
139
+ exports.brandingFaceUploadRoute,
140
+ exports.brandingFaceDeleteRoute,
141
+ exports.brandingUseDefaultRoute,
142
+ exports.brandingRevertRoute,
71
143
  exports.brandingPreviewRoute,
144
+ exports.brandingVersionsRoute,
145
+ exports.brandingVersionPreviewRoute,
72
146
  exports.brandingPublishRoute,
147
+ exports.brandingRestoreRoute,
73
148
  exports.brandingRollbackRoute,
74
149
  exports.brandingLogoRoute,
75
150
  exports.brandingFaviconRoute,
76
151
  exports.brandingHistoryRoute,
77
152
  ];
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpLXJvdXRlcy9ncm91cHMvYnJhbmRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBQTRDO0FBQzVDLDhDQWUyQjtBQUVkLFFBQUEsa0JBQWtCLEdBQUcsSUFBQSx3QkFBUSxFQUN4QyxNQUFNLEVBQ04sdUNBQXVDLEVBQ3ZDLCtCQUErQixFQUMvQixPQUFPLEVBQ1A7SUFDRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLDBCQUFpQixFQUFFLEVBQUUsRUFBRTtDQUN6RixFQUNEO0lBQ0UsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ2xCLE9BQU8sRUFBRSxxQkFBcUI7SUFDOUIsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUEsc0JBQWEsRUFBQyxvQ0FBMkIsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFO0NBQ3ZGLENBQ0YsQ0FBQztBQUVXLFFBQUEsb0JBQW9CLEdBQUcsSUFBQSx3QkFBUSxFQUMxQyxNQUFNLEVBQ04seUNBQXlDLEVBQ3pDLCtCQUErQixFQUMvQixTQUFTLEVBQ1QsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSwwQkFBaUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUM1RTtJQUNFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUNsQixPQUFPLEVBQUUseUJBQXlCO0lBQ2xDLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFBLHNCQUFhLEVBQUMsc0NBQTZCLEVBQUUsNEJBQTRCLENBQUMsRUFBRTtDQUMvRixDQUNGLENBQUM7QUFFVyxRQUFBLG9CQUFvQixHQUFHLElBQUEsd0JBQVEsRUFDMUMsTUFBTSxFQUNOLHlDQUF5QyxFQUN6QywrQkFBK0IsRUFDL0IsU0FBUyxFQUNUO0lBQ0UsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSw0QkFBbUIsRUFBRSxFQUFFLEVBQUU7Q0FDM0YsRUFDRDtJQUNFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUNsQixPQUFPLEVBQUUsa0JBQWtCO0lBQzNCLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFBLHNCQUFhLEVBQUMsc0NBQTZCLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtDQUN2RixDQUNGLENBQUM7QUFFVyxRQUFBLHFCQUFxQixHQUFHLElBQUEsd0JBQVEsRUFDM0MsTUFBTSxFQUNOLHFEQUFxRCxFQUNyRCwrQkFBK0IsRUFDL0IsVUFBVSxFQUNWO0lBQ0UsTUFBTSxFQUFFLElBQUEsb0JBQVcsRUFBQyxFQUFFLFNBQVMsRUFBRSxJQUFBLG9CQUFXLEdBQUUsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7Q0FDakUsRUFDRDtJQUNFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUNsQixPQUFPLEVBQUUsbUJBQW1CO0lBQzVCLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFBLHNCQUFhLEVBQUMsdUNBQThCLEVBQUUsNEJBQTRCLENBQUMsRUFBRTtDQUNoRyxDQUNGLENBQUM7QUFFVyxRQUFBLGlCQUFpQixHQUFHLElBQUEsd0JBQVEsRUFDdkMsTUFBTSxFQUNOLHNDQUFzQyxFQUN0QywrQkFBK0IsRUFDL0IsTUFBTSxFQUNOO0lBQ0UsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsdUJBQWMsRUFBRSxFQUFFLEVBQUU7SUFDeEUsS0FBSyxFQUFFO1FBQ0wsSUFBSSxFQUFFO1lBQ0osUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsS0FBSztZQUNmLFFBQVEsRUFBRSxHQUFHLEdBQUcsSUFBSTtZQUNwQixTQUFTLEVBQUUsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLGVBQWUsQ0FBQztZQUN2RCxXQUFXLEVBQUUsc0JBQXNCO1NBQ3BDO0tBQ0Y7Q0FDRixFQUNEO0lBQ0UsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ2xCLE9BQU8sRUFBRSxzQkFBc0I7SUFDL0IsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUEsc0JBQWEsRUFBQyxtQ0FBMEIsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFO0NBQ3hGLENBQ0YsQ0FBQztBQUVXLFFBQUEsb0JBQW9CLEdBQUcsSUFBQSx3QkFBUSxFQUMxQyxNQUFNLEVBQ04seUNBQXlDLEVBQ3pDLCtCQUErQixFQUMvQixTQUFTLEVBQ1Q7SUFDRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSwwQkFBaUIsRUFBRSxFQUFFLEVBQUU7SUFDM0UsS0FBSyxFQUFFO1FBQ0wsT0FBTyxFQUFFO1lBQ1AsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsS0FBSztZQUNmLFFBQVEsRUFBRSxHQUFHLEdBQUcsSUFBSTtZQUNwQixTQUFTLEVBQUUsQ0FBQyxXQUFXLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSwwQkFBMEIsQ0FBQztZQUNyRixXQUFXLEVBQUUseUJBQXlCO1NBQ3ZDO0tBQ0Y7Q0FDRixFQUNEO0lBQ0UsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ2xCLE9BQU8sRUFBRSx5QkFBeUI7SUFDbEMsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUEsc0JBQWEsRUFBQyxtQ0FBMEIsRUFBRSwyQkFBMkIsQ0FBQyxFQUFFO0NBQzNGLENBQ0YsQ0FBQztBQUVXLFFBQUEsb0JBQW9CLEdBQUcsSUFBQSx3QkFBUSxFQUMxQyxLQUFLLEVBQ0wseUNBQXlDLEVBQ3pDLCtCQUErQixFQUMvQixTQUFTLEVBQ1QsRUFBRSxFQUNGO0lBQ0UsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ2xCLE9BQU8sRUFBRSxzQkFBc0I7SUFDL0IsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUEsc0JBQWEsRUFBQyxJQUFBLG1CQUFVLEVBQUMsb0NBQTJCLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFO0NBQy9GLENBQ0YsQ0FBQztBQUVXLFFBQUEsaUJBQWlCLEdBQUc7SUFDL0IsMEJBQWtCO0lBQ2xCLDRCQUFvQjtJQUNwQiw0QkFBb0I7SUFDcEIsNkJBQXFCO0lBQ3JCLHlCQUFpQjtJQUNqQiw0QkFBb0I7SUFDcEIsNEJBQW9CO0NBQ3JCLENBQUMifQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpLXJvdXRlcy9ncm91cHMvYnJhbmRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBQTRDO0FBQzVDLDhDQW1CMkI7QUFFZCxRQUFBLG1CQUFtQixHQUFHLElBQUEsd0JBQVEsRUFDekMsS0FBSyxFQUNMLHdDQUF3QyxFQUN4QywrQkFBK0IsRUFDL0IsUUFBUSxFQUNSLEVBQUUsRUFDRjtJQUNFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUNsQixPQUFPLEVBQUUsMEJBQTBCO0lBQ25DLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFBLHNCQUFhLEVBQUMsaUNBQXdCLEVBQUUscURBQXFELENBQUMsRUFBRTtDQUNuSCxDQUNGLENBQUM7QUFFVyxRQUFBLGtCQUFrQixHQUFHLElBQUEsd0JBQVEsRUFDeEMsTUFBTSxFQUNOLHVDQUF1QyxFQUN2QywrQkFBK0IsRUFDL0IsT0FBTyxFQUNQO0lBQ0UsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSwwQkFBaUIsRUFBRSxFQUFFLEVBQUU7Q0FDekYsRUFDRDtJQUNFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUNsQixPQUFPLEVBQUUsMENBQTBDO0lBQ25ELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFBLHNCQUFhLEVBQUMsaUNBQXdCLEVBQUUsZ0NBQWdDLENBQUMsRUFBRTtDQUM5RixDQUNGLENBQUM7QUFFVyxRQUFBLHVCQUF1QixHQUFHLElBQUEsd0JBQVEsRUFDN0MsS0FBSyxFQUNMLDREQUE0RCxFQUM1RCwrQkFBK0IsRUFDL0IsWUFBWSxFQUNaO0lBQ0UsTUFBTSxFQUFFLDJCQUFrQjtJQUMxQixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxF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