@researchdatabox/redbox-core 0.0.0-bootstrap.0 → 0.0.1-beta.10173

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 (649) hide show
  1. package/dist/CoreController.d.ts +4 -0
  2. package/dist/CoreController.d.ts.map +1 -1
  3. package/dist/CoreController.js +68 -23
  4. package/dist/CoreService.d.ts +1 -1
  5. package/dist/CoreService.d.ts.map +1 -1
  6. package/dist/CoreService.js +1 -1
  7. package/dist/DatastreamService.d.ts +5 -2
  8. package/dist/DatastreamService.d.ts.map +1 -1
  9. package/dist/HarvestRunService.d.ts +49 -0
  10. package/dist/HarvestRunService.d.ts.map +1 -0
  11. package/dist/HarvestRunService.js +13 -0
  12. package/dist/IntegrationAuditParams.d.ts +11 -0
  13. package/dist/IntegrationAuditParams.js +14 -0
  14. package/dist/QueueService.d.ts +1 -1
  15. package/dist/QueueService.d.ts.map +1 -1
  16. package/dist/RecordAuditParams.d.ts +2 -0
  17. package/dist/RecordAuditParams.d.ts.map +1 -1
  18. package/dist/RecordAuditParams.js +3 -1
  19. package/dist/RecordsService.d.ts +52 -2
  20. package/dist/RecordsService.d.ts.map +1 -1
  21. package/dist/StorageService.d.ts +5 -1
  22. package/dist/StorageService.d.ts.map +1 -1
  23. package/dist/api-routes/apib.d.ts +7 -0
  24. package/dist/api-routes/apib.d.ts.map +1 -0
  25. package/dist/api-routes/apib.js +43 -0
  26. package/dist/api-routes/define.d.ts +4 -0
  27. package/dist/api-routes/define.d.ts.map +1 -0
  28. package/dist/api-routes/define.js +29 -0
  29. package/dist/api-routes/groups/admin.d.ts +6 -0
  30. package/dist/api-routes/groups/admin.d.ts.map +1 -0
  31. package/dist/api-routes/groups/admin.js +53 -0
  32. package/dist/api-routes/groups/appconfig.d.ts +4 -0
  33. package/dist/api-routes/groups/appconfig.d.ts.map +1 -0
  34. package/dist/api-routes/groups/appconfig.js +33 -0
  35. package/dist/api-routes/groups/branding.d.ts +8 -0
  36. package/dist/api-routes/groups/branding.d.ts.map +1 -0
  37. package/dist/api-routes/groups/branding.js +61 -0
  38. package/dist/api-routes/groups/dashboard-config.d.ts +11 -0
  39. package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -0
  40. package/dist/api-routes/groups/dashboard-config.js +90 -0
  41. package/dist/api-routes/groups/export.d.ts +3 -0
  42. package/dist/api-routes/groups/export.d.ts.map +1 -0
  43. package/dist/api-routes/groups/export.js +30 -0
  44. package/dist/api-routes/groups/forms.d.ts +4 -0
  45. package/dist/api-routes/groups/forms.d.ts.map +1 -0
  46. package/dist/api-routes/groups/forms.js +29 -0
  47. package/dist/api-routes/groups/harvest-runs.d.ts +5 -0
  48. package/dist/api-routes/groups/harvest-runs.d.ts.map +1 -0
  49. package/dist/api-routes/groups/harvest-runs.js +79 -0
  50. package/dist/api-routes/groups/integration-audit.d.ts +3 -0
  51. package/dist/api-routes/groups/integration-audit.d.ts.map +1 -0
  52. package/dist/api-routes/groups/integration-audit.js +35 -0
  53. package/dist/api-routes/groups/named-query.d.ts +8 -0
  54. package/dist/api-routes/groups/named-query.d.ts.map +1 -0
  55. package/dist/api-routes/groups/named-query.js +54 -0
  56. package/dist/api-routes/groups/notifications.d.ts +3 -0
  57. package/dist/api-routes/groups/notifications.d.ts.map +1 -0
  58. package/dist/api-routes/groups/notifications.js +20 -0
  59. package/dist/api-routes/groups/records.d.ts +28 -0
  60. package/dist/api-routes/groups/records.d.ts.map +1 -0
  61. package/dist/api-routes/groups/records.js +353 -0
  62. package/dist/api-routes/groups/recordtypes.d.ts +4 -0
  63. package/dist/api-routes/groups/recordtypes.d.ts.map +1 -0
  64. package/dist/api-routes/groups/recordtypes.js +27 -0
  65. package/dist/api-routes/groups/reports.d.ts +9 -0
  66. package/dist/api-routes/groups/reports.d.ts.map +1 -0
  67. package/dist/api-routes/groups/reports.js +63 -0
  68. package/dist/api-routes/groups/search-query.d.ts +4 -0
  69. package/dist/api-routes/groups/search-query.d.ts.map +1 -0
  70. package/dist/api-routes/groups/search-query.js +51 -0
  71. package/dist/api-routes/groups/search.d.ts +6 -0
  72. package/dist/api-routes/groups/search.d.ts.map +1 -0
  73. package/dist/api-routes/groups/search.js +31 -0
  74. package/dist/api-routes/groups/translation.d.ts +8 -0
  75. package/dist/api-routes/groups/translation.d.ts.map +1 -0
  76. package/dist/api-routes/groups/translation.js +82 -0
  77. package/dist/api-routes/groups/users.d.ts +17 -0
  78. package/dist/api-routes/groups/users.d.ts.map +1 -0
  79. package/dist/api-routes/groups/users.js +149 -0
  80. package/dist/api-routes/groups/vocabulary.d.ts +10 -0
  81. package/dist/api-routes/groups/vocabulary.d.ts.map +1 -0
  82. package/dist/api-routes/groups/vocabulary.js +97 -0
  83. package/dist/api-routes/helpers.d.ts +29 -0
  84. package/dist/api-routes/helpers.d.ts.map +1 -0
  85. package/dist/api-routes/helpers.js +485 -0
  86. package/dist/api-routes/index.d.ts +27 -0
  87. package/dist/api-routes/index.d.ts.map +1 -0
  88. package/dist/api-routes/index.js +43 -0
  89. package/dist/api-routes/openapi.d.ts +26 -0
  90. package/dist/api-routes/openapi.d.ts.map +1 -0
  91. package/dist/api-routes/openapi.js +292 -0
  92. package/dist/api-routes/request-extraction.d.ts +14 -0
  93. package/dist/api-routes/request-extraction.d.ts.map +1 -0
  94. package/dist/api-routes/request-extraction.js +100 -0
  95. package/dist/api-routes/route-factory.d.ts +3 -0
  96. package/dist/api-routes/route-factory.d.ts.map +1 -0
  97. package/dist/api-routes/route-factory.js +30 -0
  98. package/dist/api-routes/route-registry.d.ts +24 -0
  99. package/dist/api-routes/route-registry.d.ts.map +1 -0
  100. package/dist/api-routes/route-registry.js +117 -0
  101. package/dist/api-routes/route-resolution.d.ts +4 -0
  102. package/dist/api-routes/route-resolution.d.ts.map +1 -0
  103. package/dist/api-routes/route-resolution.js +71 -0
  104. package/dist/api-routes/schemas/common.d.ts +35 -0
  105. package/dist/api-routes/schemas/common.d.ts.map +1 -0
  106. package/dist/api-routes/schemas/common.js +146 -0
  107. package/dist/api-routes/schemas/responses.d.ts +972 -0
  108. package/dist/api-routes/schemas/responses.d.ts.map +1 -0
  109. package/dist/api-routes/schemas/responses.js +512 -0
  110. package/dist/api-routes/types.d.ts +70 -0
  111. package/dist/api-routes/types.d.ts.map +1 -0
  112. package/dist/api-routes/types.js +3 -0
  113. package/dist/api-routes/validation.d.ts +32 -0
  114. package/dist/api-routes/validation.d.ts.map +1 -0
  115. package/dist/api-routes/validation.js +142 -0
  116. package/dist/api-routes/zod-openapi.d.ts +3 -0
  117. package/dist/api-routes/zod-openapi.d.ts.map +1 -0
  118. package/dist/api-routes/zod-openapi.js +8 -0
  119. package/dist/bootstrap.d.ts.map +1 -1
  120. package/dist/bootstrap.js +12 -12
  121. package/dist/config/agendaQueue.config.d.ts +33 -6
  122. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  123. package/dist/config/agendaQueue.config.js +40 -18
  124. package/dist/config/auth.config.d.ts.map +1 -1
  125. package/dist/config/auth.config.js +29 -2
  126. package/dist/config/branding.config.d.ts +2 -1
  127. package/dist/config/branding.config.d.ts.map +1 -1
  128. package/dist/config/branding.config.js +5 -95
  129. package/dist/config/brandingConfigurationDefaults.config.d.ts +3 -0
  130. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  131. package/dist/config/brandingConfigurationDefaults.config.js +158 -5
  132. package/dist/config/custom.config.d.ts +6 -0
  133. package/dist/config/custom.config.d.ts.map +1 -1
  134. package/dist/config/custom.config.js +10 -1
  135. package/dist/config/dashboardtype.config.d.ts +5 -0
  136. package/dist/config/dashboardtype.config.d.ts.map +1 -1
  137. package/dist/config/dashboardtype.config.js +1 -1
  138. package/dist/config/dashboardview.config.d.ts +24 -0
  139. package/dist/config/dashboardview.config.d.ts.map +1 -0
  140. package/dist/config/dashboardview.config.js +137 -0
  141. package/dist/config/dompurify.config.d.ts +1 -0
  142. package/dist/config/dompurify.config.d.ts.map +1 -1
  143. package/dist/config/dompurify.config.js +5 -4
  144. package/dist/config/emailnotification.config.d.ts.map +1 -1
  145. package/dist/config/emailnotification.config.js +2 -1
  146. package/dist/config/figshareDev.config.d.ts +12 -0
  147. package/dist/config/figshareDev.config.js +9 -0
  148. package/dist/config/form.config.d.ts +4 -0
  149. package/dist/config/form.config.d.ts.map +1 -1
  150. package/dist/config/form.config.js +1 -1
  151. package/dist/config/harvestRuns.config.d.ts +9 -0
  152. package/dist/config/harvestRuns.config.d.ts.map +1 -0
  153. package/dist/config/harvestRuns.config.js +11 -0
  154. package/dist/config/http.config.d.ts +13 -1
  155. package/dist/config/http.config.d.ts.map +1 -1
  156. package/dist/config/http.config.js +201 -38
  157. package/dist/config/index.d.ts +14 -19
  158. package/dist/config/index.d.ts.map +1 -1
  159. package/dist/config/index.js +10 -15
  160. package/dist/config/namedQuery.config.d.ts +26 -4
  161. package/dist/config/namedQuery.config.d.ts.map +1 -1
  162. package/dist/config/namedQuery.config.js +7 -350
  163. package/dist/config/policies.config.d.ts +3 -0
  164. package/dist/config/policies.config.d.ts.map +1 -1
  165. package/dist/config/policies.config.js +35 -1
  166. package/dist/config/record.config.d.ts.map +1 -1
  167. package/dist/config/record.config.js +2 -1
  168. package/dist/config/recordtype.config.d.ts +28 -0
  169. package/dist/config/recordtype.config.d.ts.map +1 -1
  170. package/dist/config/recordtype.config.js +105 -13
  171. package/dist/config/redboxSession.config.d.ts +3 -0
  172. package/dist/config/redboxSession.config.d.ts.map +1 -1
  173. package/dist/config/redboxSession.config.js +1 -1
  174. package/dist/config/report.config.d.ts +2 -11
  175. package/dist/config/report.config.d.ts.map +1 -1
  176. package/dist/config/report.config.js +3 -49
  177. package/dist/config/reusableContributorFormDefinitions.config.d.ts +1 -1
  178. package/dist/config/reusableContributorFormDefinitions.config.d.ts.map +1 -1
  179. package/dist/config/reusableContributorFormDefinitions.config.js +371 -206
  180. package/dist/config/reusableViewFormDefinitions.config.js +3 -3
  181. package/dist/config/routes.config.d.ts +5 -2
  182. package/dist/config/routes.config.d.ts.map +1 -1
  183. package/dist/config/routes.config.js +55 -117
  184. package/dist/config/storage.config.d.ts +20 -2
  185. package/dist/config/storage.config.d.ts.map +1 -1
  186. package/dist/config/storage.config.js +2 -1
  187. package/dist/config/validators.config.d.ts +6 -4
  188. package/dist/config/validators.config.d.ts.map +1 -1
  189. package/dist/config/validators.config.js +5 -3
  190. package/dist/config/vocab.config.d.ts +30 -0
  191. package/dist/config/vocab.config.d.ts.map +1 -1
  192. package/dist/config/vocab.config.js +21 -1
  193. package/dist/config/webpack.config.d.ts.map +1 -1
  194. package/dist/config/webpack.config.js +18 -12
  195. package/dist/config/workflow.config.d.ts +0 -1
  196. package/dist/config/workflow.config.d.ts.map +1 -1
  197. package/dist/config/workflow.config.js +1 -137
  198. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  199. package/dist/configmodels/AdminSidebarConfig.js +4 -3
  200. package/dist/configmodels/AuthorizedDomainsEmails.d.ts +48 -0
  201. package/dist/configmodels/AuthorizedDomainsEmails.d.ts.map +1 -1
  202. package/dist/configmodels/AuthorizedDomainsEmails.js +50 -2
  203. package/dist/configmodels/ConfigModels.d.ts +7 -1
  204. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  205. package/dist/configmodels/ConfigModels.js +41 -1
  206. package/dist/configmodels/DashboardTableOverrideConfig.d.ts +1011 -0
  207. package/dist/configmodels/DashboardTableOverrideConfig.d.ts.map +1 -0
  208. package/dist/configmodels/DashboardTableOverrideConfig.js +138 -0
  209. package/dist/configmodels/DoiPublishing.d.ts +4711 -0
  210. package/dist/configmodels/DoiPublishing.js +639 -0
  211. package/dist/configmodels/FigsharePublishing.d.ts +1376 -0
  212. package/dist/configmodels/FigsharePublishing.js +630 -0
  213. package/dist/configmodels/IntegrationNotificationConfig.d.ts +133 -0
  214. package/dist/configmodels/IntegrationNotificationConfig.d.ts.map +1 -0
  215. package/dist/configmodels/IntegrationNotificationConfig.js +64 -0
  216. package/dist/configmodels/SystemMessage.d.ts +32 -0
  217. package/dist/configmodels/SystemMessage.d.ts.map +1 -1
  218. package/dist/configmodels/SystemMessage.js +34 -2
  219. package/dist/controllers/AdminController.d.ts +1 -1
  220. package/dist/controllers/AdminController.d.ts.map +1 -1
  221. package/dist/controllers/AdminController.js +6 -32
  222. package/dist/controllers/AppConfigController.js +3 -3
  223. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  224. package/dist/controllers/BrandingAppController.js +11 -10
  225. package/dist/controllers/BrandingController.d.ts +11 -5
  226. package/dist/controllers/BrandingController.d.ts.map +1 -1
  227. package/dist/controllers/BrandingController.js +116 -48
  228. package/dist/controllers/DashboardConfigController.d.ts +8 -0
  229. package/dist/controllers/DashboardConfigController.d.ts.map +1 -0
  230. package/dist/controllers/DashboardConfigController.js +17 -0
  231. package/dist/controllers/DynamicAssetController.d.ts +1 -21
  232. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  233. package/dist/controllers/DynamicAssetController.js +19 -41
  234. package/dist/controllers/EmailController.d.ts.map +1 -1
  235. package/dist/controllers/EmailController.js +16 -12
  236. package/dist/controllers/FormVocabularyController.d.ts +3 -0
  237. package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
  238. package/dist/controllers/FormVocabularyController.js +154 -4
  239. package/dist/controllers/NamedQueryController.d.ts +8 -0
  240. package/dist/controllers/NamedQueryController.d.ts.map +1 -0
  241. package/dist/controllers/NamedQueryController.js +17 -0
  242. package/dist/controllers/RecordAuditController.d.ts +31 -14
  243. package/dist/controllers/RecordAuditController.d.ts.map +1 -1
  244. package/dist/controllers/RecordAuditController.js +509 -57
  245. package/dist/controllers/RecordController.d.ts +18 -16
  246. package/dist/controllers/RecordController.d.ts.map +1 -1
  247. package/dist/controllers/RecordController.js +314 -167
  248. package/dist/controllers/RenderViewController.d.ts.map +1 -1
  249. package/dist/controllers/RenderViewController.js +4 -2
  250. package/dist/controllers/ReportController.d.ts +7 -0
  251. package/dist/controllers/ReportController.d.ts.map +1 -1
  252. package/dist/controllers/ReportController.js +75 -2
  253. package/dist/controllers/ReportsController.d.ts +1 -0
  254. package/dist/controllers/ReportsController.d.ts.map +1 -1
  255. package/dist/controllers/ReportsController.js +12 -2
  256. package/dist/controllers/TranslationController.d.ts.map +1 -1
  257. package/dist/controllers/TranslationController.js +14 -12
  258. package/dist/controllers/WorkspaceTypesController.d.ts +3 -2
  259. package/dist/controllers/WorkspaceTypesController.d.ts.map +1 -1
  260. package/dist/controllers/WorkspaceTypesController.js +120 -31
  261. package/dist/controllers/index.d.ts.map +1 -1
  262. package/dist/controllers/index.js +19 -4
  263. package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
  264. package/dist/controllers/webservice/AdminController.js +16 -17
  265. package/dist/controllers/webservice/AppConfigController.d.ts.map +1 -1
  266. package/dist/controllers/webservice/AppConfigController.js +17 -18
  267. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  268. package/dist/controllers/webservice/BrandingController.js +102 -48
  269. package/dist/controllers/webservice/DashboardConfigController.d.ts +26 -0
  270. package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -0
  271. package/dist/controllers/webservice/DashboardConfigController.js +241 -0
  272. package/dist/controllers/webservice/ExportController.d.ts.map +1 -1
  273. package/dist/controllers/webservice/ExportController.js +11 -11
  274. package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
  275. package/dist/controllers/webservice/FormManagementController.js +11 -13
  276. package/dist/controllers/webservice/HarvestRunController.d.ts +13 -0
  277. package/dist/controllers/webservice/HarvestRunController.d.ts.map +1 -0
  278. package/dist/controllers/webservice/HarvestRunController.js +148 -0
  279. package/dist/controllers/webservice/IntegrationAuditController.d.ts +10 -0
  280. package/dist/controllers/webservice/IntegrationAuditController.d.ts.map +1 -1
  281. package/dist/controllers/webservice/IntegrationAuditController.js +98 -0
  282. package/dist/controllers/webservice/NamedQueryController.d.ts +17 -0
  283. package/dist/controllers/webservice/NamedQueryController.d.ts.map +1 -0
  284. package/dist/controllers/webservice/NamedQueryController.js +127 -0
  285. package/dist/controllers/webservice/RecordController.d.ts +4 -0
  286. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  287. package/dist/controllers/webservice/RecordController.js +441 -314
  288. package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
  289. package/dist/controllers/webservice/RecordTypeController.js +9 -10
  290. package/dist/controllers/webservice/ReportController.d.ts +7 -0
  291. package/dist/controllers/webservice/ReportController.d.ts.map +1 -1
  292. package/dist/controllers/webservice/ReportController.js +125 -19
  293. package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
  294. package/dist/controllers/webservice/SearchController.js +28 -35
  295. package/dist/controllers/webservice/TranslationController.d.ts.map +1 -1
  296. package/dist/controllers/webservice/TranslationController.js +65 -43
  297. package/dist/controllers/webservice/UserManagementController.d.ts +1 -1
  298. package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
  299. package/dist/controllers/webservice/UserManagementController.js +114 -101
  300. package/dist/controllers/webservice/VocabularyController.d.ts.map +1 -1
  301. package/dist/controllers/webservice/VocabularyController.js +76 -28
  302. package/dist/form-config/dataRecord-1.0-draft.js +3 -3
  303. package/dist/form-config/default-1.0-draft.d.ts.map +1 -1
  304. package/dist/form-config/default-1.0-draft.js +27 -3
  305. package/dist/form-config/index.d.ts.map +1 -1
  306. package/dist/form-config/index.js +1 -1
  307. package/dist/hooks/defineRedboxHook.d.ts +3 -0
  308. package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
  309. package/dist/hooks/defineRedboxHook.js +4 -1
  310. package/dist/hooks/webpack.d.ts.map +1 -1
  311. package/dist/hooks/webpack.js +17 -7
  312. package/dist/index.d.ts +12 -2
  313. package/dist/index.d.ts.map +1 -1
  314. package/dist/index.js +17 -2
  315. package/dist/loader/MigrationRunner.d.ts +19 -0
  316. package/dist/loader/MigrationRunner.d.ts.map +1 -0
  317. package/dist/loader/MigrationRunner.js +108 -0
  318. package/dist/loader/bootstrapShimRuntime.d.ts +2 -1
  319. package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -1
  320. package/dist/loader/bootstrapShimRuntime.js +7 -2
  321. package/dist/loader/index.d.ts +17 -0
  322. package/dist/loader/index.d.ts.map +1 -1
  323. package/dist/loader/index.js +216 -13
  324. package/dist/middleware/redboxSession.d.ts +5 -0
  325. package/dist/middleware/redboxSession.d.ts.map +1 -1
  326. package/dist/middleware/redboxSession.js +19 -6
  327. package/dist/model/BuildResponse.d.ts +4 -0
  328. package/dist/model/BuildResponse.d.ts.map +1 -1
  329. package/dist/model/DashboardTypeResponseModel.d.ts +13 -1
  330. package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
  331. package/dist/model/DashboardTypeResponseModel.js +12 -4
  332. package/dist/model/DashboardViewResponseModel.d.ts +20 -0
  333. package/dist/model/DashboardViewResponseModel.d.ts.map +1 -0
  334. package/dist/model/DashboardViewResponseModel.js +38 -0
  335. package/dist/model/RecordTypeResponseModel.d.ts +3 -1
  336. package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
  337. package/dist/model/RecordTypeResponseModel.js +4 -2
  338. package/dist/model/RequestDetails.d.ts +1 -1
  339. package/dist/model/RequestDetails.d.ts.map +1 -1
  340. package/dist/model/RequestDetails.js +1 -1
  341. package/dist/model/config/ReportConfig.d.ts +1 -1
  342. package/dist/model/config/ReportConfig.d.ts.map +1 -1
  343. package/dist/model/config/ReportConfig.js +2 -2
  344. package/dist/model/index.d.ts +1 -0
  345. package/dist/model/index.d.ts.map +1 -1
  346. package/dist/model/index.js +5 -2
  347. package/dist/model/storage/BrandingModel.d.ts +0 -16
  348. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  349. package/dist/model/storage/BrandingModel.js +2 -51
  350. package/dist/model/storage/DashboardTypeModel.d.ts +4 -0
  351. package/dist/model/storage/DashboardTypeModel.d.ts.map +1 -1
  352. package/dist/model/storage/HarvestRunModel.d.ts +140 -0
  353. package/dist/model/storage/HarvestRunModel.d.ts.map +1 -0
  354. package/dist/model/storage/HarvestRunModel.js +110 -0
  355. package/dist/model/storage/IntegrationAuditModel.d.ts +49 -0
  356. package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
  357. package/dist/model/storage/IntegrationAuditModel.js +106 -0
  358. package/dist/model/storage/RecordTypeModel.d.ts +16 -0
  359. package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
  360. package/dist/model/storage/RecordTypeModel.js +9 -1
  361. package/dist/model/storage/ReportModel.d.ts +1 -0
  362. package/dist/model/storage/ReportModel.d.ts.map +1 -1
  363. package/dist/model/storage/index.d.ts +2 -0
  364. package/dist/model/storage/index.d.ts.map +1 -1
  365. package/dist/model/storage/index.js +15 -2
  366. package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
  367. package/dist/policies/contentSecurityPolicy.js +23 -2
  368. package/dist/policies/i18nLanguages.d.ts.map +1 -1
  369. package/dist/policies/i18nLanguages.js +1 -1
  370. package/dist/policies/index.d.ts +3 -0
  371. package/dist/policies/index.d.ts.map +1 -1
  372. package/dist/policies/index.js +6 -2
  373. package/dist/policies/menuResolver.d.ts.map +1 -1
  374. package/dist/policies/menuResolver.js +1 -1
  375. package/dist/policies/setLang.d.ts.map +1 -1
  376. package/dist/policies/setLang.js +1 -1
  377. package/dist/policies/validateApiContractRequest.d.ts +3 -0
  378. package/dist/policies/validateApiContractRequest.d.ts.map +1 -0
  379. package/dist/policies/validateApiContractRequest.js +74 -0
  380. package/dist/responses/badRequest.d.ts.map +1 -1
  381. package/dist/responses/badRequest.js +5 -3
  382. package/dist/responses/created.d.ts.map +1 -1
  383. package/dist/responses/created.js +5 -3
  384. package/dist/responses/forbidden.d.ts.map +1 -1
  385. package/dist/responses/forbidden.js +5 -3
  386. package/dist/responses/ok.d.ts.map +1 -1
  387. package/dist/responses/ok.js +5 -3
  388. package/dist/responses/serverError.d.ts.map +1 -1
  389. package/dist/responses/serverError.js +5 -3
  390. package/dist/responses/siteTitle.d.ts +6 -0
  391. package/dist/responses/siteTitle.d.ts.map +1 -0
  392. package/dist/responses/siteTitle.js +28 -0
  393. package/dist/sails.d.ts +9 -0
  394. package/dist/sails.d.ts.map +1 -1
  395. package/dist/services/AgendaQueueService.d.ts +39 -17
  396. package/dist/services/AgendaQueueService.d.ts.map +1 -1
  397. package/dist/services/AgendaQueueService.js +328 -87
  398. package/dist/services/AppConfigService.d.ts +20 -2
  399. package/dist/services/AppConfigService.d.ts.map +1 -1
  400. package/dist/services/AppConfigService.js +129 -15
  401. package/dist/services/AttachmentMetadataService.d.ts +34 -0
  402. package/dist/services/AttachmentMetadataService.d.ts.map +1 -0
  403. package/dist/services/AttachmentMetadataService.js +133 -0
  404. package/dist/services/BrandingLogoService.d.ts +11 -8
  405. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  406. package/dist/services/BrandingLogoService.js +71 -72
  407. package/dist/services/BrandingService.d.ts.map +1 -1
  408. package/dist/services/BrandingService.js +4 -32
  409. package/dist/services/BrandingThemeCssService.d.ts +21 -0
  410. package/dist/services/BrandingThemeCssService.d.ts.map +1 -0
  411. package/dist/services/BrandingThemeCssService.js +113 -0
  412. package/dist/services/BrandingThemeTokens.d.ts +16 -0
  413. package/dist/services/BrandingThemeTokens.d.ts.map +1 -0
  414. package/dist/services/BrandingThemeTokens.js +82 -0
  415. package/dist/services/CacheService.d.ts.map +1 -1
  416. package/dist/services/CacheService.js +37 -29
  417. package/dist/services/DashboardConfigService.d.ts +71 -0
  418. package/dist/services/DashboardConfigService.d.ts.map +1 -0
  419. package/dist/services/DashboardConfigService.js +315 -0
  420. package/dist/services/DashboardTypesService.d.ts +61 -63
  421. package/dist/services/DashboardTypesService.d.ts.map +1 -1
  422. package/dist/services/DashboardTypesService.js +361 -198
  423. package/dist/services/DoiService.d.ts +30 -25
  424. package/dist/services/DoiService.d.ts.map +1 -1
  425. package/dist/services/DoiService.js +448 -393
  426. package/dist/services/EmailService.d.ts +17 -3
  427. package/dist/services/EmailService.d.ts.map +1 -1
  428. package/dist/services/EmailService.js +44 -17
  429. package/dist/services/FigshareService.d.ts +40 -65
  430. package/dist/services/FigshareService.d.ts.map +1 -1
  431. package/dist/services/FigshareService.js +616 -2038
  432. package/dist/services/FormPayloadPrehydrateService.d.ts +35 -0
  433. package/dist/services/FormPayloadPrehydrateService.d.ts.map +1 -0
  434. package/dist/services/FormPayloadPrehydrateService.js +200 -0
  435. package/dist/services/FormRecordConsistencyService.d.ts +3 -3
  436. package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
  437. package/dist/services/FormRecordConsistencyService.js +21 -19
  438. package/dist/services/FormVocabularyService.d.ts +45 -0
  439. package/dist/services/FormVocabularyService.d.ts.map +1 -0
  440. package/dist/services/FormVocabularyService.js +326 -0
  441. package/dist/services/FormsService.d.ts.map +1 -1
  442. package/dist/services/FormsService.js +8 -6
  443. package/dist/services/HarvestRunService.d.ts +73 -0
  444. package/dist/services/HarvestRunService.d.ts.map +1 -0
  445. package/dist/services/HarvestRunService.js +1317 -0
  446. package/dist/services/I18nEntriesService.d.ts +9 -4
  447. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  448. package/dist/services/I18nEntriesService.js +96 -18
  449. package/dist/services/IntegrationAuditService.d.ts +158 -0
  450. package/dist/services/IntegrationAuditService.d.ts.map +1 -1
  451. package/dist/services/IntegrationAuditService.js +838 -0
  452. package/dist/services/IntegrationNotificationService.d.ts +55 -0
  453. package/dist/services/IntegrationNotificationService.d.ts.map +1 -0
  454. package/dist/services/IntegrationNotificationService.js +271 -0
  455. package/dist/services/NamedQueryService.d.ts +51 -12
  456. package/dist/services/NamedQueryService.d.ts.map +1 -1
  457. package/dist/services/NamedQueryService.js +622 -125
  458. package/dist/services/OniService.js +2 -2
  459. package/dist/services/RDMPService.d.ts.map +1 -1
  460. package/dist/services/RDMPService.js +3 -2
  461. package/dist/services/RecordsService.d.ts +24 -2
  462. package/dist/services/RecordsService.d.ts.map +1 -1
  463. package/dist/services/RecordsService.js +119 -19
  464. package/dist/services/ReportsService.d.ts +57 -1
  465. package/dist/services/ReportsService.d.ts.map +1 -1
  466. package/dist/services/ReportsService.js +258 -34
  467. package/dist/services/SassCompilerService.d.ts +4 -10
  468. package/dist/services/SassCompilerService.d.ts.map +1 -1
  469. package/dist/services/SassCompilerService.js +9 -173
  470. package/dist/services/SolrSearchService.d.ts +1 -0
  471. package/dist/services/SolrSearchService.d.ts.map +1 -1
  472. package/dist/services/SolrSearchService.js +14 -3
  473. package/dist/services/StandardDatastreamService.d.ts +37 -5
  474. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  475. package/dist/services/StandardDatastreamService.js +535 -38
  476. package/dist/services/StorageManagerService.d.ts +13 -1
  477. package/dist/services/StorageManagerService.d.ts.map +1 -1
  478. package/dist/services/StorageManagerService.js +94 -11
  479. package/dist/services/TemplateService.d.ts +2 -18
  480. package/dist/services/TemplateService.d.ts.map +1 -1
  481. package/dist/services/TemplateService.js +9 -53
  482. package/dist/services/VocabularyService.d.ts +13 -0
  483. package/dist/services/VocabularyService.d.ts.map +1 -1
  484. package/dist/services/VocabularyService.js +204 -14
  485. package/dist/services/doi-v2/audit.d.ts +7 -0
  486. package/dist/services/doi-v2/audit.d.ts.map +1 -1
  487. package/dist/services/doi-v2/audit.js +30 -0
  488. package/dist/services/doi-v2/bindings.d.ts +8 -0
  489. package/dist/services/doi-v2/bindings.d.ts.map +1 -1
  490. package/dist/services/doi-v2/bindings.js +79 -0
  491. package/dist/services/doi-v2/config.d.ts +7 -0
  492. package/dist/services/doi-v2/config.js +51 -0
  493. package/dist/services/doi-v2/context.d.ts +18 -0
  494. package/dist/services/doi-v2/context.js +41 -0
  495. package/dist/services/doi-v2/http.d.ts +21 -0
  496. package/dist/services/doi-v2/http.js +88 -0
  497. package/dist/services/doi-v2/payload.d.ts +4 -0
  498. package/dist/services/doi-v2/payload.js +291 -0
  499. package/dist/services/doi-v2/profiles.d.ts +5 -0
  500. package/dist/services/doi-v2/profiles.js +31 -0
  501. package/dist/services/doi-v2/runtime.d.ts +16 -0
  502. package/dist/services/doi-v2/runtime.js +173 -0
  503. package/dist/services/doi-v2/types.d.ts +49 -0
  504. package/dist/services/doi-v2/types.js +3 -0
  505. package/dist/services/figshare-v2/assets.d.ts +5 -0
  506. package/dist/services/figshare-v2/assets.js +297 -0
  507. package/dist/services/figshare-v2/audit.d.ts +7 -0
  508. package/dist/services/figshare-v2/audit.d.ts.map +1 -0
  509. package/dist/services/figshare-v2/audit.js +30 -0
  510. package/dist/services/figshare-v2/bindings.d.ts +6 -0
  511. package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
  512. package/dist/services/figshare-v2/bindings.js +58 -0
  513. package/dist/services/figshare-v2/config.d.ts +13 -0
  514. package/dist/services/figshare-v2/config.d.ts.map +1 -1
  515. package/dist/services/figshare-v2/config.js +105 -0
  516. package/dist/services/figshare-v2/context.d.ts +4 -0
  517. package/dist/services/figshare-v2/context.d.ts.map +1 -1
  518. package/dist/services/figshare-v2/context.js +21 -0
  519. package/dist/services/figshare-v2/embargo.d.ts +5 -0
  520. package/dist/services/figshare-v2/embargo.js +36 -0
  521. package/dist/services/figshare-v2/http.d.ts +42 -0
  522. package/dist/services/figshare-v2/http.d.ts.map +1 -1
  523. package/dist/services/figshare-v2/http.js +324 -0
  524. package/dist/services/figshare-v2/metadata.d.ts +6 -0
  525. package/dist/services/figshare-v2/metadata.d.ts.map +1 -1
  526. package/dist/services/figshare-v2/metadata.js +280 -0
  527. package/dist/services/figshare-v2/observability.d.ts +7 -0
  528. package/dist/services/figshare-v2/observability.d.ts.map +1 -1
  529. package/dist/services/figshare-v2/observability.js +87 -0
  530. package/dist/services/figshare-v2/plan.d.ts +5 -0
  531. package/dist/services/figshare-v2/plan.js +51 -0
  532. package/dist/services/figshare-v2/publish.d.ts +5 -0
  533. package/dist/services/figshare-v2/publish.js +20 -0
  534. package/dist/services/figshare-v2/queue.d.ts +4 -0
  535. package/dist/services/figshare-v2/queue.js +11 -0
  536. package/dist/services/figshare-v2/runtime.d.ts +14 -0
  537. package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
  538. package/dist/services/figshare-v2/runtime.js +88 -0
  539. package/dist/services/figshare-v2/types.d.ts +198 -0
  540. package/dist/services/figshare-v2/types.d.ts.map +1 -1
  541. package/dist/services/figshare-v2/types.js +59 -0
  542. package/dist/services/figshare-v2/workflow.d.ts +3 -0
  543. package/dist/services/figshare-v2/workflow.js +7 -0
  544. package/dist/services/figshare-v2/writeback.d.ts +5 -0
  545. package/dist/services/figshare-v2/writeback.js +45 -0
  546. package/dist/services/index.d.ts +24 -3
  547. package/dist/services/index.d.ts.map +1 -1
  548. package/dist/services/index.js +43 -7
  549. package/dist/shims/momentShim.d.ts.map +1 -1
  550. package/dist/shims/momentShim.js +1 -6
  551. package/dist/storage/GridFSDriver.d.ts +101 -0
  552. package/dist/storage/GridFSDriver.d.ts.map +1 -0
  553. package/dist/storage/GridFSDriver.js +291 -0
  554. package/dist/storage/TusStorageManagerDataStore.d.ts +49 -0
  555. package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -0
  556. package/dist/storage/TusStorageManagerDataStore.js +300 -0
  557. package/dist/utilities/RequestParamUtils.d.ts +3 -0
  558. package/dist/utilities/RequestParamUtils.d.ts.map +1 -0
  559. package/dist/utilities/RequestParamUtils.js +13 -0
  560. package/dist/visitor/attachment-fields.visitor.d.ts +17 -17
  561. package/dist/visitor/attachment-fields.visitor.d.ts.map +1 -1
  562. package/dist/visitor/attachment-fields.visitor.js +44 -34
  563. package/dist/visitor/client.visitor.d.ts +145 -97
  564. package/dist/visitor/client.visitor.d.ts.map +1 -1
  565. package/dist/visitor/client.visitor.js +366 -273
  566. package/dist/visitor/construct.visitor.d.ts +99 -93
  567. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  568. package/dist/visitor/construct.visitor.js +302 -227
  569. package/dist/visitor/context-variables.visitor.d.ts +35 -35
  570. package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
  571. package/dist/visitor/context-variables.visitor.js +85 -75
  572. package/dist/visitor/data-value.visitor.d.ts +99 -93
  573. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  574. package/dist/visitor/data-value.visitor.js +157 -148
  575. package/dist/visitor/json-type-def.visitor.d.ts +96 -90
  576. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  577. package/dist/visitor/json-type-def.visitor.js +158 -149
  578. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +101 -94
  579. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  580. package/dist/visitor/migrate-config-v4-v5.visitor.js +356 -295
  581. package/dist/visitor/template.visitor.d.ts +100 -92
  582. package/dist/visitor/template.visitor.d.ts.map +1 -1
  583. package/dist/visitor/template.visitor.js +245 -156
  584. package/dist/visitor/validator.visitor.d.ts +95 -91
  585. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  586. package/dist/visitor/validator.visitor.js +184 -152
  587. package/dist/visitor/visitor-helpers.js +9 -9
  588. package/dist/visitor/vocab-inline.visitor.d.ts +34 -19
  589. package/dist/visitor/vocab-inline.visitor.d.ts.map +1 -1
  590. package/dist/visitor/vocab-inline.visitor.js +157 -48
  591. package/dist/waterline-models/AttachmentAccessAudit.d.ts +26 -0
  592. package/dist/waterline-models/AttachmentAccessAudit.d.ts.map +1 -0
  593. package/dist/waterline-models/AttachmentAccessAudit.js +63 -0
  594. package/dist/waterline-models/AttachmentMetadata.d.ts +40 -0
  595. package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -0
  596. package/dist/waterline-models/AttachmentMetadata.js +147 -0
  597. package/dist/waterline-models/BrandingConfig.d.ts +0 -2
  598. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  599. package/dist/waterline-models/BrandingConfig.js +5 -9
  600. package/dist/waterline-models/DashboardType.d.ts +7 -0
  601. package/dist/waterline-models/DashboardType.d.ts.map +1 -1
  602. package/dist/waterline-models/DashboardType.js +16 -1
  603. package/dist/waterline-models/HarvestRecordEvent.d.ts +43 -0
  604. package/dist/waterline-models/HarvestRecordEvent.d.ts.map +1 -0
  605. package/dist/waterline-models/HarvestRecordEvent.js +107 -0
  606. package/dist/waterline-models/HarvestRun.d.ts +51 -0
  607. package/dist/waterline-models/HarvestRun.d.ts.map +1 -0
  608. package/dist/waterline-models/HarvestRun.js +125 -0
  609. package/dist/waterline-models/HarvestRunChunk.d.ts +57 -0
  610. package/dist/waterline-models/HarvestRunChunk.d.ts.map +1 -0
  611. package/dist/waterline-models/HarvestRunChunk.js +140 -0
  612. package/dist/waterline-models/I18nTranslation.d.ts +2 -0
  613. package/dist/waterline-models/I18nTranslation.d.ts.map +1 -1
  614. package/dist/waterline-models/I18nTranslation.js +6 -1
  615. package/dist/waterline-models/Migration.d.ts +24 -0
  616. package/dist/waterline-models/Migration.d.ts.map +1 -0
  617. package/dist/waterline-models/Migration.js +52 -0
  618. package/dist/waterline-models/NamedQuery.d.ts +6 -0
  619. package/dist/waterline-models/NamedQuery.d.ts.map +1 -1
  620. package/dist/waterline-models/NamedQuery.js +16 -1
  621. package/dist/waterline-models/index.d.ts +12 -0
  622. package/dist/waterline-models/index.d.ts.map +1 -1
  623. package/dist/waterline-models/index.js +19 -1
  624. package/package.json +77 -51
  625. package/redbox-loader-templates/bootstrap-shim.js.hbs +14 -1
  626. package/dist/config/datacite.config.d.ts +0 -51
  627. package/dist/config/datacite.config.d.ts.map +0 -1
  628. package/dist/config/datacite.config.js +0 -44
  629. package/dist/config/figshareAPI.config.d.ts +0 -116
  630. package/dist/config/figshareAPI.config.d.ts.map +0 -1
  631. package/dist/config/figshareAPI.config.js +0 -857
  632. package/dist/config/figshareAPIEnv.config.d.ts +0 -11
  633. package/dist/config/figshareAPIEnv.config.d.ts.map +0 -1
  634. package/dist/config/figshareAPIEnv.config.js +0 -13
  635. package/dist/config/figshareRedboxFORMapping.config.d.ts +0 -15
  636. package/dist/config/figshareRedboxFORMapping.config.d.ts.map +0 -1
  637. package/dist/config/figshareRedboxFORMapping.config.js +0 -7458
  638. package/dist/config/relatedObjectsFormDefinition.config.d.ts.map +0 -1
  639. package/dist/controllers/VocabController.d.ts +0 -43
  640. package/dist/controllers/VocabController.d.ts.map +0 -1
  641. package/dist/controllers/VocabController.js +0 -190
  642. package/dist/form-config/dataPublication-1.0-draft.d.ts.map +0 -1
  643. package/dist/form-config/dataPublication-1.0-embargoed.d.ts.map +0 -1
  644. package/dist/form-config/dataPublication-1.0-published.d.ts.map +0 -1
  645. package/dist/form-config/dataPublication-1.0-queued.d.ts.map +0 -1
  646. package/dist/form-config/dataPublication-1.0-retired.d.ts.map +0 -1
  647. package/dist/services/VocabService.d.ts +0 -81
  648. package/dist/services/VocabService.d.ts.map +0 -1
  649. package/dist/services/VocabService.js +0 -424
