@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
@@ -81,7 +81,9 @@ var Controllers;
81
81
  }
82
82
  req.session.redirUrl = url;
83
83
  }
84
- return res.redirect(`${BrandingService.getBrandAndPortalPath(req)}/${sails.config.auth.loginPath}`);
84
+ const redirLoginUrl = `${BrandingService.getBrandAndPortalPath(req)}/${sails.config.auth.loginPath}`;
85
+ this.updateChronicle(req, { userRedirLoginUrl: redirLoginUrl });
86
+ return res.redirect(redirLoginUrl);
85
87
  }
86
88
  redirPostLogin(req, res) {
87
89
  res.redirect(this.getPostLoginUrl(req, res));
@@ -100,7 +102,7 @@ var Controllers;
100
102
  const postLoginRedir = _.get(authConfig, 'local.postLoginRedir', 'home');
101
103
  postLoginUrl = `${BrandingService.getBrandAndPortalPath(req)}/${postLoginRedir}`;
102
104
  }
103
- sails.log.debug(`post login url: ${postLoginUrl}`);
105
+ this.updateChronicle(req, { userPostLoginUrl: postLoginUrl });
104
106
  return postLoginUrl;
105
107
  }
106
108
  logout(req, res) {
@@ -114,114 +116,184 @@ var Controllers;
114
116
  redirUrl = _.isEmpty(sails.config.auth.postLogoutRedir) ? `${BrandingService.getBrandAndPortalPath(req)}/home` : sails.config.auth.postLogoutRedir;
115
117
  }
116
118
  const user = req.session.user ? req.session.user : req.user;
119
+ this.updateChronicle(req, { ...this.extractUserDetailsForChronicle(user) });
120
+ const that = this;
121
+ if (typeof req.logout !== 'function') {
122
+ that.updateChronicle(req, { userLogoutSuccess: false });
123
+ return res.serverError();
124
+ }
117
125
  req.logout(function (err) {
118
126
  if (err) {
127
+ that.updateChronicle(req, { userLogoutSuccess: false }, [err]);
119
128
  return res.status(500).send('Logout failed');
120
129
  }
121
- UsersService.addUserAuditEvent(user, "logout", requestDetails).then(_response => {
122
- sails.log.debug(`User logout audit event created: ${_.isEmpty(user) ? '' : user.id}`);
123
- }).catch(err => {
124
- sails.log.error(`User logout audit event failed`);
125
- sails.log.error(err);
126
- });
130
+ that.updateChronicle(req, { userLogoutSuccess: true });
131
+ // The audit event is not awaited; a failure after the response is logged separately with the request id.
132
+ that.recordBackgroundOperation(req, 'userAuditEventLogout', UsersService.addUserAuditEvent(user, "logout", requestDetails));
127
133
  // instead of destroying the session, as per M$ directions, we only unset the user, so branding, etc. is retained in the session
128
134
  _.unset(req.session, 'user');
135
+ that.updateChronicle(req, { userPostLogoutUrl: redirUrl });
129
136
  return res.redirect(redirUrl);
130
137
  });
131
138
  }
132
139
  info(req, res) {
133
140
  const user = req.user;
141
+ this.updateChronicle(req, { userInfoSuccess: true, ...this.extractUserDetailsForChronicle(user) });
134
142
  delete user.token;
135
143
  return res.json({
136
144
  user: user
137
145
  });
138
146
  }
