@researchdatabox/redbox-core 5.1.0-beta.12573 → 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
@@ -43,6 +43,8 @@ const siteTitle_1 = require("./responses/siteTitle");
43
43
  const terminalErrorFallback_1 = require("./responses/terminalErrorFallback");
44
44
  const hookResources_1 = require("./hooks/hookResources");
45
45
  const model_1 = require("./model");
46
+ const RequestChronicle_1 = require("./utilities/RequestChronicle");
47
+ const CoreBase_1 = require("./CoreBase");
46
48
  var Controllers;
47
49
  (function (Controllers) {
48
50
  var Core;
@@ -66,17 +68,13 @@ var Controllers;
66
68
  * @remarks Use `sendResp` for responses so API versioning and the standard response envelope remain consistent.
67
69
  * @see https://github.com/redbox-mint/redbox-portal/wiki/Redbox-Loader
68
70
  */
69
- class Controller {
71
+ class Controller extends CoreBase_1.CoreBase {
70
72
  /**
71
73
  * Overrides for the settings in `config/controllers.js`
72
74
  * (specific to the controller where it's defined)
73
75
  * Specific to sails. Don't rename.
74
76
  */
75
77
  _config = {};
76
- /**
77
- * Exported methods. Must be overridden by the child to add custom methods.
78
- */
79
- _exportedMethods = [];
80
78
  /**
81
79
  * Theme used by the controller by default.
82
80
  * Could be overridden by the user theme. (One day, when the feature will be done...)
@@ -98,86 +96,7 @@ var Controllers;
98
96
  // Sails controller custom config.
99
97
  '_config',
100
98
  ];
101
- // Namespaced logger for controllers
102
- _logger = null;
103
- getFallbackLogger() {
104
- const log = (...args) => console.log(...args);
105
- const noop = () => undefined;
106
- return {
107
- silly: log,
108
- verbose: log,
109
- trace: (...args) => console.trace(...args),
110
- debug: (...args) => console.debug(...args),
111
- log: (...args) => console.log(...args),
112
- info: (...args) => console.info(...args),
113
- warn: (...args) => console.warn(...args),
114
- error: (...args) => console.error(...args),
115
- crit: (...args) => console.error(...args),
116
- fatal: (...args) => console.error(...args),
117
- silent: noop,
118
- blank: () => console.log(''),
119
- };
120
- }
121
- /**
122
- * Get a namespaced logger for this controller class.
123
- * Uses the class constructor name as the namespace.
124
- * Falls back to sails.log if pino namespaced logging is not available.
125
- */
126
- get logger() {
127
- if (typeof sails === 'undefined') {
128
- return this.getFallbackLogger();
129
- }
130
- if (this._logger === null && sails?.config?.log?.createNamespaceLogger && sails?.config?.log?.customLogger) {
131
- const controllerName = this.constructor.name + 'Controller';
132
- this._logger = sails.config.log.createNamespaceLogger(controllerName, sails.config.log.customLogger);
133
- }
134
- if (this._logger !== null) {
135
- return this._logger;
136
- }
137
- const sailsLogger = sails?.log;
138
- if (sailsLogger && typeof sailsLogger.verbose === 'function') {
139
- return sailsLogger;
140
- }
141
- // Prefer _logger, then sails.log; cast sails.log to ILogger since it implements all required methods
142
- return this.getFallbackLogger();
143
- }
144
- registerSailsHook(action, eventName, handler) {
145
- if (typeof sails === 'undefined') {
146
- return false;
147
- }
148
- if (action === 'on') {
149
- if (typeof sails.on !== 'function') {
150
- return false;
151
- }
152
- sails.on(eventName, handler);
153
- return true;
154
- }
155
- if (typeof sails.after !== 'function') {
156
- return false;
157
- }
158
- sails.after(eventName, handler);
159
- return true;
160
- }
161
- constructor() {
162
- this.processDynamicImports().then(() => {
163
- this.logger.verbose("Dynamic imports imported");
164
- this.onDynamicImportsCompleted();
165
- });
166
- }
167
- /**
168
- * Function that allows async dynamic imports of modules (such as ECMAScript modules).
169
- * Called in the constructor and intended to be overridden in sub class to allow imports.
170
- */
171
- async processDynamicImports() {
172
- // Override in sub class as needed
173
- }
174
- /**
175
- * Function that is called during the construction of the Controller after the dynamic imports are completed.
176
- * Intended to be overridden in the sub class
177
- */
178
- onDynamicImportsCompleted() {
179
- // Override in sub class as needed
180
- }
99
+ _loggerNamespaceSuffix = 'Controller';
181
100
  /**
182
101
  **************************************************************************************************
183
102
  **************************************** Public methods ******************************************
@@ -265,8 +184,7 @@ var Controllers;
265
184
  });
266
185
  }
267
186
  resolveViewCandidate(viewPath) {
268
- return (0, hookResources_1.resolveHookViewFile)(sails.config.appPath, viewPath)
269
- ?? this.resolveCoreViewFile(viewPath);
187
+ return (0, hookResources_1.resolveHookViewFile)(sails.config.appPath, viewPath) ?? this.resolveCoreViewFile(viewPath);
270
188
  }
271
189
  resolveViewFile(branding, portal, view) {
272
190
  const candidates = [
@@ -378,10 +296,10 @@ var Controllers;
378
296
  }
379
297
  // If we can resolve a layout set it explicitly for ejs-locals. Sails' built-in
380
298
  // layout calculation assumes one app views root, but hook views live elsewhere.
381
- if (resolvedLayout !== null && mergedLocal["layout"] !== false) {
382
- mergedLocal["_layoutFile"] = path_1.default.relative(path_1.default.dirname(resolvedView.absolutePath), resolvedLayout.absolutePath);
383
- mergedLocal["layout"] = false;
384
- mergedLocal["layoutDirectoryLocation"] = `${path_1.default.dirname(resolvedLayout.absolutePath)}${path_1.default.sep}`;
299
+ if (resolvedLayout !== null && mergedLocal['layout'] !== false) {
300
+ mergedLocal['_layoutFile'] = path_1.default.relative(path_1.default.dirname(resolvedView.absolutePath), resolvedLayout.absolutePath);
301
+ mergedLocal['layout'] = false;
302
+ mergedLocal['layoutDirectoryLocation'] = `${path_1.default.dirname(resolvedLayout.absolutePath)}${path_1.default.sep}`;
385
303
  }
386
304
  // Add some properties blueprints usually adds
387
305
  // TODO: Doesn't seem to be binding properly. Investigate
@@ -397,10 +315,8 @@ var Controllers;
397
315
  this.getCoreMirrorDirectory(resolvedView),
398
316
  ...(resolvedLayout ? [this.getCoreMirrorDirectory(resolvedLayout)] : []),
399
317
  ]));
400
- this.logger.debug("resolvedView");
401
- this.logger.debug(sailsViewPath);
402
- // this.logger.debug("mergedLocal");
403
- // this.logger.debug(mergedLocal);
318
+ // The merged locals are too large to record; the view path identifies what was rendered.
319
+ this.updateChronicle(req, { view: sailsViewPath });
404
320
  res.view(this.getRenderViewPath(resolvedView), mergedLocal);
405
321
  }
406
322
  getSiteTitle(locals) {
@@ -466,10 +382,12 @@ var Controllers;
466
382
  * @deprecated Use `sendResp` instead.
467
383
  */
468
384
  apiFail(req, res, statusCode = 500, errorResponse) {
469
- const displayErrors = [{
385
+ const displayErrors = [
386
+ {
470
387
  title: errorResponse?.message ?? 'An error has occurred',
471
- detail: errorResponse?.details
472
- }];
388
+ detail: errorResponse?.details,
389
+ },
390
+ ];
473
391
  return this.sendResp(req, res, { status: statusCode, displayErrors, headers: this.getNoCacheHeaders() });
474
392
  }
475
393
  /**
@@ -509,13 +427,16 @@ var Controllers;
509
427
  getApiVersion(req) {
510
428
  const defaultVersion = model_1.ApiVersion.VERSION_1_0;
511
429
  const qs = req.query;
512
- const qsKey = "apiVersion";
430
+ const qsKey = 'apiVersion';
513
431
  const qsKeyLower = qsKey.toLowerCase();
514
432
  const headers = req.headers;
515
- const headerKey = "X-ReDBox-Api-Version";
433
+ const headerKey = 'X-ReDBox-Api-Version';
516
434
  const headerKeyLower = headerKey.toLowerCase();
517
435
  const qsValue = (_.get(qs, qsKey) ?? _.get(qs, qsKeyLower))?.toString()?.trim()?.toLowerCase();
518
- const headerValue = (_.get(headers, headerKey) ?? _.get(headers, headerKeyLower))?.toString()?.trim()?.toLowerCase();
436
+ const headerValue = (_.get(headers, headerKey) ?? _.get(headers, headerKeyLower))
437
+ ?.toString()
438
+ ?.trim()
439
+ ?.toLowerCase();
519
440
  if (qsValue && headerValue && qsValue !== headerValue) {
520
441
  sails.log.error(`If API version is provided in querystring (${qsValue}) and HTTP header (${headerValue}), they must match. ` +
521
442
  `Using default API version (${defaultVersion}).`);
@@ -560,16 +481,35 @@ var Controllers;
560
481
  sendResp(req, res, buildResponse) {
561
482
  const apiVersion = this.getApiVersion(req);
562
483
  // Destructure build response properties and set defaults.
563
- const { format = "json", data: suppliedData, headers = {}, errors = [], displayErrors = [], meta = {}, prehydrate = undefined, v1 = null, } = buildResponse ?? {};
484
+ const { format = 'json', data: suppliedData, headers = {}, errors = [], displayErrors = [], meta = {}, prehydrate = undefined, v1 = null, chronicle = {}, } = buildResponse ?? {};
564
485
  const data = suppliedData === undefined ? {} : suppliedData;
565
486
  // Response status defaults to 200.
566
487
  let { status = 200 } = buildResponse ?? {};
567
488
  // Collect and process the errors recursively
568
- const { collectedErrors, collectedDisplayErrors } = this.collectAndLogErrors(errors, displayErrors);
489
+ const chronicleRunning = RequestChronicle_1.RequestChronicleHelper.existing(req)?.isRunning === true;
490
+ const { collectedErrors, collectedDisplayErrors } = this.collectAndLogErrors(errors, displayErrors, !chronicleRunning);
569
491
  this.ensureDisplayErrors(collectedErrors, collectedDisplayErrors);
570
492
  status = this.resolveResponseStatus(status, collectedDisplayErrors);
571
493
  this.applyResponseHeaders(res, headers);
572
494
  this.applyResponseStatus(res, status);
495
+ // Record the errors in the request chronicle, which is logged when the request finishes.
496
+ this.updateChronicle(req, {
497
+ ...chronicle,
498
+ ...(collectedDisplayErrors.length > 0
499
+ ? {
500
+ // Slice before mapping, as the array may be large; the count is kept.
501
+ displayErrorCount: collectedDisplayErrors.length,
502
+ displayErrors: collectedDisplayErrors
503
+ .slice(0, RequestChronicle_1.RequestChronicleLimits.maxArrayItems)
504
+ .map(({ status, code, title, detail }) => ({
505
+ status,
506
+ code,
507
+ title,
508
+ detail,
509
+ })),
510
+ }
511
+ : {}),
512
+ }, chronicleRunning ? collectedErrors : []);
573
513
  if (status === 304) {
574
514
  sails.log.verbose('Send bodyless 304 response.');
575
515
  return res.end();
@@ -602,20 +542,91 @@ var Controllers;
602
542
  collectedDisplayErrors,
603
543
  },
604
544
  };
605
- sails.log.error("Unknown API version in sendResp", unknownSituation);
606
- return res.status(500).json({ errors: [{ detail: "Check server logs." }], meta: {} });
545
+ sails.log.error('Unknown API version in sendResp', unknownSituation);
546
+ return res.status(500).json({ errors: [{ detail: 'Check server logs.' }], meta: {} });
607
547
  }
608
- collectAndLogErrors(errors, displayErrors) {
548
+ /**
549
+ * Add details and errors to the request chronicle, which is logged when the request finishes.
550
+ * Values are sanitised and size-bounded, but prefer identifiers, counts, and codes over whole objects.
551
+ * @param req The sails request.
552
+ * @param info The details to add.
553
+ * @param errors The errors to add.
554
+ * @protected
555
+ */
556
+ updateChronicle(req, info, errors) {
557
+ try {
558
+ const rc = RequestChronicle_1.RequestChronicleHelper.existing(req);
559
+ if (rc === undefined) {
560
+ // No request chronicle (e.g. socket or virtual requests): ignore the details, but don't lose errors.
561
+ for (const error of errors ?? []) {
562
+ sails.log.error((0, RequestChronicle_1.toChronicleLogRecord)({ error: (0, RequestChronicle_1.toChronicleError)(error) }), 'Error recorded without a request chronicle.');
563
+ }
564
+ return;
565
+ }
566
+ rc.addInfo(info ?? {});
567
+ (errors ?? []).forEach(error => rc.addError(error));
568
+ }
569
+ catch {
570
+ try {
571
+ sails.log.warn('Could not update the request chronicle.');
572
+ }
573
+ catch {
574
+ // Recording details must never break the request.
575
+ }
576
+ }
577
+ }
578
+ /**
579
+ * Record the result of work that is not awaited before the response is sent, such as an audit event.
580
+ * If the work finishes after the response, its result is logged separately with the request id,
581
+ * so failures are never discarded.
582
+ * @param req The sails request.
583
+ * @param operation A short name for the operation, used as the request chronicle key.
584
+ * @param work The work.
585
+ * @protected
586
+ */
587
+ recordBackgroundOperation(req, operation, work) {
588
+ // Capture the helper now, in case the request options change before the work finishes.
589
+ const rc = RequestChronicle_1.RequestChronicleHelper.existing(req);
590
+ const onResult = (error) => {
591
+ try {
592
+ if (rc !== undefined) {
593
+ rc.addOperationResult(operation, error);
594
+ }
595
+ else if (error !== undefined) {
596
+ const name = (0, RequestChronicle_1.safeChronicleText)(operation, 100);
597
+ sails.log.error((0, RequestChronicle_1.toChronicleLogRecord)({ operation: name, error: (0, RequestChronicle_1.toChronicleError)(error) }), `Operation '${name}' failed.`);
598
+ }
599
+ }
600
+ catch {
601
+ try {
602
+ sails.log.warn('Could not record the result of a background operation.');
603
+ }
604
+ catch {
605
+ // Recording the result must never cause an unhandled rejection.
606
+ }
607
+ }
608
+ };
609
+ try {
610
+ Promise.resolve(work).then(() => onResult(), (error) => onResult(error ?? new Error('Background operation failed')));
611
+ }
612
+ catch (error) {
613
+ onResult(error);
614
+ }
615
+ }
616
+ collectAndLogErrors(errors, displayErrors, logErrors) {
609
617
  const { errors: collectedErrors, displayErrors: collectedDisplayErrors } = model_1.RBValidationError.collectErrors(errors, displayErrors);
610
- for (const error of collectedErrors) {
611
- sails.log.error(`Collected error in sendResp:`, error);
618
+ if (logErrors) {
619
+ // Without a running request chronicle, log the errors immediately so they are not lost.
620
+ for (const error of collectedErrors) {
621
+ sails.log.error(`Collected error in sendResp:`, error);
622
+ }
612
623
  }
613
624
  return { collectedErrors, collectedDisplayErrors };
614
625
  }
615
626
  ensureDisplayErrors(collectedErrors, collectedDisplayErrors) {
616
627
  if (collectedErrors.length > 0 && collectedDisplayErrors.length === 0) {
617
628
  // If there are any errors, there must be at least one display error to show the user.
618
- collectedDisplayErrors.push({ code: 'server-error', status: "500" });
629
+ collectedDisplayErrors.push({ code: 'server-error', status: '500' });
619
630
  }
620
631
  const errorsMsg = `${collectedErrors.length} ${collectedErrors.length === 1 ? 'error' : 'errors'}`;
621
632
  const displayErrorsMsg = `display ${collectedDisplayErrors.length} ${collectedDisplayErrors.length === 1 ? 'error' : 'errors'}`;
@@ -630,7 +641,7 @@ var Controllers;
630
641
  statuses.push(status);
631
642
  }
632
643
  statuses.push(...collectedDisplayErrors
633
- .map(i => i?.status ? parseInt(i?.status?.toString()) : 0)
644
+ .map(i => (i?.status ? parseInt(i?.status?.toString()) : 0))
634
645
  .filter(i => Number.isFinite(i)));
635
646
  if (statuses.length > 0) {
636
647
  // Note that Math.max has a maximum number of parameters, which a very long array (10,000+) could exceed.
@@ -710,9 +721,7 @@ var Controllers;
710
721
  if (Object.getOwnPropertySymbols(value).length > 0) {
711
722
  return false;
712
723
  }
713
- return Object.values(Object.getOwnPropertyDescriptors(value)).every(descriptor => descriptor.enumerable === true &&
714
- 'value' in descriptor &&
715
- this.isJsonSafeValue(descriptor.value, ancestors));
724
+ return Object.values(Object.getOwnPropertyDescriptors(value)).every(descriptor => descriptor.enumerable === true && 'value' in descriptor && this.isJsonSafeValue(descriptor.value, ancestors));
716
725
  }
717
726
  finally {
718
727
  ancestors.delete(value);
@@ -720,8 +729,10 @@ var Controllers;
720
729
  }
721
730
  isRawJsonObject(value) {
722
731
  try {
723
- return value !== null && typeof value === 'object' && !Array.isArray(value) &&
724
- this.isJsonSafeValue(value, new Set());
732
+ return (value !== null &&
733
+ typeof value === 'object' &&
734
+ !Array.isArray(value) &&
735
+ this.isJsonSafeValue(value, new Set()));
725
736
  }
726
737
  catch {
727
738
  return false;
@@ -734,7 +745,7 @@ var Controllers;
734
745
  bodyKind: data === null ? 'null' : Array.isArray(data) ? 'array' : typeof data,
735
746
  });
736
747
  res.set('Content-Type', 'application/json');
737
- return res.status(500).json({ errors: [{ detail: "Check server logs." }], meta: {} });
748
+ return res.status(500).json({ errors: [{ detail: 'Check server logs.' }], meta: {} });
738
749
  }
739
750
  res.set('Content-Type', mediaType);
740
751
  sails.log.verbose(`Send raw JSON response with media type ${mediaType}.`);
@@ -769,10 +780,10 @@ var Controllers;
769
780
  const errorResponse = new model_1.APIErrorResponse();
770
781
  if (collectedDisplayErrors.length === 1) {
771
782
  const displayError = collectedDisplayErrors[0] ?? {};
772
- const title = displayError.title?.toString()?.trim() || displayError.code?.toString()?.trim() || "";
773
- const detail = displayError.detail?.toString()?.trim() || "";
783
+ const title = displayError.title?.toString()?.trim() || displayError.code?.toString()?.trim() || '';
784
+ const detail = displayError.detail?.toString()?.trim() || '';
774
785
  if (title || detail) {
775
- errorResponse.message = title || detail || "An error occurred";
786
+ errorResponse.message = title || detail || 'An error occurred';
776
787
  if (title && detail) {
777
788
  errorResponse.details = detail;
778
789
  }
@@ -780,14 +791,14 @@ var Controllers;
780
791
  else {
781
792
  errorResponse.message = model_1.RBValidationError.displayMessage({
782
793
  t: TranslationService,
783
- displayErrors: collectedDisplayErrors
794
+ displayErrors: collectedDisplayErrors,
784
795
  });
785
796
  }
786
797
  }
787
798
  else {
788
799
  errorResponse.message = model_1.RBValidationError.displayMessage({
789
800
  t: TranslationService,
790
- displayErrors: collectedDisplayErrors
801
+ displayErrors: collectedDisplayErrors,
791
802
  });
792
803
  }
793
804
  return errorResponse;
@@ -795,9 +806,9 @@ var Controllers;
795
806
  formatV2DisplayErrors(collectedDisplayErrors) {
796
807
  const t = TranslationService.t;
797
808
  return collectedDisplayErrors.map(displayError => {
798
- const code = displayError.code?.toString()?.trim() || "";
799
- let title = displayError.title?.toString()?.trim() || "";
800
- const detail = displayError.detail?.toString()?.trim() || "";
809
+ const code = displayError.code?.toString()?.trim() || '';
810
+ let title = displayError.title?.toString()?.trim() || '';
811
+ const detail = displayError.detail?.toString()?.trim() || '';
801
812
  if (code && !title && !detail) {
802
813
  title = code;
803
814
  }
@@ -839,8 +850,8 @@ var Controllers;
839
850
  collectedDisplayErrors,
840
851
  },
841
852
  };
842
- sails.log.error("Unknown v1 situation in sendResp", unknownSituation);
843
- return res.status(500).json({ errors: [{ detail: "Check server logs." }], meta: meta || {} });
853
+ sails.log.error('Unknown v1 situation in sendResp', unknownSituation);
854
+ return res.status(500).json({ errors: [{ detail: 'Check server logs.' }], meta: meta || {} });
844
855
  }
845
856
  handleV2Response(res, format, status, collectedErrors, collectedDisplayErrors, data, meta, prehydrate) {
846
857
  // Success path for v2
@@ -863,7 +874,7 @@ var Controllers;
863
874
  format,
864
875
  status,
865
876
  data,
866
- meta
877
+ meta,
867
878
  },
868
879
  errors: {
869
880
  collectedErrors,
@@ -871,13 +882,13 @@ var Controllers;
871
882
  },
872
883
  };
873
884
  sails.log.error(`Unknown v2 situation in sendResp`, unknownSituation);
874
- return res.status(500).json({ errors: [{ detail: "Check server logs." }], meta: meta || {} });
885
+ return res.status(500).json({ errors: [{ detail: 'Check server logs.' }], meta: meta || {} });
875
886
  }
876
887
  getNoCacheHeaders() {
877
888
  return {
878
889
  'Cache-control': 'no-cache, private',
879
- 'Pragma': 'no-cache',
880
- 'Expires': '0'
890
+ Pragma: 'no-cache',
891
+ Expires: '0',
881
892
  };
882
893
  }
883
894
  setNoCacheHeaders(_req, res) {
@@ -887,4 +898,4 @@ var Controllers;
887
898
  Core.Controller = Controller;
888
899
  })(Core = Controllers.Core || (Controllers.Core = {}));
889
900
  })(Controllers || (exports.Controllers = Controllers = {}));
