@rebasepro/server-mongodb 0.0.1-canary.09e5ec5

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 (286) hide show
  1. package/LICENSE +6 -0
  2. package/dist/ensure-collections-CNrcwVgY.js +74 -0
  3. package/dist/ensure-collections-CNrcwVgY.js.map +1 -0
  4. package/dist/ensure-history-collection-DBIiwmCm.js +15 -0
  5. package/dist/ensure-history-collection-DBIiwmCm.js.map +1 -0
  6. package/dist/index.es.js +1734 -0
  7. package/dist/index.es.js.map +1 -0
  8. package/dist/index.umd.js +2043 -0
  9. package/dist/index.umd.js.map +1 -0
  10. package/dist/server-core/src/api/ast-schema-editor.d.ts +22 -0
  11. package/dist/server-core/src/api/ast-schema-editor.d.ts.map +1 -0
  12. package/dist/server-core/src/api/errors.d.ts +36 -0
  13. package/dist/server-core/src/api/errors.d.ts.map +1 -0
  14. package/dist/server-core/src/api/graphql/graphql-schema-generator.d.ts +36 -0
  15. package/dist/server-core/src/api/graphql/graphql-schema-generator.d.ts.map +1 -0
  16. package/dist/server-core/src/api/graphql/index.d.ts +2 -0
  17. package/dist/server-core/src/api/graphql/index.d.ts.map +1 -0
  18. package/dist/server-core/src/api/index.d.ts +10 -0
  19. package/dist/server-core/src/api/index.d.ts.map +1 -0
  20. package/dist/server-core/src/api/openapi-generator.d.ts +17 -0
  21. package/dist/server-core/src/api/openapi-generator.d.ts.map +1 -0
  22. package/dist/server-core/src/api/rest/api-generator.d.ts +65 -0
  23. package/dist/server-core/src/api/rest/api-generator.d.ts.map +1 -0
  24. package/dist/server-core/src/api/rest/index.d.ts +2 -0
  25. package/dist/server-core/src/api/rest/index.d.ts.map +1 -0
  26. package/dist/server-core/src/api/rest/query-parser.d.ts +10 -0
  27. package/dist/server-core/src/api/rest/query-parser.d.ts.map +1 -0
  28. package/dist/server-core/src/api/schema-editor-routes.d.ts +4 -0
  29. package/dist/server-core/src/api/schema-editor-routes.d.ts.map +1 -0
  30. package/dist/server-core/src/api/server.d.ts +41 -0
  31. package/dist/server-core/src/api/server.d.ts.map +1 -0
  32. package/dist/server-core/src/api/types.d.ts +91 -0
  33. package/dist/server-core/src/api/types.d.ts.map +1 -0
  34. package/dist/server-core/src/auth/admin-routes.d.ts +17 -0
  35. package/dist/server-core/src/auth/admin-routes.d.ts.map +1 -0
  36. package/dist/server-core/src/auth/apple-oauth.d.ts +31 -0
  37. package/dist/server-core/src/auth/apple-oauth.d.ts.map +1 -0
  38. package/dist/server-core/src/auth/bitbucket-oauth.d.ts +12 -0
  39. package/dist/server-core/src/auth/bitbucket-oauth.d.ts.map +1 -0
  40. package/dist/server-core/src/auth/discord-oauth.d.ts +15 -0
  41. package/dist/server-core/src/auth/discord-oauth.d.ts.map +1 -0
  42. package/dist/server-core/src/auth/facebook-oauth.d.ts +15 -0
  43. package/dist/server-core/src/auth/facebook-oauth.d.ts.map +1 -0
  44. package/dist/server-core/src/auth/github-oauth.d.ts +16 -0
  45. package/dist/server-core/src/auth/github-oauth.d.ts.map +1 -0
  46. package/dist/server-core/src/auth/gitlab-oauth.d.ts +14 -0
  47. package/dist/server-core/src/auth/gitlab-oauth.d.ts.map +1 -0
  48. package/dist/server-core/src/auth/google-oauth.d.ts +15 -0
  49. package/dist/server-core/src/auth/google-oauth.d.ts.map +1 -0
  50. package/dist/server-core/src/auth/index.d.ts +24 -0
  51. package/dist/server-core/src/auth/index.d.ts.map +1 -0
  52. package/dist/server-core/src/auth/interfaces.d.ts +310 -0
  53. package/dist/server-core/src/auth/interfaces.d.ts.map +1 -0
  54. package/dist/server-core/src/auth/jwt.d.ts +44 -0
  55. package/dist/server-core/src/auth/jwt.d.ts.map +1 -0
  56. package/dist/server-core/src/auth/linkedin-oauth.d.ts +19 -0
  57. package/dist/server-core/src/auth/linkedin-oauth.d.ts.map +1 -0
  58. package/dist/server-core/src/auth/microsoft-oauth.d.ts +17 -0
  59. package/dist/server-core/src/auth/microsoft-oauth.d.ts.map +1 -0
  60. package/dist/server-core/src/auth/middleware.d.ts +82 -0
  61. package/dist/server-core/src/auth/middleware.d.ts.map +1 -0
  62. package/dist/server-core/src/auth/password.d.ts +23 -0
  63. package/dist/server-core/src/auth/password.d.ts.map +1 -0
  64. package/dist/server-core/src/auth/rate-limiter.d.ts +32 -0
  65. package/dist/server-core/src/auth/rate-limiter.d.ts.map +1 -0
  66. package/dist/server-core/src/auth/routes.d.ts +28 -0
  67. package/dist/server-core/src/auth/routes.d.ts.map +1 -0
  68. package/dist/server-core/src/auth/slack-oauth.d.ts +13 -0
  69. package/dist/server-core/src/auth/slack-oauth.d.ts.map +1 -0
  70. package/dist/server-core/src/auth/spotify-oauth.d.ts +13 -0
  71. package/dist/server-core/src/auth/spotify-oauth.d.ts.map +1 -0
  72. package/dist/server-core/src/auth/twitter-oauth.d.ts +19 -0
  73. package/dist/server-core/src/auth/twitter-oauth.d.ts.map +1 -0
  74. package/dist/server-core/src/collections/BackendCollectionRegistry.d.ts +14 -0
  75. package/dist/server-core/src/collections/BackendCollectionRegistry.d.ts.map +1 -0
  76. package/dist/server-core/src/collections/loader.d.ts +6 -0
  77. package/dist/server-core/src/collections/loader.d.ts.map +1 -0
  78. package/dist/server-core/src/cron/cron-loader.d.ts +18 -0
  79. package/dist/server-core/src/cron/cron-loader.d.ts.map +1 -0
  80. package/dist/server-core/src/cron/cron-routes.d.ts +15 -0
  81. package/dist/server-core/src/cron/cron-routes.d.ts.map +1 -0
  82. package/dist/server-core/src/cron/cron-scheduler.d.ts +62 -0
  83. package/dist/server-core/src/cron/cron-scheduler.d.ts.map +1 -0
  84. package/dist/server-core/src/cron/cron-store.d.ts +33 -0
  85. package/dist/server-core/src/cron/cron-store.d.ts.map +1 -0
  86. package/dist/server-core/src/cron/index.d.ts +7 -0
  87. package/dist/server-core/src/cron/index.d.ts.map +1 -0
  88. package/dist/server-core/src/db/interfaces.d.ts +19 -0
  89. package/dist/server-core/src/db/interfaces.d.ts.map +1 -0
  90. package/dist/server-core/src/email/index.d.ts +7 -0
  91. package/dist/server-core/src/email/index.d.ts.map +1 -0
  92. package/dist/server-core/src/email/smtp-email-service.d.ts +26 -0
  93. package/dist/server-core/src/email/smtp-email-service.d.ts.map +1 -0
  94. package/dist/server-core/src/email/templates.d.ts +43 -0
  95. package/dist/server-core/src/email/templates.d.ts.map +1 -0
  96. package/dist/server-core/src/email/types.d.ts +108 -0
  97. package/dist/server-core/src/email/types.d.ts.map +1 -0
  98. package/dist/server-core/src/functions/function-loader.d.ts +18 -0
  99. package/dist/server-core/src/functions/function-loader.d.ts.map +1 -0
  100. package/dist/server-core/src/functions/function-routes.d.ts +11 -0
  101. package/dist/server-core/src/functions/function-routes.d.ts.map +1 -0
  102. package/dist/server-core/src/functions/index.d.ts +4 -0
  103. package/dist/server-core/src/functions/index.d.ts.map +1 -0
  104. package/dist/server-core/src/history/history-routes.d.ts +24 -0
  105. package/dist/server-core/src/history/history-routes.d.ts.map +1 -0
  106. package/dist/server-core/src/history/index.d.ts +2 -0
  107. package/dist/server-core/src/history/index.d.ts.map +1 -0
  108. package/dist/server-core/src/index.d.ts +30 -0
  109. package/dist/server-core/src/index.d.ts.map +1 -0
  110. package/dist/server-core/src/init.d.ts +160 -0
  111. package/dist/server-core/src/init.d.ts.map +1 -0
  112. package/dist/server-core/src/serve-spa.d.ts +31 -0
  113. package/dist/server-core/src/serve-spa.d.ts.map +1 -0
  114. package/dist/server-core/src/services/driver-registry.d.ts +79 -0
  115. package/dist/server-core/src/services/driver-registry.d.ts.map +1 -0
  116. package/dist/server-core/src/singleton.d.ts +36 -0
  117. package/dist/server-core/src/singleton.d.ts.map +1 -0
  118. package/dist/server-core/src/storage/LocalStorageController.d.ts +47 -0
  119. package/dist/server-core/src/storage/LocalStorageController.d.ts.map +1 -0
  120. package/dist/server-core/src/storage/S3StorageController.d.ts +37 -0
  121. package/dist/server-core/src/storage/S3StorageController.d.ts.map +1 -0
  122. package/dist/server-core/src/storage/index.d.ts +26 -0
  123. package/dist/server-core/src/storage/index.d.ts.map +1 -0
  124. package/dist/server-core/src/storage/routes.d.ts +39 -0
  125. package/dist/server-core/src/storage/routes.d.ts.map +1 -0
  126. package/dist/server-core/src/storage/storage-registry.d.ts +79 -0
  127. package/dist/server-core/src/storage/storage-registry.d.ts.map +1 -0
  128. package/dist/server-core/src/storage/types.d.ts +104 -0
  129. package/dist/server-core/src/storage/types.d.ts.map +1 -0
  130. package/dist/server-core/src/types/index.d.ts +12 -0
  131. package/dist/server-core/src/types/index.d.ts.map +1 -0
  132. package/dist/server-core/src/utils/dev-port.d.ts +36 -0
  133. package/dist/server-core/src/utils/dev-port.d.ts.map +1 -0
  134. package/dist/server-core/src/utils/logger.d.ts +32 -0
  135. package/dist/server-core/src/utils/logger.d.ts.map +1 -0
  136. package/dist/server-core/src/utils/logging.d.ts +10 -0
  137. package/dist/server-core/src/utils/logging.d.ts.map +1 -0
  138. package/dist/server-core/src/utils/request-logger.d.ts +20 -0
  139. package/dist/server-core/src/utils/request-logger.d.ts.map +1 -0
  140. package/dist/server-core/src/utils/sql.d.ts +28 -0
  141. package/dist/server-core/src/utils/sql.d.ts.map +1 -0
  142. package/dist/server-mongodb/src/MongoBootstrapper.d.ts +18 -0
  143. package/dist/server-mongodb/src/MongoBootstrapper.d.ts.map +1 -0
  144. package/dist/server-mongodb/src/auth/ensure-collections.d.ts +3 -0
  145. package/dist/server-mongodb/src/auth/ensure-collections.d.ts.map +1 -0
  146. package/dist/server-mongodb/src/auth/services.d.ts +135 -0
  147. package/dist/server-mongodb/src/auth/services.d.ts.map +1 -0
  148. package/dist/server-mongodb/src/connection.d.ts +35 -0
  149. package/dist/server-mongodb/src/connection.d.ts.map +1 -0
  150. package/dist/server-mongodb/src/db/MongoConditionBuilder.d.ts +64 -0
  151. package/dist/server-mongodb/src/db/MongoConditionBuilder.d.ts.map +1 -0
  152. package/dist/server-mongodb/src/db/MongoEntityService.d.ts +98 -0
  153. package/dist/server-mongodb/src/db/MongoEntityService.d.ts.map +1 -0
  154. package/dist/server-mongodb/src/factory.d.ts +142 -0
  155. package/dist/server-mongodb/src/factory.d.ts.map +1 -0
  156. package/dist/server-mongodb/src/history/ensure-history-collection.d.ts +3 -0
  157. package/dist/server-mongodb/src/history/ensure-history-collection.d.ts.map +1 -0
  158. package/dist/server-mongodb/src/index.d.ts +18 -0
  159. package/dist/server-mongodb/src/index.d.ts.map +1 -0
  160. package/dist/server-mongodb/src/services/MongoDriver.d.ts +83 -0
  161. package/dist/server-mongodb/src/services/MongoDriver.d.ts.map +1 -0
  162. package/dist/server-mongodb/src/services/MongoHistoryService.d.ts +37 -0
  163. package/dist/server-mongodb/src/services/MongoHistoryService.d.ts.map +1 -0
  164. package/dist/server-mongodb/src/services/MongoRealtimeService.d.ts +86 -0
  165. package/dist/server-mongodb/src/services/MongoRealtimeService.d.ts.map +1 -0
  166. package/dist/server-mongodb/src/useMongoDriver.d.ts +18 -0
  167. package/dist/server-mongodb/src/useMongoDriver.d.ts.map +1 -0
  168. package/dist/server-mongodb/src/utils.d.ts +10 -0
  169. package/dist/server-mongodb/src/utils.d.ts.map +1 -0
  170. package/dist/server-mongodb/src/websocket.d.ts +7 -0
  171. package/dist/server-mongodb/src/websocket.d.ts.map +1 -0
  172. package/dist/types/src/controllers/analytics_controller.d.ts +8 -0
  173. package/dist/types/src/controllers/analytics_controller.d.ts.map +1 -0
  174. package/dist/types/src/controllers/auth.d.ts +120 -0
  175. package/dist/types/src/controllers/auth.d.ts.map +1 -0
  176. package/dist/types/src/controllers/client.d.ts +171 -0
  177. package/dist/types/src/controllers/client.d.ts.map +1 -0
  178. package/dist/types/src/controllers/collection_registry.d.ts +46 -0
  179. package/dist/types/src/controllers/collection_registry.d.ts.map +1 -0
  180. package/dist/types/src/controllers/customization_controller.d.ts +61 -0
  181. package/dist/types/src/controllers/customization_controller.d.ts.map +1 -0
  182. package/dist/types/src/controllers/data.d.ts +169 -0
  183. package/dist/types/src/controllers/data.d.ts.map +1 -0
  184. package/dist/types/src/controllers/data_driver.d.ts +161 -0
  185. package/dist/types/src/controllers/data_driver.d.ts.map +1 -0
  186. package/dist/types/src/controllers/database_admin.d.ts +12 -0
  187. package/dist/types/src/controllers/database_admin.d.ts.map +1 -0
  188. package/dist/types/src/controllers/dialogs_controller.d.ts +37 -0
  189. package/dist/types/src/controllers/dialogs_controller.d.ts.map +1 -0
  190. package/dist/types/src/controllers/effective_role.d.ts +5 -0
  191. package/dist/types/src/controllers/effective_role.d.ts.map +1 -0
  192. package/dist/types/src/controllers/email.d.ts +35 -0
  193. package/dist/types/src/controllers/email.d.ts.map +1 -0
  194. package/dist/types/src/controllers/index.d.ts +19 -0
  195. package/dist/types/src/controllers/index.d.ts.map +1 -0
  196. package/dist/types/src/controllers/local_config_persistence.d.ts +21 -0
  197. package/dist/types/src/controllers/local_config_persistence.d.ts.map +1 -0
  198. package/dist/types/src/controllers/navigation.d.ts +214 -0
  199. package/dist/types/src/controllers/navigation.d.ts.map +1 -0
  200. package/dist/types/src/controllers/registry.d.ts +55 -0
  201. package/dist/types/src/controllers/registry.d.ts.map +1 -0
  202. package/dist/types/src/controllers/side_dialogs_controller.d.ts +68 -0
  203. package/dist/types/src/controllers/side_dialogs_controller.d.ts.map +1 -0
  204. package/dist/types/src/controllers/side_entity_controller.d.ts +91 -0
  205. package/dist/types/src/controllers/side_entity_controller.d.ts.map +1 -0
  206. package/dist/types/src/controllers/snackbar.d.ts +25 -0
  207. package/dist/types/src/controllers/snackbar.d.ts.map +1 -0
  208. package/dist/types/src/controllers/storage.d.ts +172 -0
  209. package/dist/types/src/controllers/storage.d.ts.map +1 -0
  210. package/dist/types/src/index.d.ts +5 -0
  211. package/dist/types/src/index.d.ts.map +1 -0
  212. package/dist/types/src/rebase_context.d.ts +106 -0
  213. package/dist/types/src/rebase_context.d.ts.map +1 -0
  214. package/dist/types/src/types/backend.d.ts +537 -0
  215. package/dist/types/src/types/backend.d.ts.map +1 -0
  216. package/dist/types/src/types/builders.d.ts +16 -0
  217. package/dist/types/src/types/builders.d.ts.map +1 -0
  218. package/dist/types/src/types/chips.d.ts +6 -0
  219. package/dist/types/src/types/chips.d.ts.map +1 -0
  220. package/dist/types/src/types/collections.d.ts +857 -0
  221. package/dist/types/src/types/collections.d.ts.map +1 -0
  222. package/dist/types/src/types/cron.d.ts +103 -0
  223. package/dist/types/src/types/cron.d.ts.map +1 -0
  224. package/dist/types/src/types/data_source.d.ts +65 -0
  225. package/dist/types/src/types/data_source.d.ts.map +1 -0
  226. package/dist/types/src/types/entities.d.ts +146 -0
  227. package/dist/types/src/types/entities.d.ts.map +1 -0
  228. package/dist/types/src/types/entity_actions.d.ts +99 -0
  229. package/dist/types/src/types/entity_actions.d.ts.map +1 -0
  230. package/dist/types/src/types/entity_callbacks.d.ts +174 -0
  231. package/dist/types/src/types/entity_callbacks.d.ts.map +1 -0
  232. package/dist/types/src/types/entity_link_builder.d.ts +8 -0
  233. package/dist/types/src/types/entity_link_builder.d.ts.map +1 -0
  234. package/dist/types/src/types/entity_overrides.d.ts +11 -0
  235. package/dist/types/src/types/entity_overrides.d.ts.map +1 -0
  236. package/dist/types/src/types/entity_views.d.ts +62 -0
  237. package/dist/types/src/types/entity_views.d.ts.map +1 -0
  238. package/dist/types/src/types/export_import.d.ts +22 -0
  239. package/dist/types/src/types/export_import.d.ts.map +1 -0
  240. package/dist/types/src/types/index.d.ts +24 -0
  241. package/dist/types/src/types/index.d.ts.map +1 -0
  242. package/dist/types/src/types/locales.d.ts +5 -0
  243. package/dist/types/src/types/locales.d.ts.map +1 -0
  244. package/dist/types/src/types/modify_collections.d.ts +6 -0
  245. package/dist/types/src/types/modify_collections.d.ts.map +1 -0
  246. package/dist/types/src/types/plugins.d.ts +280 -0
  247. package/dist/types/src/types/plugins.d.ts.map +1 -0
  248. package/dist/types/src/types/properties.d.ts +1177 -0
  249. package/dist/types/src/types/properties.d.ts.map +1 -0
  250. package/dist/types/src/types/property_config.d.ts +71 -0
  251. package/dist/types/src/types/property_config.d.ts.map +1 -0
  252. package/dist/types/src/types/relations.d.ts +337 -0
  253. package/dist/types/src/types/relations.d.ts.map +1 -0
  254. package/dist/types/src/types/slots.d.ts +253 -0
  255. package/dist/types/src/types/slots.d.ts.map +1 -0
  256. package/dist/types/src/types/translations.d.ts +871 -0
  257. package/dist/types/src/types/translations.d.ts.map +1 -0
  258. package/dist/types/src/types/user_management_delegate.d.ts +122 -0
  259. package/dist/types/src/types/user_management_delegate.d.ts.map +1 -0
  260. package/dist/types/src/types/websockets.d.ts +79 -0
  261. package/dist/types/src/types/websockets.d.ts.map +1 -0
  262. package/dist/types/src/users/index.d.ts +3 -0
  263. package/dist/types/src/users/index.d.ts.map +1 -0
  264. package/dist/types/src/users/roles.d.ts +23 -0
  265. package/dist/types/src/users/roles.d.ts.map +1 -0
  266. package/dist/types/src/users/user.d.ts +47 -0
  267. package/dist/types/src/users/user.d.ts.map +1 -0
  268. package/dist/websocket-BZlPuJrt.js +220 -0
  269. package/dist/websocket-BZlPuJrt.js.map +1 -0
  270. package/package.json +79 -0
  271. package/src/MongoBootstrapper.ts +177 -0
  272. package/src/auth/ensure-collections.ts +94 -0
  273. package/src/auth/services.ts +638 -0
  274. package/src/connection.ts +60 -0
  275. package/src/db/MongoConditionBuilder.ts +181 -0
  276. package/src/db/MongoEntityService.ts +350 -0
  277. package/src/factory.ts +289 -0
  278. package/src/history/ensure-history-collection.ts +19 -0
  279. package/src/index.ts +25 -0
  280. package/src/services/MongoDriver.ts +297 -0
  281. package/src/services/MongoDriver.ts.backup +266 -0
  282. package/src/services/MongoHistoryService.ts +154 -0
  283. package/src/services/MongoRealtimeService.ts +394 -0
  284. package/src/useMongoDriver.ts +519 -0
  285. package/src/utils.ts +28 -0
  286. package/src/websocket.ts +257 -0