@@ -6,6 +6,7 @@ import { SearchService } from '../SearchService';
6
6
  import { Services as services } from '../CoreService';
7
7
  import { BrandingModel } from '../model/storage/BrandingModel';
8
8
  import { ReportDto, TemplateCompileInput } from '@researchdatabox/sails-ng-common';
9
+ import * as fs from 'node:fs/promises';
9
10
  type ReportColumnLike = {
10
11
  label: string;
11
12
  property: string;
@@ -24,6 +25,43 @@ type SolrSearchResponse = {
24
25
  docs: Array<Record<string, unknown>>;
25
26
  };
26
27
  };
28
+ type ReportConfigFilterDto = {
29
+ type: string;
30
+ paramName: string;
31
+ message: string;
32
+ property: string;
33
+ database?: {
34
+ fromProperty: string;
35
+ toProperty: string;
36
+ } | null;
37
+ };
38
+ type ReportConfigColumnDto = {
39
+ label: string;
40
+ property: string;
41
+ hide?: boolean;
42
+ exportTemplate?: string;
43
+ template?: string;
44
+ multivalue?: boolean;
45
+ };
46
+ export type ReportConfigDto = {
47
+ name: string;
48
+ title: string;
49
+ reportSource: 'database' | 'solr';
50
+ databaseQuery: {
51
+ queryName: string;
52
+ } | null;
53
+ solrQuery: {
54
+ baseQuery: string;
55
+ searchCore: string;
56
+ } | null;
57
+ filter: ReportConfigFilterDto[];
58
+ columns: ReportConfigColumnDto[];
59
+ readOnly: boolean;
60
+ readOnlyReason?: string;
61
+ canEdit: boolean;
62
+ canDelete: boolean;
63
+ canPreview: boolean;
64
+ };
27
65
  export declare namespace Services {
28
66
  /**
29
67
  * Reporting related functions...
@@ -37,10 +75,23 @@ export declare namespace Services {
37
75
  private helpersRegistered;
38
76
  protected _exportedMethods: string[];
39
77
  private getReportModel;
40
- bootstrap: (defBrand: BrandingModel) => Observable<ReportModel> | Observable<Observable<ReportModel>>;
78
+ bootstrapData(defBrand: BrandingModel): Promise<void>;
79
+ private getBootstrapDataPath;
80
+ protected getBootstrapFileOps(): Pick<typeof fs, 'readdir' | 'readFile'>;
81
+ private readJsonFile;
41
82
  findAllReportsForBrand(brand: BrandingModel): Observable<ReportModel[]>;
42
83
  get(brand: BrandingModel, name: string): Promise<import("../waterline-models/RBReport").ReportAttributes>;
43
84
  create(brand: BrandingModel, name: string, config: ReportConfig): Observable<ReportModel>;
85
+ listConfigs(brand: BrandingModel): Promise<ReportConfigDto[]>;
86
+ getConfig(brand: BrandingModel, name: string): Promise<ReportConfigDto | null>;
87
+ createConfig(brand: BrandingModel, config: ReportConfigDto): Promise<ReportConfigDto>;
88
+ updateConfig(brand: BrandingModel, name: string, config: ReportConfigDto): Promise<ReportConfigDto>;
89
+ deleteConfig(brand: BrandingModel, name: string): Promise<{
90
+ deleted: boolean;
91
+ }>;
92
+ previewConfig(brand: BrandingModel, config: ReportConfigDto, req: Sails.ReqParamProvider): Promise<ReportResult>;
93
+ private validateMutableConfig;
94
+ private normalizeReportConfigDto;
44
95
  private buildSolrParams;
45
96
  getResults(brand: BrandingModel, name: string | undefined, req: Sails.ReqParamProvider, start?: number, rows?: number): Promise<ReportResult>;
46
97
  getTranslateDatabaseResultToReportResult(dbResult: ListAPIResponse<Record<string, unknown>>, _report: ReportConfig): ReportResult;
@@ -90,6 +141,11 @@ export declare namespace Services {
90
141
  protected getQueryValue(report: ReportConfig): string;
91
142
  protected addPaginationParams(params: string, start: number | undefined, rows: number): string;
92
143
  getReportDto(reportModel: ReportModel): ReportDto;
144
+ getReportConfigDto(reportModel: ReportModel): ReportConfigDto;
145
+ }
146
+ class ReportConfigServiceError extends Error {
147
+ status: number;
148
+ constructor(status: number, message: string);
93
149
  }
94
150
  }
95
151
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"ReportsService.d.ts","sourceRoot":"","sources":["../../src/services/ReportsService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReportsService.d.ts","sourceRoot":"","sources":["../../src/services/ReportsService.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,UAAU,EAAkB,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAkC,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG1G,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAmC,MAAM,kCAAkC,CAAC;AAGpH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAMvC,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAMF,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAChE,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,UAAU,GAAG,MAAM,CAAC;IAClC,aAAa,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5C,SAAS,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5D,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAGF,yBAAiB,QAAQ,CAAC;IACxB;;;;;OAKG;IACH,MAAa,OAAQ,SAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO;QAEhD,aAAa,EAAG,aAAa,CAAC;QAE9B,OAAO,CAAC,iBAAiB,CAAsD;QAE/E,OAAO,CAAC,iBAAiB,CAAkB;QAE3C,UAAmB,gBAAgB,EAAE,MAAM,EAAE,CAkB3C;QAEF,OAAO,CAAC,cAAc;QAIT,aAAa,CAAC,QAAQ,EAAE,aAAa;QAiDlD,OAAO,CAAC,oBAAoB;QAK5B,SAAS,CAAC,mBAAmB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,GAAG,UAAU,CAAC;gBAI1D,YAAY;QAUnB,sBAAsB,CAAC,KAAK,EAAE,aAAa;QAOrC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM;QAO5C,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC;QAcnF,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAK7D,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;QAK9E,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAUrF,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QA2BnG,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QAY/E,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;gBAS/G,qBAAqB;QAkCnC,OAAO,CAAC,wBAAwB;QAiChC,OAAO,CAAC,eAAe;QAkCV,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,oBAAK,EAAE,GAAG,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,SAAI,EAAE,IAAI,SAAK;QAgC1G,wCAAwC,CAAC,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY;QAuBlH,uBAAuB,CAAC,GAAG,EAAE,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY;QAyBzE,oCAAoC,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;QA0BjF,OAAO,CAAC,gBAAgB;QAIxB,OAAO,CAAC,mBAAmB;QAcd,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,oBAAK,EAAE,GAAG,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,SAAI,EAAE,IAAI,SAAa;QAwCpH,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,gBAAgB;QAQzC,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,EAAE;QAUpI,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE;QAQzH,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;QAelH,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,GAAE,OAAmB,EAAE,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;QAmB1I,iBAAiB,CAAC,GAAG,EAAE,gBAAgB;QAUvC;;WAEG;QACH,OAAO,CAAC,uBAAuB;QAQ/B;;;WAGG;QACH,OAAO,CAAC,mBAAmB;QAU3B;;;;;;;;WAQG;QACH,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,MAAM,GAAE,OAAmB;QAoB/I;;;;;;;;;;WAUG;QACU,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAsCvG,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE;QAQtD,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY;QAe5C,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,oBAAI,EAAE,IAAI,EAAE,MAAM;QAK9D,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS;QAMjD,kBAAkB,CAAC,WAAW,EAAE,WAAW,GAAG,eAAe;KAcrE;IAED,MAAa,wBAAyB,SAAQ,KAAK;QAC1C,MAAM,EAAE,MAAM,CAAC;oBAEV,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;KAI5C;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC;CACtC"}
@@ -17,18 +17,53 @@
17
17
  // You should have received a copy of the GNU General Public License along
18
18
  // with this program; if not, write to the Free Software Foundation, Inc.,
19
19
  // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ var desc = Object.getOwnPropertyDescriptor(m, k);
23
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
24
+ desc = { enumerable: true, get: function() { return m[k]; } };
25
+ }
26
+ Object.defineProperty(o, k2, desc);
27
+ }) : (function(o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ o[k2] = m[k];
30
+ }));
31
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
32
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
33
+ }) : function(o, v) {
34
+ o["default"] = v;
35
+ });
36
+ var __importStar = (this && this.__importStar) || (function () {
37
+ var ownKeys = function(o) {
38
+ ownKeys = Object.getOwnPropertyNames || function (o) {
39
+ var ar = [];
40
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
41
+ return ar;
42
+ };
43
+ return ownKeys(o);
44
+ };
45
+ return function (mod) {
46
+ if (mod && mod.__esModule) return mod;
47
+ var result = {};
48
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
49
+ __setModuleDefault(result, mod);
50
+ return result;
51
+ };
52
+ })();
20
53
  var __importDefault = (this && this.__importDefault) || function (mod) {
21
54
  return (mod && mod.__esModule) ? mod : { "default": mod };
22
55
  };
23
56
  Object.defineProperty(exports, "__esModule", { value: true });
24
57
  exports.Services = void 0;
25
58
  const rxjs_1 = require("rxjs");
26
- const operators_1 = require("rxjs/operators");
27
59
  const ReportConfig_1 = require("../model/config/ReportConfig");
28
60
  const CoreService_1 = require("../CoreService");
29
61
  const sails_ng_common_1 = require("@researchdatabox/sails-ng-common");
30
62
  const sync_1 = require("csv-stringify/sync");
31
63
  const handlebars_1 = __importDefault(require("handlebars"));
64
+ const fs = __importStar(require("node:fs/promises"));
65
+ const path = __importStar(require("node:path"));
66
+ const DEFAULT_BOOTSTRAP_DATA_PATH = 'bootstrap-data';
32
67
  var Services;
33
68
  (function (Services) {
34
69
  /**
@@ -44,13 +79,19 @@ var Services;
44
79
  // Flag to track if helpers are registered
45
80
  helpersRegistered = false;
46
81
  _exportedMethods = [
47
- 'bootstrap',
82
+ 'bootstrapData',
48
83
  'create',
49
84
  'findAllReportsForBrand',
50
85
  'get',
51
86
  'getResults',
52
87
  'getCSVResult',
53
88
  'getReportDto',
89
+ 'listConfigs',
90
+ 'getConfig',
91
+ 'createConfig',
92
+ 'updateConfig',
93
+ 'deleteConfig',
94
+ 'previewConfig',
54
95
  'extractReportTemplates',
55
96
  //exported only for unit testing
56
97
  'getDataRows',
@@ -59,38 +100,68 @@ var Services;
59
100
  getReportModel() {
60
101
  return RBReport;
61
102
  }
62
- bootstrap = (defBrand) => {
63
- let reportModel;
103
+ async bootstrapData(defBrand) {
104
+ const bootstrapPath = this.getBootstrapDataPath();
105
+ let fileNames = [];
106
+ const fileOps = this.getBootstrapFileOps();
64
107
  try {
65
- reportModel = this.getReportModel();
108
+ const fileEntries = await fileOps.readdir(bootstrapPath, { withFileTypes: true });
109
+ fileNames = fileEntries
110
+ .filter((entry) => entry.isFile() && entry.name.endsWith('.json'))
111
+ .map((entry) => entry.name)
112
+ .sort((a, b) => a.localeCompare(b));
66
113
  }
67
- catch (_error) {
68
- sails.log.warn(`${this.logHeader} bootstrap() -> Report model unavailable, skipping report bootstrap.`);
69
- return (0, rxjs_1.of)({});
114
+ catch (error) {
115
+ const ioError = error;
116
+ if (ioError.code === 'ENOENT') {
117
+ sails.log.verbose(`Report bootstrap data path not found: ${bootstrapPath}`);
118
+ return;
119
+ }
120
+ sails.log.error(`Failed to read report bootstrap data path: ${bootstrapPath}`, error);
121
+ return;
70
122
  }
71
- return super.getObservable(reportModel.find({
72
- branding: defBrand.id
73
- })).pipe((0, operators_1.mergeMap)(reports => {
74
- if (_.isEmpty(reports)) {
75
- const rTypes = [];
76
- sails.log.verbose("Bootstrapping report definitions... ");
77
- _.forOwn(sails.config.reports, (config, report) => {
78
- const obs = this.create(defBrand, report, config);
79
- obs.subscribe(() => { });
80
- rTypes.push(obs);
81
- });
82
- return (0, rxjs_1.from)(rTypes);
123
+ for (const fileName of fileNames) {
124
+ try {
125
+ const filePath = path.join(bootstrapPath, fileName);
126
+ const definition = await this.readJsonFile(filePath);
127
+ if (!definition) {
128
+ continue;
129
+ }
130
+ const name = fileName.replace(/\.json$/, '');
131
+ if (!name || typeof definition.title !== 'string' || definition.title.length === 0) {
132
+ sails.log.error(`Skipping report bootstrap file with missing name or title: ${fileName}`);
133
+ continue;
134
+ }
135
+ const existing = await this.getReportModel().findOne({ key: `${defBrand.id}_${name}` });
136
+ if (existing) {
137
+ sails.log.verbose(`Skipping existing report bootstrap data: ${name}`);
138
+ continue;
139
+ }
140
+ await (0, rxjs_1.firstValueFrom)(this.create(defBrand, name, definition));
141
+ sails.log.verbose(`Bootstrapped report: ${name}`);
83
142
  }
84
- else {
85
- const rTypes = [];
86
- _.each(reports, function (report) {
87
- rTypes.push((0, rxjs_1.of)(report));
88
- });
89
- sails.log.verbose("Default reports definition(s) exist.");
90
- return (0, rxjs_1.from)(rTypes);
143
+ catch (error) {
144
+ sails.log.error(`Failed to bootstrap report from file: ${fileName}`, error);
91
145
  }
92
- }), (0, operators_1.last)());
93
- };
146
+ }
147
+ }
148
+ getBootstrapDataPath() {
149
+ const configuredPath = _.get(sails.config, 'bootstrap.bootstrapDataPath', DEFAULT_BOOTSTRAP_DATA_PATH);
150
+ return path.resolve(String(configuredPath), 'reports');
151
+ }
152
+ getBootstrapFileOps() {
153
+ return fs;
154
+ }
155
+ async readJsonFile(filePath) {
156
+ try {
157
+ const content = await this.getBootstrapFileOps().readFile(filePath, 'utf8');
158
+ return JSON.parse(content);
159
+ }
160
+ catch (error) {
161
+ sails.log.error(`Failed to read report bootstrap file: ${path.basename(filePath)}`, error);
162
+ return null;
163
+ }
164
+ }
94
165
  findAllReportsForBrand(brand) {
95
166
  const reportModel = this.getReportModel();
96
167
  return super.getObservable(reportModel.find({
@@ -116,6 +187,133 @@ var Services;
116
187
  columns: config.columns
117
188
  }));
118
189
  }
190
+ async listConfigs(brand) {
191
+ const reports = await (0, rxjs_1.firstValueFrom)(this.findAllReportsForBrand(brand));
192
+ return reports.map(report => this.getReportConfigDto(report));
193
+ }
194
+ async getConfig(brand, name) {
195
+ const report = await this.get(brand, name);
196
+ return report ? this.getReportConfigDto(report) : null;
197
+ }
198
+ async createConfig(brand, config) {
199
+ const { dto: normalized } = await this.validateMutableConfig(brand, config, false);
200
+ const existing = await this.get(brand, normalized.name);
201
+ if (existing) {
202
+ throw new ReportConfigServiceError(409, `Report '${normalized.name}' already exists`);
203
+ }
204
+ const created = await (0, rxjs_1.firstValueFrom)(this.create(brand, normalized.name, normalized));
205
+ return this.getReportConfigDto(created);
206
+ }
207
+ async updateConfig(brand, name, config) {
208
+ const existing = await this.get(brand, name);
209
+ if (!existing) {
210
+ throw new ReportConfigServiceError(404, `Report '${name}' not found`);
211
+ }
212
+ if (this.getReportConfigDto(existing).readOnly) {
213
+ throw new ReportConfigServiceError(403, 'Solr reports cannot be modified');
214
+ }
215
+ const { dto: normalized } = await this.validateMutableConfig(brand, { ...config, name }, true);
216
+ if (config.name && config.name !== name) {
217
+ throw new ReportConfigServiceError(400, 'Report name cannot be changed');
218
+ }
219
+ const reportModel = this.getReportModel();
220
+ const updated = await reportModel.updateOne({ key: `${brand.id}_${name}` }).set({
221
+ title: normalized.title,
222
+ reportSource: normalized.reportSource,
223
+ databaseQuery: normalized.databaseQuery,
224
+ solrQuery: normalized.solrQuery,
225
+ filter: normalized.filter,
226
+ columns: normalized.columns
227
+ });
228
+ if (!updated) {
229
+ throw new ReportConfigServiceError(404, `Report '${name}' not found`);
230
+ }
231
+ return this.getReportConfigDto(updated);
232
+ }
233
+ async deleteConfig(brand, name) {
234
+ const existing = await this.get(brand, name);
235
+ if (!existing) {
236
+ throw new ReportConfigServiceError(404, `Report '${name}' not found`);
237
+ }
238
+ if (this.getReportConfigDto(existing).readOnly) {
239
+ throw new ReportConfigServiceError(403, 'Solr reports cannot be deleted');
240
+ }
241
+ await this.getReportModel().destroyOne({ key: `${brand.id}_${name}` });
242
+ return { deleted: true };
243
+ }
244
+ async previewConfig(brand, config, req) {
245
+ const { dto: normalized, namedQuery } = await this.validateMutableConfig(brand, config, false);
246
+ const paramMap = this.buildNamedQueryParamMap(req, normalized);
247
+ const dbResult = await NamedQueryService.performNamedQueryFromConfig(namedQuery, paramMap, brand, 0, 100);
248
+ const response = this.getTranslateDatabaseResultToReportResult(dbResult, normalized);
249
+ response.success = true;
250
+ return response;
251
+ }
252
+ async validateMutableConfig(brand, config, isUpdate) {
253
+ const normalized = this.normalizeReportConfigDto(config);
254
+ if (_.isEmpty(normalized.name) || !/^[A-Za-z0-9_-]+$/.test(normalized.name)) {
255
+ throw new ReportConfigServiceError(400, 'Report name is required and must be URL safe');
256
+ }
257
+ if (_.isEmpty(normalized.title)) {
258
+ throw new ReportConfigServiceError(400, 'Report title is required');
259
+ }
260
+ if (normalized.reportSource !== ReportConfig_1.ReportSource.database) {
261
+ throw new ReportConfigServiceError(403, 'Only database reports can be changed');
262
+ }
263
+ if (!normalized.databaseQuery || _.isEmpty(normalized.databaseQuery.queryName)) {
264
+ throw new ReportConfigServiceError(400, 'Named query is required');
265
+ }
266
+ const namedQuery = await NamedQueryService.getNamedQueryConfig(brand, normalized.databaseQuery.queryName);
267
+ if (!namedQuery) {
268
+ throw new ReportConfigServiceError(400, `Named query '${normalized.databaseQuery.queryName}' not found`);
269
+ }
270
+ for (const column of normalized.columns) {
271
+ if (_.isEmpty(column.label) || _.isEmpty(column.property)) {
272
+ throw new ReportConfigServiceError(400, 'Report columns require label and property');
273
+ }
274
+ }
275
+ for (const filter of normalized.filter) {
276
+ if (filter.type === ReportConfig_1.ReportFilterType.dateRange && (!filter.database?.fromProperty || !filter.database?.toProperty)) {
277
+ throw new ReportConfigServiceError(400, 'Database date-range filters require fromProperty and toProperty');
278
+ }
279
+ }
280
+ if (!isUpdate && _.isEmpty(normalized.columns)) {
281
+ normalized.columns = [];
282
+ }
283
+ return { dto: normalized, namedQuery };
284
+ }
285
+ normalizeReportConfigDto(config) {
286
+ const source = config.reportSource ?? ReportConfig_1.ReportSource.database;
287
+ const filter = (config.filter ?? []).map((item) => ({
288
+ paramName: item.paramName ?? '',
289
+ type: item.type ?? ReportConfig_1.ReportFilterType.text,
290
+ property: item.property ?? '',
291
+ message: item.message ?? item.messsage ?? '',
292
+ database: item.database ?? null
293
+ }));
294
+ const columns = (config.columns ?? []).map((column) => ({
295
+ label: column.label ?? '',
296
+ property: column.property ?? '',
297
+ hide: column.hide ?? false,
298
+ exportTemplate: column.exportTemplate ?? '',
299
+ template: column.template ?? '',
300
+ multivalue: column.multivalue ?? false
301
+ }));
302
+ return {
303
+ name: config.name ?? '',
304
+ title: config.title ?? '',
305
+ reportSource: source,
306
+ databaseQuery: config.databaseQuery ?? null,
307
+ solrQuery: config.solrQuery ?? null,
308
+ filter,
309
+ columns,
310
+ readOnly: source !== ReportConfig_1.ReportSource.database,
311
+ readOnlyReason: source !== ReportConfig_1.ReportSource.database ? 'Solr reports are read-only in this version' : undefined,
312
+ canEdit: source === ReportConfig_1.ReportSource.database,
313
+ canDelete: source === ReportConfig_1.ReportSource.database,
314
+ canPreview: source === ReportConfig_1.ReportSource.database
315
+ };
316
+ }
119
317
  buildSolrParams(brand, req, report, start, rows, format = 'json') {
120
318
  let params = this.getQueryValue(report);
121
319
  params = this.addPaginationParams(params, start, rows);
@@ -160,6 +358,9 @@ var Services;
160
358
  throw new Error(`Report '${name}' is missing databaseQuery config`);
161
359
  }
162
360
  const namedQueryConfig = await NamedQueryService.getNamedQueryConfig(brand, report.databaseQuery.queryName);
361
+ if (!namedQueryConfig) {
362
+ throw new Error(`Named query '${report.databaseQuery.queryName}' not found`);
363
+ }
163
364
  const paramMap = this.buildNamedQueryParamMap(req, report);
164
365
  const dbResult = await NamedQueryService.performNamedQueryFromConfig(namedQueryConfig, paramMap, brand, start, rows);
165
366
  return this.getTranslateDatabaseResultToReportResult(dbResult, report);
@@ -175,14 +376,13 @@ var Services;
175
376
  }
176
377
  getTranslateDatabaseResultToReportResult(dbResult, _report) {
177
378
  const totalItems = dbResult.summary.numFound;
178
- const startIndex = dbResult.summary.start;
179
379
  const pageNumber = dbResult.summary.page;
380
+ const docs = dbResult.records;
180
381
  const response = new ReportConfig_1.ReportResult();
181
382
  response.total = totalItems;
182
383
  response.pageNum = pageNumber;
183
- response.recordPerPage = startIndex;
384
+ response.recordsPerPage = docs.length;
184
385
  const items = [];
185
- const docs = dbResult.records;
186
386
  for (let i = 0; i < docs.length; i++) {
187
387
  const doc = docs[i];
188
388
  // TODO: filter out the results so we dont have to present all the metadata in the front end
@@ -221,7 +421,7 @@ var Services;
221
421
  const response = new ReportConfig_1.ReportResult();
222
422
  response.total = totalItems;
223
423
  response.pageNum = pageNumber;
224
- response.recordPerPage = _.toNumber(noItems);
424
+ response.recordsPerPage = _.toNumber(noItems);
225
425
  const items = [];
226
426
  const docs = results.response.docs;
227
427
  for (let i = 0; i < docs.length; i++) {
@@ -265,6 +465,9 @@ var Services;
265
465
  throw new Error(`Report '${name}' is missing databaseQuery config`);
266
466
  }
267
467
  const namedQueryConfig = await NamedQueryService.getNamedQueryConfig(brand, report.databaseQuery.queryName);
468
+ if (!namedQueryConfig) {
469
+ throw new Error(`Named query '${report.databaseQuery.queryName}' not found`);
470
+ }
268
471
  const paramMap = this.buildNamedQueryParamMap(req, report);
269
472
  const dbResult = await NamedQueryService.performNamedQueryFromConfig(namedQueryConfig, paramMap, brand, start, rows);
270
473
  result = this.getTranslateDatabaseResultToReportResult(dbResult, report);
@@ -469,7 +672,28 @@ var Services;
469
672
  "solr_query": "solrQuery"
470
673
  }, true);
471
674
  }
675
+ getReportConfigDto(reportModel) {
676
+ const converted = this.convertLegacyReport(reportModel);
677
+ const reportSource = converted.reportSource === ReportConfig_1.ReportSource.database ? ReportConfig_1.ReportSource.database : ReportConfig_1.ReportSource.solr;
678
+ return this.normalizeReportConfigDto({
679
+ name: converted.name,
680
+ title: converted.title,
681
+ reportSource,
682
+ databaseQuery: converted.databaseQuery,
683
+ solrQuery: converted.solrQuery,
684
+ filter: converted.filter,
685
+ columns: converted.columns
686
+ });
687
+ }
472
688
  }
473
689
  Services.Reports = Reports;
690
+ class ReportConfigServiceError extends Error {
691
+ status;
692
+ constructor(status, message) {
693
+ super(message);
694
+ this.status = status;
695
+ }
696
+ }
697
+ Services.ReportConfigServiceError = ReportConfigServiceError;
474
698
  })(Services || (exports.Services = Services = {}));
475
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3J0c1NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvUmVwb3J0c1NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBGQUEwRjtBQUMxRixFQUFFO0FBQ0YsNkJBQTZCO0FBQzdCLDBCQUEwQjtBQUMxQixFQUFFO0FBQ0YsdUVBQXVFO0FBQ3ZFLHVFQUF1RTtBQUN2RSxvRUFBb0U7QUFDcEUsc0NBQXNDO0FBQ3RDLEVBQUU7QUFDRixrRUFBa0U7QUFDbEUsaUVBQWlFO0FBQ2pFLGdFQUFnRTtBQUNoRSwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLDBFQUEwRTtBQUMxRSwwRUFBMEU7QUFDMUUsOERBQThEOzs7Ozs7QUFFOUQsK0JBQTREO0FBQzVELDhDQUEyRDtBQUUzRCwrREFBMEc7QUFLMUcsZ0RBQXNEO0FBRXRELHNFQUFvSDtBQUNwSCw2Q0FBK0M7QUFDL0MsNERBQW9DO0FBNkJwQyxJQUFpQixRQUFRLENBK2V4QjtBQS9lRCxXQUFpQixRQUFRO0lBQ3ZCOzs7OztPQUtHO0lBQ0gsTUFBYSxPQUFRLFNBQVEsc0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUVoRCxhQUFhLENBQWlCO1FBQzlCLHFFQUFxRTtRQUM3RCxpQkFBaUIsR0FBNEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUMvRSwwQ0FBMEM7UUFDbEMsaUJBQWlCLEdBQVksS0FBSyxDQUFDO1FBRXhCLGdCQUFnQixHQUFhO1lBQzlDLFdBQVc7WUFDWCxRQUFRO1lBQ1Isd0JBQXdCO1lBQ3hCLEtBQUs7WUFDTCxZQUFZO1lBQ1osY0FBYztZQUNkLGNBQWM7WUFDZCx3QkFBd0I7WUFDeEIsZ0NBQWdDO1lBQ2hDLGFBQWE7WUFDYixpQkFBaUI7U0FDbEIsQ0FBQztRQUVNLGNBQWM7WUFDcEIsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVNLFNBQVMsR0FBRyxDQUFDLFFBQXVCLEVBQUUsRUFBRTtZQUM3QyxJQUFJ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
699
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3J0c1NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvUmVwb3J0c1NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBGQUEwRjtBQUMxRixFQUFFO0FBQ0YsNkJBQTZCO0FBQzdCLDBCQUEwQjtBQUMxQixFQUFFO0FBQ0YsdUVBQXVFO0FBQ3ZFLHVFQUF1RTtBQUN2RSxvRUFBb0U7QUFDcEUsc0NBQXNDO0FBQ3RDLEVBQUU7QUFDRixrRUFBa0U7QUFDbEUsaUVBQWlFO0FBQ2pFLGdFQUFnRTtBQUNoRSwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLDBFQUEwRTtBQUMxRSwwRUFBMEU7QUFDMUUsOERBQThEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFOUQsK0JBQWtEO0FBRWxELCtEQUEwRztBQU0xRyxnREFBc0Q7QUFFdEQsc0VBQW9IO0FBQ3BILDZDQUErQztBQUMvQyw0REFBb0M7QUFDcEMscURBQXVDO0FBQ3ZDLGdEQUFrQztBQUVsQyxNQUFNLDJCQUEyQixHQUFHLGdCQUFnQixDQUFDO0FBNkRyRCxJQUFpQixRQUFRLENBMnJCeEI7QUEzckJELFdBQWlCLFFBQVE7SUFDdkI7Ozs7O09BS0c7SUFDSCxNQUFhLE9BQVEsU0FBUSxzQkFBUSxDQUFDLElBQUksQ0FBQyxPQUFPO1FBRWhELGFBQWEsQ0FBaUI7UUFDOUIscUVBQXFFO1FBQzdELGlCQUFpQixHQUE0QyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQy9FLDBDQUEwQztRQUNsQyxpQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFeEIsZ0JBQWdCLEdBQWE7WUFDOUMsZUFBZTtZQUNmLFFBQVE7WUFDUix3QkFBd0I7WUFDeEIsS0FBSztZQUNMLFlBQVk7WUFDWixjQUFjO1lBQ2QsY0FBYztZQUNkLGFBQWE7WUFDYixXQUFXO1lBQ1gsY0FBYztZQUNkLGNBQWM7WUFDZCxjQUFjO1lBQ2QsZUFBZTtZQUNm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
@@ -1,19 +1,13 @@
1
1
  import { Services as services } from '../CoreService';
2
2
  /**
3
3
  * SassCompilerService
4
- * : compile semantic variable map into CSS using root assets/styles/style.scss
5
- * injecting tenant overrides after the variable import section.
6
- *
7
- * Usage: await SassCompilerService.compile({ 'site-branding-area-background': '#ffffff' })
8
- * Returns: { css, hash }
4
+ * Deprecated compatibility wrapper for variable CSS generation.
9
5
  */
10
6
  export declare namespace Services {
11
7
  class SassCompiler extends services.Core.Service {
12
- getWhitelist(): string[];
13
- normaliseHex(value: string): string;
14
- /** Build SCSS root by injecting overrides after last *variables import */
15
- buildRootScss(overrideLines: string[]): string;
16
- /** Compile full theme returning css + sha256 hash using webpack loader chain */
8
+ getAllowedVariableKeys(): string[];
9
+ normalizeHex(value: string): string;
10
+ validateVariables(variables: Record<string, string>): Record<string, string>;
17
11
  compile(variables: Record<string, string>): Promise<{
18
12
  css: string;
19
13
  hash: string;
@@ -1 +1 @@
1
- {"version":3,"file":"SassCompilerService.d.ts","sourceRoot":"","sources":["../../src/services/SassCompilerService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAYtD;;;;;;;GAOG;AACH,yBAAiB,QAAQ,CAAC;IAEtB,MACa,YAAa,SAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO;QACnD,YAAY,IAAI,MAAM,EAAE;QAIxB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;QAYnC,0EAA0E;QAC1E,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM;QAyB9C,gFAAgF;QAC1E,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;SAAE,CAAC;KAoH5F;CACJ;AAED,OAAO,CAAC,MAAM,CAAC;IACX,IAAI,mBAAmB,EAAE,QAAQ,CAAC,YAAY,CAAC;CAClD"}
1
+ {"version":3,"file":"SassCompilerService.d.ts","sourceRoot":"","sources":["../../src/services/SassCompilerService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAKtD;;;GAGG;AACH,yBAAiB,QAAQ,CAAC;IACxB,MACa,YAAa,SAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO;QACrD,sBAAsB,IAAI,MAAM,EAAE;QAIlC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;QAInC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;QAItE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KAGzF;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,mBAAmB,EAAE,QAAQ,CAAC,YAAY,CAAC;CAChD"}