@researchdatabox/redbox-core 5.1.0-beta.12568 → 5.1.0-beta.13939

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 (385) hide show
  1. package/browser/redoc-library-loader.cjs +20 -0
  2. package/browser/redoc-standalone.js +143 -0
  3. package/dist/CoreBase.d.ts +43 -0
  4. package/dist/CoreBase.d.ts.map +1 -0
  5. package/dist/CoreBase.js +101 -0
  6. package/dist/CoreController.d.ts +23 -31
  7. package/dist/CoreController.d.ts.map +1 -1
  8. package/dist/CoreController.js +142 -131
  9. package/dist/CoreService.d.ts +13 -33
  10. package/dist/CoreService.d.ts.map +1 -1
  11. package/dist/CoreService.js +69 -95
  12. package/dist/HarvestRunService.d.ts +9 -1
  13. package/dist/HarvestRunService.d.ts.map +1 -1
  14. package/dist/HarvestRunService.js +1 -1
  15. package/dist/RecordRouteForm.d.ts +49 -0
  16. package/dist/RecordRouteForm.d.ts.map +1 -0
  17. package/dist/RecordRouteForm.js +188 -0
  18. package/dist/RecordSaveResponse.d.ts +4 -0
  19. package/dist/RecordSaveResponse.d.ts.map +1 -1
  20. package/dist/RecordSaveResponse.js +3 -2
  21. package/dist/action-execution/executor.d.ts +1 -1
  22. package/dist/action-execution/executor.d.ts.map +1 -1
  23. package/dist/action-execution/executor.js +19 -20
  24. package/dist/action-execution/legacy-result.d.ts +1 -1
  25. package/dist/action-execution/legacy-result.d.ts.map +1 -1
  26. package/dist/action-execution/legacy-result.js +43 -10
  27. package/dist/action-execution/types.d.ts +3 -3
  28. package/dist/action-execution/types.d.ts.map +1 -1
  29. package/dist/api-routes/groups/harvest-runs.d.ts +1 -0
  30. package/dist/api-routes/groups/harvest-runs.d.ts.map +1 -1
  31. package/dist/api-routes/groups/harvest-runs.js +24 -3
  32. package/dist/api-routes/groups/records.d.ts.map +1 -1
  33. package/dist/api-routes/groups/records.js +30 -21
  34. package/dist/api-routes/groups/reports.d.ts.map +1 -1
  35. package/dist/api-routes/groups/reports.js +3 -2
  36. package/dist/api-routes/helpers.d.ts +1 -1
  37. package/dist/api-routes/helpers.d.ts.map +1 -1
  38. package/dist/api-routes/helpers.js +10 -6
  39. package/dist/api-routes/openapi.d.ts.map +1 -1
  40. package/dist/api-routes/openapi.js +15 -1
  41. package/dist/api-routes/request-extraction.js +2 -2
  42. package/dist/api-routes/schemas/common.d.ts.map +1 -1
  43. package/dist/api-routes/schemas/common.js +7 -2
  44. package/dist/api-routes/schemas/responses.d.ts +38 -12
  45. package/dist/api-routes/schemas/responses.d.ts.map +1 -1
  46. package/dist/api-routes/schemas/responses.js +11 -1
  47. package/dist/bootstrap.d.ts.map +1 -1
  48. package/dist/bootstrap.js +13 -3
  49. package/dist/config/agendaQueue.config.d.ts +5 -0
  50. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  51. package/dist/config/agendaQueue.config.js +29 -2
  52. package/dist/config/appConfigSecrets.config.d.ts +14 -0
  53. package/dist/config/appConfigSecrets.config.d.ts.map +1 -0
  54. package/dist/config/appConfigSecrets.config.js +8 -0
  55. package/dist/config/brandingConfigurationDefaults.config.d.ts +16 -3
  56. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  57. package/dist/config/brandingConfigurationDefaults.config.js +1 -1
  58. package/dist/config/dompurify.config.d.ts.map +1 -1
  59. package/dist/config/dompurify.config.js +3 -2
  60. package/dist/config/harvestRuns.config.d.ts +7 -0
  61. package/dist/config/harvestRuns.config.d.ts.map +1 -1
  62. package/dist/config/harvestRuns.config.js +2 -1
  63. package/dist/config/http.config.d.ts +3 -2
  64. package/dist/config/http.config.d.ts.map +1 -1
  65. package/dist/config/http.config.js +108 -12
  66. package/dist/config/i18n.config.d.ts +3 -0
  67. package/dist/config/i18n.config.d.ts.map +1 -1
  68. package/dist/config/i18n.config.js +1 -1
  69. package/dist/config/index.d.ts +4 -0
  70. package/dist/config/index.d.ts.map +1 -1
  71. package/dist/config/index.js +4 -1
  72. package/dist/config/log.config.d.ts +33 -5
  73. package/dist/config/log.config.d.ts.map +1 -1
  74. package/dist/config/log.config.js +58 -54
  75. package/dist/config/record.config.d.ts +17 -0
  76. package/dist/config/record.config.d.ts.map +1 -1
  77. package/dist/config/record.config.js +7 -1
  78. package/dist/config/routes.config.d.ts.map +1 -1
  79. package/dist/config/routes.config.js +11 -2
  80. package/dist/config/session.config.d.ts +2 -2
  81. package/dist/config/session.config.d.ts.map +1 -1
  82. package/dist/config/solr.config.d.ts +8 -0
  83. package/dist/config/solr.config.d.ts.map +1 -1
  84. package/dist/config/solr.config.js +15 -2
  85. package/dist/config/storage.config.d.ts.map +1 -1
  86. package/dist/config/storage.config.js +9 -1
  87. package/dist/config/vocab.config.d.ts +1 -0
  88. package/dist/config/vocab.config.d.ts.map +1 -1
  89. package/dist/config/vocab.config.js +3 -3
  90. package/dist/config/webpack.config.d.ts.map +1 -1
  91. package/dist/config/webpack.config.js +23 -5
  92. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  93. package/dist/configmodels/ConfigModels.js +3 -2
  94. package/dist/configmodels/FigsharePublishing.d.ts +1 -1
  95. package/dist/controllers/ActionController.d.ts.map +1 -1
  96. package/dist/controllers/ActionController.js +8 -2
  97. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  98. package/dist/controllers/BrandingAppController.js +21 -2
  99. package/dist/controllers/DynamicAssetController.d.ts +9 -10
  100. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  101. package/dist/controllers/DynamicAssetController.js +67 -53
  102. package/dist/controllers/EmailController.d.ts.map +1 -1
  103. package/dist/controllers/EmailController.js +32 -14
  104. package/dist/controllers/ExportController.d.ts +9 -0
  105. package/dist/controllers/ExportController.d.ts.map +1 -1
  106. package/dist/controllers/ExportController.js +154 -3
  107. package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
  108. package/dist/controllers/FormVocabularyController.js +62 -33
  109. package/dist/controllers/RecordAuditController.d.ts.map +1 -1
  110. package/dist/controllers/RecordAuditController.js +4 -2
  111. package/dist/controllers/RecordController.d.ts +4 -1
  112. package/dist/controllers/RecordController.d.ts.map +1 -1
  113. package/dist/controllers/RecordController.js +248 -114
  114. package/dist/controllers/ReportController.d.ts +1 -0
  115. package/dist/controllers/ReportController.d.ts.map +1 -1
  116. package/dist/controllers/ReportController.js +40 -12
  117. package/dist/controllers/TranslationController.d.ts.map +1 -1
  118. package/dist/controllers/TranslationController.js +56 -16
  119. package/dist/controllers/UserController.d.ts +3 -1
  120. package/dist/controllers/UserController.d.ts.map +1 -1
  121. package/dist/controllers/UserController.js +178 -76
  122. package/dist/controllers/VocabularyController.d.ts +0 -1
  123. package/dist/controllers/VocabularyController.d.ts.map +1 -1
  124. package/dist/controllers/VocabularyController.js +18 -16
  125. package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
  126. package/dist/controllers/webservice/AdminController.js +2 -5
  127. package/dist/controllers/webservice/HarvestRunController.d.ts +1 -0
  128. package/dist/controllers/webservice/HarvestRunController.d.ts.map +1 -1
  129. package/dist/controllers/webservice/HarvestRunController.js +46 -2
  130. package/dist/controllers/webservice/IntegrationAuditController.d.ts +0 -1
  131. package/dist/controllers/webservice/IntegrationAuditController.d.ts.map +1 -1
  132. package/dist/controllers/webservice/IntegrationAuditController.js +13 -6
  133. package/dist/controllers/webservice/RecordController.d.ts +1 -1
  134. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  135. package/dist/controllers/webservice/RecordController.js +13 -4
  136. package/dist/controllers/webservice/ReportController.d.ts.map +1 -1
  137. package/dist/controllers/webservice/ReportController.js +15 -10
  138. package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
  139. package/dist/controllers/webservice/UserManagementController.js +17 -8
  140. package/dist/controllers/webservice/VocabularyController.d.ts.map +1 -1
  141. package/dist/controllers/webservice/VocabularyController.js +19 -13
  142. package/dist/form-config/generated-view-only.d.ts.map +1 -1
  143. package/dist/form-config/generated-view-only.js +12 -1
  144. package/dist/index.d.ts +2 -1
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +1 -1
  147. package/dist/loader/index.d.ts +1 -0
  148. package/dist/loader/index.d.ts.map +1 -1
  149. package/dist/loader/index.js +56 -11
  150. package/dist/middleware/redboxSession.d.ts.map +1 -1
  151. package/dist/middleware/redboxSession.js +15 -3
  152. package/dist/middleware/requestChronicle.d.ts +14 -0
  153. package/dist/middleware/requestChronicle.d.ts.map +1 -0
  154. package/dist/middleware/requestChronicle.js +73 -0
  155. package/dist/model/BuildResponse.d.ts +7 -5
  156. package/dist/model/BuildResponse.d.ts.map +1 -1
  157. package/dist/model/RBValidationError.d.ts +18 -5
  158. package/dist/model/RBValidationError.d.ts.map +1 -1
  159. package/dist/model/RBValidationError.js +56 -17
  160. package/dist/model/storage/ExportJobModel.d.ts +33 -0
  161. package/dist/model/storage/ExportJobModel.d.ts.map +1 -0
  162. package/dist/model/storage/ExportJobModel.js +3 -0
  163. package/dist/model/storage/HarvestRunModel.d.ts +20 -0
  164. package/dist/model/storage/HarvestRunModel.d.ts.map +1 -1
  165. package/dist/model/storage/HarvestRunModel.js +2 -1
  166. package/dist/model/storage/index.d.ts +2 -1
  167. package/dist/model/storage/index.d.ts.map +1 -1
  168. package/dist/model/storage/index.js +1 -1
  169. package/dist/policies/checkAuth.d.ts.map +1 -1
  170. package/dist/policies/checkAuth.js +3 -2
  171. package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
  172. package/dist/policies/contentSecurityPolicy.js +7 -2
  173. package/dist/policies/noCache.d.ts.map +1 -1
  174. package/dist/policies/noCache.js +4 -3
  175. package/dist/record-contract/record-contract-compiler.d.ts.map +1 -1
  176. package/dist/record-contract/record-contract-compiler.js +3 -19
  177. package/dist/record-contract/record-contract-context.d.ts +2 -0
  178. package/dist/record-contract/record-contract-context.d.ts.map +1 -1
  179. package/dist/record-contract/record-contract-context.js +1 -1
  180. package/dist/responses/notFound.d.ts.map +1 -1
  181. package/dist/responses/notFound.js +6 -1
  182. package/dist/responses/serverError.d.ts.map +1 -1
  183. package/dist/responses/serverError.js +13 -3
  184. package/dist/sails.d.ts +27 -17
  185. package/dist/sails.d.ts.map +1 -1
  186. package/dist/services/AgendaQueueService.d.ts +11 -2
  187. package/dist/services/AgendaQueueService.d.ts.map +1 -1
  188. package/dist/services/AgendaQueueService.js +163 -51
  189. package/dist/services/AppConfigSecrets.d.ts +66 -0
  190. package/dist/services/AppConfigSecrets.d.ts.map +1 -0
  191. package/dist/services/AppConfigSecrets.js +396 -0
  192. package/dist/services/AppConfigService.d.ts +16 -1
  193. package/dist/services/AppConfigService.d.ts.map +1 -1
  194. package/dist/services/AppConfigService.js +283 -33
  195. package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
  196. package/dist/services/BrandingThemeCssService.js +32 -3
  197. package/dist/services/BrandingThemeTokens.d.ts.map +1 -1
  198. package/dist/services/BrandingThemeTokens.js +10 -1
  199. package/dist/services/ConfigService.d.ts +1 -0
  200. package/dist/services/ConfigService.d.ts.map +1 -1
  201. package/dist/services/ConfigService.js +24 -9
  202. package/dist/services/DomSanitizerService.d.ts.map +1 -1
  203. package/dist/services/DomSanitizerService.js +19 -6
  204. package/dist/services/EmailService.d.ts +10 -2
  205. package/dist/services/EmailService.d.ts.map +1 -1
  206. package/dist/services/EmailService.js +53 -53
  207. package/dist/services/ExportService.d.ts +62 -0
  208. package/dist/services/ExportService.d.ts.map +1 -0
  209. package/dist/services/ExportService.js +609 -0
  210. package/dist/services/FormVocabularyService.d.ts.map +1 -1
  211. package/dist/services/FormVocabularyService.js +14 -4
  212. package/dist/services/FormsService.d.ts +3 -0
  213. package/dist/services/FormsService.d.ts.map +1 -1
  214. package/dist/services/FormsService.js +10 -3
  215. package/dist/services/HarvestRunService.d.ts +23 -1
  216. package/dist/services/HarvestRunService.d.ts.map +1 -1
  217. package/dist/services/HarvestRunService.js +155 -22
  218. package/dist/services/I18nEntriesService.d.ts +5 -0
  219. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  220. package/dist/services/I18nEntriesService.js +55 -3
  221. package/dist/services/NamedQueryService.d.ts +1 -0
  222. package/dist/services/NamedQueryService.d.ts.map +1 -1
  223. package/dist/services/NamedQueryService.js +67 -31
  224. package/dist/services/RDMPService.d.ts.map +1 -1
  225. package/dist/services/RDMPService.js +69 -83
  226. package/dist/services/RaidService.d.ts.map +1 -1
  227. package/dist/services/RaidService.js +45 -11
  228. package/dist/services/RecordSchemaService.d.ts +3 -1
  229. package/dist/services/RecordSchemaService.d.ts.map +1 -1
  230. package/dist/services/RecordSchemaService.js +2 -1
  231. package/dist/services/RecordValidationService.d.ts +3 -0
  232. package/dist/services/RecordValidationService.d.ts.map +1 -1
  233. package/dist/services/RecordValidationService.js +25 -5
  234. package/dist/services/RecordsService.d.ts +10 -1
  235. package/dist/services/RecordsService.d.ts.map +1 -1
  236. package/dist/services/RecordsService.js +194 -93
  237. package/dist/services/ReportsService.d.ts +1 -0
  238. package/dist/services/ReportsService.d.ts.map +1 -1
  239. package/dist/services/ReportsService.js +10 -9
  240. package/dist/services/RvaImportService.d.ts.map +1 -1
  241. package/dist/services/RvaImportService.js +6 -5
  242. package/dist/services/SolrSearchService.d.ts +7 -2
  243. package/dist/services/SolrSearchService.d.ts.map +1 -1
  244. package/dist/services/SolrSearchService.js +205 -81
  245. package/dist/services/StorageManagerService.d.ts +5 -0
  246. package/dist/services/StorageManagerService.d.ts.map +1 -1
  247. package/dist/services/StorageManagerService.js +4 -1
  248. package/dist/services/TriggerService.d.ts.map +1 -1
  249. package/dist/services/TriggerService.js +64 -56
  250. package/dist/services/UsersService.d.ts +13 -1
  251. package/dist/services/UsersService.d.ts.map +1 -1
  252. package/dist/services/UsersService.js +191 -257
  253. package/dist/services/VocabularyService.d.ts +11 -1
  254. package/dist/services/VocabularyService.d.ts.map +1 -1
  255. package/dist/services/VocabularyService.js +120 -24
  256. package/dist/services/doi-v2/http.d.ts +3 -2
  257. package/dist/services/doi-v2/http.d.ts.map +1 -1
  258. package/dist/services/doi-v2/http.js +38 -4
  259. package/dist/services/doi-v2/runtime.d.ts +4 -3
  260. package/dist/services/doi-v2/runtime.d.ts.map +1 -1
  261. package/dist/services/doi-v2/runtime.js +52 -17
  262. package/dist/services/figshare-v2/assets.d.ts +1 -1
  263. package/dist/services/figshare-v2/assets.d.ts.map +1 -1
  264. package/dist/services/figshare-v2/assets.js +1 -1
  265. package/dist/services/figshare-v2/http.d.ts +3 -2
  266. package/dist/services/figshare-v2/http.d.ts.map +1 -1
  267. package/dist/services/figshare-v2/http.js +38 -4
  268. package/dist/services/figshare-v2/observability.d.ts.map +1 -1
  269. package/dist/services/figshare-v2/observability.js +3 -3
  270. package/dist/services/figshare-v2/runtime.d.ts +4 -3
  271. package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
  272. package/dist/services/figshare-v2/runtime.js +48 -13
  273. package/dist/services/index.d.ts +3 -0
  274. package/dist/services/index.d.ts.map +1 -1
  275. package/dist/services/index.js +8 -3
  276. package/dist/services/integration-v2/runtime.d.ts +1 -1
  277. package/dist/services/integration-v2/runtime.d.ts.map +1 -1
  278. package/dist/services/integration-v2/runtime.js +7 -7
  279. package/dist/services/oni-v2/audit.d.ts +3 -2
  280. package/dist/services/oni-v2/audit.d.ts.map +1 -1
  281. package/dist/services/oni-v2/audit.js +38 -4
  282. package/dist/services/oni-v2/bindings.d.ts +1 -1
  283. package/dist/services/oni-v2/bindings.d.ts.map +1 -1
  284. package/dist/services/oni-v2/bindings.js +37 -4
  285. package/dist/services/oni-v2/repository.d.ts +3 -2
  286. package/dist/services/oni-v2/repository.d.ts.map +1 -1
  287. package/dist/services/oni-v2/repository.js +42 -7
  288. package/dist/services/oni-v2/runtime.d.ts +5 -4
  289. package/dist/services/oni-v2/runtime.d.ts.map +1 -1
  290. package/dist/services/oni-v2/runtime.js +57 -19
  291. package/dist/services/oni-v2/templating.d.ts +4 -2
  292. package/dist/services/oni-v2/templating.d.ts.map +1 -1
  293. package/dist/services/oni-v2/templating.js +42 -7
  294. package/dist/services/raid-v2/audit.d.ts +1 -1
  295. package/dist/services/raid-v2/audit.d.ts.map +1 -1
  296. package/dist/services/raid-v2/audit.js +39 -5
  297. package/dist/services/raid-v2/errors.d.ts +9 -9
  298. package/dist/services/raid-v2/errors.js +44 -11
  299. package/dist/services/raid-v2/http.d.ts +1 -1
  300. package/dist/services/raid-v2/http.d.ts.map +1 -1
  301. package/dist/services/raid-v2/http.js +42 -8
  302. package/dist/services/raid-v2/logger.d.ts +1 -1
  303. package/dist/services/raid-v2/logger.d.ts.map +1 -1
  304. package/dist/services/raid-v2/logger.js +42 -8
  305. package/dist/services/raid-v2/mapping.d.ts +1 -1
  306. package/dist/services/raid-v2/mapping.d.ts.map +1 -1
  307. package/dist/services/raid-v2/mapping.js +41 -7
  308. package/dist/services/raid-v2/runtime.d.ts +1 -1
  309. package/dist/services/raid-v2/runtime.d.ts.map +1 -1
  310. package/dist/services/raid-v2/runtime.js +76 -34
  311. package/dist/services/raid-v2/tags.d.ts +8 -8
  312. package/dist/services/raid-v2/tags.d.ts.map +1 -1
  313. package/dist/services/raid-v2/tags.js +42 -9
  314. package/dist/services/record-hooks/coordinator.d.ts +11 -0
  315. package/dist/services/record-hooks/coordinator.d.ts.map +1 -1
  316. package/dist/services/record-hooks/coordinator.js +70 -6
  317. package/dist/storage/GridFSDriver.d.ts +16 -9
  318. package/dist/storage/GridFSDriver.d.ts.map +1 -1
  319. package/dist/storage/GridFSDriver.js +87 -33
  320. package/dist/storage/TusStorageManagerDataStore.d.ts +11 -1
  321. package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -1
  322. package/dist/storage/TusStorageManagerDataStore.js +190 -56
  323. package/dist/utilities/HarvestHistoryRetention.d.ts +17 -0
  324. package/dist/utilities/HarvestHistoryRetention.d.ts.map +1 -0
  325. package/dist/utilities/HarvestHistoryRetention.js +141 -0
  326. package/dist/utilities/HarvestRunIndexes.d.ts +12 -0
  327. package/dist/utilities/HarvestRunIndexes.d.ts.map +1 -0
  328. package/dist/utilities/HarvestRunIndexes.js +84 -0
  329. package/dist/utilities/PinoLoggerUtils.d.ts +9 -0
  330. package/dist/utilities/PinoLoggerUtils.d.ts.map +1 -0
  331. package/dist/utilities/PinoLoggerUtils.js +17 -0
  332. package/dist/utilities/RequestChronicle.d.ts +221 -0
  333. package/dist/utilities/RequestChronicle.d.ts.map +1 -0
  334. package/dist/utilities/RequestChronicle.js +770 -0
  335. package/dist/utilities/RequestChronicleContext.d.ts +6 -0
  336. package/dist/utilities/RequestChronicleContext.d.ts.map +1 -0
  337. package/dist/utilities/RequestChronicleContext.js +19 -0
  338. package/dist/utilities/RequestChronicleSettings.d.ts +29 -0
  339. package/dist/utilities/RequestChronicleSettings.d.ts.map +1 -0
  340. package/dist/utilities/RequestChronicleSettings.js +31 -0
  341. package/dist/utilities/TransactionUtils.d.ts +2 -1
  342. package/dist/utilities/TransactionUtils.d.ts.map +1 -1
  343. package/dist/utilities/TransactionUtils.js +1 -1
  344. package/dist/utilities/TranslationHtml.d.ts.map +1 -1
  345. package/dist/utilities/TranslationHtml.js +13 -5
  346. package/dist/utilities/VocabularyAdminAccess.d.ts +10 -0
  347. package/dist/utilities/VocabularyAdminAccess.d.ts.map +1 -0
  348. package/dist/utilities/VocabularyAdminAccess.js +42 -0
  349. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  350. package/dist/visitor/construct.visitor.js +7 -2
  351. package/dist/visitor/context-variables.visitor.d.ts +1 -2
  352. package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
  353. package/dist/visitor/context-variables.visitor.js +1 -1
  354. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  355. package/dist/visitor/migrate-config-v4-v5.visitor.js +5 -1
  356. package/dist/visitor/related-object-data-inline.visitor.d.ts +1 -1
  357. package/dist/visitor/related-object-data-inline.visitor.d.ts.map +1 -1
  358. package/dist/visitor/related-object-data-inline.visitor.js +57 -23
  359. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  360. package/dist/visitor/validator.visitor.js +4 -2
  361. package/dist/visitor/visitor-helpers.js +3 -3
  362. package/dist/visitor/vocab-inline.visitor.d.ts +1 -2
  363. package/dist/visitor/vocab-inline.visitor.d.ts.map +1 -1
  364. package/dist/visitor/vocab-inline.visitor.js +1 -1
  365. package/dist/waterline-models/ExportJob.d.ts +38 -0
  366. package/dist/waterline-models/ExportJob.d.ts.map +1 -0
  367. package/dist/waterline-models/ExportJob.js +148 -0
  368. package/dist/waterline-models/HarvestRecordEvent.d.ts.map +1 -1
  369. package/dist/waterline-models/HarvestRecordEvent.js +3 -9
  370. package/dist/waterline-models/HarvestRun.d.ts +5 -1
  371. package/dist/waterline-models/HarvestRun.d.ts.map +1 -1
  372. package/dist/waterline-models/HarvestRun.js +13 -7
  373. package/dist/waterline-models/HarvestRunChunk.d.ts.map +1 -1
  374. package/dist/waterline-models/HarvestRunChunk.js +3 -7
  375. package/dist/waterline-models/User.d.ts +2 -2
  376. package/dist/waterline-models/User.d.ts.map +1 -1
  377. package/dist/waterline-models/User.js +3 -3
  378. package/dist/waterline-models/index.d.ts +2 -0
  379. package/dist/waterline-models/index.d.ts.map +1 -1
  380. package/dist/waterline-models/index.js +4 -1
  381. package/logfmt-transport.cjs +59 -0
  382. package/package.json +76 -45
  383. package/dist/Logger.d.ts +0 -16
  384. package/dist/Logger.d.ts.map +0 -1
  385. package/dist/Logger.js +0 -3