139
147
  update(req, res) {
148
+ this.updateChronicle(req, { ...this.extractUserDetailsForChronicle(req.user) });
140
149
  let userid;
141
150
  if (req.isAuthenticated()) {
142
151
  userid = req.user.id;
143
152
  }
144
153
  else {
145
- return this.sendResp(req, res, { data: { status: false, message: "No current user session. Please login." }, headers: this.getNoCacheHeaders() });
154
+ return this.sendResp(req, res, {
155
+ data: { status: false, message: "No current user session. Please login." },
156
+ headers: this.getNoCacheHeaders(),
157
+ chronicle: { userDetailsUpdateSuccess: false, userChangeRequestMissingSession: true },
158
+ });
146
159
  }
147
160
  if (!userid) {
148
- return this.sendResp(req, res, { data: { status: false, message: "Error: unable to get user ID." }, headers: this.getNoCacheHeaders() });
161
+ return this.sendResp(req, res, {
162
+ data: { status: false, message: "Error: unable to get user ID." },
163
+ headers: this.getNoCacheHeaders(),
164
+ chronicle: { userDetailsUpdateSuccess: false, userChangeRequestMissingUserId: true },
165
+ });
149
166
  }
150
167
  const body = (req.body ?? {});
151
168
  const details = body.details;
152
169
  if (!details) {
153
- return this.sendResp(req, res, { data: { status: false, message: "Error: user details not specified" }, headers: this.getNoCacheHeaders() });
170
+ return this.sendResp(req, res, {
171
+ data: { status: false, message: "Error: user details not specified" },
172
+ headers: this.getNoCacheHeaders(),
173
+ chronicle: { userDetailsUpdateSuccess: false, userChangeRequestMissingDetails: true },
174
+ });
154
175
  }
155
176
  let name;
156
177
  if (details.name) {
157
178
  name = details.name;
158
179
  }
159
- ;
160
180
  if (name) {
161
181
  UsersService.updateUserDetails(userid, name, details.email, details.password).subscribe(_user => {
162
- this.sendResp(req, res, { data: { status: true, message: "Profile updated successfully." }, headers: this.getNoCacheHeaders() });
182
+ this.sendResp(req, res, {
183
+ data: { status: true, message: "Profile updated successfully." },
184
+ headers: this.getNoCacheHeaders(),
185
+ chronicle: { userDetailsUpdateSuccess: true }
186
+ });
163
187
  }, error => {
164
- sails.log.error("Failed to update user profile:");
165
- sails.log.error(error);
166
- this.sendResp(req, res, { data: { status: false, message: error.message }, headers: this.getNoCacheHeaders() });
188
+ // Keep the existing response; the error is only recorded in the request chronicle.
189
+ this.updateChronicle(req, {}, [error]);
190
+ this.sendResp(req, res, {
191
+ data: { status: false, message: error.message },
192
+ headers: this.getNoCacheHeaders(),
193
+ chronicle: { userDetailsUpdateSuccess: false },
194
+ });
167
195
  });
168
196
  }
169
197
  else {
170
- return this.sendResp(req, res, { data: { status: false, message: "Error: name must not be null" }, headers: this.getNoCacheHeaders() });
198
+ return this.sendResp(req, res, {
199
+ data: { status: false, message: "Error: name must not be null" },
200
+ headers: this.getNoCacheHeaders(),
201
+ chronicle: { userDetailsUpdateSuccess: false, userChangeRequestMissingName: true },
202
+ });
171
203
  }
172
204
  return;
173
205
  }
174
206
  generateUserKey(req, res) {
207
+ this.updateChronicle(req, { ...this.extractUserDetailsForChronicle(req.user) });
175
208
  let userid;
176
209
  if (req.isAuthenticated()) {
177
210
  userid = req.user.id;
178
211
  }
179
212
  else {
180
- this.sendResp(req, res, { data: { status: false, message: "No current user session. Please login." }, headers: this.getNoCacheHeaders() });
213
+ this.sendResp(req, res, {
214
+ data: { status: false, message: "No current user session. Please login." },
215
+ headers: this.getNoCacheHeaders(),
216
+ chronicle: { userKeyUpdateSuccess: false, userChangeRequestMissingSession: true },
217
+ });
181
218
  }
182
219
  if (userid) {
183
220
  const uuid = (0, uuid_1.v4)();
184
221
  UsersService.setUserKey(userid, uuid).subscribe(_user => {
185
- this.sendResp(req, res, { data: { status: true, message: uuid }, headers: this.getNoCacheHeaders() });
222
+ this.sendResp(req, res, {
223
+ data: { status: true, message: uuid },
224
+ headers: this.getNoCacheHeaders(),
225
+ chronicle: { userKeyUpdateSuccess: true }
226
+ });
186
227
  }, error => {
187
- sails.log.error("Failed to set UUID:");
188
- sails.log.error(error);
189
- this.sendResp(req, res, { data: { status: false, message: error.message }, headers: this.getNoCacheHeaders() });
228
+ // Keep the existing response; the error is only recorded in the request chronicle.
229
+ this.updateChronicle(req, {}, [error]);
230
+ this.sendResp(req, res, {
231
+ data: { status: false, message: error.message },
232
+ headers: this.getNoCacheHeaders(),
233
+ chronicle: { userKeyUpdateSuccess: false },
234
+ });
190
235
  });
191
236
  }
192
237
  else {
193
- return this.sendResp(req, res, { data: { status: false, message: "Error: unable to get user ID." }, headers: this.getNoCacheHeaders() });
238
+ return this.sendResp(req, res, {
239
+ data: { status: false, message: "Error: unable to get user ID." },
240
+ headers: this.getNoCacheHeaders(),
241
+ chronicle: { userKeyUpdateSuccess: false, userChangeRequestMissingUserId: true },
242
+ });
194
243
  }
195
244
  return;
196
245
  }