@@ -0,0 +1,4 @@
1
+ import { Hono } from "hono";
2
+ import { HonoEnv } from "./types";
3
+ export declare function createSchemaEditorRoutes(collectionsDir: string): Hono<HonoEnv>;
4
+ //# sourceMappingURL=schema-editor-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-editor-routes.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/api/schema-editor-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAkC9E"}
@@ -0,0 +1,41 @@
1
+ import { Hono } from "hono";
2
+ import { DataDriver } from "@rebasepro/types";
3
+ import { ApiConfig, HonoEnv } from "./types";
4
+ /**
5
+ * Simplified API server that leverages existing Rebase infrastructure
6
+ * Can be used standalone or mounted on existing Hono app
7
+ */
8
+ export declare class RebaseApiServer {
9
+ private app;
10
+ private router;
11
+ private config;
12
+ private driver;
13
+ private constructor();
14
+ /**
15
+ * Factory method to create an asynchronously initialized ApiServer instance
16
+ */
17
+ static create(config: ApiConfig & {
18
+ driver: DataDriver;
19
+ }): Promise<RebaseApiServer>;
20
+ /**
21
+ * Setup Hono middleware
22
+ */
23
+ private setupMiddleware;
24
+ /**
25
+ * Setup API routes using existing services
26
+ */
27
+ private setupRoutes;
28
+ /**
29
+ * Get the Hono router with all API routes
30
+ */
31
+ getRouter(): Hono<HonoEnv>;
32
+ /**
33
+ * Get the standalone Hono app
34
+ */
35
+ getApp(): Hono<HonoEnv>;
36
+ /**
37
+ * Start the server (standalone mode) via @hono/node-server
38
+ */
39
+ listen(port?: number, callback?: () => void): void;
40
+ }
41
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/api/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAO5B,OAAO,EAAE,UAAU,EAA8B,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAO7C;;;GAGG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAa;IAE3B,OAAO;IAoBP;;OAEG;WACiB,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAmBhG;;OAEG;IACH,OAAO,CAAC,eAAe;IAyBvB;;OAEG;IACH,OAAO,CAAC,WAAW;IA4HnB;;OAEG;IACH,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC;IAI1B;;OAEG;IACH,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC;IAIvB;;OAEG;IACH,MAAM,CAAC,IAAI,SAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;CAQnD"}
@@ -0,0 +1,91 @@
1
+ import { EntityCollection } from "@rebasepro/types";
2
+ import { AuthResult } from "../auth/middleware";
3
+ import { NodePgDatabase } from "drizzle-orm/node-postgres";
4
+ import { DataDriver } from "@rebasepro/types";
5
+ /**
6
+ * Hono Environment Variables
7
+ * Passed to generic Hono<HonoEnv> to type `c.get()`
8
+ */
9
+ export type HonoEnv = {
10
+ Variables: {
11
+ user?: AuthResult | {
12
+ userId?: string;
13
+ roles?: string[];
14
+ };
15
+ driver?: DataDriver;
16
+ };
17
+ };
18
+ /**
19
+ * Configuration for API generation
20
+ */
21
+ /**
22
+ * Configuration for API generation
23
+ */
24
+ export interface ApiConfig {
25
+ collections?: EntityCollection[];
26
+ collectionsDir?: string;
27
+ basePath?: string;
28
+ enableGraphQL?: boolean;
29
+ enableREST?: boolean;
30
+ cors?: {
31
+ origin?: string | string[] | boolean;
32
+ credentials?: boolean;
33
+ };
34
+ /** Whether auth is required for API endpoints (default: true) */
35
+ requireAuth?: boolean;
36
+ /** Optional custom validator for authentication */
37
+ authValidator?: (c: import("hono").Context<import("./types").HonoEnv>) => Promise<AuthResult>;
38
+ pagination?: {
39
+ defaultLimit: number;
40
+ maxLimit: number;
41
+ };
42
+ }
43
+ /**
44
+ * Context passed to resolvers and handlers
45
+ */
46
+ export interface ApiContext {
47
+ user?: AuthResult;
48
+ collections: Map<string, EntityCollection>;
49
+ db: NodePgDatabase;
50
+ }
51
+ /**
52
+ * Standard API response format
53
+ */
54
+ export interface ApiResponse<T = unknown> {
55
+ data?: T;
56
+ error?: {
57
+ message: string;
58
+ code?: string;
59
+ details?: unknown;
60
+ };
61
+ meta?: {
62
+ total?: number;
63
+ page?: number;
64
+ limit?: number;
65
+ hasMore?: boolean;
66
+ };
67
+ }
68
+ /**
69
+ * Query options for API endpoints
70
+ */
71
+ export interface QueryOptions {
72
+ limit?: number;
73
+ offset?: number;
74
+ where?: Record<string, unknown>;
75
+ orderBy?: Array<{
76
+ field: string;
77
+ direction: "asc" | "desc";
78
+ }>;
79
+ include?: string[];
80
+ /** Columns to return in the response (field-level selection) */
81
+ fields?: string[];
82
+ }
83
+ /**
84
+ * Relation resolution configuration
85
+ */
86
+ export interface RelationConfig {
87
+ relationName: string;
88
+ depth?: number;
89
+ include?: string[];
90
+ }
91
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG;IAClB,SAAS,EAAE;QACP,IAAI,CAAC,EAAE,UAAU,GAAG;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QAC1D,MAAM,CAAC,EAAE,UAAU,CAAC;KACvB,CAAA;CACJ,CAAC;AAEF;;GAEG;AACH;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE;QACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;QACrC,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mDAAmD;IACnD,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,MAAM,EAAE,OAAO,CAAC,OAAO,SAAS,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9F,UAAU,CAAC,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3C,EAAE,EAAE,cAAc,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACpC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,IAAI,CAAC,EAAE;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB"}
@@ -0,0 +1,17 @@
1
+ import { Hono } from "hono";
2
+ import { AuthModuleConfig } from "./routes";
3
+ interface AdminRouteOptions extends AuthModuleConfig {
4
+ serviceKey?: string;
5
+ /**
6
+ * Callback to persistently mark bootstrap as completed.
7
+ * Invoked after the first admin user is promoted via POST /admin/bootstrap.
8
+ */
9
+ setBootstrapCompleted?: () => Promise<void>;
10
+ }
11
+ import { HonoEnv } from "../api/types";
12
+ /**
13
+ * Create admin routes for user and role management
14
+ */
15
+ export declare function createAdminRoutes(config: AdminRouteOptions): Hono<HonoEnv>;
16
+ export {};
17
+ //# sourceMappingURL=admin-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-routes.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/admin-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,UAAU,iBAAkB,SAAQ,gBAAgB;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AACD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA4CvC;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,CAkd1E"}
@@ -0,0 +1,31 @@
1
+ import type { OAuthProvider } from "./interfaces";
2
+ /**
3
+ * Creates an Apple Sign In OAuth Provider integration.
4
+ *
5
+ * Apple requires a client secret that is a signed JWT, regenerated on each
6
+ * token exchange (valid up to 6 months). This provider handles that automatically.
7
+ *
8
+ * Required Apple Developer configuration:
9
+ * - Services ID (clientId)
10
+ * - Key ID from the private key registered with Apple
11
+ * - Team ID from Apple Developer account
12
+ * - Private key (.p8 file contents) downloaded from Apple Developer portal
13
+ */
14
+ export declare function createAppleProvider(config: {
15
+ clientId: string;
16
+ teamId: string;
17
+ keyId: string;
18
+ /** The raw PEM contents of the .p8 private key file */
19
+ privateKey: string;
20
+ }): OAuthProvider<{
21
+ code: string;
22
+ redirectUri: string;
23
+ user?: {
24
+ name?: {
25
+ firstName?: string;
26
+ lastName?: string;
27
+ };
28
+ email?: string;
29
+ };
30
+ }>;
31
+ //# sourceMappingURL=apple-oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apple-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/apple-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAKxE;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;CACtB,GAAG,aAAa,CAAC;IACN,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/E,CAAC,CAsGT"}
@@ -0,0 +1,12 @@
1
+ import type { OAuthProvider } from "./interfaces";
2
+ /**
3
+ * Creates a Bitbucket OAuth Provider integration (OAuth 2.0 consumer).
4
+ */
5
+ export declare function createBitbucketProvider(config: {
6
+ clientId: string;
7
+ clientSecret: string;
8
+ }): OAuthProvider<{
9
+ code: string;
10
+ redirectUri: string;
11
+ }>;
12
+ //# sourceMappingURL=bitbucket-oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitbucket-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/bitbucket-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGxE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CA2EhJ"}
@@ -0,0 +1,15 @@
1
+ import type { OAuthProvider } from "./interfaces";
2
+ /**
3
+ * Creates a Discord OAuth2 Provider integration.
4
+ *
5
+ * Uses the authorization code flow. Requires the "identify" and "email"
6
+ * scopes to retrieve the user's email and profile information.
7
+ */
8
+ export declare function createDiscordProvider(config: {
9
+ clientId: string;
10
+ clientSecret: string;
11
+ }): OAuthProvider<{
12
+ code: string;
13
+ redirectUri: string;
14
+ }>;
15
+ //# sourceMappingURL=discord-oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discord-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/discord-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGxE;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAyE9I"}
@@ -0,0 +1,15 @@
1
+ import type { OAuthProvider } from "./interfaces";
2
+ /**
3
+ * Creates a Facebook / Meta OAuth Provider integration.
4
+ *
5
+ * Uses the authorization code flow to exchange a code for an access token,
6
+ * then fetches user profile from the Facebook Graph API.
7
+ */
8
+ export declare function createFacebookProvider(config: {
9
+ clientId: string;
10
+ clientSecret: string;
11
+ }): OAuthProvider<{
12
+ code: string;
13
+ redirectUri: string;
14
+ }>;
15
+ //# sourceMappingURL=facebook-oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facebook-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/facebook-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGxE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CA8D/I"}
@@ -0,0 +1,16 @@
1
+ import type { OAuthProvider } from "./interfaces";
2
+ /**
3
+ * Creates a GitHub OAuth Provider integration.
4
+ *
5
+ * Flow: Frontend receives an authorization `code` via the GitHub OAuth redirect.
6
+ * This provider exchanges the code for an access token, then fetches the user's
7
+ * profile and primary email from the GitHub API.
8
+ */
9
+ export declare function createGitHubProvider(config: {
10
+ clientId: string;
11
+ clientSecret: string;
12
+ }): OAuthProvider<{
13
+ code: string;
14
+ redirectUri: string;
15
+ }>;
16
+ //# sourceMappingURL=github-oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/github-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGxE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAmG7I"}
@@ -0,0 +1,14 @@
1
+ import type { OAuthProvider } from "./interfaces";
2
+ /**
3
+ * Creates a GitLab OAuth Provider integration.
4
+ * Works with both GitLab.com and self-hosted instances.
5
+ */
6
+ export declare function createGitLabProvider(config: {
7
+ clientId: string;
8
+ clientSecret: string;
9
+ baseUrl?: string;
10
+ }): OAuthProvider<{
11
+ code: string;
12
+ redirectUri: string;
13
+ }>;
14
+ //# sourceMappingURL=gitlab-oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/gitlab-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGxE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CA0DvD"}
@@ -0,0 +1,15 @@
1
+ import type { OAuthProvider } from "./interfaces";
2
+ export interface GoogleUserInfo {
3
+ googleId: string;
4
+ email: string;
5
+ displayName: string | null;
6
+ photoUrl: string | null;
7
+ emailVerified: boolean;
8
+ }
9
+ /**
10
+ * Creates a Google OAuth Provider integration
11
+ */
12
+ export declare function createGoogleProvider(clientId: string): OAuthProvider<{
13
+ idToken: string;
14
+ }>;
15
+ //# sourceMappingURL=google-oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/google-oauth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGxE,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAgCzF"}
@@ -0,0 +1,24 @@
1
+ export * from "./interfaces";
2
+ export { configureJwt, generateAccessToken, verifyAccessToken, generateRefreshToken, hashRefreshToken, getRefreshTokenExpiry, getAccessTokenExpiry } from "./jwt";
3
+ export type { JwtConfig, AccessTokenPayload } from "./jwt";
4
+ export { hashPassword, verifyPassword, validatePasswordStrength } from "./password";
5
+ export type { PasswordValidationResult } from "./password";
6
+ export { createGoogleProvider } from "./google-oauth";
7
+ export { createLinkedinProvider } from "./linkedin-oauth";
8
+ export { createGitHubProvider } from "./github-oauth";
9
+ export { createMicrosoftProvider } from "./microsoft-oauth";
10
+ export { createAppleProvider } from "./apple-oauth";
11
+ export { createFacebookProvider } from "./facebook-oauth";
12
+ export { createTwitterProvider } from "./twitter-oauth";
13
+ export { createDiscordProvider } from "./discord-oauth";
14
+ export { createGitLabProvider } from "./gitlab-oauth";
15
+ export { createBitbucketProvider } from "./bitbucket-oauth";
16
+ export { createSlackProvider } from "./slack-oauth";
17
+ export { createSpotifyProvider } from "./spotify-oauth";
18
+ export { requireAuth, requireAdmin, optionalAuth, extractUserFromToken, createAuthMiddleware } from "./middleware";
19
+ export type { AuthMiddlewareOptions, AuthResult } from "./middleware";
20
+ export { createAuthRoutes } from "./routes";
21
+ export type { AuthModuleConfig } from "./routes";
22
+ export { createAdminRoutes } from "./admin-routes";
23
+ export { createRateLimiter, defaultAuthLimiter, strictAuthLimiter } from "./rate-limiter";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAClK,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACpF,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAG3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACnH,YAAY,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,310 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Authentication Abstraction Interfaces
4
+ *
5
+ * These interfaces define the contracts for authentication-related operations.
6
+ * Implementations can use different databases (PostgreSQL, MongoDB, etc.) to
7
+ * store user, role, and token data.
8
+ */
9
+ /**
10
+ * User data structure
11
+ */
12
+ export interface UserData {
13
+ id: string;
14
+ email: string;
15
+ passwordHash?: string | null;
16
+ displayName?: string | null;
17
+ photoUrl?: string | null;
18
+ emailVerified: boolean;
19
+ emailVerificationToken?: string | null;
20
+ emailVerificationSentAt?: Date | null;
21
+ createdAt: Date;
22
+ updatedAt: Date;
23
+ }
24
+ /**
25
+ * Data for creating a new user
26
+ */
27
+ export interface CreateUserData {
28
+ email: string;
29
+ passwordHash?: string;
30
+ displayName?: string;
31
+ photoUrl?: string;
32
+ emailVerified?: boolean;
33
+ }
34
+ /**
35
+ * User Identity Data (OAuth accounts linked to user)
36
+ */
37
+ export interface UserIdentityData {
38
+ id: string;
39
+ userId: string;
40
+ provider: string;
41
+ providerId: string;
42
+ profileData?: Record<string, unknown> | null;
43
+ createdAt: Date;
44
+ updatedAt: Date;
45
+ }
46
+ /**
47
+ * Standardized profile data returned by an OAuth provider verification payload
48
+ */
49
+ export interface OAuthProviderProfile {
50
+ providerId: string;
51
+ email: string;
52
+ displayName?: string | null;
53
+ photoUrl?: string | null;
54
+ }
55
+ /**
56
+ * Pluggable OAuth Provider integration strategy
57
+ */
58
+ export interface OAuthProvider<T = unknown> {
59
+ /** The identifier of the provider (e.g. "github", "google") */
60
+ id: string;
61
+ /** Zod schema validating the expected request payload (e.g. { code: string }) */
62
+ schema: z.ZodSchema<T>;
63
+ /** Verify external tokens/codes and return a standardized user profile */
64
+ verify: (payload: T) => Promise<OAuthProviderProfile | null>;
65
+ }
66
+ /**
67
+ * Role data structure
68
+ */
69
+ export interface RoleData {
70
+ id: string;
71
+ name: string;
72
+ isAdmin: boolean;
73
+ defaultPermissions: {
74
+ read?: boolean;
75
+ create?: boolean;
76
+ edit?: boolean;
77
+ delete?: boolean;
78
+ } | null;
79
+ collectionPermissions: Record<string, {
80
+ read?: boolean;
81
+ create?: boolean;
82
+ edit?: boolean;
83
+ delete?: boolean;
84
+ }> | null;
85
+ config: Record<string, unknown> | null;
86
+ }
87
+ /**
88
+ * Data for creating a new role
89
+ */
90
+ export interface CreateRoleData {
91
+ id: string;
92
+ name: string;
93
+ isAdmin?: boolean;
94
+ defaultPermissions?: RoleData["defaultPermissions"];
95
+ collectionPermissions?: RoleData["collectionPermissions"];
96
+ config?: RoleData["config"];
97
+ }
98
+ /**
99
+ * Refresh token info
100
+ */
101
+ export interface RefreshTokenInfo {
102
+ id: string;
103
+ userId: string;
104
+ tokenHash: string;
105
+ expiresAt: Date;
106
+ createdAt: Date;
107
+ userAgent?: string | null;
108
+ ipAddress?: string | null;
109
+ }
110
+ /**
111
+ * Password reset token info
112
+ */
113
+ export interface PasswordResetTokenInfo {
114
+ userId: string;
115
+ expiresAt: Date;
116
+ }
117
+ /**
118
+ * Options for paginated user listing
119
+ */
120
+ export interface ListUsersOptions {
121
+ /** Max results per page (default 25) */
122
+ limit?: number;
123
+ /** Number of results to skip (default 0) */
124
+ offset?: number;
125
+ /** Search term — matches against email and displayName (case-insensitive) */
126
+ search?: string;
127
+ /** Field to sort by (default "createdAt") */
128
+ orderBy?: string;
129
+ /** Sort direction (default "desc") */
130
+ orderDir?: "asc" | "desc";
131
+ /** Filter by role ID */
132
+ roleId?: string;
133
+ }
134
+ /**
135
+ * Result of a paginated user listing
136
+ */
137
+ export interface PaginatedUsersResult {
138
+ users: UserData[];
139
+ /** Total number of users matching the filters (ignoring limit/offset) */
140
+ total: number;
141
+ limit: number;
142
+ offset: number;
143
+ }
144
+ /**
145
+ * Abstract user repository interface.
146
+ * Handles all user-related database operations.
147
+ */
148
+ export interface UserRepository {
149
+ /**
150
+ * Create a new user
151
+ */
152
+ createUser(data: CreateUserData): Promise<UserData>;
153
+ /**
154
+ * Get a user by ID
155
+ */
156
+ getUserById(id: string): Promise<UserData | null>;
157
+ /**
158
+ * Get a user by email
159
+ */
160
+ getUserByEmail(email: string): Promise<UserData | null>;
161
+ /**
162
+ * Get a user by an OAuth identity
163
+ */
164
+ getUserByIdentity(provider: string, providerId: string): Promise<UserData | null>;
165
+ /**
166
+ * Get all identities linked to a user
167
+ */
168
+ getUserIdentities(userId: string): Promise<UserIdentityData[]>;
169
+ /**
170
+ * Link a new OAuth identity to a user
171
+ */
172
+ linkUserIdentity(userId: string, provider: string, providerId: string, profileData?: Record<string, unknown>): Promise<void>;
173
+ /**
174
+ * Update a user
175
+ */
176
+ updateUser(id: string, data: Partial<Omit<CreateUserData, "id">>): Promise<UserData | null>;
177
+ /**
178
+ * Delete a user
179
+ */
180
+ deleteUser(id: string): Promise<void>;
181
+ /**
182
+ * List all users (unbounded — use listUsersPaginated for large datasets)
183
+ */
184
+ listUsers(): Promise<UserData[]>;
185
+ /**
186
+ * List users with server-side pagination, search, and sorting.
187
+ */
188
+ listUsersPaginated(options?: ListUsersOptions): Promise<PaginatedUsersResult>;
189
+ /**
190
+ * Update user's password hash
191
+ */
192
+ updatePassword(id: string, passwordHash: string): Promise<void>;
193
+ /**
194
+ * Set email verification status
195
+ */
196
+ setEmailVerified(id: string, verified: boolean): Promise<void>;
197
+ /**
198
+ * Set email verification token
199
+ */
200
+ setVerificationToken(id: string, token: string | null): Promise<void>;
201
+ /**
202
+ * Find user by email verification token
203
+ */
204
+ getUserByVerificationToken(token: string): Promise<UserData | null>;
205
+ /**
206
+ * Get roles for a user
207
+ */
208
+ getUserRoles(userId: string): Promise<RoleData[]>;
209
+ /**
210
+ * Get role IDs for a user
211
+ */
212
+ getUserRoleIds(userId: string): Promise<string[]>;
213
+ /**
214
+ * Set roles for a user (replaces existing roles)
215
+ */
216
+ setUserRoles(userId: string, roleIds: string[]): Promise<void>;
217
+ /**
218
+ * Assign a specific role to a new user
219
+ */
220
+ assignDefaultRole(userId: string, roleId: string): Promise<void>;
221
+ /**
222
+ * Get user with their roles
223
+ */
224
+ getUserWithRoles(userId: string): Promise<{
225
+ user: UserData;
226
+ roles: RoleData[];
227
+ } | null>;
228
+ }
229
+ /**
230
+ * Abstract role repository interface.
231
+ * Handles all role-related database operations.
232
+ */
233
+ export interface RoleRepository {
234
+ /**
235
+ * Get a role by ID
236
+ */
237
+ getRoleById(id: string): Promise<RoleData | null>;
238
+ /**
239
+ * List all roles
240
+ */
241
+ listRoles(): Promise<RoleData[]>;
242
+ /**
243
+ * Create a new role
244
+ */
245
+ createRole(data: CreateRoleData): Promise<RoleData>;
246
+ /**
247
+ * Update a role
248
+ */
249
+ updateRole(id: string, data: Partial<Omit<RoleData, "id">>): Promise<RoleData | null>;
250
+ /**
251
+ * Delete a role
252
+ */
253
+ deleteRole(id: string): Promise<void>;
254
+ }
255
+ /**
256
+ * Abstract token repository interface.
257
+ * Handles refresh tokens and password reset tokens.
258
+ */
259
+ export interface TokenRepository {
260
+ /**
261
+ * Create a new refresh token
262
+ */
263
+ createRefreshToken(userId: string, tokenHash: string, expiresAt: Date, userAgent?: string, ipAddress?: string): Promise<void>;
264
+ /**
265
+ * Find a refresh token by hash
266
+ */
267
+ findRefreshTokenByHash(tokenHash: string): Promise<RefreshTokenInfo | null>;
268
+ /**
269
+ * Delete a refresh token by hash
270
+ */
271
+ deleteRefreshToken(tokenHash: string): Promise<void>;
272
+ /**
273
+ * Delete all refresh tokens for a user
274
+ */
275
+ deleteAllRefreshTokensForUser(userId: string): Promise<void>;
276
+ /**
277
+ * List all refresh tokens for a user
278
+ */
279
+ listRefreshTokensForUser(userId: string): Promise<RefreshTokenInfo[]>;
280
+ /**
281
+ * Delete a specific refresh token by its primary key ID
282
+ */
283
+ deleteRefreshTokenById(id: string, userId: string): Promise<void>;
284
+ /**
285
+ * Create a password reset token
286
+ */
287
+ createPasswordResetToken(userId: string, tokenHash: string, expiresAt: Date): Promise<void>;
288
+ /**
289
+ * Find a valid (not expired, not used) password reset token by hash
290
+ */
291
+ findValidPasswordResetToken(tokenHash: string): Promise<PasswordResetTokenInfo | null>;
292
+ /**
293
+ * Mark a password reset token as used
294
+ */
295
+ markPasswordResetTokenUsed(tokenHash: string): Promise<void>;
296
+ /**
297
+ * Delete all password reset tokens for a user
298
+ */
299
+ deleteAllPasswordResetTokensForUser(userId: string): Promise<void>;
300
+ /**
301
+ * Clean up expired tokens
302
+ */
303
+ deleteExpiredTokens(): Promise<void>;
304
+ }
305
+ /**
306
+ * Combined auth repository interface for convenience
307
+ */
308
+ export interface AuthRepository extends UserRepository, RoleRepository, TokenRepository {
309
+ }
310
+ //# sourceMappingURL=interfaces.d.ts.map