@@ -0,0 +1,396 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppConfigSecrets = void 0;
4
+ exports.isAppConfigSecretReference = isAppConfigSecretReference;
5
+ const node_crypto_1 = require("node:crypto");
6
+ const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
7
+ function isAppConfigSecretReference(value) {
8
+ if (typeof value !== 'object' || value === null || !('$appConfigSecret' in value))
9
+ return false;
10
+ const reference = value.$appConfigSecret;
11
+ return (typeof reference === 'object' &&
12
+ reference !== null &&
13
+ 'provider' in reference &&
14
+ reference.provider === 'aws-secrets-manager' &&
15
+ 'arn' in reference &&
16
+ typeof reference.arn === 'string' &&
17
+ reference.arn.startsWith('arn:') &&
18
+ (!('key' in reference) || (typeof reference.key === 'string' && reference.key.length > 0)));
19
+ }
20
+ /** Only controlled application messages may bypass SDK error redaction. */
21
+ class AppConfigSecretsInternalError extends Error {
22
+ }
23
+ /** Cached reads for both immutable field secrets and mutable brand bundles. */
24
+ class AppConfigSecrets {
25
+ config;
26
+ client;
27
+ values = new Map();
28
+ bundleTokens = new Map();
29
+ constructor(config) {
30
+ this.config = config;
31
+ this.client = new client_secrets_manager_1.SecretsManagerClient({
32
+ region: config.region,
33
+ // Bound connection/header waits per attempt. Overall deadlines below also
34
+ // cover response bodies and retries, including reads outside storeBundle.
35
+ requestHandler: { connectionTimeout: 5_000, requestTimeout: 30_000, throwOnRequestTimeout: true }
36
+ });
37
+ }
38
+ async store(brandId, configKey, field, value) {
39
+ const prefix = this.getPrefix();
40
+ const scope = (0, node_crypto_1.createHash)('sha256')
41
+ .update(JSON.stringify([brandId, configKey, field]))
42
+ .digest('hex');
43
+ const result = await this.safeAwsCall('store', () => this.withAwsDeadline(signal => this.client.send(new client_secrets_manager_1.CreateSecretCommand({
44
+ Name: `${prefix}/${scope}/${(0, node_crypto_1.randomUUID)()}`,
45
+ SecretString: value,
46
+ KmsKeyId: this.config.kmsKeyId,
47
+ Tags: [{ Key: 'managed-by', Value: 'redbox-appconfig' }],
48
+ }), { abortSignal: signal })));
49
+ if (!result.ARN)
50
+ throw new Error('AWS Secrets Manager did not return a secret ARN');
51
+ this.remember({ arn: result.ARN, name: result.Name, value });
52
+ return { $appConfigSecret: { provider: 'aws-secrets-manager', arn: result.ARN } };
53
+ }
54
+ getPrefix() {
55
+ const prefix = this.config.namePrefix;
56
+ if (!prefix || !/^[a-zA-Z0-9/_+=.@-]+$/.test(prefix) || prefix.length > 400)
57
+ throw new Error('Invalid appConfigSecrets.namePrefix');
58
+ return prefix;
59
+ }
60
+ remember(secret) {
61
+ const cached = Promise.resolve(secret);
62
+ this.values.set(secret.arn, cached);
63
+ if (secret.name)
64
+ this.values.set(secret.name, cached);
65
+ }
66
+ /** Promise caching also coalesces concurrent reads. Rejected requests can be retried. */
67
+ async read(secretId) {
68
+ const cached = this.values.get(secretId);
69
+ if (cached)
70
+ return cached;
71
+ const pending = this.fetch(secretId);
72
+ this.values.set(secretId, pending);
73
+ try {
74
+ const secret = await pending;
75
+ if (this.values.get(secretId) === pending) {
76
+ // Do not replace a newer value published while this read was in flight.
77
+ if (!this.values.has(secret.arn))
78
+ this.values.set(secret.arn, pending);
79
+ if (secret.name && !this.values.has(secret.name))
80
+ this.values.set(secret.name, pending);
81
+ }
82
+ return secret;
83
+ }
84
+ catch (error) {
85
+ if (this.values.get(secretId) === pending)
86
+ this.values.delete(secretId);
87
+ throw error;
88
+ }
89
+ }
90
+ /** Abort the complete SDK operation, including a response body stalled after headers. */
91
+ async withAwsDeadline(request) {
92
+ const controller = new AbortController();
93
+ const timeout = setTimeout(() => controller.abort(), 30_000);
94
+ try {
95
+ return await request(controller.signal);
96
+ }
97
+ finally {
98
+ clearTimeout(timeout);
99
+ }
100
+ }
101
+ async fetch(secretId, signal) {
102
+ const request = (abortSignal) => this.client.send(new client_secrets_manager_1.GetSecretValueCommand({ SecretId: secretId }), { abortSignal });
103
+ const result = signal ? await request(signal) : await this.withAwsDeadline(request);
104
+ if (result.SecretString === undefined)
105
+ throw new AppConfigSecretsInternalError('AppConfig secrets must contain a SecretString');
106
+ return { arn: result.ARN ?? secretId, name: result.Name, value: result.SecretString };
107
+ }
108
+ parseBundle(value) {
109
+ let parsed;
110
+ try {
111
+ parsed = JSON.parse(value);
112
+ }
113
+ catch {
114
+ throw new AppConfigSecretsInternalError('Invalid AppConfig secret bundle');
115
+ }
116
+ if (typeof parsed !== 'object' || parsed === null || !('format' in parsed) || parsed.format !== 'redbox-appconfig-v1' ||
117
+ !('values' in parsed) || typeof parsed.values !== 'object' || parsed.values === null || Array.isArray(parsed.values) ||
118
+ !Object.values(parsed.values).every(value => typeof value === 'string'))
119
+ throw new AppConfigSecretsInternalError('Invalid AppConfig secret bundle');
120
+ return parsed;
121
+ }
122
+ bundleName(brandId) {
123
+ const scope = (0, node_crypto_1.createHash)('sha256').update(brandId).digest('hex');
124
+ return `${this.getPrefix()}/brands/${scope}`;
125
+ }
126
+ lockCollection() {
127
+ const model = AppConfig;
128
+ const collection = model.getDatastore?.().manager?.collection?.('appconfigsecretlocks');
129
+ if (!collection)
130
+ throw new Error('Bundled AppConfig secrets require MongoDB write coordination');
131
+ return collection;
132
+ }
133
+ synchronizeBundleCache(name, token) {
134
+ if (this.bundleTokens.get(name) !== token)
135
+ this.invalidate(name);
136
+ this.bundleTokens.set(name, token);
137
+ }
138
+ /** Mongo-only freshness check before comparisons or hydration during saves/reloads. */
139
+ async synchronizeBundle(brandId, purpose = 'save', lease) {
140
+ const name = this.bundleName(brandId);
141
+ if (lease) {
142
+ this.assertBundleLease(lease, name);
143
+ this.synchronizeBundleCache(name, lease.token);
144
+ return;
145
+ }
146
+ let lock;
147
+ try {
148
+ lock = await this.lockCollection().findOne({ _id: name });
149
+ }
150
+ catch {
151
+ throw new Error('Unable to coordinate AppConfig secret update');
152
+ }
153
+ if (lock?.owner && lock.expiresAt.getTime() > Date.now()) {
154
+ if (purpose === 'save')
155
+ throw new Error('Another AppConfig secret update is in progress for this brand. Retry shortly.');
156
+ // Startup/reload can read the current AWS value during another node's write.
157
+ // Its snapshot must remain untrusted for a later save, even if that writer
158
+ // already published its token but has not yet finished its AWS request.
159
+ this.invalidate(name);
160
+ this.bundleTokens.delete(name);
161
+ return;
162
+ }
163
+ this.synchronizeBundleCache(name, lock?.cacheToken ?? '');
164
+ }
165
+ /** Keep the same cross-node lease from the authoritative row read through cache publication. */
166
+ async withBundleSave(brandId, save) {
167
+ const name = this.bundleName(brandId);
168
+ const collection = this.lockCollection();
169
+ const owner = (0, node_crypto_1.randomUUID)();
170
+ const now = Date.now();
171
+ try {
172
+ await collection.updateOne({ _id: name, expiresAt: { $lte: new Date(now) } }, {
173
+ $set: { owner, expiresAt: new Date(now + 120_000) }
174
+ }, { upsert: true });
175
+ }
176
+ catch (error) {
177
+ if (typeof error === 'object' && error !== null && 'code' in error && error.code === 11000) {
178
+ throw new Error('Another AppConfig secret update is in progress for this brand. Retry shortly.');
179
+ }
180
+ throw new Error('Unable to coordinate AppConfig secret update');
181
+ }
182
+ const lease = { name, collection, owner, token: '', expiresAt: now + 120_000, active: true, aborted: false, lost: false };
183
+ let heartbeat;
184
+ let renewing;
185
+ let closing = false;
186
+ const schedule = () => {
187
+ if (closing || !lease.active || lease.aborted || lease.lost)
188
+ return;
189
+ heartbeat = setTimeout(() => {
190
+ if (closing || lease.aborted || lease.lost)
191
+ return;
192
+ renewing = this.checkBundleSave(lease).catch(() => {
193
+ sails.log.error('Unable to renew AppConfig secret write lease. Further writes require a valid lease.');
194
+ }).finally(schedule);
195
+ }, 20_000);
196
+ heartbeat.unref();
197
+ };
198
+ try {
199
+ let lock;
200
+ try {
201
+ lock = await collection.findOne({ _id: name, owner });
202
+ }
203
+ catch {
204
+ throw new Error('Unable to coordinate AppConfig secret update');
205
+ }
206
+ if (!lock)
207
+ throw new Error('Unable to coordinate AppConfig secret update');
208
+ lease.token = lock.cacheToken ?? '';
209
+ this.assertBundleLease(lease, name);
210
+ this.synchronizeBundleCache(name, lease.token);
211
+ schedule();
212
+ return await save(lease);
213
+ }
214
+ finally {
215
+ closing = true;
216
+ clearTimeout(heartbeat);
217
+ await renewing;
218
+ lease.active = false;
219
+ if (lease.lost || Date.now() >= lease.expiresAt)
220
+ sails.log.error('AppConfig secret write lease was lost during the save. Reload and retry the intended configuration.');
221
+ // An aborted request may still finish at AWS. Leave its lease until expiry.
222
+ if (!lease.aborted) {
223
+ // Keep the freshness token after release; it is cache invalidation metadata,
224
+ // not a stored secret version or rollback history.
225
+ try {
226
+ const released = await collection.updateOne({ _id: name, owner }, { $set: { expiresAt: new Date(0) }, $unset: { owner: '' } });
227
+ if (released.matchedCount !== 1)
228
+ sails.log.error('AppConfig secret write lease ownership changed before release.');
229
+ }
230
+ catch {
231
+ sails.log.error('Unable to release AppConfig secret write lease; it will expire automatically.');
232
+ }
233
+ }
234
+ }
235
+ }
236
+ assertBundleLease(lease, name) {
237
+ if (lease.expiresAt <= Date.now())
238
+ lease.lost = true;
239
+ if (lease.name !== name || !lease.active || lease.aborted || lease.lost)
240
+ throw new AppConfigSecretsInternalError('AppConfig secret write lease was lost or aborted. Reload and retry.');
241
+ }
242
+ /** Renew immediately before persistence, and while an unabortable database write is pending. */
243
+ async checkBundleSave(lease) {
244
+ this.assertBundleLease(lease, lease.name);
245
+ const expiresAt = Date.now() + 120_000;
246
+ let renewed;
247
+ try {
248
+ renewed = await lease.collection.updateOne({ _id: lease.name, owner: lease.owner, expiresAt: { $gt: new Date() } }, { $max: { expiresAt: new Date(expiresAt) } });
249
+ }
250
+ catch {
251
+ throw new AppConfigSecretsInternalError('Unable to coordinate AppConfig secret update. Check MongoDB connectivity and retry.');
252
+ }
253
+ if (renewed.matchedCount !== 1)
254
+ lease.lost = true;
255
+ lease.expiresAt = Math.max(lease.expiresAt, expiresAt);
256
+ this.assertBundleLease(lease, lease.name);
257
+ }
258
+ /** Merge only explicitly changed fields into the current brand JSON; never send cached snapshots. */
259
+ async storeBundle(brandId, changes, lease) {
260
+ if (!lease)
261
+ return this.withBundleSave(brandId, owned => this.storeBundle(brandId, changes, owned));
262
+ const name = this.bundleName(brandId);
263
+ this.assertBundleLease(lease, name);
264
+ const { collection, owner } = lease;
265
+ const controller = new AbortController();
266
+ const signal = controller.signal;
267
+ const deadline = Date.now() + 30_000;
268
+ const timeout = setTimeout(() => { lease.aborted = true; controller.abort(); }, 30_000);
269
+ try {
270
+ const result = await this.safeAwsCall('store', async () => {
271
+ this.synchronizeBundleCache(name, lease.token);
272
+ const cached = this.values.get(name);
273
+ if (cached) {
274
+ try {
275
+ const secret = await cached;
276
+ const bundle = this.parseBundle(secret.value);
277
+ const unchanged = [...changes].every(([key, value]) => value === null
278
+ ? !Object.prototype.hasOwnProperty.call(bundle.values, key)
279
+ : Object.prototype.hasOwnProperty.call(bundle.values, key) && bundle.values[key] === value);
280
+ if (unchanged)
281
+ return secret.arn;
282
+ }
283
+ catch {
284
+ // An in-flight read can fail. Retry under the lease with normal redaction.
285
+ }
286
+ }
287
+ let current;
288
+ try {
289
+ current = await this.fetch(name, signal);
290
+ }
291
+ catch (error) {
292
+ if (!(error instanceof Error) || error.name !== 'ResourceNotFoundException')
293
+ throw error;
294
+ }
295
+ const bundle = current ? this.parseBundle(current.value) : { format: 'redbox-appconfig-v1', values: {} };
296
+ let changed = false;
297
+ for (const [key, value] of changes) {
298
+ if (value === null) {
299
+ if (Object.prototype.hasOwnProperty.call(bundle.values, key)) {
300
+ delete bundle.values[key];
301
+ changed = true;
302
+ }
303
+ }
304
+ else if (!Object.prototype.hasOwnProperty.call(bundle.values, key) || bundle.values[key] !== value) {
305
+ Object.defineProperty(bundle.values, key, { value, enumerable: true, writable: true, configurable: true });
306
+ changed = true;
307
+ }
308
+ }
309
+ if (!changed) {
310
+ if (current)
311
+ this.remember(current);
312
+ return current?.arn;
313
+ }
314
+ const value = JSON.stringify(bundle);
315
+ if (Buffer.byteLength(value, 'utf8') > 65_536)
316
+ throw new AppConfigSecretsInternalError('AppConfig secret bundle exceeds the AWS 64 KiB limit');
317
+ // Invalidate other nodes BEFORE dispatch: a failed/aborted AWS request may
318
+ // still commit. Never leave their old caches marked as current in that case.
319
+ const nextToken = (0, node_crypto_1.randomUUID)();
320
+ await this.checkBundleSave(lease);
321
+ let marked;
322
+ try {
323
+ marked = await collection.updateOne({ _id: name, owner, expiresAt: { $gt: new Date() } }, { $set: { cacheToken: nextToken } });
324
+ }
325
+ catch {
326
+ throw new AppConfigSecretsInternalError('Unable to coordinate AppConfig secret update. Check MongoDB connectivity and retry.');
327
+ }
328
+ if (marked.matchedCount !== 1) {
329
+ lease.lost = true;
330
+ throw new AppConfigSecretsInternalError('AppConfig secret write lease was lost. Reload and retry.');
331
+ }
332
+ lease.token = nextToken;
333
+ if (signal.aborted || Date.now() >= deadline)
334
+ throw new AppConfigSecretsInternalError('AppConfig secret write timed out. Retry shortly.');
335
+ const result = current
336
+ ? await this.client.send(new client_secrets_manager_1.PutSecretValueCommand({ SecretId: current.arn, SecretString: value }), { abortSignal: signal })
337
+ : await this.client.send(new client_secrets_manager_1.CreateSecretCommand({
338
+ Name: name, SecretString: value, KmsKeyId: this.config.kmsKeyId,
339
+ Tags: [{ Key: 'managed-by', Value: 'redbox-appconfig' }]
340
+ }), { abortSignal: signal });
341
+ const arn = result.ARN ?? current?.arn;
342
+ if (!arn)
343
+ throw new AppConfigSecretsInternalError('AWS Secrets Manager did not return a secret ARN');
344
+ this.remember({ arn, name, value });
345
+ this.bundleTokens.set(name, nextToken);
346
+ return arn;
347
+ });
348
+ this.assertBundleLease(lease, name);
349
+ return result;
350
+ }
351
+ finally {
352
+ clearTimeout(timeout);
353
+ }
354
+ }
355
+ /** Explicit reloads refresh this ARN and its name alias without evicting other brands. */
356
+ invalidate(arn) {
357
+ const cached = this.values.get(arn);
358
+ if (cached)
359
+ for (const [key, value] of this.values)
360
+ if (value === cached)
361
+ this.values.delete(key);
362
+ }
363
+ /** SDK messages can contain IAM/KMS resource details. Never log request inputs or raw errors. */
364
+ async safeAwsCall(operation, call) {
365
+ try {
366
+ return await call();
367
+ }
368
+ catch (error) {
369
+ if (error instanceof AppConfigSecretsInternalError)
370
+ throw error;
371
+ const name = error instanceof Error ? error.name : '';
372
+ const knownErrors = ['AccessDeniedException', 'DecryptionFailure', 'EncryptionFailure', 'ResourceNotFoundException', 'InvalidRequestException', 'ThrottlingException'];
373
+ const category = knownErrors.includes(name) ? name : 'SDKError';
374
+ sails.log.error(`AppConfig Secrets Manager ${operation} failed (${category}). Check AWS permissions, KMS and connectivity.`);
375
+ throw new Error(`Unable to ${operation} AppConfig secret in AWS Secrets Manager`);
376
+ }
377
+ }
378
+ async resolve(reference) {
379
+ return this.safeAwsCall('resolve', async () => {
380
+ const secret = await this.read(reference.$appConfigSecret.arn);
381
+ const key = reference.$appConfigSecret.key;
382
+ if (key === undefined)
383
+ return secret.value;
384
+ const bundle = this.parseBundle(secret.value);
385
+ if (!Object.prototype.hasOwnProperty.call(bundle.values, key)) {
386
+ // A clear can commit before its database write fails, or while a reload
387
+ // still holds the old reference. The current bundle remains authoritative.
388
+ sails.log.warn('AppConfig bundle field has been cleared. Retry any incomplete configuration save.');
389
+ return '';
390
+ }
391
+ return bundle.values[key];
392
+ });
393
+ }
394
+ }
395
+ exports.AppConfigSecrets = AppConfigSecrets;
396
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwQ29uZmlnU2VjcmV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9BcHBDb25maWdTZWNyZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLGdFQWFDO0FBckJELDZDQUFxRDtBQUNyRCw0RUFBMEk7QUFPMUksU0FBZ0IsMEJBQTBCLENBQUMsS0FBYztJQUN2RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNoRyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7SUFDekMsT0FBTyxDQUNMLE9BQU8sU0FBUyxLQUFLLFFBQVE7UUFDN0IsU0FBUyxLQUFLLElBQUk7UUFDbEIsVUFBVSxJQUFJLFNBQVM7UUFDdkIsU0FBUyxDQUFDLFFBQVEsS0FBSyxxQkFBcUI7UUFDNUMsS0FBSyxJQUFJLFNBQVM7UUFDbEIsT0FBTyxTQUFTLENBQUMsR0FBRyxLQUFLLFFBQVE7UUFDakMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sU0FBUyxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDM0YsQ0FBQztBQUNKLENBQUM7QUFJRCwyRUFBMkU7QUFDM0UsTUFBTSw2QkFBOEIsU0FBUSxLQUFLO0NBQUc7QUFpQnBELCtFQUErRTtBQUMvRSxNQUFhLGdCQUFnQjtJQUtQO0lBSlosTUFBTSxDQUF1QjtJQUM3QixNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWdDLENBQUM7SUFDakQsWUFBWSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBRWpELFlB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
@@ -19,12 +19,20 @@ export declare namespace Services {
19
19
  }>;