197
246
  revokeUserKey(req, res) {
247
+ this.updateChronicle(req, { ...this.extractUserDetailsForChronicle(req.user) });
198
248
  let userid;
199
249
  if (req.isAuthenticated()) {
200
250
  userid = req.user.id;
201
251
  }
202
252
  else {
203
- this.sendResp(req, res, { data: { status: false, message: "No current user session. Please login." }, headers: this.getNoCacheHeaders() });
253
+ this.sendResp(req, res, {
254
+ data: { status: false, message: "No current user session. Please login." },
255
+ headers: this.getNoCacheHeaders(),
256
+ chronicle: { userKeyRevokeSuccess: false, userChangeRequestMissingSession: true },
257
+ });
204
258
  }
205
259
  if (userid) {
206
260
  const uuid = null;
207
261
  UsersService.setUserKey(userid, uuid).subscribe(_user => {
208
- this.sendResp(req, res, { data: { status: true, message: "UUID revoked successfully" }, headers: this.getNoCacheHeaders() });
262
+ this.sendResp(req, res, {
263
+ data: { status: true, message: "UUID revoked successfully" },
264
+ headers: this.getNoCacheHeaders(),
265
+ chronicle: { userKeyRevokeSuccess: true },
266
+ });
209
267
  }, error => {
210
- sails.log.error("Failed to revoke UUID:");
211
- sails.log.error(error);
212
- this.sendResp(req, res, { data: { status: false, message: error.message }, headers: this.getNoCacheHeaders() });
268
+ // Keep the existing response; the error is only recorded in the request chronicle.
269
+ this.updateChronicle(req, {}, [error]);
270
+ this.sendResp(req, res, {
271
+ data: { status: false, message: error.message },
272
+ headers: this.getNoCacheHeaders(),
273
+ chronicle: { userKeyRevokeSuccess: false },
274
+ });
213
275
  });
214
276
  }
215
277
  else {
216
- return this.sendResp(req, res, { data: { status: false, message: "Error: unable to get user ID." }, headers: this.getNoCacheHeaders() });
278
+ return this.sendResp(req, res, {
279
+ data: { status: false, message: "Error: unable to get user ID." },
280
+ headers: this.getNoCacheHeaders(),
281
+ chronicle: { userKeyRevokeSuccess: false, userChangeRequestMissingUserId: true },
282
+ });
217
283
  }
218
284
  return;
219
285
  }
