@rapidrest/service-core 1.0.0-beta.1

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 (332) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +16 -0
  3. package/dist/lib/ApiErrors.js +41 -0
  4. package/dist/lib/ApiErrors.js.map +1 -0
  5. package/dist/lib/BackgroundService.js +16 -0
  6. package/dist/lib/BackgroundService.js.map +1 -0
  7. package/dist/lib/BackgroundServiceManager.js +135 -0
  8. package/dist/lib/BackgroundServiceManager.js.map +1 -0
  9. package/dist/lib/BulkError.js +24 -0
  10. package/dist/lib/BulkError.js.map +1 -0
  11. package/dist/lib/EventListenerManager.js +161 -0
  12. package/dist/lib/EventListenerManager.js.map +1 -0
  13. package/dist/lib/NetUtils.js +103 -0
  14. package/dist/lib/NetUtils.js.map +1 -0
  15. package/dist/lib/NotificationUtils.js +34 -0
  16. package/dist/lib/NotificationUtils.js.map +1 -0
  17. package/dist/lib/ObjectFactory.js +90 -0
  18. package/dist/lib/ObjectFactory.js.map +1 -0
  19. package/dist/lib/OpenApiSpec.js +748 -0
  20. package/dist/lib/OpenApiSpec.js.map +1 -0
  21. package/dist/lib/Server.js +549 -0
  22. package/dist/lib/Server.js.map +1 -0
  23. package/dist/lib/Types.js +2 -0
  24. package/dist/lib/Types.js.map +1 -0
  25. package/dist/lib/auth/AuthMiddleware.js +229 -0
  26. package/dist/lib/auth/AuthMiddleware.js.map +1 -0
  27. package/dist/lib/auth/AuthStrategy.js +2 -0
  28. package/dist/lib/auth/AuthStrategy.js.map +1 -0
  29. package/dist/lib/auth/BasicStrategy.js +106 -0
  30. package/dist/lib/auth/BasicStrategy.js.map +1 -0
  31. package/dist/lib/auth/JWTStrategy.js +161 -0
  32. package/dist/lib/auth/JWTStrategy.js.map +1 -0
  33. package/dist/lib/auth/index.js +5 -0
  34. package/dist/lib/auth/index.js.map +1 -0
  35. package/dist/lib/database/ConnectionKinds.js +14 -0
  36. package/dist/lib/database/ConnectionKinds.js.map +1 -0
  37. package/dist/lib/database/ConnectionManager.js +161 -0
  38. package/dist/lib/database/ConnectionManager.js.map +1 -0
  39. package/dist/lib/database/MongoConnection.js +86 -0
  40. package/dist/lib/database/MongoConnection.js.map +1 -0
  41. package/dist/lib/database/MongoRepository.js +136 -0
  42. package/dist/lib/database/MongoRepository.js.map +1 -0
  43. package/dist/lib/database/MongoSchemaSync.js +136 -0
  44. package/dist/lib/database/MongoSchemaSync.js.map +1 -0
  45. package/dist/lib/database/NamingUtils.js +52 -0
  46. package/dist/lib/database/NamingUtils.js.map +1 -0
  47. package/dist/lib/database/TypeOrmSupport.js +146 -0
  48. package/dist/lib/database/TypeOrmSupport.js.map +1 -0
  49. package/dist/lib/database/index.js +7 -0
  50. package/dist/lib/database/index.js.map +1 -0
  51. package/dist/lib/decorators/DatabaseDecorators.js +52 -0
  52. package/dist/lib/decorators/DatabaseDecorators.js.map +1 -0
  53. package/dist/lib/decorators/DocDecorators.js +120 -0
  54. package/dist/lib/decorators/DocDecorators.js.map +1 -0
  55. package/dist/lib/decorators/EventDecorators.js +24 -0
  56. package/dist/lib/decorators/EventDecorators.js.map +1 -0
  57. package/dist/lib/decorators/ModelDecorators.js +173 -0
  58. package/dist/lib/decorators/ModelDecorators.js.map +1 -0
  59. package/dist/lib/decorators/PersistenceDecorators.js +177 -0
  60. package/dist/lib/decorators/PersistenceDecorators.js.map +1 -0
  61. package/dist/lib/decorators/RouteDecorators.js +324 -0
  62. package/dist/lib/decorators/RouteDecorators.js.map +1 -0
  63. package/dist/lib/decorators/index.js +7 -0
  64. package/dist/lib/decorators/index.js.map +1 -0
  65. package/dist/lib/http/Adapters.js +230 -0
  66. package/dist/lib/http/Adapters.js.map +1 -0
  67. package/dist/lib/http/Router.js +403 -0
  68. package/dist/lib/http/Router.js.map +1 -0
  69. package/dist/lib/http/WebSocket.js +82 -0
  70. package/dist/lib/http/WebSocket.js.map +1 -0
  71. package/dist/lib/http/index.js +4 -0
  72. package/dist/lib/http/index.js.map +1 -0
  73. package/dist/lib/http/types.js +5 -0
  74. package/dist/lib/http/types.js.map +1 -0
  75. package/dist/lib/index.js +18 -0
  76. package/dist/lib/index.js.map +1 -0
  77. package/dist/lib/models/BaseEntity.js +83 -0
  78. package/dist/lib/models/BaseEntity.js.map +1 -0
  79. package/dist/lib/models/BaseMongoEntity.js +40 -0
  80. package/dist/lib/models/BaseMongoEntity.js.map +1 -0
  81. package/dist/lib/models/ModelUtils.js +645 -0
  82. package/dist/lib/models/ModelUtils.js.map +1 -0
  83. package/dist/lib/models/RecoverableBaseEntity.js +39 -0
  84. package/dist/lib/models/RecoverableBaseEntity.js.map +1 -0
  85. package/dist/lib/models/RecoverableBaseMongoEntity.js +40 -0
  86. package/dist/lib/models/RecoverableBaseMongoEntity.js.map +1 -0
  87. package/dist/lib/models/RepoUtils.js +717 -0
  88. package/dist/lib/models/RepoUtils.js.map +1 -0
  89. package/dist/lib/models/SimpleEntity.js +42 -0
  90. package/dist/lib/models/SimpleEntity.js.map +1 -0
  91. package/dist/lib/models/SimpleMongoEntity.js +38 -0
  92. package/dist/lib/models/SimpleMongoEntity.js.map +1 -0
  93. package/dist/lib/models/StatusExtraData.js +15 -0
  94. package/dist/lib/models/StatusExtraData.js.map +1 -0
  95. package/dist/lib/models/index.js +10 -0
  96. package/dist/lib/models/index.js.map +1 -0
  97. package/dist/lib/routes/AdminRoute.js +268 -0
  98. package/dist/lib/routes/AdminRoute.js.map +1 -0
  99. package/dist/lib/routes/MetricsRoute.js +86 -0
  100. package/dist/lib/routes/MetricsRoute.js.map +1 -0
  101. package/dist/lib/routes/ModelRoute.js +481 -0
  102. package/dist/lib/routes/ModelRoute.js.map +1 -0
  103. package/dist/lib/routes/OpenAPIRoute.js +115 -0
  104. package/dist/lib/routes/OpenAPIRoute.js.map +1 -0
  105. package/dist/lib/routes/RouteUtils.js +445 -0
  106. package/dist/lib/routes/RouteUtils.js.map +1 -0
  107. package/dist/lib/routes/StatusRoute.js +55 -0
  108. package/dist/lib/routes/StatusRoute.js.map +1 -0
  109. package/dist/lib/routes/index.js +7 -0
  110. package/dist/lib/routes/index.js.map +1 -0
  111. package/dist/lib/security/ACLRouteMongo.js +194 -0
  112. package/dist/lib/security/ACLRouteMongo.js.map +1 -0
  113. package/dist/lib/security/ACLRouteSQL.js +193 -0
  114. package/dist/lib/security/ACLRouteSQL.js.map +1 -0
  115. package/dist/lib/security/ACLUtils.js +457 -0
  116. package/dist/lib/security/ACLUtils.js.map +1 -0
  117. package/dist/lib/security/AccessControlList.js +18 -0
  118. package/dist/lib/security/AccessControlList.js.map +1 -0
  119. package/dist/lib/security/AccessControlListMongo.js +155 -0
  120. package/dist/lib/security/AccessControlListMongo.js.map +1 -0
  121. package/dist/lib/security/AccessControlListSQL.js +149 -0
  122. package/dist/lib/security/AccessControlListSQL.js.map +1 -0
  123. package/dist/lib/security/index.js +3 -0
  124. package/dist/lib/security/index.js.map +1 -0
  125. package/dist/lib/test/index.js +3 -0
  126. package/dist/lib/test/index.js.map +1 -0
  127. package/dist/lib/test/request.js +99 -0
  128. package/dist/lib/test/request.js.map +1 -0
  129. package/dist/lib/test/requestws.js +173 -0
  130. package/dist/lib/test/requestws.js.map +1 -0
  131. package/dist/types/ApiErrors.d.ts +38 -0
  132. package/dist/types/BackgroundService.d.ts +30 -0
  133. package/dist/types/BackgroundServiceManager.d.ts +66 -0
  134. package/dist/types/BulkError.d.ts +11 -0
  135. package/dist/types/EventListenerManager.d.ts +36 -0
  136. package/dist/types/NetUtils.d.ts +29 -0
  137. package/dist/types/NotificationUtils.d.ts +25 -0
  138. package/dist/types/ObjectFactory.d.ts +17 -0
  139. package/dist/types/OpenApiSpec.d.ts +114 -0
  140. package/dist/types/Server.d.ts +180 -0
  141. package/dist/types/Types.d.ts +8 -0
  142. package/dist/types/auth/AuthMiddleware.d.ts +42 -0
  143. package/dist/types/auth/AuthStrategy.d.ts +32 -0
  144. package/dist/types/auth/BasicStrategy.d.ts +33 -0
  145. package/dist/types/auth/JWTStrategy.d.ts +61 -0
  146. package/dist/types/auth/index.d.ts +4 -0
  147. package/dist/types/database/ConnectionKinds.d.ts +7 -0
  148. package/dist/types/database/ConnectionManager.d.ts +35 -0
  149. package/dist/types/database/MongoConnection.d.ts +54 -0
  150. package/dist/types/database/MongoRepository.d.ts +92 -0
  151. package/dist/types/database/MongoSchemaSync.d.ts +41 -0
  152. package/dist/types/database/NamingUtils.d.ts +24 -0
  153. package/dist/types/database/TypeOrmSupport.d.ts +20 -0
  154. package/dist/types/database/index.d.ts +6 -0
  155. package/dist/types/decorators/DatabaseDecorators.d.ts +18 -0
  156. package/dist/types/decorators/DocDecorators.d.ts +69 -0
  157. package/dist/types/decorators/EventDecorators.d.ts +12 -0
  158. package/dist/types/decorators/ModelDecorators.d.ts +80 -0
  159. package/dist/types/decorators/PersistenceDecorators.d.ts +117 -0
  160. package/dist/types/decorators/RouteDecorators.d.ts +172 -0
  161. package/dist/types/decorators/index.d.ts +6 -0
  162. package/dist/types/http/Adapters.d.ts +68 -0
  163. package/dist/types/http/Router.d.ts +99 -0
  164. package/dist/types/http/WebSocket.d.ts +56 -0
  165. package/dist/types/http/index.d.ts +6 -0
  166. package/dist/types/http/types.d.ts +54 -0
  167. package/dist/types/index.d.ts +17 -0
  168. package/dist/types/models/BaseEntity.d.ts +29 -0
  169. package/dist/types/models/BaseMongoEntity.d.ts +13 -0
  170. package/dist/types/models/ModelUtils.d.ts +166 -0
  171. package/dist/types/models/RecoverableBaseEntity.d.ts +16 -0
  172. package/dist/types/models/RecoverableBaseMongoEntity.d.ts +16 -0
  173. package/dist/types/models/RepoUtils.d.ts +154 -0
  174. package/dist/types/models/SimpleEntity.d.ts +14 -0
  175. package/dist/types/models/SimpleMongoEntity.d.ts +15 -0
  176. package/dist/types/models/StatusExtraData.d.ts +6 -0
  177. package/dist/types/models/index.d.ts +9 -0
  178. package/dist/types/routes/AdminRoute.d.ts +47 -0
  179. package/dist/types/routes/MetricsRoute.d.ts +15 -0
  180. package/dist/types/routes/ModelRoute.d.ts +226 -0
  181. package/dist/types/routes/OpenAPIRoute.d.ts +17 -0
  182. package/dist/types/routes/RouteUtils.d.ts +55 -0
  183. package/dist/types/routes/StatusRoute.d.ts +11 -0
  184. package/dist/types/routes/index.d.ts +6 -0
  185. package/dist/types/security/ACLRouteMongo.d.ts +19 -0
  186. package/dist/types/security/ACLRouteSQL.d.ts +19 -0
  187. package/dist/types/security/ACLUtils.d.ts +94 -0
  188. package/dist/types/security/AccessControlList.d.ts +103 -0
  189. package/dist/types/security/AccessControlListMongo.d.ts +24 -0
  190. package/dist/types/security/AccessControlListSQL.d.ts +24 -0
  191. package/dist/types/security/index.d.ts +2 -0
  192. package/dist/types/test/index.d.ts +2 -0
  193. package/dist/types/test/request.d.ts +24 -0
  194. package/dist/types/test/requestws.d.ts +21 -0
  195. package/docs/Makefile +20 -0
  196. package/docs/conf.py +58 -0
  197. package/docs/index.rst +17 -0
  198. package/docs/make.bat +35 -0
  199. package/docs/reference/@rapidrest/namespaces/DatabaseDecorators/README.md +13 -0
  200. package/docs/reference/@rapidrest/namespaces/DatabaseDecorators/functions/MongoRepository.md +25 -0
  201. package/docs/reference/@rapidrest/namespaces/DatabaseDecorators/functions/RedisConnection.md +25 -0
  202. package/docs/reference/@rapidrest/namespaces/DatabaseDecorators/functions/Repository.md +25 -0
  203. package/docs/reference/@rapidrest/namespaces/DocDecorators/README.md +23 -0
  204. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Default.md +25 -0
  205. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Description.md +25 -0
  206. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Document.md +25 -0
  207. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Example.md +25 -0
  208. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Format.md +25 -0
  209. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Returns.md +28 -0
  210. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Summary.md +25 -0
  211. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Tags.md +25 -0
  212. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/TypeInfo.md +28 -0
  213. package/docs/reference/@rapidrest/namespaces/DocDecorators/interfaces/DocumentsData.md +57 -0
  214. package/docs/reference/@rapidrest/namespaces/EventDecorators/README.md +12 -0
  215. package/docs/reference/@rapidrest/namespaces/EventDecorators/functions/EventListener.md +17 -0
  216. package/docs/reference/@rapidrest/namespaces/EventDecorators/functions/OnEvent.md +26 -0
  217. package/docs/reference/@rapidrest/namespaces/ModelDecorators/README.md +26 -0
  218. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Cache.md +25 -0
  219. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/ChildEntity.md +18 -0
  220. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/DataStore.md +25 -0
  221. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Identifier.md +27 -0
  222. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Protect.md +35 -0
  223. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Reference.md +25 -0
  224. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Shard.md +27 -0
  225. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/TrackChanges.md +26 -0
  226. package/docs/reference/@rapidrest/namespaces/ModelDecorators/interfaces/PendingTypeOrmColumn.md +45 -0
  227. package/docs/reference/@rapidrest/namespaces/ModelDecorators/variables/pendingTypeOrmColumns.md +14 -0
  228. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/README.md +25 -0
  229. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Column.md +25 -0
  230. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Entity.md +26 -0
  231. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Index.md +119 -0
  232. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/PrimaryColumn.md +25 -0
  233. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Unique.md +68 -0
  234. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/getColumnMetadata.md +26 -0
  235. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/getEntityName.md +26 -0
  236. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/getIndexMetadata.md +27 -0
  237. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/ColumnInfo.md +41 -0
  238. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/ColumnOptions.md +51 -0
  239. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/IndexInfo.md +41 -0
  240. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/IndexOptions.md +51 -0
  241. package/docs/reference/@rapidrest/namespaces/RouteDecorators/README.md +36 -0
  242. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/After.md +26 -0
  243. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Auth.md +33 -0
  244. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/AuthResult.md +31 -0
  245. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Before.md +25 -0
  246. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/ContentType.md +25 -0
  247. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Delete.md +25 -0
  248. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Get.md +25 -0
  249. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Head.md +25 -0
  250. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Header.md +25 -0
  251. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Method.md +31 -0
  252. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Model.md +25 -0
  253. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Options.md +25 -0
  254. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Param.md +26 -0
  255. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Patch.md +25 -0
  256. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Post.md +25 -0
  257. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Protect.md +31 -0
  258. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Put.md +25 -0
  259. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Query.md +26 -0
  260. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Request.md +31 -0
  261. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/RequiresRole.md +26 -0
  262. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Response.md +31 -0
  263. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Route.md +25 -0
  264. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Socket.md +33 -0
  265. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/User.md +31 -0
  266. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Validate.md +25 -0
  267. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/WebSocket.md +25 -0
  268. package/docs/reference/README.md +20 -0
  269. package/docs/reference/classes/ACLUtils.md +251 -0
  270. package/docs/reference/classes/AdminRoute.md +51 -0
  271. package/docs/reference/classes/AuthMiddleware.md +131 -0
  272. package/docs/reference/classes/BackgroundService.md +117 -0
  273. package/docs/reference/classes/BackgroundServiceManager.md +172 -0
  274. package/docs/reference/classes/BaseEntity.md +82 -0
  275. package/docs/reference/classes/BaseMongoEntity.md +107 -0
  276. package/docs/reference/classes/BasicStrategy.md +89 -0
  277. package/docs/reference/classes/BasicStrategyOptions.md +91 -0
  278. package/docs/reference/classes/BulkError.md +271 -0
  279. package/docs/reference/classes/ConnectionManager.md +75 -0
  280. package/docs/reference/classes/EventListenerManager.md +88 -0
  281. package/docs/reference/classes/JWTStrategy.md +77 -0
  282. package/docs/reference/classes/JWTStrategyOptions.md +97 -0
  283. package/docs/reference/classes/MetricsRoute.md +27 -0
  284. package/docs/reference/classes/ModelRoute.md +527 -0
  285. package/docs/reference/classes/ModelUtils.md +448 -0
  286. package/docs/reference/classes/MongoConnection.md +218 -0
  287. package/docs/reference/classes/MongoRepository.md +354 -0
  288. package/docs/reference/classes/MongoSchemaSync.md +67 -0
  289. package/docs/reference/classes/NetUtils.md +90 -0
  290. package/docs/reference/classes/NotificationUtils.md +77 -0
  291. package/docs/reference/classes/ObjectFactory.md +336 -0
  292. package/docs/reference/classes/OpenAPIRoute.md +77 -0
  293. package/docs/reference/classes/OpenApiSpec.md +892 -0
  294. package/docs/reference/classes/RecoverableBaseEntity.md +114 -0
  295. package/docs/reference/classes/RecoverableBaseMongoEntity.md +124 -0
  296. package/docs/reference/classes/RedisTransport.md +2202 -0
  297. package/docs/reference/classes/RepoUtils.md +486 -0
  298. package/docs/reference/classes/RouteUtils.md +191 -0
  299. package/docs/reference/classes/Server.md +408 -0
  300. package/docs/reference/classes/SimpleEntity.md +48 -0
  301. package/docs/reference/classes/SimpleMongoEntity.md +66 -0
  302. package/docs/reference/classes/StatusExtraData.md +57 -0
  303. package/docs/reference/classes/StatusRoute.md +26 -0
  304. package/docs/reference/enumerations/ACLAction.md +63 -0
  305. package/docs/reference/enumerations/ApiErrorMessages.md +123 -0
  306. package/docs/reference/enumerations/ApiErrors.md +123 -0
  307. package/docs/reference/functions/isSqlDataSource.md +26 -0
  308. package/docs/reference/functions/resolveCollectionName.md +33 -0
  309. package/docs/reference/functions/snakeCase.md +28 -0
  310. package/docs/reference/globals.md +91 -0
  311. package/docs/reference/interfaces/ACLRecord.md +96 -0
  312. package/docs/reference/interfaces/AccessControlList.md +76 -0
  313. package/docs/reference/interfaces/AuthResult.md +55 -0
  314. package/docs/reference/interfaces/AuthStrategy.md +57 -0
  315. package/docs/reference/interfaces/CreateRequestOptions.md +121 -0
  316. package/docs/reference/interfaces/DeleteRequestOptions.md +147 -0
  317. package/docs/reference/interfaces/FindRequestOptions.md +133 -0
  318. package/docs/reference/interfaces/JWTAuthResult.md +84 -0
  319. package/docs/reference/interfaces/RepoCreateOptions.md +95 -0
  320. package/docs/reference/interfaces/RepoDeleteOptions.md +115 -0
  321. package/docs/reference/interfaces/RepoFindOptions.md +135 -0
  322. package/docs/reference/interfaces/RepoOperationOptions.md +69 -0
  323. package/docs/reference/interfaces/RepoUpdateOptions.md +111 -0
  324. package/docs/reference/interfaces/RequestOptions.md +112 -0
  325. package/docs/reference/interfaces/TruncateRequestOptions.md +175 -0
  326. package/docs/reference/interfaces/UpdateRequestOptions.md +149 -0
  327. package/docs/reference/type-aliases/OneOrMany.md +19 -0
  328. package/docs/reference/type-aliases/OneOrNull.md +19 -0
  329. package/docs/reference/type-aliases/PartialBaseEntity.md +17 -0
  330. package/docs/reference/type-aliases/PartialSimpleEntity.md +17 -0
  331. package/docs/reference/type-aliases/UpdateObject.md +19 -0
  332. package/package.json +125 -0