20
20
  modelSchemaMap: Record<string, unknown>;
21
21
  private extraTsGlobs;
22
+ private secretStore?;
23
+ private configWriteGates;
22
24
  protected _exportedMethods: string[];
23
25
  bootstrap: () => Promise<void>;
24
26
  private bootstrapAsync;
25
27
  initAllConfigFormSchemas(): Promise<void>;
26
- private refreshBrandingAppConfigMap;
28
+ private prepareBrandingCache;
29
+ /** Expand only own properties; wildcard matches one literal key, including punctuation. */
30
+ private getSecretPaths;
31
+ private setExistingSecretPath;
27
32
  private getSecretFields;
33
+ private getSecretStore;
34
+ private hydrateSecretFields;
35
+ private storeSecretFields;
28
36
  private isMaskedSecretPlaceholder;
29
37
  private shouldMaskSecretValue;
30
38
  private maskSecretFields;
@@ -34,11 +42,14 @@ export declare namespace Services {
34
42
  getAppConfigurationForBrand(brandName: string): BrandingConfigurationDefaultsConfig & {
35
43
  authorizedDomainsEmails?: AuthorizedDomainsEmails;
36
44
  };
45
+ /** Safe admin view; backend consumers continue to use the hydrated cache. */
46
+ getMaskedAppConfigurationForBrand(brandName: string, configKey?: string): unknown;
37
47
  getAllConfigurationForBrand: (brandId: string) => Promise<AppConfigAttributes[]>;
38
48
  private getConfigRecordTimestamp;
39
49
  private chooseLatestConfigRecord;
40
50
  private reduceToLatestConfigRecords;
41
51
  private findLatestConfigRecord;
52
+ private createDefaultConfiguration;
42
53
  loadAppConfigurationModel(brandId: string): Promise<BrandingConfigurationDefaultsConfig & {
43
54
  authorizedDomainsEmails?: AuthorizedDomainsEmails;
44
55
  }>;
@@ -48,7 +59,11 @@ export declare namespace Services {
48
59
  * operations: independent dashboard settings are revision-checked and live in
49
60
  * the DashboardConfiguration model. The migration reads legacy rows directly.
50
61
  */
62
+ private isSafeConfigKey;
63
+ private assertSafeConfigKey;
51
64
  private assertWritableConfigKey;
65
+ /** Order persistence/cache publication per key, or per brand for shared JSON bundles. */
66
+ private withConfigWriteLock;
52
67
  createOrUpdateConfig(branding: BrandingModel, configKey: string, configData: AppConfigData): Promise<unknown>;
53
68
  createConfig(brandName: string, configKey: string, configData: AppConfigData): Promise<unknown>;
54
69
  getAppConfigForm(branding: BrandingModel, configForm: string): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"AppConfigService.d.ts","sourceRoot":"","sources":["../../src/services/AppConfigService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppConfigService.d.ts","sourceRoot":"","sources":["../../src/services/AppConfigService.ts"],"names":[],"mappings":"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"}