890
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29yZUNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29yZUNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMENBQTRCO0FBQzVCLGdEQUF3QjtBQUV4QixxREFBNkU7QUFDN0UsNkVBQThFO0FBQzlFLHlEQUE0RDtBQUU1RCxtQ0FRaUI7QUFNakIsSUFBaUIsV0FBVyxDQSsrQjNCO0FBLytCRCxXQUFpQixXQUFXO0lBQUMsSUFBQSxJQUFJLENBKytCaEM7SUEvK0I0QixXQUFBLElBQUk7UUFJL0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQWtCRztRQUNILE1BQWEsVUFBVTtZQUVyQjs7OztlQUlHO1lBQ08sT0FBTyxHQUE0QixFQUFFLENBQUM7WUFFaEQ7O2VBRUc7WUFDTyxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7WUFFMUM7OztlQUdHO1lBQ08sTUFBTSxHQUFXLFNBQVMsQ0FBQztZQUVyQzs7ZUFFRztZQUNPLE9BQU8sR0FBVyxTQUFTLENBQUM7WUFFdEM7O2VBRUc7WUFDTyxtQkFBbUIsR0FBVyxjQUFjLENBQUM7WUFFdkQ7OztlQUdHO1lBQ0ssdUJBQXVCLEdBQWE7Z0JBQzFDLGtDQUFrQztnQkFDbEMsU0FBUzthQUNWLENBQUM7WUFFRixvQ0FBb0M7WUFDNUIsT0FBTyxHQUFtQixJQUFJLENBQUM7WUFFL0IsaUJBQWlCO2dCQUN2QixNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBZSxFQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQy9ELE1BQU0sSUFBSSxHQUFHLEdBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztnQkFDbkMsT0FBTztvQkFDTCxLQUFLLEVBQUUsR0FBRztvQkFDVixPQUFPLEVBQUUsR0FBRztvQkFDWixLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQWUsRUFB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
901
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29yZUNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29yZUNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMENBQTRCO0FBQzVCLGdEQUF3QjtBQUN4QixxREFBNkU7QUFDN0UsNkVBQThFO0FBQzlFLHlEQUE0RDtBQUU1RCxtQ0FRaUI7QUFDakIsbUVBTXNDO0FBQ3RDLHlDQUFzQztBQUV0QyxJQUFpQixXQUFXLENBNmlDM0I7QUE3aUNELFdBQWlCLFdBQVc7SUFBQyxJQUFBLElBQUksQ0E2aUNoQztJQTdpQzRCLFdBQUEsSUFBSTtRQUcvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBa0JHO1FBQ0gsTUFBYSxVQUFXLFNBQVEsbUJBQVE7WUFDdEM7Ozs7ZUFJRztZQUNPLE9BQU8sR0FBNEIsRUFBRSxDQUFDO1lBRWhEOzs7ZUFHRztZQUNPLE1BQU0sR0FBVyxTQUFTLENBQUM7WUFFckM7O2VBRUc7WUFDTyxPQUFPLEdBQVcsU0FBUyxDQUFDO1lBRXRDOztlQUVHO1lBQ08sbUJBQW1CLEdBQVcsY0FBYyxDQUFDO1lBRXZEOzs7ZUFHRztZQUNLLHVCQUF1QixHQUFhO2dCQUMxQyxrQ0FBa0M7Z0JBQ2xDLFNBQVM7YUFDVixDQUFDO1lBRVEsc0JBQXNCLEdBQVcsWUFBWSxDQUFDO1lBRXhEOzs7O2VBSUc7WUFFSDs7Ozs7ZUFLRztZQUNJLE9BQU87Z0JBQ1osbURBQW1EO2dCQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUMzRSxNQUFNLGVBQWUsR0FBNEIsRUFBRSxDQUFDO2dCQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUErQixDQUFDO2dCQUVuRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFD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