@@ -0,0 +1,445 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ ///////////////////////////////////////////////////////////////////////////////
11
+ // Copyright (C) 2020-2026 Jean-Philippe Steinmetz. All rights reserved.
12
+ ///////////////////////////////////////////////////////////////////////////////
13
+ import { ApiError, ObjectDecorators, UserUtils } from "@rapidrest/core";
14
+ import { ServerResponse } from "http";
15
+ import { OpenApiSpec } from "../OpenApiSpec.js";
16
+ import { ApiErrorMessages, ApiErrors } from "../ApiErrors.js";
17
+ import { ACLUtils } from "../security/index.js";
18
+ import _ from "lodash";
19
+ import { AuthMiddleware } from "../auth/AuthMiddleware.js";
20
+ const { Config, Inject, Logger } = ObjectDecorators;
21
+ /**
22
+ * Provides a set of utilities for converting Route classes to HTTP middleware.
23
+ *
24
+ * @author Jean-Philippe Steinmetz <rapidrests@gmail.com>
25
+ */
26
+ export class RouteUtils {
27
+ constructor() {
28
+ this.apiSpec = new OpenApiSpec();
29
+ }
30
+ /**
31
+ * Creates a middleware function that verifies the incoming request is from a valid user with at least
32
+ * one of the specified roles.
33
+ */
34
+ checkRequiredPerms(aclUid) {
35
+ return async (req, _res, next) => {
36
+ let granted = this.aclUtils ? await this.aclUtils.checkRequestPerms(aclUid, req.user, req) : false;
37
+ if (granted) {
38
+ return next();
39
+ }
40
+ else {
41
+ const err = new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
42
+ return next(err);
43
+ }
44
+ };
45
+ }
46
+ /**
47
+ * Creates a middleware function that verifies the incoming request is from a valid user with at least
48
+ * one of the specified roles.
49
+ *
50
+ * @param requiredRoles The list of roles that the authenticated user must have.
51
+ */
52
+ checkRequiredRoles(requiredRoles) {
53
+ return (req, _res, next) => {
54
+ let foundRole = UserUtils.hasRoles(req.user, requiredRoles);
55
+ if (foundRole) {
56
+ return next();
57
+ }
58
+ else {
59
+ const err = new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
60
+ return next(err);
61
+ }
62
+ };
63
+ }
64
+ /**
65
+ * Converts the given array of string or Function objects to functions bound to the given route object.
66
+ *
67
+ * @param route The route object that the list of functions is bound to.
68
+ * @param funcs The array of functions (or function names) to return.
69
+ * @param send Set to true to have the last wrapped function send its payload to the client.
70
+ * @returns An array of Function objects mapping to the route object.
71
+ */
72
+ getFuncArray(route, funcs, send = false) {
73
+ const result = [];
74
+ if (funcs) {
75
+ for (let i = 0; i < funcs.length; i++) {
76
+ const func = funcs[i];
77
+ if (typeof func == "string") {
78
+ result.push(this.wrapMiddleware(route, route[func], send && i >= funcs.length - 1));
79
+ }
80
+ else {
81
+ result.push(this.wrapMiddleware(route, func, send && i >= funcs.length - 1));
82
+ }
83
+ }
84
+ }
85
+ return result;
86
+ }
87
+ /**
88
+ * Searches an route object for any functions that implement a `@Method` decorator.
89
+ *
90
+ * @param route The route object to search.
91
+ * @returns The list of `@Method` decorated functions that were found.
92
+ */
93
+ getRouteMethods(route) {
94
+ let results = new Map();
95
+ for (let member in route) {
96
+ let metadata = Reflect.getMetadata("rrst:route", route, member);
97
+ if (metadata) {
98
+ results.set(member, route[member]);
99
+ }
100
+ }
101
+ let proto = Object.getPrototypeOf(route);
102
+ while (proto) {
103
+ for (let member of Object.getOwnPropertyNames(proto)) {
104
+ let metadata = Reflect.getMetadata("rrst:route", proto, member);
105
+ if (metadata) {
106
+ results.set(member, route[member]);
107
+ }
108
+ }
109
+ proto = Object.getPrototypeOf(proto);
110
+ }
111
+ return results;
112
+ }
113
+ /**
114
+ * Registers the provided route object containing a set of decorated endpoints to the server.
115
+ *
116
+ * @param app The HTTP application/router to register the route to.
117
+ * @param route The route object to register.
118
+ */
119
+ async registerRoute(app, route) {
120
+ let routePaths = Reflect.getMetadata("rrst:routePaths", route);
121
+ if (!routePaths) {
122
+ throw new Error("Route must specify a path: " + JSON.stringify(route));
123
+ }
124
+ // Check if this route defines a class level ACL. If so, we need to store it and then add middleware to validate
125
+ // against it.
126
+ let defaultAcl = Reflect.getMetadata("rrst:acl", route);
127
+ if (defaultAcl && this.aclUtils) {
128
+ try {
129
+ defaultAcl = await this.aclUtils.saveDefaultACL(defaultAcl);
130
+ }
131
+ catch (err) {
132
+ this.logger.info(`Failed to save default ACL for: ${defaultAcl?.uid}`);
133
+ }
134
+ }
135
+ // Each route definition will contain a set of functions that have been decorated to include route metadata.
136
+ // The route metadata will include what HTTP methods and paths that the endpoint is to be bound to. Multiple
137
+ // methods and paths can be assigned to a single decorated function. Therefore, it is necessary to register
138
+ // each combination of basePath, path and method that have been defined by the decorators.
139
+ let methods = this.getRouteMethods(route);
140
+ for (let entry of methods.entries()) {
141
+ let key = entry[0];
142
+ let value = entry[1];
143
+ let docs = Reflect.getMetadata("rrst:docs", route, key) || {};
144
+ let metadata = Reflect.getMetadata("rrst:route", route, key) || {};
145
+ if (value && metadata) {
146
+ let { authRequired } = metadata;
147
+ const { after, before, methods, requiredRoles, validator } = metadata;
148
+ let { authStrategies } = metadata;
149
+ let verbMap = methods;
150
+ // If no JWT strategies have been provided by default, always include JWT token support
151
+ if (!authStrategies) {
152
+ authStrategies = ["jwt"];
153
+ }
154
+ // Does this endpoint have an associated ACL?
155
+ let acl = Reflect.getMetadata("rrst:acl", route, key);
156
+ if (acl && this.aclUtils) {
157
+ acl.parentUid = defaultAcl?.uid;
158
+ acl = await this.aclUtils.saveDefaultACL(acl);
159
+ }
160
+ // Prepare the list of middleware to apply for the given endpoint.
161
+ // The order of operations for middleware is:
162
+ // 1. Auth Strategies
163
+ // 2. Required Roles
164
+ // 3. Required Permissions (Path Matching)
165
+ // 4. Validator Function
166
+ // 5. Before Functions
167
+ // 6. Decorated Function
168
+ // 7. After Functions
169
+ let middleware = new Array();
170
+ if (requiredRoles) {
171
+ middleware.push(this.checkRequiredRoles(requiredRoles));
172
+ }
173
+ const aclUid = acl?.uid || defaultAcl?.uid;
174
+ if (aclUid) {
175
+ middleware.push(this.checkRequiredPerms(aclUid));
176
+ }
177
+ if (validator) {
178
+ middleware = middleware.concat(this.getFuncArray(route, [validator]));
179
+ }
180
+ middleware = middleware.concat(this.getFuncArray(route, before));
181
+ middleware.push(this.wrapMiddleware(route, value, after === undefined));
182
+ middleware = middleware.concat(this.getFuncArray(route, after, true));
183
+ // Multiple method verbs can be registered for a given route endpoint.
184
+ for (let entry of verbMap.entries()) {
185
+ let verb = entry[0];
186
+ // Multiple base paths can be provided to a single route definition.
187
+ for (let basePath of routePaths) {
188
+ let subpath = entry[1].startsWith("/") ? entry[1].substring(1) : entry[1];
189
+ let path = subpath.length === 0 || basePath.endsWith("/")
190
+ ? basePath + subpath
191
+ : basePath + "/" + subpath;
192
+ // If the verb is `ws` we need to translate this accordingly
193
+ if (verb === "ws") {
194
+ // Pre-upgrade auth: runs synchronously in the uWS upgrade callback
195
+ // before the WebSocket handshake. Clients that send an Authorization
196
+ // header (native apps, etc.) are authenticated here and skip the
197
+ // post-upgrade LOGIN message. Browsers that cannot send custom headers
198
+ // fall through to the message-based authWebSocket flow.
199
+ const upgradeAuth = (req) => {
200
+ if (this.authMiddleware) {
201
+ try {
202
+ const result = this.authMiddleware.authenticate(authStrategies, req, undefined, false);
203
+ if (result && !(result instanceof Promise)) {
204
+ return result;
205
+ }
206
+ }
207
+ catch (err) {
208
+ return { reject: true };
209
+ }
210
+ }
211
+ // No token — fall through to post-upgrade message-based auth
212
+ return {};
213
+ };
214
+ if (this.authMiddleware) {
215
+ middleware.unshift(this.authMiddleware.authWebSocket(authRequired));
216
+ }
217
+ // Set authRequired to false since we enforce it in the authWebSocket function
218
+ authRequired = false;
219
+ // Register with the HttpRouter's ws() method; trailing slash handled internally
220
+ app.ws(path, middleware, undefined, upgradeAuth);
221
+ // Update our OpenAPI spec — WebSocket upgrade is a GET request
222
+ this.apiSpec.addRoute(key, path, "get", metadata, docs, route);
223
+ this.logger.info("Registered Route: WS " + path);
224
+ continue;
225
+ }
226
+ // Build the auth middleware for this route
227
+ if (authStrategies && authStrategies.length > 0) {
228
+ // Required auth — reject with 401 if no valid authentication
229
+ const authMw = async (req, _res, next) => {
230
+ try {
231
+ let result = this.authMiddleware?.authenticate(authStrategies, req, authRequired);
232
+ if (result instanceof Promise) {
233
+ result = await result;
234
+ }
235
+ req.auth = result;
236
+ if (!result && authRequired) {
237
+ next(new ApiError(ApiErrors.AUTH_FAILED, 401, ApiErrorMessages.AUTH_FAILED));
238
+ return;
239
+ }
240
+ next();
241
+ }
242
+ catch (err) {
243
+ if (authRequired) {
244
+ next(new ApiError(ApiErrors.AUTH_FAILED, 401, err.message));
245
+ }
246
+ else {
247
+ next();
248
+ }
249
+ }
250
+ };
251
+ app[verb](path, authMw, ...middleware);
252
+ }
253
+ else {
254
+ app[verb](path, ...middleware);
255
+ }
256
+ this.logger.info("Registered Route: " + verb.toUpperCase() + " " + path);
257
+ // Update our OpenAPI spec object with the details of this route.
258
+ this.apiSpec.addRoute(key, path, verb, metadata, docs, route);
259
+ }
260
+ }
261
+ }
262
+ }
263
+ }
264
+ /**
265
+ * Wraps the provided function with HTTP handling based on the function's defined decorators.
266
+ *
267
+ * @param obj The bound object whose middleware function will be wrapped.
268
+ * @param func The decorated function to wrap.
269
+ * @param send Set to true to have `func`'s result sent to the client.
270
+ */
271
+ wrapMiddleware(obj, func, send = false) {
272
+ return async (req, res, next) => {
273
+ try {
274
+ const argMetadata = Reflect.getMetadata("rrst:args", Object.getPrototypeOf(obj), func.name);
275
+ const routeMetadata = Reflect.getMetadata("rrst:route", Object.getPrototypeOf(obj), func.name);
276
+ const args = [];
277
+ const routeType = [...(routeMetadata?.methods?.keys() || [])][0];
278
+ // this.logger.debug(`Arg metadata: ${JSON.stringify(argMetadata)}`);
279
+ // this.logger.debug(`Route metadata: ${JSON.stringify(routeMetadata)}`);
280
+ // this.logger.debug(`Route type: ${JSON.stringify(routeType)}`);
281
+ // This is a hack that lets us stub out function arguments because we no longer can access
282
+ // them directly with func.arguments. Unfortunately this means we can't get default values
283
+ // as there's no way to reference them. =(
284
+ for (let i = 0; i < func.length; i++) {
285
+ args.push(undefined);
286
+ }
287
+ // Populate the list of function arguments based on the metadata
288
+ if (argMetadata) {
289
+ for (const key in argMetadata) {
290
+ const i = Number(key);
291
+ if (argMetadata[i][0] === "authResult") {
292
+ args[i] = req.auth;
293
+ }
294
+ else if (argMetadata[i][0] === "header") {
295
+ if (argMetadata[i][1]) {
296
+ args[i] = req.headers[argMetadata[i][1]];
297
+ }
298
+ else {
299
+ args[i] = req.headers;
300
+ }
301
+ }
302
+ else if (argMetadata[i][0] === "param") {
303
+ if (argMetadata[i][1]) {
304
+ args[i] = req.params[argMetadata[i][1]];
305
+ }
306
+ else {
307
+ args[i] = req.params;
308
+ }
309
+ }
310
+ else if (argMetadata[i][0] === "query") {
311
+ if (argMetadata[i][1]) {
312
+ args[i] = req.query[argMetadata[i][1]];
313
+ }
314
+ else {
315
+ args[i] = req.query;
316
+ }
317
+ const isGetRoute = routeType === "get";
318
+ const isHeadRoute = routeType === "head";
319
+ // Raw buffer encoded query
320
+ const MAX_Q_BYTES = 65536;
321
+ if ((isGetRoute || isHeadRoute) && _.has(args[i], "q")) {
322
+ const qParam = args[i]["q"];
323
+ if (typeof qParam !== "string" || qParam.length > MAX_Q_BYTES) {
324
+ throw new ApiError(ApiErrors.INVALID_REQUEST, 400, "Query parameter 'q' exceeds maximum allowed size.");
325
+ }
326
+ const bufferJsonString = Buffer.from(qParam, "base64").toString("utf-8");
327
+ args[i] = JSON.parse(bufferJsonString);
328
+ }
329
+ }
330
+ else if (argMetadata[i][0] === "request") {
331
+ args[i] = req;
332
+ }
333
+ else if (argMetadata[i][0] === "response") {
334
+ args[i] = res;
335
+ }
336
+ else if (argMetadata[i][0] === "user") {
337
+ args[i] = req.auth?.user;
338
+ }
339
+ else if (argMetadata[i][0] === "socket") {
340
+ args[i] =
341
+ req.websocket !== undefined ? req.websocket : req.socket;
342
+ }
343
+ }
344
+ }
345
+ // If res.result is defined it means the body has already been processed by another
346
+ // function.
347
+ let result = res["result"] ? res["result"] : req.body;
348
+ // Now add the result obj as a function argument
349
+ if (result) {
350
+ let bodyInjected = false;
351
+ // Find the first argument without a decorator and insert the request body
352
+ for (let i = 0; i < args.length; i++) {
353
+ if (!argMetadata || !argMetadata[i]) {
354
+ args[i] = result;
355
+ bodyInjected = true;
356
+ break;
357
+ }
358
+ }
359
+ // If no undecorated arg could be found inject at the end
360
+ if (!bodyInjected) {
361
+ args.push(result);
362
+ }
363
+ }
364
+ // Call the wrapped function
365
+ const boundFunc = func.bind(obj);
366
+ result = boundFunc(...args);
367
+ if (result instanceof Promise) {
368
+ // Wait for the real result
369
+ result = await result;
370
+ }
371
+ // If this is a WebSocket request, mark it as having been handled. This will notify
372
+ // the WebSocket middleware that the connection is active and shouldn't be closed.
373
+ if (req.websocket !== undefined) {
374
+ req.wsHandled = true;
375
+ }
376
+ // If the result is a response we need to return this immediately. We don't return the original response
377
+ // object because responses are passed by copy, not refernce and so the result will be different.
378
+ // Also catches UWSResponse returned directly (e.g. doCount returns res.status(200)).
379
+ const isResponse = result === res || result instanceof ServerResponse || (result && result.headers && result.url);
380
+ if (isResponse) {
381
+ return result.send();
382
+ }
383
+ else {
384
+ if (send) {
385
+ let returnJson = true;
386
+ if (routeMetadata &&
387
+ routeMetadata.contentType &&
388
+ typeof routeMetadata.contentType === "string" &&
389
+ routeMetadata.contentType.trim().length !== 0) {
390
+ res.setHeader("content-type", routeMetadata.contentType.trim());
391
+ returnJson = routeMetadata.contentType.trim().includes("application/json");
392
+ }
393
+ // If a result was returned set it as the response body, otherwise set the status to NO_CONTENT
394
+ if (result !== undefined) {
395
+ if (!res.headersSent) {
396
+ res.status(200);
397
+ }
398
+ if (returnJson) {
399
+ res.json(result);
400
+ }
401
+ else {
402
+ res.send(result);
403
+ }
404
+ }
405
+ else {
406
+ if (!res.headersSent) {
407
+ res.status(204);
408
+ }
409
+ }
410
+ }
411
+ else {
412
+ // Assign result to the response for other handlers to use
413
+ res.result = result;
414
+ }
415
+ }
416
+ if (next) {
417
+ return next();
418
+ }
419
+ else {
420
+ return res.send();
421
+ }
422
+ }
423
+ catch (err) {
424
+ return next(err);
425
+ }
426
+ };
427
+ }
428
+ }
429
+ __decorate([
430
+ Inject(ACLUtils),
431
+ __metadata("design:type", ACLUtils)
432
+ ], RouteUtils.prototype, "aclUtils", void 0);
433
+ __decorate([
434
+ Inject(OpenApiSpec),
435
+ __metadata("design:type", OpenApiSpec)
436
+ ], RouteUtils.prototype, "apiSpec", void 0);
437
+ __decorate([
438
+ Inject(AuthMiddleware),
439
+ __metadata("design:type", AuthMiddleware)
440
+ ], RouteUtils.prototype, "authMiddleware", void 0);
441
+ __decorate([
442
+ Logger,
443
+ __metadata("design:type", Object)
444
+ ], RouteUtils.prototype, "logger", void 0);
445
+ //# sourceMappingURL=RouteUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteUtils.js","sourceRoot":"","sources":["../../../src/routes/RouteUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ ///////////////////////////////////////////////////////////////////////////////
11
+ // Copyright (C) 2020-2026 Jean-Philippe Steinmetz
12
+ ///////////////////////////////////////////////////////////////////////////////
13
+ import { Get, Route } from "../decorators/RouteDecorators.js";
14
+ import { Description, Returns, Summary } from "../decorators/DocDecorators.js";
15
+ import { ObjectDecorators } from "@rapidrest/core";
16
+ import { StatusExtraData } from "../models/StatusExtraData.js";
17
+ const { Config, Inject } = ObjectDecorators;
18
+ /**
19
+ * The `StatusRoute` provides a default `/status` endpoint the returns metadata information about the service such as
20
+ * name, version.
21
+ *
22
+ * @author Jean-Philippe Steinmetz
23
+ */
24
+ let StatusRoute = class StatusRoute {
25
+ get() {
26
+ return {
27
+ name: this.config.get("service_name"),
28
+ time: new Date().toISOString(),
29
+ version: this.config.get("version"),
30
+ ...this.statusExtraData?.data
31
+ };
32
+ }
33
+ };
34
+ __decorate([
35
+ Config(),
36
+ __metadata("design:type", Object)
37
+ ], StatusRoute.prototype, "config", void 0);
38
+ __decorate([
39
+ Inject(StatusExtraData),
40
+ __metadata("design:type", Object)
41
+ ], StatusRoute.prototype, "statusExtraData", void 0);
42
+ __decorate([
43
+ Summary("{{serviceName}} servrice and operational status"),
44
+ Description("Returns information about the service and it's operational status."),
45
+ Get(),
46
+ Returns([Object]),
47
+ __metadata("design:type", Function),
48
+ __metadata("design:paramtypes", []),
49
+ __metadata("design:returntype", Object)
50
+ ], StatusRoute.prototype, "get", null);
51
+ StatusRoute = __decorate([
52
+ Route("/status")
53
+ ], StatusRoute);
54
+ export { StatusRoute };
55
+ //# sourceMappingURL=StatusRoute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusRoute.js","sourceRoot":"","sources":["../../../src/routes/StatusRoute.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAC/E,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC;AAE5C;;;;;GAKG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAW;IAYZ,GAAG;QACP,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;YACrC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC9B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI;SAChC,CAAC;IACN,CAAC;CACJ,CAAA;AAlBW;IADP,MAAM,EAAE;;2CACW;AAGZ;IADP,MAAM,CAAC,eAAe,CAAC;;oDAC6B;AAO7C;IAJP,OAAO,CAAC,iDAAiD,CAAC;IAC1D,WAAW,CAAC,oEAAoE,CAAC;IACjF,GAAG,EAAE;IACL,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;;;;sCAQjB;AAnBQ,WAAW;IADvB,KAAK,CAAC,SAAS,CAAC;GACJ,WAAW,CAoBvB"}
@@ -0,0 +1,7 @@
1
+ export * from "./AdminRoute.js";
2
+ export * from "./MetricsRoute.js";
3
+ export * from "./ModelRoute.js";
4
+ export * from "./OpenAPIRoute.js";
5
+ export * from "./RouteUtils.js";
6
+ export * from "./StatusRoute.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}