@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
@@ -0,0 +1,359 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Services = exports.BrandingTypefaceError = void 0;
13
+ const crypto_1 = __importDefault(require("crypto"));
14
+ const PopulateExportedMethods_decorator_1 = require("../decorator/PopulateExportedMethods.decorator");
15
+ const CoreService_1 = require("../CoreService");
16
+ const branding_config_1 = require("../config/branding.config");
17
+ const BrandingTypeface_1 = require("../model/BrandingTypeface");
18
+ const BrandingWoff2Inspector_1 = require("./BrandingWoff2Inspector");
19
+ class BrandingTypefaceError extends Error {
20
+ code;
21
+ constructor(code, message) {
22
+ super(message);
23
+ this.name = 'BrandingTypefaceError';
24
+ this.code = code;
25
+ }
26
+ }
27
+ exports.BrandingTypefaceError = BrandingTypefaceError;
28
+ const FONT_PREFIX = 'branding-fonts/';
29
+ const FONT_CONTENT_TYPE = 'font/woff2';
30
+ const SHA256_RE = /^[0-9a-f]{64}$/;
31
+ const STORAGE_KEY_RE = /^branding-fonts\/([^/]+)\/([0-9a-f]{64})\.woff2$/;
32
+ const SLOT_DESCRIPTORS = {
33
+ regular: { weight: 400, style: 'normal' },
34
+ bold: { weight: 700, style: 'normal' },
35
+ italic: { weight: 400, style: 'italic' },
36
+ boldItalic: { weight: 700, style: 'italic' },
37
+ };
38
+ function readPositiveInt(key, fallback) {
39
+ return (0, branding_config_1.getBrandingPositiveInt)(key, fallback);
40
+ }
41
+ function sha256Hex(bytes) {
42
+ return crypto_1.default.createHash('sha256').update(bytes).digest('hex');
43
+ }
44
+ function isStorageNotFoundError(error) {
45
+ if (!error || typeof error !== 'object') {
46
+ return false;
47
+ }
48
+ const record = error;
49
+ const message = typeof record.message === 'string' ? record.message.toLowerCase() : '';
50
+ return (record.code === 'ENOENT' ||
51
+ record.status === 404 ||
52
+ record.statusCode === 404 ||
53
+ message.includes('not found') ||
54
+ message.includes('enoent') ||
55
+ message.includes('nosuchkey'));
56
+ }
57
+ var Services;
58
+ (function (Services) {
59
+ let BrandingTypeface = class BrandingTypeface extends CoreService_1.Services.Core.Service {
60
+ /** Fixed CSS descriptor for an explicit slot. */
61
+ slotDescriptor(slot) {
62
+ return { ...SLOT_DESCRIPTORS[slot] };
63
+ }
64
+ /** Canonical immutable storage key for one brand's face bytes. */
65
+ storageKey(brandingId, sha256) {
66
+ return `${FONT_PREFIX}${brandingId}/${sha256}.woff2`;
67
+ }
68
+ /** Portal-independent public URL so all portals under a brand share the browser cache. */
69
+ publicUrl(brandName, sha256) {
70
+ const rootContext = sails?.config?.http?.rootContext;
71
+ const root = rootContext ? `/${rootContext}` : '';
72
+ return `${root}/fonts/branding/${encodeURIComponent(brandName)}/${sha256}.woff2`;
73
+ }
74
+ /** Strict parse of a storage key; returns null for unexpected entries (logged + skipped). */
75
+ parseStorageKey(key) {
76
+ const match = STORAGE_KEY_RE.exec(key);
77
+ if (!match) {
78
+ return null;
79
+ }
80
+ return { brandingId: match[1], sha256: match[2] };
81
+ }
82
+ mismatchWarnings(slot, inspection) {
83
+ const warnings = [];
84
+ const descriptor = SLOT_DESCRIPTORS[slot];
85
+ const subfamily = inspection.subfamily?.toLowerCase();
86
+ const weight = inspection.embeddedWeight ?? (subfamily ? (/bold/.test(subfamily) ? 700 : 400) : undefined);
87
+ const style = inspection.embeddedStyle ?? (subfamily ? (/italic|oblique/.test(subfamily) ? 'italic' : 'normal') : undefined);
88
+ if ((weight !== undefined && weight !== descriptor.weight) ||
89
+ (style !== undefined && style !== descriptor.style)) {
90
+ warnings.push(`embedded descriptors differ from slot "${slot}"; slot remains authoritative`);
91
+ }
92
+ return warnings;
93
+ }
94
+ enforceFamilyLimit(slot, bytes, sha256, existingFaces) {
95
+ const familyMax = readPositiveInt('typefaceFamilyMaxBytes', BrandingTypeface_1.BRANDING_TYPEFACE_FAMILY_MAX_BYTES);
96
+ const sizeByHash = new Map();
97
+ for (const face of existingFaces) {
98
+ if (face.slot !== slot && !sizeByHash.has(face.sha256)) {
99
+ sizeByHash.set(face.sha256, face.sizeBytes);
100
+ }
101
+ }
102
+ if (!sizeByHash.has(sha256)) {
103
+ sizeByHash.set(sha256, bytes.length);
104
+ }
105
+ let total = 0;
106
+ for (const size of sizeByHash.values()) {
107
+ total += size;
108
+ }
109
+ if (total > familyMax) {
110
+ throw new BrandingTypefaceError('typeface-family-too-large', `Typeface family size ${total} exceeds the configured maximum ${familyMax}`);
111
+ }
112
+ }
113
+ /**
114
+ * Validate, hash, store (or reuse), and describe one uploaded face.
115
+ * Transport size limits are re-enforced here so Skipper is never the only boundary.
116
+ */
117
+ async inspectAndStoreFace(input) {
118
+ if (!(0, BrandingTypeface_1.isBrandingTypefaceSlot)(input.slot)) {
119
+ throw new BrandingTypefaceError('typeface-invalid-slot', `Invalid typeface slot: ${String(input.slot)}`);
120
+ }
121
+ const slot = input.slot;
122
+ const bytes = input.bytes;
123
+ if (!bytes || !Buffer.isBuffer(bytes) || bytes.length === 0) {
124
+ throw new BrandingTypefaceError('typeface-empty', 'Empty font upload');
125
+ }
126
+ const faceMax = readPositiveInt('typefaceFaceMaxBytes', BrandingTypeface_1.BRANDING_TYPEFACE_FACE_MAX_BYTES);
127
+ if (bytes.length > faceMax) {
128
+ throw new BrandingTypefaceError('typeface-face-too-large', `Typeface face size ${bytes.length} exceeds the configured maximum ${faceMax}`);
129
+ }
130
+ let inspection;
131
+ try {
132
+ const result = await (0, BrandingWoff2Inspector_1.inspectWoff2Buffer)(bytes);
133
+ if (result.isVariable) {
134
+ throw new BrandingTypefaceError('typeface-variable-font', 'Variable fonts are not supported');
135
+ }
136
+ inspection = result.inspection;
137
+ }
138
+ catch (error) {
139
+ if (error instanceof BrandingTypefaceError) {
140
+ throw error;
141
+ }
142
+ const reason = error instanceof BrandingWoff2Inspector_1.Woff2InspectError ? error.message : 'unparseable font data';
143
+ throw new BrandingTypefaceError('typeface-invalid-font', `Invalid WOFF2 font: ${reason}`);
144
+ }
145
+ const sha256 = sha256Hex(bytes);
146
+ this.enforceFamilyLimit(slot, bytes, sha256, input.existingFaces ?? []);
147
+ const key = this.storageKey(input.brandingId, sha256);
148
+ const disk = StorageManagerService.primaryDisk();
149
+ try {
150
+ if (await disk.exists(key)) {
151
+ const stored = Buffer.from(await disk.getBytes(key));
152
+ if (sha256Hex(stored) !== sha256) {
153
+ sails.log.error(`BrandingTypefaceService hash mismatch for brand ${input.brandingId} face ${sha256}`);
154
+ throw new BrandingTypefaceError('typeface-corrupt', 'Stored font bytes failed integrity verification');
155
+ }
156
+ }
157
+ else {
158
+ await disk.put(key, bytes, { contentType: FONT_CONTENT_TYPE });
159
+ }
160
+ }
161
+ catch (error) {
162
+ if (error instanceof BrandingTypefaceError) {
163
+ throw error;
164
+ }
165
+ throw new BrandingTypefaceError('typeface-storage-failed', 'Font storage failed; the typeface draft was not changed');
166
+ }
167
+ return {
168
+ slot,
169
+ sha256,
170
+ originalFilename: String(input.originalFilename ?? 'face.woff2').slice(0, 256),
171
+ sizeBytes: bytes.length,
172
+ uploadedAt: new Date().toISOString(),
173
+ inspection,
174
+ warnings: this.mismatchWarnings(slot, inspection),
175
+ };
176
+ }
177
+ /** Lightweight existence probe for advisory health checks (no byte reads, no hashing). */
178
+ async faceExists(brandingId, sha256) {
179
+ if (!SHA256_RE.test(sha256)) {
180
+ return false;
181
+ }
182
+ try {
183
+ return await StorageManagerService.primaryDisk().exists(this.storageKey(brandingId, sha256));
184
+ }
185
+ catch {
186
+ return false;
187
+ }
188
+ }
189
+ /** Read and hash-verify one stored face. Never substitutes another font. */
190
+ async readFace(brandingId, sha256) {
191
+ if (!SHA256_RE.test(sha256)) {
192
+ throw new BrandingTypefaceError('typeface-not-found', 'Font not found');
193
+ }
194
+ const key = this.storageKey(brandingId, sha256);
195
+ let stored;
196
+ try {
197
+ stored = Buffer.from(await StorageManagerService.primaryDisk().getBytes(key));
198
+ }
199
+ catch (error) {
200
+ if (!isStorageNotFoundError(error)) {
201
+ sails.log.warn(`BrandingTypefaceService storage read failed for brand ${brandingId}:`, error);
202
+ }
203
+ throw new BrandingTypefaceError('typeface-not-found', 'Font not found');
204
+ }
205
+ if (sha256Hex(stored) !== sha256) {
206
+ sails.log.error(`BrandingTypefaceService hash mismatch for brand ${brandingId} face ${sha256}`);
207
+ throw new BrandingTypefaceError('typeface-corrupt', 'Stored font bytes failed integrity verification');
208
+ }
209
+ return stored;
210
+ }
211
+ /** Verify every face referenced by a candidate snapshot before publish/restore. */
212
+ async assertTypefaceAvailable(brandingId, typeface) {
213
+ const state = (0, BrandingTypeface_1.normalizeTypefaceState)(typeface);
214
+ for (const face of (0, BrandingTypeface_1.orderedTypefaceFaces)(state)) {
215
+ await this.readFace(brandingId, face.sha256);
216
+ }
217
+ }
218
+ /** Collect every storage key referenced by any brand's active/draft typeface or retained history. */
219
+ async collectReferencedKeys() {
220
+ const referenced = new Map();
221
+ const addState = (brandingId, typeface) => {
222
+ for (const face of (0, BrandingTypeface_1.orderedTypefaceFaces)((0, BrandingTypeface_1.normalizeTypefaceState)(typeface))) {
223
+ const key = this.storageKey(brandingId, face.sha256);
224
+ referenced.set(key, { brandingId, sha256: face.sha256 });
225
+ }
226
+ };
227
+ const brands = (await BrandingConfig.find({}));
228
+ for (const brand of brands) {
229
+ const brandingId = String(brand.id);
230
+ addState(brandingId, brand.typeface);
231
+ addState(brandingId, brand.draftTypeface);
232
+ }
233
+ const histories = (await BrandingConfigHistory.find({}));
234
+ for (const history of histories) {
235
+ const branding = history.branding;
236
+ const brandingId = String(typeof branding === 'object' && branding !== null ? (branding.id ?? '') : branding);
237
+ if (brandingId) {
238
+ addState(brandingId, history.typeface);
239
+ }
240
+ }
241
+ return referenced;
242
+ }
243
+ /** Fresh per-key reference check used immediately before each deletion (scan/delete race). */
244
+ async isKeyReferenced(brandingId, sha256) {
245
+ const brand = await BrandingConfig.findOne({ id: brandingId });
246
+ if (brand) {
247
+ for (const source of [brand.typeface, brand.draftTypeface]) {
248
+ if ((0, BrandingTypeface_1.orderedTypefaceFaces)((0, BrandingTypeface_1.normalizeTypefaceState)(source)).some(face => face.sha256 === sha256)) {
249
+ return true;
250
+ }
251
+ }
252
+ }
253
+ const histories = (await BrandingConfigHistory.find({
254
+ branding: brandingId,
255
+ }));
256
+ for (const history of histories) {
257
+ if ((0, BrandingTypeface_1.orderedTypefaceFaces)((0, BrandingTypeface_1.normalizeTypefaceState)(history.typeface)).some(face => face.sha256 === sha256)) {
258
+ return true;
259
+ }
260
+ }
261
+ return false;
262
+ }
263
+ /**
264
+ * Delete only objects that remain unreferenced and outside the grace period.
265
+ * Individual failures are logged and retried on the next run; they never abort the scan.
266
+ */
267
+ async reconcileAssets(options) {
268
+ const now = options?.now ?? Date.now();
269
+ const graceMs = options?.graceMs ?? readPositiveInt('typefaceOrphanGraceMs', BrandingTypeface_1.BRANDING_TYPEFACE_ORPHAN_GRACE_MS);
270
+ const referenced = await this.collectReferencedKeys();
271
+ const disk = StorageManagerService.primaryDisk();
272
+ const result = {
273
+ scanned: 0,
274
+ referenced: referenced.size,
275
+ deleted: 0,
276
+ skippedGrace: 0,
277
+ skippedUnexpected: 0,
278
+ failures: 0,
279
+ };
280
+ let paginationToken;
281
+ // Collect keys first, then mutate: offset-based listings shift when an
282
+ // earlier page entry is deleted mid-scan, which would skip entries.
283
+ const keys = [];
284
+ for (;;) {
285
+ const listing = await disk.listAll(FONT_PREFIX, {
286
+ recursive: true,
287
+ ...(paginationToken ? { paginationToken } : {}),
288
+ });
289
+ for (const entry of listing.objects) {
290
+ const record = entry;
291
+ keys.push(typeof record === 'string' ? record : String(record.key ?? record.name ?? ''));
292
+ }
293
+ paginationToken = listing.paginationToken;
294
+ if (!paginationToken) {
295
+ break;
296
+ }
297
+ }
298
+ for (const key of keys) {
299
+ result.scanned += 1;
300
+ const parsed = this.parseStorageKey(key);
301
+ if (!parsed) {
302
+ result.skippedUnexpected += 1;
303
+ sails.log.warn(`BrandingTypefaceService reconciliation skipping unexpected key under ${FONT_PREFIX}`);
304
+ continue;
305
+ }
306
+ if (referenced.has(key)) {
307
+ continue;
308
+ }
309
+ let lastModified;
310
+ try {
311
+ const meta = await disk.getMetaData(key);
312
+ lastModified = meta.lastModified;
313
+ }
314
+ catch (error) {
315
+ if (isStorageNotFoundError(error)) {
316
+ continue;
317
+ }
318
+ result.failures += 1;
319
+ sails.log.warn(`BrandingTypefaceService reconciliation metadata failed for brand ${parsed.brandingId}:`, error);
320
+ continue;
321
+ }
322
+ if (now - lastModified.getTime() < graceMs) {
323
+ result.skippedGrace += 1;
324
+ continue;
325
+ }
326
+ // Close the scan/delete race with a fresh reference read.
327
+ try {
328
+ if (await this.isKeyReferenced(parsed.brandingId, parsed.sha256)) {
329
+ continue;
330
+ }
331
+ }
332
+ catch (error) {
333
+ result.failures += 1;
334
+ sails.log.warn(`BrandingTypefaceService reconciliation recheck failed for brand ${parsed.brandingId}:`, error);
335
+ continue;
336
+ }
337
+ try {
338
+ await disk.delete(key);
339
+ result.deleted += 1;
340
+ }
341
+ catch (error) {
342
+ if (isStorageNotFoundError(error)) {
343
+ continue;
344
+ }
345
+ result.failures += 1;
346
+ sails.log.warn(`BrandingTypefaceService reconciliation delete failed for brand ${parsed.brandingId}:`, error);
347
+ }
348
+ }
349
+ sails.log.info(`BrandingTypefaceService reconciliation: scanned=${result.scanned} referenced=${result.referenced} ` +
350
+ `deleted=${result.deleted} skippedGrace=${result.skippedGrace} skippedUnexpected=${result.skippedUnexpected} failures=${result.failures}.`);
351
+ return result;
352
+ }
353
+ };
354
+ BrandingTypeface = __decorate([
355
+ PopulateExportedMethods_decorator_1.PopulateExportedMethods
356
+ ], BrandingTypeface);
357
+ Services.BrandingTypeface = BrandingTypeface;
358
+ })(Services || (exports.Services = Services = {}));
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJhbmRpbmdUeXBlZmFjZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvQnJhbmRpbmdUeXBlZmFjZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLHNHQUF5RjtBQUN6RixnREFBc0Q7QUFDdEQsK0RBQW1FO0FBQ25FLGdFQVdtQztBQUNuQyxxRUFBaUY7QUFlakYsTUFBYSxxQkFBc0IsU0FBUSxLQUFLO0lBQ3JDLElBQUksQ0FBNEI7SUFDekMsWUFBWSxJQUErQixFQUFFLE9BQWU7UUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyx1QkFBdUIsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFQRCxzREFPQztBQXlCRCxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztBQUN0QyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUN2QyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxrREFBa0QsQ0FBQztBQUUxRSxNQUFNLGdCQUFnQixHQUFpRTtJQUNyRixPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7SUFDekMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ3RDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN4QyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Q0FDN0MsQ0FBQztBQUVGLFNBQVMsZUFBZSxDQUN0QixHQUFnRixFQUNoRixRQUFnQjtJQUVoQixPQUFP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
@@ -0,0 +1,17 @@
1
+ import type { BrandingTypefaceInspection } from '../model/BrandingTypeface';
2
+ export declare const WOFF2_SIGNATURE = 2001684018;
3
+ export type Woff2InspectErrorCode = 'DECODE_FAILED' | 'EMPTY' | 'TRUNCATED' | 'BAD_SIGNATURE' | 'BAD_FLAVOR' | 'BAD_TABLE_COUNT' | 'BAD_DIRECTORY' | 'OVERLAP' | 'COLLECTION_UNSUPPORTED';
4
+ export declare class Woff2InspectError extends Error {
5
+ readonly code: Woff2InspectErrorCode;
6
+ constructor(code: Woff2InspectErrorCode, message: string);
7
+ }
8
+ export interface Woff2InspectResult {
9
+ /** True when an `fvar` table entry is present (variable font). */
10
+ isVariable: boolean;
11
+ /** Resolved table tags in directory order. */
12
+ tableTags: string[];
13
+ /** Best-effort standard sfnt metadata, with optional XML fallback. */
14
+ inspection: BrandingTypefaceInspection;
15
+ }
16
+ export declare function inspectWoff2Buffer(input: Buffer): Promise<Woff2InspectResult>;
17
+ //# sourceMappingURL=BrandingWoff2Inspector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrandingWoff2Inspector.d.ts","sourceRoot":"","sources":["../../src/services/BrandingWoff2Inspector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAE5E,eAAO,MAAM,eAAe,aAAa,CAAC;AAwE1C,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,OAAO,GACP,WAAW,GACX,eAAe,GACf,YAAY,GACZ,iBAAiB,GACjB,eAAe,GACf,SAAS,GACT,wBAAwB,CAAC;AAE7B,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;gBACzB,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM;CAKzD;AAED,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,UAAU,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sEAAsE;IACtE,UAAU,EAAE,0BAA0B,CAAC;CACxC;AAqOD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoGnF"}