220
286
  localLogin(req, res) {
221
287
  const that = this;
288
+ this.updateChronicle(req, { userLoginType: 'local' });
222
289
  const passport = sails.config.passport;
223
290
  passport.authenticate('local', function (err, user, info) {
291
+ that.updateChronicle(req, {
292
+ ...(user === false ? {} : that.extractUserDetailsForChronicle(user)),
293
+ userLoginMessage: that.extractLoginMessage(info),
294
+ }, err ? [err] : []);
224
295
  if ((err) || (!user)) {
296
+ that.updateChronicle(req, { userLoginSuccess: false });
225
297
  return res.send({
226
298
  message: info.message,
227
299
  user: user
@@ -230,17 +302,19 @@ var Controllers;
230
302
  const requestDetails = new index_1.RequestDetails(req);
231
303
  // We don't want to store the password!
232
304
  delete requestDetails.body.password;
233
- UsersService.addUserAuditEvent(user, "login", requestDetails).then(_response => {
234
- sails.log.debug(`User login audit event created for local login: ${_.isEmpty(user) ? '' : user.id}`);
235
- }).catch(err => {
236
- sails.log.error(`User login audit event created for local login failed`);
237
- sails.log.error(err);
238
- });
305
+ // The audit event is not awaited; a failure after the response is logged separately with the request id.
306
+ that.recordBackgroundOperation(req, 'userAuditEventLogin', UsersService.addUserAuditEvent(user, "login", requestDetails));
239
307
  const isAjax = req.headers && req.headers['x-source'] == 'jsclient';
308
+ if (typeof req.logIn !== 'function') {
309
+ return res.serverError();
310
+ }
240
311
  return req.logIn(user, function (err) {
241
- if (err)
242
- res.send(err);
312
+ if (err) {
313
+ that.updateChronicle(req, { userLoginSuccess: false }, [err]);
314
+ return res.send(err);
315
+ }
243
316
  // login success
317
+ that.updateChronicle(req, { userLoginSuccess: true, userLoginIsAjax: isAjax });
244
318
  // redir if api header call is not found
245
319
  if (isAjax) {
246
320
  return that.sendResp(req, res, {
@@ -257,22 +331,21 @@ var Controllers;
257
331
  })(req, res);
258
332
  }
259
333
  openidConnectLogin(req, res) {
334
+ this.updateChronicle(req, { userLoginType: 'oidc' });
260
335
  let passportIdentifier = 'oidc';
261
336
  if (!_.isEmpty(req.param('id'))) {
262
337
  passportIdentifier = `oidc-${req.param('id')}`;
263
338
  }
339
+ this.updateChronicle(req, { userLoginIdentifier: passportIdentifier });
264
340
  const that = this;
265
341
  const passport = sails.config.passport;
266
342
  passport.authenticate(passportIdentifier, function (err, user, info) {
267
- sails.log.verbose("At openIdConnectAuth Controller, verify...");
268
- sails.log.verbose("Error:");
269
- sails.log.verbose(err);
270
- sails.log.verbose("Info:");
271
- sails.log.verbose(info);
272
- sails.log.verbose("User:");
273
- sails.log.verbose(user);
343
+ that.updateChronicle(req, {
344
+ ...(user === false ? {} : that.extractUserDetailsForChronicle(user)),
345
+ userLoginMessage: that.extractLoginMessage(info),
346
+ }, err ? [err] : []);
274
347
  if (!_.isEmpty(err) || _.isUndefined(user) || _.isEmpty(user) || user == false) {
275
- sails.log.error(`OpenId Connect Login failed!`);
348
+ that.updateChronicle(req, { userLoginSuccess: false });
276
349
  // means the provider has authenticated the user, but has been rejected, redirect to catch-all
277
350
  if (!_.isEmpty(info) && !_.isString(info) && _.isObject(info)) {
278
351
  info = JSON.stringify(info);
@@ -291,6 +364,7 @@ var Controllers;
291
364
  message: "error-auth",
292
365
  detailedMessage: "authorized-email-denied",
293
366
  };
367
+ that.updateChronicle(req, { userLoginAuthorizedEmailDenied: true });
294
368
  return res.forbidden(req.session['data'], '403');
295
369
  }
296
370
  // Handle OPError from openid-client (like invalid_grant, session not found, etc.)
@@ -299,12 +373,13 @@ var Controllers;
299
373
  message: "error-auth",
300
374
  detailedMessage: "There was an issue with your user credentials, please try again.",
301
375
  };
376
+ that.updateChronicle(req, { userLoginCredentialsProblem: true });
302
377
  return res.forbidden(req.session['data']);
303
378
  }
304
379
  const errorMessageDecoded = that.decodeErrorMappings(oidcConfig, errorMessage);
305
- sails.log.verbose('After decodeErrorMappings - errorMessageDecoded: ' + JSON.stringify(errorMessageDecoded));
306
380
  if (!_.isEmpty(errorMessageDecoded)) {
307
381
  req.session['data'] = errorMessageDecoded;
382
+ that.updateChronicle(req, { userLoginErrorMessage: errorMessageDecoded });
308
383
  return res.serverError();
309
384
  }
310
385
  const errStr = _.isEmpty(err) ? '' : String(err);
@@ -316,31 +391,35 @@ var Controllers;
316
391
  "message": 'error-auth',
317
392
  "detailedMessage": `${errStr}${info}`
318
393
  };
394
+ that.updateChronicle(req, { userLoginAuthError: true });
319
395
  }
320
396
  const url = `${BrandingService.getFullPath(req)}/home`;
397
+ that.updateChronicle(req, { userPostLoginUrl: url });
321
398
  return res.redirect(url);
322
399
  }
323
400
  const requestDetails = new index_1.RequestDetails(req);
324
- UsersService.addUserAuditEvent(user, "login", requestDetails).then(_response => {
325
- sails.log.debug(`User login audit event created for OIDC login: ${_.isEmpty(user) ? '' : user.id}`);
326
- }).catch(err => {
327
- sails.log.error(`User login audit event created for OIDC login failed`);
328
- sails.log.error(err);
329
- });
401
+ // The audit event is not awaited; a failure after the response is logged separately with the request id.
402
+ that.recordBackgroundOperation(req, 'userAuditEventLogin', UsersService.addUserAuditEvent(user, "login", requestDetails));
403
+ if (typeof req.logIn !== 'function') {
404
+ return res.serverError();
405
+ }
330
406
  req.logIn(user, function (err) {
331
- if (err)
332
- res.send(err);
333
- sails.log.debug("OpenId Connect Login OK, redirecting...");
407
+ if (err) {
408
+ that.updateChronicle(req, { userLoginSuccess: false }, [err]);
409
+ return res.send(err);
410
+ }
411
+ that.updateChronicle(req, { userLoginSuccess: true });
334
412
  return sails.getActions()['user/redirpostlogin'](req, res);
335
413
  });
336
414
  })(req, res);
337
415
  }
338
416
  beginOidc(req, res, next) {
339
- sails.log.verbose(`At OIDC begin flow, redirecting...`);
417
+ this.updateChronicle(req, { userLoginType: 'oidc' });
340
418
  let passportIdentifier = 'oidc';
341
419
  if (!_.isEmpty(req.param('id'))) {
342
420
  passportIdentifier = `oidc-${req.param('id')}`;
343
421
  }
422
+ this.updateChronicle(req, { userLoginIdentifier: passportIdentifier });
344
423
  sails.config.passport.authenticate(passportIdentifier)(req, res, next);
345
424
  }
346
425
  decodeErrorMappings(options, errorMessage) {
@@ -449,17 +528,16 @@ var Controllers;
449
528
  return interpolationMap;
450
529
  }
451
530
  aafLogin(req, res) {
531
+ const that = this;
532
+ this.updateChronicle(req, { userLoginType: 'aaf' });
452
533
  const passport = sails.config.passport;
453
534
  passport.authenticate('aaf-jwt', function (err, user, info) {
454
- sails.log.verbose("At AAF Controller, verify...");
455
- sails.log.verbose("Error:");
456
- sails.log.verbose(err);
457
- sails.log.verbose("Info:");
458
- sails.log.verbose(info);
459
- sails.log.verbose("User:");
460
- sails.log.verbose(user);
535
+ that.updateChronicle(req, {
536
+ ...(user === false ? {} : that.extractUserDetailsForChronicle(user)),
537
+ userLoginMessage: that.extractLoginMessage(info),
538
+ }, err ? [err] : []);
461
539
  if ((err) || (!user)) {
462
- sails.log.error(err);
540
+ that.updateChronicle(req, { userLoginSuccess: false });
463
541
  // means the provider has authenticated the user, but has been rejected, redirect to catch-all
464
542
  const errorMessage = _.get(err, 'message', err?.toString() ?? '');
465
543
  if (errorMessage === "authorized-email-denied") {
@@ -467,6 +545,7 @@ var Controllers;
467
545
  message: "error-auth",
468
546
  detailedMessage: "authorized-email-denied",
469
547
  };
548
+ that.updateChronicle(req, { userLoginAuthorizedEmailDenied: true });
470
549
  return res.forbidden();
471
550
  }
472
551
  // from https://sailsjs.com/documentation/reference/response-res/res-server-error
@@ -478,19 +557,21 @@ var Controllers;
478
557
  "detailedMessage": `${err}${info}`
479
558
  };
480
559
  }
560
+ that.updateChronicle(req, { userLoginAuthError: true });
481
561
  return res.serverError();
482
562
  }
483
563
  const requestDetails = new index_1.RequestDetails(req);
484
- UsersService.addUserAuditEvent(user, "login", requestDetails).then(_response => {
485
- sails.log.debug(`User login audit event created for AAF login: ${_.isEmpty(user) ? '' : user.id}`);
486
- }).catch(err => {
487
- sails.log.error(`User login audit event created for AAF login failed`);
488
- sails.log.error(err);
489
- });
564
+ // The audit event is not awaited; a failure after the response is logged separately with the request id.
565
+ that.recordBackgroundOperation(req, 'userAuditEventLogin', UsersService.addUserAuditEvent(user, "login", requestDetails));
566
+ if (typeof req.logIn !== 'function') {
567
+ return res.serverError();
568
+ }
490
569
  req.logIn(user, function (err) {
491
- if (err)
492
- res.send(err);
493
- sails.log.debug("AAF Login OK, redirecting...");
570
+ if (err) {
571
+ that.updateChronicle(req, { userLoginSuccess: false }, [err]);
572
+ return res.send(err);
573
+ }
574
+ that.updateChronicle(req, { userLoginSuccess: true });
494
575
  return sails.getActions()['user/redirpostlogin'](req, res);
495
576
  });
496
577
  })(req, res);
@@ -508,12 +589,33 @@ var Controllers;
508
589
  username: u.username
509
590
  };
