@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
package/package.json ADDED
@@ -0,0 +1,79 @@
1
+ {
2
+ "name": "@rebasepro/server-mongodb",
3
+ "type": "module",
4
+ "version": "0.0.1-canary.09e5ec5",
5
+ "description": "MongoDB backend for Rebase",
6
+ "funding": {
7
+ "url": "https://github.com/sponsors/rebaseco"
8
+ },
9
+ "author": "Rebase",
10
+ "license": "MIT",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/rebasepro/rebase.git",
14
+ "directory": "packages/server-mongodb"
15
+ },
16
+ "main": "./dist/index.umd.js",
17
+ "module": "./dist/index.es.js",
18
+ "types": "./dist/server-mongodb/src/index.d.ts",
19
+ "source": "src/index.ts",
20
+ "engines": {
21
+ "node": ">=14"
22
+ },
23
+ "keywords": [
24
+ "rebase",
25
+ "cms",
26
+ "admin",
27
+ "admin panel",
28
+ "mongodb",
29
+ "backend",
30
+ "database"
31
+ ],
32
+ "exports": {
33
+ ".": {
34
+ "types": "./dist/server-mongodb/src/index.d.ts",
35
+ "development": "./src/index.ts",
36
+ "import": "./dist/index.es.js",
37
+ "require": "./dist/index.umd.js"
38
+ },
39
+ "./package.json": "./package.json"
40
+ },
41
+ "dependencies": {
42
+ "mongodb": "^6.12.0",
43
+ "realm-web": "^2.0.0",
44
+ "@rebasepro/types": "0.0.1-canary.09e5ec5"
45
+ },
46
+ "devDependencies": {
47
+ "@types/jest": "^29.5.14",
48
+ "@types/node": "^20.10.5",
49
+ "jest": "^29.7.0",
50
+ "mongodb-memory-server": "^10.0.0",
51
+ "ts-jest": "29.4.1",
52
+ "typescript": "^5.0.0",
53
+ "vite": "^5.0.0",
54
+ "@rebasepro/types": "0.0.1-canary.09e5ec5"
55
+ },
56
+ "peerDependencies": {
57
+ "@rebasepro/server-core": "0.0.1-canary.09e5ec5"
58
+ },
59
+ "peerDependenciesMeta": {
60
+ "@rebasepro/server-core": {
61
+ "optional": true
62
+ }
63
+ },
64
+ "files": [
65
+ "dist",
66
+ "src"
67
+ ],
68
+ "gitHead": "d935eefa5aa8d1009a2398cfac2c1e4ee9aeb6b6",
69
+ "publishConfig": {
70
+ "access": "public"
71
+ },
72
+ "scripts": {
73
+ "watch": "vite build --watch",
74
+ "build": "vite build && tsc --emitDeclarationOnly -p tsconfig.prod.json",
75
+ "test:lint": "eslint \"src/**\" --quiet",
76
+ "test": "jest --passWithNoTests",
77
+ "clean": "rm -rf dist && find ./src -name '*.js' -type f | xargs rm -f"
78
+ }
79
+ }
@@ -0,0 +1,177 @@
1
+ import { Db, MongoClient } from "mongodb";
2
+ import {
3
+ BackendBootstrapper,
4
+ InitializedDriver,
5
+ BootstrappedAuth,
6
+ DatabaseAdmin,
7
+ RealtimeProvider,
8
+ DataDriver,
9
+ EntityCollection
10
+ } from "@rebasepro/types";
11
+ import { MongoDriver } from "./services/MongoDriver";
12
+ import { MongoRealtimeService } from "./services/MongoRealtimeService";
13
+ import { MongoCollectionRegistry } from "./factory";
14
+ import { MongoAuthRepository, MongoUserService, MongoRoleService } from "./auth/services";
15
+
16
+ export interface MongoDriverConfig {
17
+ connection: Db;
18
+ client: MongoClient;
19
+ }
20
+
21
+ export interface MongoDriverInternals {
22
+ db: Db;
23
+ client: MongoClient;
24
+ registry: MongoCollectionRegistry;
25
+ realtimeService: MongoRealtimeService;
26
+ driver: MongoDriver;
27
+ }
28
+
29
+ export function createMongoBootstrapper(mongoConfig: MongoDriverConfig): BackendBootstrapper {
30
+ // Cached admin object, set during getAdmin() and used by initializeWebsockets
31
+ let cachedAdmin: DatabaseAdmin | undefined;
32
+
33
+ return {
34
+ type: "mongodb",
35
+
36
+ async initializeDriver(config: unknown): Promise<InitializedDriver> {
37
+ const { collections } = config as { collections?: EntityCollection[] };
38
+
39
+ const registry = new MongoCollectionRegistry();
40
+ if (collections) {
41
+ collections.forEach(collection => registry.register(collection));
42
+ }
43
+
44
+ const db = mongoConfig.connection;
45
+ const client = mongoConfig.client;
46
+
47
+ // Verify connection
48
+ try {
49
+ await db.command({ ping: 1 });
50
+ } catch (err) {
51
+ console.error("❌ Failed to connect to MongoDB:", err);
52
+ }
53
+
54
+ const realtimeService = new MongoRealtimeService(db);
55
+ const driver = new MongoDriver(db, realtimeService);
56
+
57
+ const internals: MongoDriverInternals = {
58
+ db,
59
+ client,
60
+ registry,
61
+ realtimeService,
62
+ driver
63
+ };
64
+
65
+ return {
66
+ driver,
67
+ realtimeProvider: realtimeService,
68
+ collectionRegistry: registry,
69
+ internals
70
+ };
71
+ },
72
+
73
+ async initializeAuth(config: unknown, driverResult: InitializedDriver): Promise<BootstrappedAuth | undefined> {
74
+ const internals = driverResult.internals as MongoDriverInternals;
75
+ const db = internals.db;
76
+
77
+ const { ensureAuthCollectionsExist } = await import("./auth/ensure-collections");
78
+ await ensureAuthCollectionsExist(db);
79
+
80
+ // @ts-ignore
81
+ const { createEmailService } = await import("@rebasepro/server-core");
82
+ const authConfig = config as { email?: any } | undefined;
83
+ let emailService: any;
84
+ if (authConfig?.email) {
85
+ emailService = createEmailService(authConfig.email);
86
+ }
87
+
88
+ const userService = new MongoUserService(db);
89
+ const roleService = new MongoRoleService(db);
90
+ const authRepository = new MongoAuthRepository(db);
91
+
92
+ return {
93
+ userService,
94
+ roleService,
95
+ authRepository,
96
+ emailService
97
+ };
98
+ },
99
+
100
+ async initializeHistory(config: unknown, driverResult: InitializedDriver): Promise<{ historyService: any } | undefined> {
101
+ const historyConfig = config as { retention?: number } | undefined;
102
+ if (!historyConfig) return undefined;
103
+
104
+ const internals = driverResult.internals as MongoDriverInternals;
105
+ const db = internals.db;
106
+
107
+ const { ensureHistoryCollectionExists } = await import("./history/ensure-history-collection");
108
+ await ensureHistoryCollectionExists(db);
109
+
110
+ const { MongoHistoryService } = await import("./services/MongoHistoryService");
111
+
112
+ const retention = typeof historyConfig === "object" && historyConfig !== null ? historyConfig.retention : undefined;
113
+ const historyService = new MongoHistoryService(db, retention ? { ttlDays: retention } : undefined);
114
+
115
+ return { historyService };
116
+ },
117
+
118
+ async initializeRealtime(_config: unknown, driverResult: InitializedDriver): Promise<RealtimeProvider | undefined> {
119
+ const internals = driverResult.internals as MongoDriverInternals;
120
+ return internals.realtimeService;
121
+ },
122
+
123
+ getAdmin(driverResult: InitializedDriver): DatabaseAdmin | undefined {
124
+ const internals = driverResult.internals as MongoDriverInternals;
125
+ const db = internals.db;
126
+
127
+ const admin: DatabaseAdmin = {
128
+ async executeAggregate(pipeline: Record<string, unknown>[]) {
129
+ const firstStage = pipeline[0];
130
+ const collName = (firstStage as { $from?: string })?.$from ?? "__admin__";
131
+ const cursor = db.collection(collName).aggregate(pipeline);
132
+ return await cursor.toArray() as Record<string, unknown>[];
133
+ },
134
+ async fetchCollectionStats(collectionName: string) {
135
+ const stats = await db.command({ collStats: collectionName }) as { count: number; size: number };
136
+ return { count: stats.count, sizeBytes: stats.size };
137
+ },
138
+ async fetchUnmappedTables(mappedPaths?: string[]) {
139
+ const allCollections = await db.listCollections().toArray();
140
+ const names = allCollections.map(c => c.name).filter(n => !n.startsWith("system."));
141
+ if (!mappedPaths || mappedPaths.length === 0) return names;
142
+ const mappedSet = new Set(mappedPaths.map(p => p.toLowerCase()));
143
+ return names.filter(n => !mappedSet.has(n.toLowerCase()));
144
+ },
145
+ async fetchTableMetadata(collectionName: string) {
146
+ const sample = await db.collection(collectionName).findOne();
147
+ if (!sample) return { columns: [], foreignKeys: [], junctions: [], policies: [] };
148
+ const columns = Object.entries(sample).map(([key, value]) => ({
149
+ column_name: key,
150
+ data_type: typeof value,
151
+ udt_name: typeof value,
152
+ is_nullable: "YES",
153
+ column_default: null,
154
+ character_maximum_length: null
155
+ }));
156
+ return { columns, foreignKeys: [], junctions: [], policies: [] };
157
+ }
158
+ };
159
+
160
+ cachedAdmin = admin;
161
+ return admin;
162
+ },
163
+
164
+ mountRoutes() {},
165
+
166
+ async initializeWebsockets(server: unknown, realtimeService: RealtimeProvider, driver: DataDriver, config?: unknown): Promise<void> {
167
+ const { createMongoWebSocket } = await import("./websocket");
168
+ createMongoWebSocket(
169
+ server as import("http").Server,
170
+ realtimeService as MongoRealtimeService,
171
+ driver as MongoDriver,
172
+ config as Record<string, unknown> | undefined,
173
+ cachedAdmin
174
+ );
175
+ }
176
+ };
177
+ }
@@ -0,0 +1,94 @@
1
+ import { Db } from "mongodb";
2
+
3
+ /**
4
+ * Default roles to seed on first run
5
+ */
6
+ const DEFAULT_ROLES = [
7
+ {
8
+ _id: "admin",
9
+ id: "admin",
10
+ name: "Admin",
11
+ is_admin: true,
12
+ default_permissions: { read: true, create: true, edit: true, delete: true },
13
+ config: { createCollections: true, editCollections: "all", deleteCollections: "all" },
14
+ created_at: new Date()
15
+ },
16
+ {
17
+ _id: "editor",
18
+ id: "editor",
19
+ name: "Editor",
20
+ is_admin: false,
21
+ default_permissions: { read: true, create: true, edit: true, delete: true },
22
+ config: { createCollections: true, editCollections: "own", deleteCollections: "own" },
23
+ created_at: new Date()
24
+ },
25
+ {
26
+ _id: "viewer",
27
+ id: "viewer",
28
+ name: "Viewer",
29
+ is_admin: false,
30
+ default_permissions: { read: true, create: false, edit: false, delete: false },
31
+ config: null,
32
+ created_at: new Date()
33
+ }
34
+ ];
35
+
36
+ export async function ensureAuthCollectionsExist(db: Db): Promise<void> {
37
+ console.log("🔍 Checking MongoDB auth collections and indexes...");
38
+
39
+ try {
40
+ // Users
41
+ const users = db.collection("__rebase_users");
42
+ await users.createIndex({ email: 1 }, { unique: true });
43
+
44
+ // User Identities
45
+ const identities = db.collection("__rebase_user_identities");
46
+ await identities.createIndex({ provider: 1, provider_id: 1 }, { unique: true });
47
+ await identities.createIndex({ user_id: 1 });
48
+
49
+ // User Roles (junction collection)
50
+ const userRoles = db.collection("__rebase_user_roles");
51
+ await userRoles.createIndex({ user_id: 1, role_id: 1 }, { unique: true });
52
+ await userRoles.createIndex({ user_id: 1 });
53
+
54
+ // Refresh Tokens
55
+ const refreshTokens = db.collection("__rebase_refresh_tokens");
56
+ await refreshTokens.createIndex({ token_hash: 1 }, { unique: true });
57
+ await refreshTokens.createIndex({ user_id: 1, user_agent: 1, ip_address: 1 }, { unique: true });
58
+ await refreshTokens.createIndex({ user_id: 1 });
59
+
60
+ // Password Reset Tokens
61
+ const resetTokens = db.collection("__rebase_password_reset_tokens");
62
+ await resetTokens.createIndex({ token_hash: 1 }, { unique: true });
63
+ await resetTokens.createIndex({ user_id: 1 });
64
+
65
+ // Seed roles
66
+ await seedDefaultRoles(db);
67
+
68
+ console.log("✅ MongoDB Auth collections ready");
69
+ } catch (error) {
70
+ console.error("❌ Failed to set up MongoDB auth collections:", error);
71
+ }
72
+ }
73
+
74
+ async function seedDefaultRoles(db: Db): Promise<void> {
75
+ const roles = db.collection("__rebase_roles");
76
+ const count = await roles.countDocuments();
77
+
78
+ if (count > 0) {
79
+ console.log(`📋 Found ${count} existing roles`);
80
+ return;
81
+ }
82
+
83
+ console.log("🌱 Seeding default roles...");
84
+
85
+ for (const role of DEFAULT_ROLES) {
86
+ await roles.updateOne(
87
+ { id: role.id },
88
+ { $setOnInsert: role },
89
+ { upsert: true }
90
+ );
91
+ }
92
+
93
+ console.log("✅ Default roles created: admin, editor, viewer");
94
+ }