@researchdatabox/redbox-core 0.0.1-beta.9225 → 0.0.1-beta.9474

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 (355) hide show
  1. package/dist/CoreController.d.ts +4 -0
  2. package/dist/CoreController.d.ts.map +1 -1
  3. package/dist/CoreController.js +33 -1
  4. package/dist/DatastreamService.d.ts +5 -2
  5. package/dist/DatastreamService.d.ts.map +1 -1
  6. package/dist/QueueService.d.ts +1 -1
  7. package/dist/QueueService.d.ts.map +1 -1
  8. package/dist/RecordsService.d.ts +38 -2
  9. package/dist/RecordsService.d.ts.map +1 -1
  10. package/dist/StorageService.d.ts +2 -1
  11. package/dist/StorageService.d.ts.map +1 -1
  12. package/dist/api-routes/apib.d.ts +7 -0
  13. package/dist/api-routes/apib.d.ts.map +1 -0
  14. package/dist/api-routes/apib.js +43 -0
  15. package/dist/api-routes/define.d.ts +4 -0
  16. package/dist/api-routes/define.d.ts.map +1 -0
  17. package/dist/api-routes/define.js +29 -0
  18. package/dist/api-routes/groups/admin.d.ts +6 -0
  19. package/dist/api-routes/groups/admin.d.ts.map +1 -0
  20. package/dist/api-routes/groups/admin.js +53 -0
  21. package/dist/api-routes/groups/appconfig.d.ts +4 -0
  22. package/dist/api-routes/groups/appconfig.d.ts.map +1 -0
  23. package/dist/api-routes/groups/appconfig.js +33 -0
  24. package/dist/api-routes/groups/branding.d.ts +8 -0
  25. package/dist/api-routes/groups/branding.d.ts.map +1 -0
  26. package/dist/api-routes/groups/branding.js +61 -0
  27. package/dist/api-routes/groups/dashboard-config.d.ts +11 -0
  28. package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -0
  29. package/dist/api-routes/groups/dashboard-config.js +90 -0
  30. package/dist/api-routes/groups/export.d.ts +3 -0
  31. package/dist/api-routes/groups/export.d.ts.map +1 -0
  32. package/dist/api-routes/groups/export.js +30 -0
  33. package/dist/api-routes/groups/forms.d.ts +4 -0
  34. package/dist/api-routes/groups/forms.d.ts.map +1 -0
  35. package/dist/api-routes/groups/forms.js +29 -0
  36. package/dist/api-routes/groups/integration-audit.d.ts +3 -0
  37. package/dist/api-routes/groups/integration-audit.d.ts.map +1 -0
  38. package/dist/api-routes/groups/integration-audit.js +35 -0
  39. package/dist/api-routes/groups/notifications.d.ts +3 -0
  40. package/dist/api-routes/groups/notifications.d.ts.map +1 -0
  41. package/dist/api-routes/groups/notifications.js +20 -0
  42. package/dist/api-routes/groups/records.d.ts +28 -0
  43. package/dist/api-routes/groups/records.d.ts.map +1 -0
  44. package/dist/api-routes/groups/records.js +349 -0
  45. package/dist/api-routes/groups/recordtypes.d.ts +4 -0
  46. package/dist/api-routes/groups/recordtypes.d.ts.map +1 -0
  47. package/dist/api-routes/groups/recordtypes.js +27 -0
  48. package/dist/api-routes/groups/reports.d.ts +3 -0
  49. package/dist/api-routes/groups/reports.d.ts.map +1 -0
  50. package/dist/api-routes/groups/reports.js +20 -0
  51. package/dist/api-routes/groups/search-query.d.ts +4 -0
  52. package/dist/api-routes/groups/search-query.d.ts.map +1 -0
  53. package/dist/api-routes/groups/search-query.js +51 -0
  54. package/dist/api-routes/groups/search.d.ts +6 -0
  55. package/dist/api-routes/groups/search.d.ts.map +1 -0
  56. package/dist/api-routes/groups/search.js +31 -0
  57. package/dist/api-routes/groups/translation.d.ts +8 -0
  58. package/dist/api-routes/groups/translation.d.ts.map +1 -0
  59. package/dist/api-routes/groups/translation.js +78 -0
  60. package/dist/api-routes/groups/users.d.ts +17 -0
  61. package/dist/api-routes/groups/users.d.ts.map +1 -0
  62. package/dist/api-routes/groups/users.js +149 -0
  63. package/dist/api-routes/groups/vocabulary.d.ts +10 -0
  64. package/dist/api-routes/groups/vocabulary.d.ts.map +1 -0
  65. package/dist/api-routes/groups/vocabulary.js +97 -0
  66. package/dist/api-routes/helpers.d.ts +29 -0
  67. package/dist/api-routes/helpers.d.ts.map +1 -0
  68. package/dist/api-routes/helpers.js +486 -0
  69. package/dist/api-routes/index.d.ts +25 -0
  70. package/dist/api-routes/index.d.ts.map +1 -0
  71. package/dist/api-routes/index.js +41 -0
  72. package/dist/api-routes/openapi.d.ts +27 -0
  73. package/dist/api-routes/openapi.d.ts.map +1 -0
  74. package/dist/api-routes/openapi.js +273 -0
  75. package/dist/api-routes/request-extraction.d.ts +14 -0
  76. package/dist/api-routes/request-extraction.d.ts.map +1 -0
  77. package/dist/api-routes/request-extraction.js +100 -0
  78. package/dist/api-routes/route-factory.d.ts +3 -0
  79. package/dist/api-routes/route-factory.d.ts.map +1 -0
  80. package/dist/api-routes/route-factory.js +30 -0
  81. package/dist/api-routes/route-registry.d.ts +24 -0
  82. package/dist/api-routes/route-registry.d.ts.map +1 -0
  83. package/dist/api-routes/route-registry.js +113 -0
  84. package/dist/api-routes/route-resolution.d.ts +4 -0
  85. package/dist/api-routes/route-resolution.d.ts.map +1 -0
  86. package/dist/api-routes/route-resolution.js +57 -0
  87. package/dist/api-routes/schemas/common.d.ts +37 -0
  88. package/dist/api-routes/schemas/common.d.ts.map +1 -0
  89. package/dist/api-routes/schemas/common.js +147 -0
  90. package/dist/api-routes/schemas/responses.d.ts +2904 -0
  91. package/dist/api-routes/schemas/responses.d.ts.map +1 -0
  92. package/dist/api-routes/schemas/responses.js +417 -0
  93. package/dist/api-routes/types.d.ts +70 -0
  94. package/dist/api-routes/types.d.ts.map +1 -0
  95. package/dist/api-routes/types.js +3 -0
  96. package/dist/api-routes/validation.d.ts +32 -0
  97. package/dist/api-routes/validation.d.ts.map +1 -0
  98. package/dist/api-routes/validation.js +142 -0
  99. package/dist/bootstrap.d.ts.map +1 -1
  100. package/dist/bootstrap.js +10 -10
  101. package/dist/config/agendaQueue.config.d.ts +25 -1
  102. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  103. package/dist/config/agendaQueue.config.js +19 -2
  104. package/dist/config/auth.config.d.ts.map +1 -1
  105. package/dist/config/auth.config.js +21 -2
  106. package/dist/config/brandingConfigurationDefaults.config.js +3 -3
  107. package/dist/config/dashboardtype.config.d.ts +5 -0
  108. package/dist/config/dashboardtype.config.d.ts.map +1 -1
  109. package/dist/config/dashboardtype.config.js +1 -1
  110. package/dist/config/dashboardview.config.d.ts +24 -0
  111. package/dist/config/dashboardview.config.d.ts.map +1 -0
  112. package/dist/config/dashboardview.config.js +137 -0
  113. package/dist/config/dompurify.config.d.ts.map +1 -1
  114. package/dist/config/dompurify.config.js +2 -2
  115. package/dist/config/http.config.d.ts.map +1 -1
  116. package/dist/config/http.config.js +5 -3
  117. package/dist/config/index.d.ts +6 -0
  118. package/dist/config/index.d.ts.map +1 -1
  119. package/dist/config/index.js +4 -1
  120. package/dist/config/namedQuery.config.d.ts +10 -2
  121. package/dist/config/namedQuery.config.d.ts.map +1 -1
  122. package/dist/config/namedQuery.config.js +17 -17
  123. package/dist/config/policies.config.d.ts +3 -0
  124. package/dist/config/policies.config.d.ts.map +1 -1
  125. package/dist/config/policies.config.js +35 -1
  126. package/dist/config/record.config.d.ts.map +1 -1
  127. package/dist/config/record.config.js +2 -1
  128. package/dist/config/recordtype.config.d.ts +28 -0
  129. package/dist/config/recordtype.config.d.ts.map +1 -1
  130. package/dist/config/recordtype.config.js +85 -9
  131. package/dist/config/routes.config.d.ts +5 -2
  132. package/dist/config/routes.config.d.ts.map +1 -1
  133. package/dist/config/routes.config.js +24 -110
  134. package/dist/config/storage.config.d.ts +20 -2
  135. package/dist/config/storage.config.d.ts.map +1 -1
  136. package/dist/config/storage.config.js +2 -1
  137. package/dist/config/vocab.config.d.ts +30 -0
  138. package/dist/config/vocab.config.d.ts.map +1 -1
  139. package/dist/config/vocab.config.js +21 -1
  140. package/dist/config/webpack.config.d.ts.map +1 -1
  141. package/dist/config/webpack.config.js +13 -7
  142. package/dist/config/workflow.config.d.ts +0 -1
  143. package/dist/config/workflow.config.d.ts.map +1 -1
  144. package/dist/config/workflow.config.js +1 -137
  145. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  146. package/dist/configmodels/AdminSidebarConfig.js +1 -2
  147. package/dist/configmodels/ConfigModels.d.ts +1 -1
  148. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  149. package/dist/configmodels/ConfigModels.js +9 -1
  150. package/dist/configmodels/DashboardTableOverrideConfig.d.ts +1011 -0
  151. package/dist/configmodels/DashboardTableOverrideConfig.d.ts.map +1 -0
  152. package/dist/configmodels/DashboardTableOverrideConfig.js +138 -0
  153. package/dist/controllers/AdminController.d.ts +0 -1
  154. package/dist/controllers/AdminController.d.ts.map +1 -1
  155. package/dist/controllers/AdminController.js +2 -32
  156. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  157. package/dist/controllers/BrandingAppController.js +10 -9
  158. package/dist/controllers/BrandingController.d.ts +3 -5
  159. package/dist/controllers/BrandingController.d.ts.map +1 -1
  160. package/dist/controllers/BrandingController.js +29 -21
  161. package/dist/controllers/DashboardConfigController.d.ts +8 -0
  162. package/dist/controllers/DashboardConfigController.d.ts.map +1 -0
  163. package/dist/controllers/DashboardConfigController.js +17 -0
  164. package/dist/controllers/DynamicAssetController.d.ts +1 -0
  165. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  166. package/dist/controllers/DynamicAssetController.js +20 -1
  167. package/dist/controllers/EmailController.d.ts.map +1 -1
  168. package/dist/controllers/EmailController.js +16 -12
  169. package/dist/controllers/FormVocabularyController.d.ts +1 -0
  170. package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
  171. package/dist/controllers/FormVocabularyController.js +94 -4
  172. package/dist/controllers/RecordController.d.ts +18 -1
  173. package/dist/controllers/RecordController.d.ts.map +1 -1
  174. package/dist/controllers/RecordController.js +274 -124
  175. package/dist/controllers/RenderViewController.d.ts.map +1 -1
  176. package/dist/controllers/RenderViewController.js +4 -2
  177. package/dist/controllers/TranslationController.d.ts.map +1 -1
  178. package/dist/controllers/TranslationController.js +12 -10
  179. package/dist/controllers/WorkspaceTypesController.d.ts +3 -2
  180. package/dist/controllers/WorkspaceTypesController.d.ts.map +1 -1
  181. package/dist/controllers/WorkspaceTypesController.js +120 -31
  182. package/dist/controllers/index.d.ts.map +1 -1
  183. package/dist/controllers/index.js +7 -4
  184. package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
  185. package/dist/controllers/webservice/AdminController.js +15 -16
  186. package/dist/controllers/webservice/AppConfigController.d.ts.map +1 -1
  187. package/dist/controllers/webservice/AppConfigController.js +19 -20
  188. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  189. package/dist/controllers/webservice/BrandingController.js +101 -47
  190. package/dist/controllers/webservice/DashboardConfigController.d.ts +26 -0
  191. package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -0
  192. package/dist/controllers/webservice/DashboardConfigController.js +241 -0
  193. package/dist/controllers/webservice/ExportController.d.ts.map +1 -1
  194. package/dist/controllers/webservice/ExportController.js +11 -11
  195. package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
  196. package/dist/controllers/webservice/FormManagementController.js +11 -13
  197. package/dist/controllers/webservice/RecordController.d.ts +4 -0
  198. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  199. package/dist/controllers/webservice/RecordController.js +428 -257
  200. package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
  201. package/dist/controllers/webservice/RecordTypeController.js +9 -10
  202. package/dist/controllers/webservice/ReportController.d.ts.map +1 -1
  203. package/dist/controllers/webservice/ReportController.js +18 -20
  204. package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
  205. package/dist/controllers/webservice/SearchController.js +28 -35
  206. package/dist/controllers/webservice/TranslationController.d.ts.map +1 -1
  207. package/dist/controllers/webservice/TranslationController.js +61 -39
  208. package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
  209. package/dist/controllers/webservice/UserManagementController.js +112 -99
  210. package/dist/controllers/webservice/VocabularyController.d.ts.map +1 -1
  211. package/dist/controllers/webservice/VocabularyController.js +76 -28
  212. package/dist/hooks/defineRedboxHook.d.ts +3 -0
  213. package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
  214. package/dist/hooks/defineRedboxHook.js +4 -1
  215. package/dist/index.d.ts +2 -0
  216. package/dist/index.d.ts.map +1 -1
  217. package/dist/index.js +2 -1
  218. package/dist/loader/index.d.ts +6 -0
  219. package/dist/loader/index.d.ts.map +1 -1
  220. package/dist/loader/index.js +57 -10
  221. package/dist/middleware/redboxSession.js +1 -1
  222. package/dist/model/DashboardTypeResponseModel.d.ts +13 -1
  223. package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
  224. package/dist/model/DashboardTypeResponseModel.js +12 -4
  225. package/dist/model/DashboardViewResponseModel.d.ts +20 -0
  226. package/dist/model/DashboardViewResponseModel.d.ts.map +1 -0
  227. package/dist/model/DashboardViewResponseModel.js +38 -0
  228. package/dist/model/RecordTypeResponseModel.d.ts +3 -1
  229. package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
  230. package/dist/model/RecordTypeResponseModel.js +4 -2
  231. package/dist/model/RequestDetails.d.ts +1 -1
  232. package/dist/model/RequestDetails.d.ts.map +1 -1
  233. package/dist/model/RequestDetails.js +1 -1
  234. package/dist/model/index.d.ts +1 -0
  235. package/dist/model/index.d.ts.map +1 -1
  236. package/dist/model/index.js +5 -2
  237. package/dist/model/storage/BrandingModel.d.ts +0 -16
  238. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  239. package/dist/model/storage/BrandingModel.js +2 -51
  240. package/dist/model/storage/DashboardTypeModel.d.ts +4 -0
  241. package/dist/model/storage/DashboardTypeModel.d.ts.map +1 -1
  242. package/dist/model/storage/RecordTypeModel.d.ts +16 -0
  243. package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
  244. package/dist/model/storage/RecordTypeModel.js +9 -1
  245. package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
  246. package/dist/policies/contentSecurityPolicy.js +23 -2
  247. package/dist/policies/index.d.ts +3 -0
  248. package/dist/policies/index.d.ts.map +1 -1
  249. package/dist/policies/index.js +6 -2
  250. package/dist/policies/validateApiContractRequest.d.ts +3 -0
  251. package/dist/policies/validateApiContractRequest.d.ts.map +1 -0
  252. package/dist/policies/validateApiContractRequest.js +74 -0
  253. package/dist/responses/badRequest.d.ts.map +1 -1
  254. package/dist/responses/badRequest.js +5 -3
  255. package/dist/responses/created.d.ts.map +1 -1
  256. package/dist/responses/created.js +5 -3
  257. package/dist/responses/forbidden.d.ts.map +1 -1
  258. package/dist/responses/forbidden.js +5 -3
  259. package/dist/responses/ok.d.ts.map +1 -1
  260. package/dist/responses/ok.js +5 -3
  261. package/dist/responses/serverError.d.ts.map +1 -1
  262. package/dist/responses/serverError.js +5 -3
  263. package/dist/responses/siteTitle.d.ts +6 -0
  264. package/dist/responses/siteTitle.d.ts.map +1 -0
  265. package/dist/responses/siteTitle.js +28 -0
  266. package/dist/sails.d.ts +7 -0
  267. package/dist/sails.d.ts.map +1 -1
  268. package/dist/services/AgendaQueueService.d.ts +38 -17
  269. package/dist/services/AgendaQueueService.d.ts.map +1 -1
  270. package/dist/services/AgendaQueueService.js +311 -81
  271. package/dist/services/AttachmentMetadataService.d.ts +34 -0
  272. package/dist/services/AttachmentMetadataService.d.ts.map +1 -0
  273. package/dist/services/AttachmentMetadataService.js +133 -0
  274. package/dist/services/BrandingLogoService.d.ts +6 -8
  275. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  276. package/dist/services/BrandingLogoService.js +66 -72
  277. package/dist/services/DashboardConfigService.d.ts +71 -0
  278. package/dist/services/DashboardConfigService.d.ts.map +1 -0
  279. package/dist/services/DashboardConfigService.js +309 -0
  280. package/dist/services/DashboardTypesService.d.ts +61 -63
  281. package/dist/services/DashboardTypesService.d.ts.map +1 -1
  282. package/dist/services/DashboardTypesService.js +361 -198
  283. package/dist/services/DoiService.d.ts +11 -0
  284. package/dist/services/DoiService.d.ts.map +1 -1
  285. package/dist/services/DoiService.js +206 -1
  286. package/dist/services/FigshareService.d.ts.map +1 -1
  287. package/dist/services/FigshareService.js +5 -1
  288. package/dist/services/FormVocabularyService.d.ts +45 -0
  289. package/dist/services/FormVocabularyService.d.ts.map +1 -0
  290. package/dist/services/FormVocabularyService.js +326 -0
  291. package/dist/services/I18nEntriesService.d.ts +3 -0
  292. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  293. package/dist/services/I18nEntriesService.js +14 -2
  294. package/dist/services/NamedQueryService.d.ts +27 -9
  295. package/dist/services/NamedQueryService.d.ts.map +1 -1
  296. package/dist/services/NamedQueryService.js +223 -55
  297. package/dist/services/RDMPService.d.ts.map +1 -1
  298. package/dist/services/RDMPService.js +3 -2
  299. package/dist/services/RecordsService.d.ts +8 -2
  300. package/dist/services/RecordsService.d.ts.map +1 -1
  301. package/dist/services/RecordsService.js +64 -16
  302. package/dist/services/ReportsService.d.ts.map +1 -1
  303. package/dist/services/ReportsService.js +7 -1
  304. package/dist/services/StandardDatastreamService.d.ts +32 -5
  305. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  306. package/dist/services/StandardDatastreamService.js +490 -38
  307. package/dist/services/StorageManagerService.d.ts +12 -1
  308. package/dist/services/StorageManagerService.d.ts.map +1 -1
  309. package/dist/services/StorageManagerService.js +72 -7
  310. package/dist/services/index.d.ts +9 -3
  311. package/dist/services/index.d.ts.map +1 -1
  312. package/dist/services/index.js +17 -7
  313. package/dist/storage/GridFSDriver.d.ts +101 -0
  314. package/dist/storage/GridFSDriver.d.ts.map +1 -0
  315. package/dist/storage/GridFSDriver.js +291 -0
  316. package/dist/storage/TusStorageManagerDataStore.d.ts +49 -0
  317. package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -0
  318. package/dist/storage/TusStorageManagerDataStore.js +300 -0
  319. package/dist/utilities/RequestParamUtils.d.ts +3 -0
  320. package/dist/utilities/RequestParamUtils.d.ts.map +1 -0
  321. package/dist/utilities/RequestParamUtils.js +13 -0
  322. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  323. package/dist/visitor/construct.visitor.js +6 -3
  324. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  325. package/dist/visitor/migrate-config-v4-v5.visitor.js +19 -1
  326. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  327. package/dist/visitor/validator.visitor.js +11 -3
  328. package/dist/waterline-models/AttachmentAccessAudit.d.ts +26 -0
  329. package/dist/waterline-models/AttachmentAccessAudit.d.ts.map +1 -0
  330. package/dist/waterline-models/AttachmentAccessAudit.js +63 -0
  331. package/dist/waterline-models/AttachmentMetadata.d.ts +40 -0
  332. package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -0
  333. package/dist/waterline-models/AttachmentMetadata.js +147 -0
  334. package/dist/waterline-models/BrandingConfig.d.ts +0 -2
  335. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  336. package/dist/waterline-models/BrandingConfig.js +1 -6
  337. package/dist/waterline-models/DashboardType.d.ts +7 -0
  338. package/dist/waterline-models/DashboardType.d.ts.map +1 -1
  339. package/dist/waterline-models/DashboardType.js +16 -1
  340. package/dist/waterline-models/I18nTranslation.d.ts +2 -0
  341. package/dist/waterline-models/I18nTranslation.d.ts.map +1 -1
  342. package/dist/waterline-models/I18nTranslation.js +6 -1
  343. package/dist/waterline-models/NamedQuery.d.ts +6 -0
  344. package/dist/waterline-models/NamedQuery.d.ts.map +1 -1
  345. package/dist/waterline-models/NamedQuery.js +16 -1
  346. package/dist/waterline-models/index.d.ts +4 -0
  347. package/dist/waterline-models/index.d.ts.map +1 -1
  348. package/dist/waterline-models/index.js +7 -1
  349. package/package.json +36 -26
  350. package/dist/controllers/VocabController.d.ts +0 -43
  351. package/dist/controllers/VocabController.d.ts.map +0 -1
  352. package/dist/controllers/VocabController.js +0 -190
  353. package/dist/services/VocabService.d.ts +0 -81
  354. package/dist/services/VocabService.d.ts.map +0 -1
  355. package/dist/services/VocabService.js +0 -424
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildOpenApiDocument = buildOpenApiDocument;
4
+ require("zod-to-openapi");
5
+ const zod_to_openapi_1 = require("zod-to-openapi");
6
+ const common_1 = require("./schemas/common");
7
+ const helpers_1 = require("./helpers");
8
+ function getWildcardPathParameterNames(path) {
9
+ const wildcardPathParameterNames = new Set();
10
+ const wildcardPathParameterPattern = /:([A-Za-z0-9_]+)\*/g;
11
+ let match;
12
+ while ((match = wildcardPathParameterPattern.exec(path)) !== null) {
13
+ wildcardPathParameterNames.add(match[1]);
14
+ }
15
+ return wildcardPathParameterNames;
16
+ }
17
+ function toOpenApiPath(path) {
18
+ return path
19
+ .replace(/:([A-Za-z0-9_]+)\*/g, '{$1}')
20
+ .replace(/:([A-Za-z0-9_]+)\?/g, '{$1}')
21
+ .replace(/:([A-Za-z0-9_]+)/g, '{$1}');
22
+ }
23
+ function specializeOpenApiPath(path, options) {
24
+ const branding = options.branding?.trim();
25
+ const portal = options.portal?.trim();
26
+ if (!branding && !portal) {
27
+ return path;
28
+ }
29
+ const genericPrefix = '/{branding}/{portal}';
30
+ if (!path.startsWith(genericPrefix)) {
31
+ return path;
32
+ }
33
+ const specializedPrefix = `/${branding || '{branding}'}/${portal || '{portal}'}`;
34
+ return `${specializedPrefix}${path.slice(genericPrefix.length)}`;
35
+ }
36
+ function specializeParameters(parameters, options) {
37
+ if (!parameters) {
38
+ return parameters;
39
+ }
40
+ const pathParamsToRemove = new Set();
41
+ if (options.branding?.trim()) {
42
+ pathParamsToRemove.add('branding');
43
+ }
44
+ if (options.portal?.trim()) {
45
+ pathParamsToRemove.add('portal');
46
+ }
47
+ const nextParameters = parameters.filter(parameter => {
48
+ if (typeof parameter !== 'object' || parameter === null) {
49
+ return true;
50
+ }
51
+ const candidate = parameter;
52
+ return !(candidate.in === 'path' && pathParamsToRemove.has(String(candidate.name ?? '')));
53
+ });
54
+ return nextParameters.length ? nextParameters : undefined;
55
+ }
56
+ function specializeOperation(operation, options) {
57
+ if (!options.branding && !options.portal) {
58
+ return operation;
59
+ }
60
+ const specializedParameters = specializeParameters(operation.parameters, options);
61
+ return {
62
+ ...operation,
63
+ ...(specializedParameters ? { parameters: specializedParameters } : {}),
64
+ };
65
+ }
66
+ function specializeOpenApiDocument(document, options) {
67
+ if (!options.branding && !options.portal) {
68
+ return document;
69
+ }
70
+ const paths = Object.fromEntries(Object.entries(document.paths).map(([path, operations]) => [
71
+ specializeOpenApiPath(path, options),
72
+ Object.fromEntries(Object.entries(operations).map(([method, operation]) => [method, specializeOperation(operation, options)])),
73
+ ]));
74
+ return {
75
+ ...document,
76
+ paths,
77
+ };
78
+ }
79
+ function sanitizeOpenApiValue(value) {
80
+ if (Array.isArray(value)) {
81
+ return value.map(item => sanitizeOpenApiValue(item));
82
+ }
83
+ if (!(0, helpers_1.isRecord)(value)) {
84
+ return value;
85
+ }
86
+ const sanitizedEntries = Object.entries(value).flatMap(([key, entry]) => {
87
+ const sanitizedEntry = sanitizeOpenApiValue(entry);
88
+ if (key === 'required' && Array.isArray(sanitizedEntry) && sanitizedEntry.length === 0) {
89
+ return [];
90
+ }
91
+ if (sanitizedEntry === undefined) {
92
+ return [];
93
+ }
94
+ return [[key, sanitizedEntry]];
95
+ });
96
+ return Object.fromEntries(sanitizedEntries);
97
+ }
98
+ function createSchemaConverter() {
99
+ const generator = new zod_to_openapi_1.OpenAPIGenerator([]);
100
+ // zod-to-openapi 0.2.1 exposes these only as runtime properties; revisit this when upgrading the package.
101
+ return {
102
+ toOpenApiSchema(schema) {
103
+ return sanitizeOpenApiValue(generator.generateSingle(schema));
104
+ },
105
+ getComponentSchemas() {
106
+ const refs = generator.refs ?? {};
107
+ return Object.keys(refs).length ? sanitizeOpenApiValue(refs) : undefined;
108
+ },
109
+ };
110
+ }
111
+ function buildParameters(route, toOpenApiSchema) {
112
+ const params = [];
113
+ const wildcardPathParameterNames = getWildcardPathParameterNames(route.path);
114
+ const getObjectSchema = (schema) => {
115
+ if ((0, helpers_1.isZodObjectSchema)(schema)) {
116
+ return schema;
117
+ }
118
+ if ((0, helpers_1.isOptionalSchema)(schema)) {
119
+ const innerSchema = schema.unwrap();
120
+ if ((0, helpers_1.isZodObjectSchema)(innerSchema)) {
121
+ return innerSchema;
122
+ }
123
+ }
124
+ return undefined;
125
+ };
126
+ const addParameters = (location, schema) => {
127
+ const properties = (0, helpers_1.getObjectSchemaShape)(schema);
128
+ if (!properties) {
129
+ return;
130
+ }
131
+ for (const [name, field] of Object.entries(properties)) {
132
+ const parameter = {
133
+ name,
134
+ in: location,
135
+ required: location === 'path' || !(0, helpers_1.isOptionalSchema)(field),
136
+ schema: toOpenApiSchema(field),
137
+ description: field._def?.openapi?.description,
138
+ };
139
+ if (location === 'path' && wildcardPathParameterNames.has(name)) {
140
+ if (!parameter.description) {
141
+ parameter.description = 'Wildcard path tail; may include slash-delimited segments.';
142
+ }
143
+ }
144
+ if (location === 'query' && getObjectSchema(field)) {
145
+ parameter.style = 'deepObject';
146
+ parameter.explode = true;
147
+ }
148
+ params.push(parameter);
149
+ }
150
+ };
151
+ addParameters('path', route.request?.params);
152
+ addParameters('query', route.request?.query);
153
+ addParameters('header', route.request?.headers);
154
+ return params;
155
+ }
156
+ function buildResponses(route, toOpenApiSchema) {
157
+ const responses = {};
158
+ const routeResponses = route.responses ?? { 200: { description: 'Success' } };
159
+ const defaultResponses = {
160
+ 400: (0, common_1.responseField)(common_1.apiErrorResponseSchema, 'Bad request'),
161
+ 500: (0, common_1.responseField)(common_1.apiErrorResponseSchema, 'Internal server error'),
162
+ };
163
+ const responseDefinitions = {
164
+ ...defaultResponses,
165
+ ...routeResponses,
166
+ };
167
+ for (const [status, response] of Object.entries(responseDefinitions)) {
168
+ const content = {};
169
+ for (const [contentType, bodyContent] of Object.entries(response.content ?? {})) {
170
+ const contentEntry = {};
171
+ if (bodyContent.schema) {
172
+ contentEntry.schema = toOpenApiSchema(bodyContent.schema);
173
+ }
174
+ if (bodyContent.description) {
175
+ contentEntry.description = bodyContent.description;
176
+ }
177
+ content[contentType] = contentEntry;
178
+ }
179
+ responses[status] = {
180
+ description: response.description,
181
+ ...(Object.keys(content).length ? { content } : {}),
182
+ ...(response.headers
183
+ ? {
184
+ headers: Object.fromEntries(Object.entries(response.headers).map(([name, schema]) => [name, { schema: toOpenApiSchema(schema) }])),
185
+ }
186
+ : {}),
187
+ };
188
+ }
189
+ return responses;
190
+ }
191
+ function buildRequestBody(route, toOpenApiSchema) {
192
+ const body = route.request?.body;
193
+ if (!body) {
194
+ return undefined;
195
+ }
196
+ const content = {};
197
+ for (const [contentType, bodyContent] of Object.entries(body.content)) {
198
+ const contentEntry = {};
199
+ if (bodyContent.schema) {
200
+ contentEntry.schema = toOpenApiSchema(bodyContent.schema);
201
+ }
202
+ if (bodyContent.description) {
203
+ contentEntry.description = bodyContent.description;
204
+ }
205
+ if (bodyContent.encoding) {
206
+ contentEntry.encoding = bodyContent.encoding;
207
+ }
208
+ if (route.request?.files && contentType === 'multipart/form-data') {
209
+ const objectSchema = (bodyContent.schema && (0, helpers_1.isZodObjectSchema)(bodyContent.schema)
210
+ ? { ...toOpenApiSchema(bodyContent.schema) }
211
+ : { type: 'object', properties: {} });
212
+ const properties = objectSchema.properties ?? {};
213
+ const required = new Set(objectSchema.required ?? []);
214
+ for (const [name, constraint] of Object.entries(route.request.files)) {
215
+ properties[name] = {
216
+ type: 'string',
217
+ format: 'binary',
218
+ description: (0, helpers_1.getFileConstraintDescription)(name, constraint),
219
+ ...(0, helpers_1.getFileConstraintOpenApiExtension)(constraint),
220
+ };
221
+ if (constraint.required) {
222
+ required.add(name);
223
+ }
224
+ }
225
+ objectSchema.properties = properties;
226
+ if (required.size > 0) {
227
+ objectSchema.required = [...required];
228
+ }
229
+ contentEntry.schema = objectSchema;
230
+ }
231
+ content[contentType] = contentEntry;
232
+ }
233
+ return {
234
+ required: body.required ?? false,
235
+ content,
236
+ };
237
+ }
238
+ function buildOpenApiDocument(routes, info, options = {}) {
239
+ const { toOpenApiSchema, getComponentSchemas } = createSchemaConverter();
240
+ const paths = (0, helpers_1.ensureUniqueApiRoutes)(routes, 'OpenAPI document').reduce((acc, route) => {
241
+ const path = toOpenApiPath(route.path);
242
+ if (!acc[path]) {
243
+ acc[path] = {};
244
+ }
245
+ acc[path][route.method] = {
246
+ tags: route.tags ? [...route.tags] : undefined,
247
+ summary: route.summary,
248
+ description: route.description,
249
+ operationId: route.operationId,
250
+ security: route.security
251
+ ? route.security.map(entry => ({ ...entry }))
252
+ : [{ bearerAuth: [] }],
253
+ parameters: buildParameters(route, toOpenApiSchema),
254
+ requestBody: buildRequestBody(route, toOpenApiSchema),
255
+ responses: buildResponses(route, toOpenApiSchema),
256
+ ...(route.extensions ?? {}),
257
+ };
258
+ return acc;
259
+ }, {});
260
+ const componentSchemas = getComponentSchemas();
261
+ return sanitizeOpenApiValue(specializeOpenApiDocument({
262
+ openapi: '3.0.3',
263
+ info,
264
+ paths,
265
+ components: {
266
+ securitySchemes: {
267
+ bearerAuth: { type: 'http', scheme: 'bearer', bearerFormat: 'JWT' },
268
+ },
269
+ ...(componentSchemas ? { schemas: componentSchemas } : {}),
270
+ },
271
+ }, options));
272
+ }
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGktcm91dGVzL29wZW5hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEwVEEsb0RBMkNDO0FBcldELDBCQUF3QjtBQUV4QixtREFBa0Q7QUFHbEQsNkNBQXlFO0FBRXpFLHVDQVFtQjtBQXdCbkIsU0FBUyw2QkFBNkIsQ0FBQyxJQUFZO0lBQ2pELE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNyRCxNQUFNLDRCQUE0QixHQUFHLHFCQUFxQixDQUFDO0lBQzNELElBQUksS0FBNkIsQ0FBQztJQUVsQyxPQUFPLENBQUMsS0FBSyxHQUFHLDRCQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2xFLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsT0FBTywwQkFBMEIsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsSUFBWTtJQUNqQyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUM7U0FDdEMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLElBQVksRUFBRSxPQUE0QjtJQUN2RSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVE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
@@ -0,0 +1,14 @@
1
+ import { ZodTypeAny } from 'zod';
2
+ import { ApiRequestDefinition, ApiRequestSource } from './types';
3
+ export interface ApiRequestExtraction {
4
+ params: Record<string, unknown>;
5
+ query: Record<string, unknown>;
6
+ headers: Record<string, unknown>;
7
+ body: unknown;
8
+ files: Record<string, unknown[]>;
9
+ raw: unknown;
10
+ }
11
+ export declare function getRequestValue(req: Sails.Req, request: ApiRequestDefinition | undefined, source: ApiRequestSource, key: string): unknown;
12
+ export declare function buildRequestSourceInput(req: Sails.Req, request: ApiRequestDefinition | undefined, source: ApiRequestSource, schema?: ZodTypeAny): unknown;
13
+ export declare function extractApiRequest(req: Sails.Req, request?: ApiRequestDefinition): ApiRequestExtraction;
14
+ //# sourceMappingURL=request-extraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-extraction.d.ts","sourceRoot":"","sources":["../../src/api-routes/request-extraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGjE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACjC,GAAG,EAAE,OAAO,CAAC;CACd;AAqDD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,MAAM,GACV,OAAO,CAiBT;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,MAAM,EAAE,gBAAgB,EACxB,MAAM,CAAC,EAAE,UAAU,GAClB,OAAO,CAoBT;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,CAatG"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRequestValue = getRequestValue;
4
+ exports.buildRequestSourceInput = buildRequestSourceInput;
5
+ exports.extractApiRequest = extractApiRequest;
6
+ const helpers_1 = require("./helpers");
7
+ function getRequestSourceValue(req, request, source) {
8
+ const requestRecord = req;
9
+ switch (source) {
10
+ case 'params':
11
+ return requestRecord.params;
12
+ case 'query':
13
+ return request?.queryExtractor ? request.queryExtractor(req) : requestRecord.query;
14
+ case 'headers':
15
+ return requestRecord.headers;
16
+ case 'body':
17
+ return request?.extractor ? request.extractor(req) : requestRecord.body;
18
+ default:
19
+ return undefined;
20
+ }
21
+ }
22
+ function getFieldValue(sourceValue, key) {
23
+ if (!(0, helpers_1.isRecord)(sourceValue)) {
24
+ return undefined;
25
+ }
26
+ if (Object.prototype.hasOwnProperty.call(sourceValue, key)) {
27
+ return sourceValue[key];
28
+ }
29
+ return undefined;
30
+ }
31
+ function getLegacyFallbackSources(request, key) {
32
+ const sources = request?.legacyParamFallbacks?.[key];
33
+ return Array.isArray(sources) ? sources : [];
34
+ }
35
+ function getHeaderValue(req, name) {
36
+ const headers = req.headers;
37
+ const value = headers == null
38
+ ? undefined
39
+ : Object.entries(headers).find(([key]) => key.toLowerCase() === name.toLowerCase())?.[1];
40
+ if (Array.isArray(value)) {
41
+ return value[0];
42
+ }
43
+ return value;
44
+ }
45
+ function getBodyContentTypeForExtraction(req, contentTypes) {
46
+ const requestContentType = getHeaderValue(req, 'content-type')?.split(';')[0]?.trim().toLowerCase();
47
+ if (!requestContentType) {
48
+ return contentTypes[0];
49
+ }
50
+ return contentTypes.find(contentType => contentType.toLowerCase() === requestContentType) ?? contentTypes[0];
51
+ }
52
+ function getRequestValue(req, request, source, key) {
53
+ const primaryValue = getFieldValue(getRequestSourceValue(req, request, source), key);
54
+ if (primaryValue !== undefined) {
55
+ return primaryValue;
56
+ }
57
+ for (const fallbackSource of getLegacyFallbackSources(request, key)) {
58
+ if (fallbackSource === source) {
59
+ continue;
60
+ }
61
+ const fallbackValue = getFieldValue(getRequestSourceValue(req, request, fallbackSource), key);
62
+ if (fallbackValue !== undefined) {
63
+ return fallbackValue;
64
+ }
65
+ }
66
+ return undefined;
67
+ }
68
+ function buildRequestSourceInput(req, request, source, schema) {
69
+ const rawValue = getRequestSourceValue(req, request, source);
70
+ if (!schema) {
71
+ return rawValue;
72
+ }
73
+ const properties = (0, helpers_1.getObjectSchemaShape)(schema);
74
+ if (!properties) {
75
+ return (0, helpers_1.coerceValueForSchema)(rawValue, schema);
76
+ }
77
+ if ((0, helpers_1.isPassthroughObjectSchema)(schema)) {
78
+ return (0, helpers_1.coerceValueForSchema)(rawValue, schema);
79
+ }
80
+ const projected = Object.keys(properties).reduce((acc, key) => {
81
+ acc[key] = getRequestValue(req, request, source, key);
82
+ return acc;
83
+ }, {});
84
+ return (0, helpers_1.coerceValueForSchema)(projected, schema);
85
+ }
86
+ function extractApiRequest(req, request) {
87
+ const bodyContent = request?.body?.content;
88
+ const bodyContentTypes = bodyContent ? Object.keys(bodyContent) : [];
89
+ const bodyContentType = bodyContent ? getBodyContentTypeForExtraction(req, bodyContentTypes) : undefined;
90
+ const bodySchema = bodyContentType ? bodyContent?.[bodyContentType]?.schema : undefined;
91
+ return {
92
+ params: buildRequestSourceInput(req, request, 'params', request?.params),
93
+ query: buildRequestSourceInput(req, request, 'query', request?.query),
94
+ headers: buildRequestSourceInput(req, request, 'headers', request?.headers),
95
+ body: buildRequestSourceInput(req, request, 'body', bodySchema),
96
+ files: (0, helpers_1.getRequestFiles)(req),
97
+ raw: req,
98
+ };
99
+ }
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1leHRyYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS1yb3V0ZXMvcmVxdWVzdC1leHRyYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUVBLDBDQXNCQztBQUVELDBEQXlCQztBQUVELDhDQWFDO0FBOUhELHVDQUE2SDtBQVc3SCxTQUFTLHFCQUFxQixDQUFDLEdBQWMsRUFBRSxPQUF5QyxFQUFFLE1BQXdCO0lBQ2hILE1BQU0sYUFBYSxHQUFHLEdBQXlDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsQ0FBQztRQUNmLEtBQUssUUFBUTtZQUNYLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUM5QixLQUFLLE9BQU87WUFDVixPQUFPLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDckYsS0FBSyxTQUFTO1lBQ1osT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQy9CLEtBQUssTUFBTTtZQUNULE9BQU8sT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztRQUMxRTtZQUNFLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsV0FBb0IsRUFBRSxHQUFXO0lBQ3RELElBQUksQ0FBQyxJQUFBLGtCQUFRLEVBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDM0QsT0FBTyxXQUFXLENBQUMs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
@@ -0,0 +1,3 @@
1
+ import { ApiOpenApiMetadata, ApiRequestDefinition, HttpMethod } from './types';
2
+ export declare function apiRoute(method: HttpMethod, path: string, controller: string, action: string, request?: ApiRequestDefinition, metadata?: ApiOpenApiMetadata): import("./types").ApiRouteDefinition;
3
+ //# sourceMappingURL=route-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-factory.d.ts","sourceRoot":"","sources":["../../src/api-routes/route-factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE/E,wBAAgB,QAAQ,CACtB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,oBAAoB,EAC9B,QAAQ,GAAE,kBAAuB,wCAyBlC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.apiRoute = apiRoute;
4
+ const define_1 = require("./define");
5
+ const helpers_1 = require("./helpers");
6
+ function apiRoute(method, path, controller, action, request, metadata = {}) {
7
+ const redboxRoleExtension = (0, helpers_1.getRedboxRoleExtension)(path);
8
+ const extensions = redboxRoleExtension || metadata.extensions
9
+ ? {
10
+ ...(metadata.extensions ?? {}),
11
+ ...(redboxRoleExtension ?? {}),
12
+ }
13
+ : undefined;
14
+ return (0, define_1.defineApiRoute)({
15
+ method,
16
+ path,
17
+ controller,
18
+ action,
19
+ request,
20
+ tags: metadata.tags,
21
+ summary: metadata.summary ?? `${controller}.${action}`,
22
+ description: metadata.description,
23
+ operationId: metadata.operationId,
24
+ responses: metadata.responses,
25
+ security: metadata.security ?? [{ bearerAuth: [] }],
26
+ extensions,
27
+ csrf: false,
28
+ });
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGktcm91dGVzL3JvdXRlLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSw0QkErQkM7QUFuQ0QscUNBQTBDO0FBQzFDLHVDQUFtRDtBQUduRCxTQUFnQixRQUFRLENBQ3RCLE1BQWtCLEVBQ2xCLElBQVksRUFDWixVQUFrQixFQUNsQixNQUFjLEVBQ2QsT0FBOEIsRUFDOUIsV0FBK0IsRUFBRTtJQUVqQyxNQUFNLG1CQUFtQixHQUFHLElBQUEsZ0NBQXNCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsTUFBTSxVQUFVLEdBQUcsbUJBQW1CLElBQUksUUFBUSxDQUFDLFVBQVU7UUFDM0QsQ0FBQyxDQUFDO1lBQ0EsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQzlCLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7U0FDL0I7UUFDRCxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRWQsT0FBTyxJQUFBLHVCQUFjLEVBQUM7UUFDcEIsTUFBTTtRQUNOLElBQUk7UUFDSixVQUFVO1FBQ1YsTUFBTTtRQUNOLE9BQU87UUFDUCxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7UUFDbkIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLElBQUksR0FBRyxVQUFVLElBQUksTUFBTSxFQUFFO1FBQ3RELFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztRQUNqQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7UUFDakMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO1FBQzdCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDbkQsVUFBVTtRQUNWLElBQUksRUFBRSxLQUFLO0tBQ1osQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
@@ -0,0 +1,24 @@
1
+ import { ApiRouteDefinition } from './types';
2
+ export declare function registerCoreApiRoutes(): ApiRouteDefinition[];
3
+ export declare function registerHookApiRoutes(): ApiRouteDefinition[];
4
+ export declare function getMergedApiRoutes(): ApiRouteDefinition[];
5
+ export declare function getCoreApiRouteMap(): import("./types").ApiRouteDefinitionMap;
6
+ export declare function buildCoreApiRouteConfig(): import("./types").ApiRouteMap;
7
+ export declare function buildMergedApiRouteConfig(): import("./types").ApiRouteMap;
8
+ export declare function buildCoreApiOpenApiDocument(options?: {
9
+ branding?: string;
10
+ portal?: string;
11
+ }): import("./openapi").OpenApiDocument;
12
+ export declare function buildMergedApiOpenApiDocument(options?: {
13
+ branding?: string;
14
+ portal?: string;
15
+ }): import("./openapi").OpenApiDocument;
16
+ export declare function buildCoreApiBlueprint(options?: {
17
+ branding?: string;
18
+ portal?: string;
19
+ }): string;
20
+ export declare function buildMergedApiBlueprint(options?: {
21
+ branding?: string;
22
+ portal?: string;
23
+ }): string;
24
+ //# sourceMappingURL=route-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-registry.d.ts","sourceRoot":"","sources":["../../src/api-routes/route-registry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAyB,MAAM,SAAS,CAAC;AAyCpE,wBAAgB,qBAAqB,IAAI,kBAAkB,EAAE,CAE5D;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,EAAE,CAiB5D;AASD,wBAAgB,kBAAkB,IAAI,kBAAkB,EAAE,CAOzD;AAED,wBAAgB,kBAAkB,4CAEjC;AAED,wBAAgB,uBAAuB,kCAEtC;AAED,wBAAgB,yBAAyB,kCAExC;AAgBD,wBAAgB,2BAA2B,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,uCAE/F;AAED,wBAAgB,6BAA6B,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,uCAEjG;AAED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,UAEzF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,UAE3F"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerCoreApiRoutes = registerCoreApiRoutes;
4
+ exports.registerHookApiRoutes = registerHookApiRoutes;
5
+ exports.getMergedApiRoutes = getMergedApiRoutes;
6
+ exports.getCoreApiRouteMap = getCoreApiRouteMap;
7
+ exports.buildCoreApiRouteConfig = buildCoreApiRouteConfig;
8
+ exports.buildMergedApiRouteConfig = buildMergedApiRouteConfig;
9
+ exports.buildCoreApiOpenApiDocument = buildCoreApiOpenApiDocument;
10
+ exports.buildMergedApiOpenApiDocument = buildMergedApiOpenApiDocument;
11
+ exports.buildCoreApiBlueprint = buildCoreApiBlueprint;
12
+ exports.buildMergedApiBlueprint = buildMergedApiBlueprint;
13
+ const apib_1 = require("./apib");
14
+ const openapi_1 = require("./openapi");
15
+ const helpers_1 = require("./helpers");
16
+ const appconfig_1 = require("./groups/appconfig");
17
+ const admin_1 = require("./groups/admin");
18
+ const branding_1 = require("./groups/branding");
19
+ const dashboard_config_1 = require("./groups/dashboard-config");
20
+ const export_1 = require("./groups/export");
21
+ const forms_1 = require("./groups/forms");
22
+ const integration_audit_1 = require("./groups/integration-audit");
23
+ const notifications_1 = require("./groups/notifications");
24
+ const records_1 = require("./groups/records");
25
+ const recordtypes_1 = require("./groups/recordtypes");
26
+ const reports_1 = require("./groups/reports");
27
+ const search_1 = require("./groups/search");
28
+ const translation_1 = require("./groups/translation");
29
+ const users_1 = require("./groups/users");
30
+ const vocabulary_1 = require("./groups/vocabulary");
31
+ const apiDocumentInfo = {
32
+ title: 'ReDBox Portal API',
33
+ version: '1.0.0',
34
+ description: 'Contract-first API routes for the ReDBox Portal',
35
+ };
36
+ const coreApiRouteGroups = [
37
+ records_1.recordApiRoutes,
38
+ users_1.userApiRoutes,
39
+ search_1.searchApiRoutes,
40
+ forms_1.formApiRoutes,
41
+ vocabulary_1.vocabularyApiRoutes,
42
+ recordtypes_1.recordTypeApiRoutes,
43
+ admin_1.adminApiRoutes,
44
+ appconfig_1.appConfigApiRoutes,
45
+ branding_1.brandingApiRoutes,
46
+ dashboard_config_1.dashboardConfigApiRoutes,
47
+ translation_1.translationApiRoutes,
48
+ reports_1.reportsApiRoutes,
49
+ integration_audit_1.integrationAuditApiRoutes,
50
+ export_1.exportApiRoutes,
51
+ notifications_1.notificationApiRoutes,
52
+ ];
53
+ function registerCoreApiRoutes() {
54
+ return [...(0, helpers_1.ensureUniqueApiRoutes)(coreApiRouteGroups.flat(), 'core API routes')];
55
+ }
56
+ function registerHookApiRoutes() {
57
+ const sailsConfig = typeof sails === 'undefined' ? {} : (sails.config ?? {});
58
+ const hookProviders = sailsConfig['apiRoutesHooks'];
59
+ if (!Array.isArray(hookProviders)) {
60
+ return [];
61
+ }
62
+ const routes = hookProviders
63
+ .flatMap(provider => {
64
+ if (typeof provider === 'function') {
65
+ const providedRoutes = provider();
66
+ return Array.isArray(providedRoutes) ? providedRoutes : [];
67
+ }
68
+ return [];
69
+ })
70
+ .filter((route) => typeof route === 'object' && route !== null && 'path' in route);
71
+ return [...(0, helpers_1.ensureUniqueApiRoutes)(routes, 'hook API routes')];
72
+ }
73
+ function getRuntimeRouteTable() {
74
+ const sailsConfig = typeof sails === 'undefined' ? {} : (sails.config ?? {});
75
+ const runtimeRoutes = sailsConfig['routes'];
76
+ return (0, helpers_1.isRecord)(runtimeRoutes) ? runtimeRoutes : undefined;
77
+ }
78
+ function getMergedApiRoutes() {
79
+ const routes = [...(0, helpers_1.ensureUniqueApiRoutes)([...registerCoreApiRoutes(), ...registerHookApiRoutes()], 'merged API routes')];
80
+ const runtimeRoutes = getRuntimeRouteTable();
81
+ if (runtimeRoutes) {
82
+ (0, helpers_1.validateApiRouteConsistency)(routes, runtimeRoutes, 'merged runtime route table');
83
+ }
84
+ return routes;
85
+ }
86
+ function getCoreApiRouteMap() {
87
+ return (0, helpers_1.toRouteMap)(registerCoreApiRoutes());
88
+ }
89
+ function buildCoreApiRouteConfig() {
90
+ return (0, helpers_1.buildSailsRouteConfig)(registerCoreApiRoutes());
91
+ }
92
+ function buildMergedApiRouteConfig() {
93
+ return (0, helpers_1.buildSailsRouteConfig)(getMergedApiRoutes());
94
+ }
95
+ function buildApiOpenApiDocumentForRoutes(routes, options = {}) {
96
+ return (0, openapi_1.buildOpenApiDocument)(routes, apiDocumentInfo, options);
97
+ }
98
+ function buildApiBlueprintForRoutes(routes, options = {}) {
99
+ return (0, apib_1.buildApiBlueprint)(routes, options);
100
+ }
101
+ function buildCoreApiOpenApiDocument(options = {}) {
102
+ return buildApiOpenApiDocumentForRoutes(registerCoreApiRoutes(), options);
103
+ }
104
+ function buildMergedApiOpenApiDocument(options = {}) {
105
+ return buildApiOpenApiDocumentForRoutes(getMergedApiRoutes(), options);
106
+ }
107
+ function buildCoreApiBlueprint(options = {}) {
108
+ return buildApiBlueprintForRoutes(registerCoreApiRoutes(), options);
109
+ }
110
+ function buildMergedApiBlueprint(options = {}) {
111
+ return buildApiBlueprintForRoutes(getMergedApiRoutes(), options);
112
+ }
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpLXJvdXRlcy9yb3V0ZS1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTRDQSxzREFFQztBQUVELHNEQWlCQztBQVNELGdEQU9DO0FBRUQsZ0RBRUM7QUFFRCwwREFFQztBQUVELDhEQUVDO0FBZ0JELGtFQUVDO0FBRUQsc0VBRUM7QUFFRCxzREFFQztBQUVELDBEQUVDO0FBM0hELGlDQUEyQztBQUMzQyx1Q0FBaUQ7QUFDakQsdUNBQTRIO0FBRTVILGtEQUF3RDtBQUN4RCwwQ0FBZ0Q7QUFDaEQsZ0RBQXNEO0FBQ3RELGdFQUFxRTtBQUNyRSw0Q0FBa0Q7QUFDbEQsMENBQStDO0FBQy9DLGtFQUF1RTtBQUN2RSwwREFBK0Q7QUFDL0QsOENBQW1EO0FBQ25ELHNEQUEyRDtBQUMzRCw4Q0FBb0Q7QUFDcEQsNENBQWtEO0FBQ2xELHNEQUE0RDtBQUM1RCwwQ0FBK0M7QUFDL0Msb0RBQTBEO0FBRTFELE1BQU0sZUFBZSxHQUFHO0lBQ3RCLEtBQUssRUFBRSxtQkFBbUI7SUFDMUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLGlEQUFpRDtDQUN0RCxDQUFDO0FBRVgsTUFBTSxrQkFBa0IsR0FBRztJQUN6Qix5QkFBZTtJQUNmLHFCQUFhO0lBQ2Isd0JBQWU7SUFDZixxQkFBYTtJQUNiLGdDQUFtQjtJQUNuQixpQ0FBbUI7SUFDbkIsc0JBQWM7SUFDZCw4QkFBa0I7SUFDbEIsNEJBQWlCO0lBQ2pCLDJDQUF3QjtJQUN4QixrQ0FBb0I7SUFDcEIsMEJBQWdCO0lBQ2hCLDZDQUF5QjtJQUN6Qix3QkFBZTtJQUNmLHFDQUFxQjtDQUNiLENBQUM7QUFFWCxTQUFnQixxQkFBcUI7SUFDbkMsT0FBTyxDQUFDLEdBQUcsSUFBQSwrQkFBcUIsRUFBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7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
@@ -0,0 +1,4 @@
1
+ import { ApiRouteDefinition } from './types';
2
+ export declare function resetResolvedApiRouteCache(): void;
3
+ export declare function resolveApiRouteForRequest(req: Sails.Req): ApiRouteDefinition | undefined;
4
+ //# sourceMappingURL=route-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-resolution.d.ts","sourceRoot":"","sources":["../../src/api-routes/route-resolution.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAuB7C,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,kBAAkB,GAAG,SAAS,CA+BxF"}