510
591
  });
511
- this.sendResp(req, res, { data: userArr, headers: this.getNoCacheHeaders() });
592
+ this.sendResp(req, res, {
593
+ data: userArr,
594
+ headers: this.getNoCacheHeaders(),
595
+ chronicle: { userFindSource: searchSource, userFindName: searchName },
596
+ });
512
597
  }, error => {
513
- this.sendResp(req, res, { data: error, headers: this.getNoCacheHeaders() });
598
+ // Keep the existing response; the error is only recorded in the request chronicle.
599
+ this.updateChronicle(req, {}, [error]);
600
+ this.sendResp(req, res, {
601
+ data: error,
602
+ headers: this.getNoCacheHeaders(),
603
+ chronicle: { userFindSource: searchSource, userFindName: searchName },
604
+ });
514
605
  });
515
606
  }
607
+ extractLoginMessage(info) {
608
+ // Only the message is recorded, as the authentication info may include provider tokens or claims.
609
+ return _.isString(info) ? info : info?.message;
610
+ }
611
+ extractUserDetailsForChronicle(user) {
612
+ return {
613
+ userId: user?.id,
614
+ userUsername: user?.username,
615
+ userType: user?.type,
616
+ };
617
+ }
516
618
  }
517
619
  Controllers.User = User;
518
620
  })(Controllers || (exports.Controllers = Controllers = {}));
519
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlcnMvVXNlckNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBGQUEwRjtBQUMxRixFQUFFO0FBQ0YsNkJBQTZCO0FBQzdCLDBCQUEwQjtBQUMxQixFQUFFO0FBQ0YsdUVBQXVFO0FBQ3ZFLHVFQUF1RTtBQUN2RSxvRUFBb0U7QUFDcEUsc0NBQXNDO0FBQ3RDLEVBQUU7QUFDRixrRUFBa0U7QUFDbEUsaUVBQWlFO0FBQ2pFLGdFQUFnRTtBQUNoRSwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLDBFQUEwRTtBQUMxRSwwRUFBMEU7QUFDMUUsOERBQThEOzs7QUFFOUQsK0JBQW9DO0FBRXBDLG9DQUlrQjtBQUNsQixnRUFBMkQ7QUFJM0QsSUFBaUIsV0FBVyxDQXFoQjNCO0FBcmhCRCxXQUFpQixXQUFXO0lBQzFCOzs7O09BSUc7SUFDSCxNQUFhLElBQUssU0FBUSxtQkFBVyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBRW5EOztXQUVHO1FBQ2dCLGdCQUFnQixHQUFhO1lBQzlDLE9BQU87WUFDUCxRQUFRO1lBQ1IsTUFBTTtZQUNOLG9CQUFvQjtZQUNwQixVQUFVO1lBQ1YsWUFBWTtZQUNaLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsaUJBQWlCO1lBQ2pCLFNBQVM7WUFDVCxRQUFRO1lBQ1IsU0FBUztZQUNULGlCQUFpQjtZQUNqQixlQUFlO1lBQ2YsTUFBTTtZQUNOLFdBQVc7U0FDWixDQUFDO1FBRUY7Ozs7V0FJRztRQUdIOzs7O1dBSUc7UUFFSDs7Ozs7V0FLRztRQUNJLEtBQUssQ0FBQyxHQUFjLEVBQUUsR0FBYztZQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVNLE9BQU8sQ0FBQyxH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
621
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlcnMvVXNlckNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBGQUEwRjtBQUMxRixFQUFFO0FBQ0YsNkJBQTZCO0FBQzdCLDBCQUEwQjtBQUMxQixFQUFFO0FBQ0YsdUVBQXVFO0FBQ3ZFLHVFQUF1RTtBQUN2RSxvRUFBb0U7QUFDcEUsc0NBQXNDO0FBQ3RDLEVBQUU7QUFDRixrRUFBa0U7QUFDbEUsaUVBQWlFO0FBQ2pFLGdFQUFnRTtBQUNoRSwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLDBFQUEwRTtBQUMxRSwwRUFBMEU7QUFDMUUsOERBQThEOzs7QUFFOUQsK0JBQW9DO0FBRXBDLG9DQUlrQjtBQUNsQixnRUFBMkQ7QUFJM0QsSUFBaUIsV0FBVyxDQTJvQjNCO0FBM29CRCxXQUFpQixXQUFXO0lBQzFCOzs7O09BSUc7SUFDSCxNQUFhLElBQUssU0FBUSxtQkFBVyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBRW5EOztXQUVHO1FBQ2dCLGdCQUFnQixHQUFhO1lBQzlDLE9BQU87WUFDUCxRQUFRO1lBQ1IsTUFBTTtZQUNOLG9CQUFvQjtZQUNwQixVQUFVO1lBQ1YsWUFBWTtZQUNaLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsaUJBQWlCO1lBQ2pCLFNBQVM7WUFDVCxRQUFRO1lBQ1IsU0FBUztZQUNULGlCQUFpQjtZQUNqQixlQUFlO1lBQ2YsTUFBTTtZQUNOLFdBQVc7U0FDWixDQUFDO1FBRUY7Ozs7V0FJRztRQUdIOzs7O1dBSUc7UUFFSDs7Ozs7V0FLRztRQUNJLEtBQUssQ0FBQyxHQUFjLEVBQUUsR0FBYztZQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVNLE9BQU8sQ0FBQyxH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
@@ -1,7 +1,6 @@
1
1
  import { Controllers as controllers } from '../CoreController';
2
2
  export declare namespace Controllers {
3
3
  class Vocabulary extends controllers.Core.Controller {
4
- private get brandingService();
5
4
  private resolveBrandingId;
6
5
  private asError;
7
6
  private parseNonNegativeIntegerParam;
@@ -1 +1 @@
1
- {"version":3,"file":"VocabularyController.d.ts","sourceRoot":"","sources":["../../src/controllers/VocabularyController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAO/D,yBAAiB,WAAW,CAAC;IAC3B,MAAa,UAAW,SAAQ,WAAW,CAAC,IAAI,CAAC,UAAU;QACzD,OAAO,KAAK,eAAe,GAK1B;QAED,OAAO,CAAC,iBAAiB;QAMzB,OAAO,CAAC,OAAO;QAIf,OAAO,CAAC,4BAA4B;QAWpC,OAAO,CAAC,QAAQ;QAOhB,OAAO,CAAC,aAAa;QAwDrB,OAAO,CAAC,qBAAqB;QA6D7B,OAAO,CAAC,qBAAqB;QA+D7B,UAAmB,gBAAgB,EAAE,MAAM,EAAE,CAS3C;QAEW,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAItC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QA6BnC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAclC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAarC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAcrC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAUrC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAerC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;KAkBjD;CACF"}
1
+ {"version":3,"file":"VocabularyController.d.ts","sourceRoot":"","sources":["../../src/controllers/VocabularyController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAO/D,yBAAiB,WAAW,CAAC;IAC3B,MAAa,UAAW,SAAQ,WAAW,CAAC,IAAI,CAAC,UAAU;QACzD,OAAO,CAAC,iBAAiB;QAIzB,OAAO,CAAC,OAAO;QAIf,OAAO,CAAC,4BAA4B;QAWpC,OAAO,CAAC,QAAQ;QAOhB,OAAO,CAAC,aAAa;QAwDrB,OAAO,CAAC,qBAAqB;QA6D7B,OAAO,CAAC,qBAAqB;QA+D7B,UAAmB,gBAAgB,EAAE,MAAM,EAAE,CAS3C;QAEW,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAItC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QA6BnC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAelC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAarC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAerC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAWrC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;QAgBrC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;KAoBjD;CACF"}