@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.
- package/LICENSE +6 -0
- package/dist/ensure-collections-CNrcwVgY.js +74 -0
- package/dist/ensure-collections-CNrcwVgY.js.map +1 -0
- package/dist/ensure-history-collection-DBIiwmCm.js +15 -0
- package/dist/ensure-history-collection-DBIiwmCm.js.map +1 -0
- package/dist/index.es.js +1734 -0
- package/dist/index.es.js.map +1 -0
- package/dist/index.umd.js +2043 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/server-core/src/api/ast-schema-editor.d.ts +22 -0
- package/dist/server-core/src/api/ast-schema-editor.d.ts.map +1 -0
- package/dist/server-core/src/api/errors.d.ts +36 -0
- package/dist/server-core/src/api/errors.d.ts.map +1 -0
- package/dist/server-core/src/api/graphql/graphql-schema-generator.d.ts +36 -0
- package/dist/server-core/src/api/graphql/graphql-schema-generator.d.ts.map +1 -0
- package/dist/server-core/src/api/graphql/index.d.ts +2 -0
- package/dist/server-core/src/api/graphql/index.d.ts.map +1 -0
- package/dist/server-core/src/api/index.d.ts +10 -0
- package/dist/server-core/src/api/index.d.ts.map +1 -0
- package/dist/server-core/src/api/openapi-generator.d.ts +17 -0
- package/dist/server-core/src/api/openapi-generator.d.ts.map +1 -0
- package/dist/server-core/src/api/rest/api-generator.d.ts +65 -0
- package/dist/server-core/src/api/rest/api-generator.d.ts.map +1 -0
- package/dist/server-core/src/api/rest/index.d.ts +2 -0
- package/dist/server-core/src/api/rest/index.d.ts.map +1 -0
- package/dist/server-core/src/api/rest/query-parser.d.ts +10 -0
- package/dist/server-core/src/api/rest/query-parser.d.ts.map +1 -0
- package/dist/server-core/src/api/schema-editor-routes.d.ts +4 -0
- package/dist/server-core/src/api/schema-editor-routes.d.ts.map +1 -0
- package/dist/server-core/src/api/server.d.ts +41 -0
- package/dist/server-core/src/api/server.d.ts.map +1 -0
- package/dist/server-core/src/api/types.d.ts +91 -0
- package/dist/server-core/src/api/types.d.ts.map +1 -0
- package/dist/server-core/src/auth/admin-routes.d.ts +17 -0
- package/dist/server-core/src/auth/admin-routes.d.ts.map +1 -0
- package/dist/server-core/src/auth/apple-oauth.d.ts +31 -0
- package/dist/server-core/src/auth/apple-oauth.d.ts.map +1 -0
- package/dist/server-core/src/auth/bitbucket-oauth.d.ts +12 -0
- package/dist/server-core/src/auth/bitbucket-oauth.d.ts.map +1 -0
- package/dist/server-core/src/auth/discord-oauth.d.ts +15 -0
- package/dist/server-core/src/auth/discord-oauth.d.ts.map +1 -0
- package/dist/server-core/src/auth/facebook-oauth.d.ts +15 -0
- package/dist/server-core/src/auth/facebook-oauth.d.ts.map +1 -0
- package/dist/server-core/src/auth/github-oauth.d.ts +16 -0
- package/dist/server-core/src/auth/github-oauth.d.ts.map +1 -0
- package/dist/server-core/src/auth/gitlab-oauth.d.ts +14 -0
- package/dist/server-core/src/auth/gitlab-oauth.d.ts.map +1 -0
- package/dist/server-core/src/auth/google-oauth.d.ts +15 -0
- package/dist/server-core/src/auth/google-oauth.d.ts.map +1 -0
- package/dist/server-core/src/auth/index.d.ts +24 -0
- package/dist/server-core/src/auth/index.d.ts.map +1 -0
- package/dist/server-core/src/auth/interfaces.d.ts +310 -0
- package/dist/server-core/src/auth/interfaces.d.ts.map +1 -0
- package/dist/server-core/src/auth/jwt.d.ts +44 -0
- package/dist/server-core/src/auth/jwt.d.ts.map +1 -0
- package/dist/server-core/src/auth/linkedin-oauth.d.ts +19 -0
- package/dist/server-core/src/auth/linkedin-oauth.d.ts.map +1 -0
- package/dist/server-core/src/auth/microsoft-oauth.d.ts +17 -0
- package/dist/server-core/src/auth/microsoft-oauth.d.ts.map +1 -0
- package/dist/server-core/src/auth/middleware.d.ts +82 -0
- package/dist/server-core/src/auth/middleware.d.ts.map +1 -0
- package/dist/server-core/src/auth/password.d.ts +23 -0
- package/dist/server-core/src/auth/password.d.ts.map +1 -0
- package/dist/server-core/src/auth/rate-limiter.d.ts +32 -0
- package/dist/server-core/src/auth/rate-limiter.d.ts.map +1 -0
- package/dist/server-core/src/auth/routes.d.ts +28 -0
- package/dist/server-core/src/auth/routes.d.ts.map +1 -0
- package/dist/server-core/src/auth/slack-oauth.d.ts +13 -0
- package/dist/server-core/src/auth/slack-oauth.d.ts.map +1 -0
- package/dist/server-core/src/auth/spotify-oauth.d.ts +13 -0
- package/dist/server-core/src/auth/spotify-oauth.d.ts.map +1 -0
- package/dist/server-core/src/auth/twitter-oauth.d.ts +19 -0
- package/dist/server-core/src/auth/twitter-oauth.d.ts.map +1 -0
- package/dist/server-core/src/collections/BackendCollectionRegistry.d.ts +14 -0
- package/dist/server-core/src/collections/BackendCollectionRegistry.d.ts.map +1 -0
- package/dist/server-core/src/collections/loader.d.ts +6 -0
- package/dist/server-core/src/collections/loader.d.ts.map +1 -0
- package/dist/server-core/src/cron/cron-loader.d.ts +18 -0
- package/dist/server-core/src/cron/cron-loader.d.ts.map +1 -0
- package/dist/server-core/src/cron/cron-routes.d.ts +15 -0
- package/dist/server-core/src/cron/cron-routes.d.ts.map +1 -0
- package/dist/server-core/src/cron/cron-scheduler.d.ts +62 -0
- package/dist/server-core/src/cron/cron-scheduler.d.ts.map +1 -0
- package/dist/server-core/src/cron/cron-store.d.ts +33 -0
- package/dist/server-core/src/cron/cron-store.d.ts.map +1 -0
- package/dist/server-core/src/cron/index.d.ts +7 -0
- package/dist/server-core/src/cron/index.d.ts.map +1 -0
- package/dist/server-core/src/db/interfaces.d.ts +19 -0
- package/dist/server-core/src/db/interfaces.d.ts.map +1 -0
- package/dist/server-core/src/email/index.d.ts +7 -0
- package/dist/server-core/src/email/index.d.ts.map +1 -0
- package/dist/server-core/src/email/smtp-email-service.d.ts +26 -0
- package/dist/server-core/src/email/smtp-email-service.d.ts.map +1 -0
- package/dist/server-core/src/email/templates.d.ts +43 -0
- package/dist/server-core/src/email/templates.d.ts.map +1 -0
- package/dist/server-core/src/email/types.d.ts +108 -0
- package/dist/server-core/src/email/types.d.ts.map +1 -0
- package/dist/server-core/src/functions/function-loader.d.ts +18 -0
- package/dist/server-core/src/functions/function-loader.d.ts.map +1 -0
- package/dist/server-core/src/functions/function-routes.d.ts +11 -0
- package/dist/server-core/src/functions/function-routes.d.ts.map +1 -0
- package/dist/server-core/src/functions/index.d.ts +4 -0
- package/dist/server-core/src/functions/index.d.ts.map +1 -0
- package/dist/server-core/src/history/history-routes.d.ts +24 -0
- package/dist/server-core/src/history/history-routes.d.ts.map +1 -0
- package/dist/server-core/src/history/index.d.ts +2 -0
- package/dist/server-core/src/history/index.d.ts.map +1 -0
- package/dist/server-core/src/index.d.ts +30 -0
- package/dist/server-core/src/index.d.ts.map +1 -0
- package/dist/server-core/src/init.d.ts +160 -0
- package/dist/server-core/src/init.d.ts.map +1 -0
- package/dist/server-core/src/serve-spa.d.ts +31 -0
- package/dist/server-core/src/serve-spa.d.ts.map +1 -0
- package/dist/server-core/src/services/driver-registry.d.ts +79 -0
- package/dist/server-core/src/services/driver-registry.d.ts.map +1 -0
- package/dist/server-core/src/singleton.d.ts +36 -0
- package/dist/server-core/src/singleton.d.ts.map +1 -0
- package/dist/server-core/src/storage/LocalStorageController.d.ts +47 -0
- package/dist/server-core/src/storage/LocalStorageController.d.ts.map +1 -0
- package/dist/server-core/src/storage/S3StorageController.d.ts +37 -0
- package/dist/server-core/src/storage/S3StorageController.d.ts.map +1 -0
- package/dist/server-core/src/storage/index.d.ts +26 -0
- package/dist/server-core/src/storage/index.d.ts.map +1 -0
- package/dist/server-core/src/storage/routes.d.ts +39 -0
- package/dist/server-core/src/storage/routes.d.ts.map +1 -0
- package/dist/server-core/src/storage/storage-registry.d.ts +79 -0
- package/dist/server-core/src/storage/storage-registry.d.ts.map +1 -0
- package/dist/server-core/src/storage/types.d.ts +104 -0
- package/dist/server-core/src/storage/types.d.ts.map +1 -0
- package/dist/server-core/src/types/index.d.ts +12 -0
- package/dist/server-core/src/types/index.d.ts.map +1 -0
- package/dist/server-core/src/utils/dev-port.d.ts +36 -0
- package/dist/server-core/src/utils/dev-port.d.ts.map +1 -0
- package/dist/server-core/src/utils/logger.d.ts +32 -0
- package/dist/server-core/src/utils/logger.d.ts.map +1 -0
- package/dist/server-core/src/utils/logging.d.ts +10 -0
- package/dist/server-core/src/utils/logging.d.ts.map +1 -0
- package/dist/server-core/src/utils/request-logger.d.ts +20 -0
- package/dist/server-core/src/utils/request-logger.d.ts.map +1 -0
- package/dist/server-core/src/utils/sql.d.ts +28 -0
- package/dist/server-core/src/utils/sql.d.ts.map +1 -0
- package/dist/server-mongodb/src/MongoBootstrapper.d.ts +18 -0
- package/dist/server-mongodb/src/MongoBootstrapper.d.ts.map +1 -0
- package/dist/server-mongodb/src/auth/ensure-collections.d.ts +3 -0
- package/dist/server-mongodb/src/auth/ensure-collections.d.ts.map +1 -0
- package/dist/server-mongodb/src/auth/services.d.ts +135 -0
- package/dist/server-mongodb/src/auth/services.d.ts.map +1 -0
- package/dist/server-mongodb/src/connection.d.ts +35 -0
- package/dist/server-mongodb/src/connection.d.ts.map +1 -0
- package/dist/server-mongodb/src/db/MongoConditionBuilder.d.ts +64 -0
- package/dist/server-mongodb/src/db/MongoConditionBuilder.d.ts.map +1 -0
- package/dist/server-mongodb/src/db/MongoEntityService.d.ts +98 -0
- package/dist/server-mongodb/src/db/MongoEntityService.d.ts.map +1 -0
- package/dist/server-mongodb/src/factory.d.ts +142 -0
- package/dist/server-mongodb/src/factory.d.ts.map +1 -0
- package/dist/server-mongodb/src/history/ensure-history-collection.d.ts +3 -0
- package/dist/server-mongodb/src/history/ensure-history-collection.d.ts.map +1 -0
- package/dist/server-mongodb/src/index.d.ts +18 -0
- package/dist/server-mongodb/src/index.d.ts.map +1 -0
- package/dist/server-mongodb/src/services/MongoDriver.d.ts +83 -0
- package/dist/server-mongodb/src/services/MongoDriver.d.ts.map +1 -0
- package/dist/server-mongodb/src/services/MongoHistoryService.d.ts +37 -0
- package/dist/server-mongodb/src/services/MongoHistoryService.d.ts.map +1 -0
- package/dist/server-mongodb/src/services/MongoRealtimeService.d.ts +86 -0
- package/dist/server-mongodb/src/services/MongoRealtimeService.d.ts.map +1 -0
- package/dist/server-mongodb/src/useMongoDriver.d.ts +18 -0
- package/dist/server-mongodb/src/useMongoDriver.d.ts.map +1 -0
- package/dist/server-mongodb/src/utils.d.ts +10 -0
- package/dist/server-mongodb/src/utils.d.ts.map +1 -0
- package/dist/server-mongodb/src/websocket.d.ts +7 -0
- package/dist/server-mongodb/src/websocket.d.ts.map +1 -0
- package/dist/types/src/controllers/analytics_controller.d.ts +8 -0
- package/dist/types/src/controllers/analytics_controller.d.ts.map +1 -0
- package/dist/types/src/controllers/auth.d.ts +120 -0
- package/dist/types/src/controllers/auth.d.ts.map +1 -0
- package/dist/types/src/controllers/client.d.ts +171 -0
- package/dist/types/src/controllers/client.d.ts.map +1 -0
- package/dist/types/src/controllers/collection_registry.d.ts +46 -0
- package/dist/types/src/controllers/collection_registry.d.ts.map +1 -0
- package/dist/types/src/controllers/customization_controller.d.ts +61 -0
- package/dist/types/src/controllers/customization_controller.d.ts.map +1 -0
- package/dist/types/src/controllers/data.d.ts +169 -0
- package/dist/types/src/controllers/data.d.ts.map +1 -0
- package/dist/types/src/controllers/data_driver.d.ts +161 -0
- package/dist/types/src/controllers/data_driver.d.ts.map +1 -0
- package/dist/types/src/controllers/database_admin.d.ts +12 -0
- package/dist/types/src/controllers/database_admin.d.ts.map +1 -0
- package/dist/types/src/controllers/dialogs_controller.d.ts +37 -0
- package/dist/types/src/controllers/dialogs_controller.d.ts.map +1 -0
- package/dist/types/src/controllers/effective_role.d.ts +5 -0
- package/dist/types/src/controllers/effective_role.d.ts.map +1 -0
- package/dist/types/src/controllers/email.d.ts +35 -0
- package/dist/types/src/controllers/email.d.ts.map +1 -0
- package/dist/types/src/controllers/index.d.ts +19 -0
- package/dist/types/src/controllers/index.d.ts.map +1 -0
- package/dist/types/src/controllers/local_config_persistence.d.ts +21 -0
- package/dist/types/src/controllers/local_config_persistence.d.ts.map +1 -0
- package/dist/types/src/controllers/navigation.d.ts +214 -0
- package/dist/types/src/controllers/navigation.d.ts.map +1 -0
- package/dist/types/src/controllers/registry.d.ts +55 -0
- package/dist/types/src/controllers/registry.d.ts.map +1 -0
- package/dist/types/src/controllers/side_dialogs_controller.d.ts +68 -0
- package/dist/types/src/controllers/side_dialogs_controller.d.ts.map +1 -0
- package/dist/types/src/controllers/side_entity_controller.d.ts +91 -0
- package/dist/types/src/controllers/side_entity_controller.d.ts.map +1 -0
- package/dist/types/src/controllers/snackbar.d.ts +25 -0
- package/dist/types/src/controllers/snackbar.d.ts.map +1 -0
- package/dist/types/src/controllers/storage.d.ts +172 -0
- package/dist/types/src/controllers/storage.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +5 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/rebase_context.d.ts +106 -0
- package/dist/types/src/rebase_context.d.ts.map +1 -0
- package/dist/types/src/types/backend.d.ts +537 -0
- package/dist/types/src/types/backend.d.ts.map +1 -0
- package/dist/types/src/types/builders.d.ts +16 -0
- package/dist/types/src/types/builders.d.ts.map +1 -0
- package/dist/types/src/types/chips.d.ts +6 -0
- package/dist/types/src/types/chips.d.ts.map +1 -0
- package/dist/types/src/types/collections.d.ts +857 -0
- package/dist/types/src/types/collections.d.ts.map +1 -0
- package/dist/types/src/types/cron.d.ts +103 -0
- package/dist/types/src/types/cron.d.ts.map +1 -0
- package/dist/types/src/types/data_source.d.ts +65 -0
- package/dist/types/src/types/data_source.d.ts.map +1 -0
- package/dist/types/src/types/entities.d.ts +146 -0
- package/dist/types/src/types/entities.d.ts.map +1 -0
- package/dist/types/src/types/entity_actions.d.ts +99 -0
- package/dist/types/src/types/entity_actions.d.ts.map +1 -0
- package/dist/types/src/types/entity_callbacks.d.ts +174 -0
- package/dist/types/src/types/entity_callbacks.d.ts.map +1 -0
- package/dist/types/src/types/entity_link_builder.d.ts +8 -0
- package/dist/types/src/types/entity_link_builder.d.ts.map +1 -0
- package/dist/types/src/types/entity_overrides.d.ts +11 -0
- package/dist/types/src/types/entity_overrides.d.ts.map +1 -0
- package/dist/types/src/types/entity_views.d.ts +62 -0
- package/dist/types/src/types/entity_views.d.ts.map +1 -0
- package/dist/types/src/types/export_import.d.ts +22 -0
- package/dist/types/src/types/export_import.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +24 -0
- package/dist/types/src/types/index.d.ts.map +1 -0
- package/dist/types/src/types/locales.d.ts +5 -0
- package/dist/types/src/types/locales.d.ts.map +1 -0
- package/dist/types/src/types/modify_collections.d.ts +6 -0
- package/dist/types/src/types/modify_collections.d.ts.map +1 -0
- package/dist/types/src/types/plugins.d.ts +280 -0
- package/dist/types/src/types/plugins.d.ts.map +1 -0
- package/dist/types/src/types/properties.d.ts +1177 -0
- package/dist/types/src/types/properties.d.ts.map +1 -0
- package/dist/types/src/types/property_config.d.ts +71 -0
- package/dist/types/src/types/property_config.d.ts.map +1 -0
- package/dist/types/src/types/relations.d.ts +337 -0
- package/dist/types/src/types/relations.d.ts.map +1 -0
- package/dist/types/src/types/slots.d.ts +253 -0
- package/dist/types/src/types/slots.d.ts.map +1 -0
- package/dist/types/src/types/translations.d.ts +871 -0
- package/dist/types/src/types/translations.d.ts.map +1 -0
- package/dist/types/src/types/user_management_delegate.d.ts +122 -0
- package/dist/types/src/types/user_management_delegate.d.ts.map +1 -0
- package/dist/types/src/types/websockets.d.ts +79 -0
- package/dist/types/src/types/websockets.d.ts.map +1 -0
- package/dist/types/src/users/index.d.ts +3 -0
- package/dist/types/src/users/index.d.ts.map +1 -0
- package/dist/types/src/users/roles.d.ts +23 -0
- package/dist/types/src/users/roles.d.ts.map +1 -0
- package/dist/types/src/users/user.d.ts +47 -0
- package/dist/types/src/users/user.d.ts.map +1 -0
- package/dist/websocket-BZlPuJrt.js +220 -0
- package/dist/websocket-BZlPuJrt.js.map +1 -0
- package/package.json +79 -0
- package/src/MongoBootstrapper.ts +177 -0
- package/src/auth/ensure-collections.ts +94 -0
- package/src/auth/services.ts +638 -0
- package/src/connection.ts +60 -0
- package/src/db/MongoConditionBuilder.ts +181 -0
- package/src/db/MongoEntityService.ts +350 -0
- package/src/factory.ts +289 -0
- package/src/history/ensure-history-collection.ts +19 -0
- package/src/index.ts +25 -0
- package/src/services/MongoDriver.ts +297 -0
- package/src/services/MongoDriver.ts.backup +266 -0
- package/src/services/MongoHistoryService.ts +154 -0
- package/src/services/MongoRealtimeService.ts +394 -0
- package/src/useMongoDriver.ts +519 -0
- package/src/utils.ts +28 -0
- package/src/websocket.ts +257 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Db } from "mongodb";
|
|
2
|
+
/** Loose document type that allows string _id values (Rebase convention). */
|
|
3
|
+
export interface MongoDoc {
|
|
4
|
+
_id?: string;
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}
|
|
7
|
+
import { UserRepository, RoleRepository, TokenRepository, AuthRepository, UserData, CreateUserData, RoleData, CreateRoleData, RefreshTokenInfo, PasswordResetTokenInfo, UserIdentityData, ListUsersOptions, PaginatedUsersResult } from "@rebasepro/server-core";
|
|
8
|
+
export type Role = RoleData;
|
|
9
|
+
export declare class MongoUserService implements UserRepository {
|
|
10
|
+
private db;
|
|
11
|
+
constructor(db: Db);
|
|
12
|
+
private get collection();
|
|
13
|
+
private get identitiesCollection();
|
|
14
|
+
private get userRolesCollection();
|
|
15
|
+
private get rolesCollection();
|
|
16
|
+
createUser(data: CreateUserData): Promise<UserData>;
|
|
17
|
+
getUserById(id: string): Promise<UserData | null>;
|
|
18
|
+
getUserByEmail(email: string): Promise<UserData | null>;
|
|
19
|
+
getUserByIdentity(provider: string, providerId: string): Promise<UserData | null>;
|
|
20
|
+
getUserIdentities(userId: string): Promise<UserIdentityData[]>;
|
|
21
|
+
linkUserIdentity(userId: string, provider: string, providerId: string, profileData?: Record<string, unknown>): Promise<void>;
|
|
22
|
+
updateUser(id: string, data: Partial<Omit<CreateUserData, "id">>): Promise<UserData | null>;
|
|
23
|
+
deleteUser(id: string): Promise<void>;
|
|
24
|
+
listUsers(): Promise<UserData[]>;
|
|
25
|
+
listUsersPaginated(options?: ListUsersOptions): Promise<PaginatedUsersResult>;
|
|
26
|
+
updatePassword(id: string, passwordHash: string): Promise<void>;
|
|
27
|
+
setEmailVerified(id: string, verified: boolean): Promise<void>;
|
|
28
|
+
setVerificationToken(id: string, token: string | null): Promise<void>;
|
|
29
|
+
getUserByVerificationToken(token: string): Promise<UserData | null>;
|
|
30
|
+
getUserRoles(userId: string): Promise<RoleData[]>;
|
|
31
|
+
getUserRoleIds(userId: string): Promise<string[]>;
|
|
32
|
+
setUserRoles(userId: string, roleIds: string[]): Promise<void>;
|
|
33
|
+
assignDefaultRole(userId: string, roleId: string): Promise<void>;
|
|
34
|
+
getUserWithRoles(userId: string): Promise<{
|
|
35
|
+
user: UserData;
|
|
36
|
+
roles: RoleData[];
|
|
37
|
+
} | null>;
|
|
38
|
+
}
|
|
39
|
+
export declare class MongoRoleService implements RoleRepository {
|
|
40
|
+
private db;
|
|
41
|
+
constructor(db: Db);
|
|
42
|
+
private get collection();
|
|
43
|
+
getRoleById(id: string): Promise<RoleData | null>;
|
|
44
|
+
listRoles(): Promise<RoleData[]>;
|
|
45
|
+
createRole(data: CreateRoleData): Promise<RoleData>;
|
|
46
|
+
updateRole(id: string, data: Partial<Omit<RoleData, "id">>): Promise<RoleData | null>;
|
|
47
|
+
deleteRole(id: string): Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
export declare class MongoRefreshTokenService {
|
|
50
|
+
private db;
|
|
51
|
+
constructor(db: Db);
|
|
52
|
+
private get collection();
|
|
53
|
+
createToken(userId: string, tokenHash: string, expiresAt: Date, userAgent?: string, ipAddress?: string): Promise<void>;
|
|
54
|
+
findByHash(tokenHash: string): Promise<RefreshTokenInfo | null>;
|
|
55
|
+
deleteByHash(tokenHash: string): Promise<void>;
|
|
56
|
+
deleteAllForUser(userId: string): Promise<void>;
|
|
57
|
+
listForUser(userId: string): Promise<RefreshTokenInfo[]>;
|
|
58
|
+
deleteById(id: string, userId: string): Promise<void>;
|
|
59
|
+
}
|
|
60
|
+
export declare class MongoPasswordResetTokenService {
|
|
61
|
+
private db;
|
|
62
|
+
constructor(db: Db);
|
|
63
|
+
private get collection();
|
|
64
|
+
createToken(userId: string, tokenHash: string, expiresAt: Date): Promise<void>;
|
|
65
|
+
findValidByHash(tokenHash: string): Promise<{
|
|
66
|
+
userId: string;
|
|
67
|
+
expiresAt: Date;
|
|
68
|
+
} | null>;
|
|
69
|
+
markAsUsed(tokenHash: string): Promise<void>;
|
|
70
|
+
deleteAllForUser(userId: string): Promise<void>;
|
|
71
|
+
deleteExpired(): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
export declare class MongoTokenRepository implements TokenRepository {
|
|
74
|
+
private db;
|
|
75
|
+
private refreshTokenService;
|
|
76
|
+
private passwordResetTokenService;
|
|
77
|
+
constructor(db: Db);
|
|
78
|
+
createRefreshToken(userId: string, tokenHash: string, expiresAt: Date, userAgent?: string, ipAddress?: string): Promise<void>;
|
|
79
|
+
findRefreshTokenByHash(tokenHash: string): Promise<RefreshTokenInfo | null>;
|
|
80
|
+
deleteRefreshToken(tokenHash: string): Promise<void>;
|
|
81
|
+
deleteAllRefreshTokensForUser(userId: string): Promise<void>;
|
|
82
|
+
listRefreshTokensForUser(userId: string): Promise<RefreshTokenInfo[]>;
|
|
83
|
+
deleteRefreshTokenById(id: string, userId: string): Promise<void>;
|
|
84
|
+
createPasswordResetToken(userId: string, tokenHash: string, expiresAt: Date): Promise<void>;
|
|
85
|
+
findValidPasswordResetToken(tokenHash: string): Promise<PasswordResetTokenInfo | null>;
|
|
86
|
+
markPasswordResetTokenUsed(tokenHash: string): Promise<void>;
|
|
87
|
+
deleteAllPasswordResetTokensForUser(userId: string): Promise<void>;
|
|
88
|
+
deleteExpiredTokens(): Promise<void>;
|
|
89
|
+
}
|
|
90
|
+
export declare class MongoAuthRepository implements AuthRepository {
|
|
91
|
+
private db;
|
|
92
|
+
private userService;
|
|
93
|
+
private roleService;
|
|
94
|
+
private tokenRepository;
|
|
95
|
+
constructor(db: Db);
|
|
96
|
+
createUser(data: CreateUserData): Promise<UserData>;
|
|
97
|
+
getUserById(id: string): Promise<UserData | null>;
|
|
98
|
+
getUserByEmail(email: string): Promise<UserData | null>;
|
|
99
|
+
getUserByIdentity(provider: string, providerId: string): Promise<UserData | null>;
|
|
100
|
+
getUserIdentities(userId: string): Promise<UserIdentityData[]>;
|
|
101
|
+
linkUserIdentity(userId: string, provider: string, providerId: string, profileData?: Record<string, unknown>): Promise<void>;
|
|
102
|
+
updateUser(id: string, data: Partial<Omit<CreateUserData, "id">>): Promise<UserData | null>;
|
|
103
|
+
deleteUser(id: string): Promise<void>;
|
|
104
|
+
listUsers(): Promise<UserData[]>;
|
|
105
|
+
listUsersPaginated(options?: ListUsersOptions): Promise<PaginatedUsersResult>;
|
|
106
|
+
updatePassword(id: string, passwordHash: string): Promise<void>;
|
|
107
|
+
setEmailVerified(id: string, verified: boolean): Promise<void>;
|
|
108
|
+
setVerificationToken(id: string, token: string | null): Promise<void>;
|
|
109
|
+
getUserByVerificationToken(token: string): Promise<UserData | null>;
|
|
110
|
+
getUserRoles(userId: string): Promise<RoleData[]>;
|
|
111
|
+
getUserRoleIds(userId: string): Promise<string[]>;
|
|
112
|
+
setUserRoles(userId: string, roleIds: string[]): Promise<void>;
|
|
113
|
+
assignDefaultRole(userId: string, roleId: string): Promise<void>;
|
|
114
|
+
getUserWithRoles(userId: string): Promise<{
|
|
115
|
+
user: UserData;
|
|
116
|
+
roles: RoleData[];
|
|
117
|
+
} | null>;
|
|
118
|
+
getRoleById(id: string): Promise<RoleData | null>;
|
|
119
|
+
listRoles(): Promise<RoleData[]>;
|
|
120
|
+
createRole(data: CreateRoleData): Promise<RoleData>;
|
|
121
|
+
updateRole(id: string, data: Partial<Omit<RoleData, "id">>): Promise<RoleData | null>;
|
|
122
|
+
deleteRole(id: string): Promise<void>;
|
|
123
|
+
createRefreshToken(userId: string, tokenHash: string, expiresAt: Date, userAgent?: string, ipAddress?: string): Promise<void>;
|
|
124
|
+
findRefreshTokenByHash(tokenHash: string): Promise<RefreshTokenInfo | null>;
|
|
125
|
+
deleteRefreshToken(tokenHash: string): Promise<void>;
|
|
126
|
+
deleteAllRefreshTokensForUser(userId: string): Promise<void>;
|
|
127
|
+
listRefreshTokensForUser(userId: string): Promise<RefreshTokenInfo[]>;
|
|
128
|
+
deleteRefreshTokenById(id: string, userId: string): Promise<void>;
|
|
129
|
+
createPasswordResetToken(userId: string, tokenHash: string, expiresAt: Date): Promise<void>;
|
|
130
|
+
findValidPasswordResetToken(tokenHash: string): Promise<PasswordResetTokenInfo | null>;
|
|
131
|
+
markPasswordResetTokenUsed(tokenHash: string): Promise<void>;
|
|
132
|
+
deleteAllPasswordResetTokensForUser(userId: string): Promise<void>;
|
|
133
|
+
deleteExpiredTokens(): Promise<void>;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../../src/auth/services.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB Connection
|
|
3
|
+
*
|
|
4
|
+
* Wraps MongoDB connection to implement the DatabaseConnection interface.
|
|
5
|
+
*/
|
|
6
|
+
import { Db, MongoClient } from "mongodb";
|
|
7
|
+
import { DatabaseConnection } from "@rebasepro/types";
|
|
8
|
+
/**
|
|
9
|
+
* MongoDB database connection wrapper that implements DatabaseConnection interface.
|
|
10
|
+
*/
|
|
11
|
+
export declare class MongoDBConnection implements DatabaseConnection {
|
|
12
|
+
readonly db: Db;
|
|
13
|
+
readonly client: MongoClient;
|
|
14
|
+
readonly type = "mongodb";
|
|
15
|
+
constructor(db: Db, client: MongoClient);
|
|
16
|
+
get isConnected(): boolean;
|
|
17
|
+
close(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create a MongoDB database connection from a connection string.
|
|
21
|
+
*
|
|
22
|
+
* @param connectionString - MongoDB connection string (e.g., mongodb://localhost:27017)
|
|
23
|
+
* @param databaseName - Name of the database to use
|
|
24
|
+
* @returns Promise resolving to MongoDBConnection
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const connection = await createMongoDBConnection(
|
|
29
|
+
* "mongodb://localhost:27017",
|
|
30
|
+
* "my_database"
|
|
31
|
+
* );
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function createMongoDBConnection(connectionString: string, databaseName: string): Promise<MongoDBConnection>;
|
|
35
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../src/connection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;aAIpC,EAAE,EAAE,EAAE;aACN,MAAM,EAAE,WAAW;IAJvC,QAAQ,CAAC,IAAI,aAAa;gBAGN,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,WAAW;IAGvC,IAAI,WAAW,IAAI,OAAO,CASzB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CACzC,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAK5B"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB Condition Builder
|
|
3
|
+
*
|
|
4
|
+
* Translates Rebase filter conditions to MongoDB query operators.
|
|
5
|
+
*/
|
|
6
|
+
import { FilterValues } from "@rebasepro/types";
|
|
7
|
+
import { Filter, Document } from "mongodb";
|
|
8
|
+
/**
|
|
9
|
+
* MongoDB Condition Builder
|
|
10
|
+
*
|
|
11
|
+
* Provides static methods to translate Rebase filter conditions
|
|
12
|
+
* to MongoDB query filters.
|
|
13
|
+
*/
|
|
14
|
+
export declare class MongoConditionBuilder {
|
|
15
|
+
/**
|
|
16
|
+
* Build MongoDB filter conditions from Rebase FilterValues
|
|
17
|
+
*
|
|
18
|
+
* @param filter - Rebase filter values
|
|
19
|
+
* @returns Array of MongoDB filter objects
|
|
20
|
+
*/
|
|
21
|
+
static buildFilterConditions<M extends Record<string, any>>(filter: FilterValues<Extract<keyof M, string>>): Filter<Document>[];
|
|
22
|
+
/**
|
|
23
|
+
* Build search conditions for text search
|
|
24
|
+
*
|
|
25
|
+
* @param searchString - Text to search for
|
|
26
|
+
* @param properties - Properties to search in
|
|
27
|
+
* @returns Array of MongoDB filter objects for text search
|
|
28
|
+
*/
|
|
29
|
+
static buildSearchConditions(searchString: string, properties: Record<string, any>): Filter<Document>[];
|
|
30
|
+
/**
|
|
31
|
+
* Combine multiple conditions with AND operator
|
|
32
|
+
*
|
|
33
|
+
* @param conditions - Array of filter conditions
|
|
34
|
+
* @returns Combined filter or undefined if empty
|
|
35
|
+
*/
|
|
36
|
+
static combineConditionsWithAnd(conditions: Filter<Document>[]): Filter<Document> | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Combine multiple conditions with OR operator
|
|
39
|
+
*
|
|
40
|
+
* @param conditions - Array of filter conditions
|
|
41
|
+
* @returns Combined filter or undefined if empty
|
|
42
|
+
*/
|
|
43
|
+
static combineConditionsWithOr(conditions: Filter<Document>[]): Filter<Document> | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Build a complete MongoDB query from Rebase options
|
|
46
|
+
*
|
|
47
|
+
* @param options - Rebase fetch options
|
|
48
|
+
* @returns MongoDB filter object
|
|
49
|
+
*/
|
|
50
|
+
static buildQuery<M extends Record<string, any>>(options: {
|
|
51
|
+
filter?: FilterValues<Extract<keyof M, string>>;
|
|
52
|
+
searchString?: string;
|
|
53
|
+
properties?: Record<string, any>;
|
|
54
|
+
}): Filter<Document>;
|
|
55
|
+
/**
|
|
56
|
+
* Build MongoDB sort options from Rebase options
|
|
57
|
+
*
|
|
58
|
+
* @param orderBy - Field to order by
|
|
59
|
+
* @param order - Sort direction
|
|
60
|
+
* @returns MongoDB sort object
|
|
61
|
+
*/
|
|
62
|
+
static buildSort(orderBy?: string, order?: "asc" | "desc"): Record<string, 1 | -1> | undefined;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=MongoConditionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MongoConditionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/db/MongoConditionBuilder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAiB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAkB3C;;;;;GAKG;AACH,qBAAa,qBAAqB;IAC9B;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACtD,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAC/C,MAAM,CAAC,QAAQ,CAAC,EAAE;IA+BrB;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CACxB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAChC,MAAM,CAAC,QAAQ,CAAC,EAAE;IAwBrB;;;;;OAKG;IACH,MAAM,CAAC,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAM7F;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAM5F;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE;QACtD,MAAM,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAChD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACpC,GAAG,MAAM,CAAC,QAAQ,CAAC;IA2BpB;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CACZ,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GACvB,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS;CAIxC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB Entity Service
|
|
3
|
+
*
|
|
4
|
+
* Implements EntityRepository interface for MongoDB.
|
|
5
|
+
* Provides all CRUD operations for entities.
|
|
6
|
+
*/
|
|
7
|
+
import { Db } from "mongodb";
|
|
8
|
+
import { Entity, FilterValues, EntityRepository, EntityCollection } from "@rebasepro/types";
|
|
9
|
+
/**
|
|
10
|
+
* MongoDB Entity Service
|
|
11
|
+
*
|
|
12
|
+
* Implements the EntityRepository interface for MongoDB.
|
|
13
|
+
* Provides all CRUD operations for entities stored in MongoDB collections.
|
|
14
|
+
*/
|
|
15
|
+
export declare class MongoEntityService implements EntityRepository {
|
|
16
|
+
private db;
|
|
17
|
+
constructor(db: Db);
|
|
18
|
+
/**
|
|
19
|
+
* Get a MongoDB collection by its path
|
|
20
|
+
*/
|
|
21
|
+
private getCollection;
|
|
22
|
+
/**
|
|
23
|
+
* Convert a string ID to ObjectId if it's a valid ObjectId string
|
|
24
|
+
*/
|
|
25
|
+
private toObjectId;
|
|
26
|
+
/**
|
|
27
|
+
* Convert a MongoDB document to a Rebase Entity
|
|
28
|
+
*/
|
|
29
|
+
private documentToEntity;
|
|
30
|
+
/**
|
|
31
|
+
* Convert values from MongoDB format to Rebase format
|
|
32
|
+
*/
|
|
33
|
+
private convertFromMongoValues;
|
|
34
|
+
/**
|
|
35
|
+
* Convert a single value from MongoDB format
|
|
36
|
+
*/
|
|
37
|
+
private convertFromMongoValue;
|
|
38
|
+
/**
|
|
39
|
+
* Convert values to MongoDB format for storage
|
|
40
|
+
*/
|
|
41
|
+
private convertToMongoValues;
|
|
42
|
+
/**
|
|
43
|
+
* Convert a single value to MongoDB format
|
|
44
|
+
*/
|
|
45
|
+
private convertToMongoValue;
|
|
46
|
+
/**
|
|
47
|
+
* Fetch a single entity by ID
|
|
48
|
+
*/
|
|
49
|
+
fetchEntity<M extends Record<string, any>>(collectionPath: string, entityId: string | number, _databaseId?: string): Promise<Entity<M> | undefined>;
|
|
50
|
+
/**
|
|
51
|
+
* Fetch a collection of entities with optional filtering, ordering, and pagination
|
|
52
|
+
*/
|
|
53
|
+
fetchCollection<M extends Record<string, any>>(collectionPath: string, options?: {
|
|
54
|
+
filter?: FilterValues<Extract<keyof M, string>>;
|
|
55
|
+
orderBy?: string;
|
|
56
|
+
order?: "desc" | "asc";
|
|
57
|
+
limit?: number;
|
|
58
|
+
startAfter?: any;
|
|
59
|
+
searchString?: string;
|
|
60
|
+
databaseId?: string;
|
|
61
|
+
collection?: EntityCollection;
|
|
62
|
+
}): Promise<Entity<M>[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Search entities by text
|
|
65
|
+
*/
|
|
66
|
+
searchEntities<M extends Record<string, any>>(collectionPath: string, searchString: string, options?: {
|
|
67
|
+
filter?: FilterValues<Extract<keyof M, string>>;
|
|
68
|
+
orderBy?: string;
|
|
69
|
+
order?: "desc" | "asc";
|
|
70
|
+
limit?: number;
|
|
71
|
+
databaseId?: string;
|
|
72
|
+
collection?: EntityCollection;
|
|
73
|
+
}): Promise<Entity<M>[]>;
|
|
74
|
+
/**
|
|
75
|
+
* Count entities in a collection
|
|
76
|
+
*/
|
|
77
|
+
countEntities<M extends Record<string, any>>(collectionPath: string, options?: {
|
|
78
|
+
filter?: FilterValues<Extract<keyof M, string>>;
|
|
79
|
+
databaseId?: string;
|
|
80
|
+
}): Promise<number>;
|
|
81
|
+
/**
|
|
82
|
+
* Save an entity (create or update)
|
|
83
|
+
*/
|
|
84
|
+
saveEntity<M extends Record<string, any>>(collectionPath: string, values: Partial<M>, entityId?: string | number, _databaseId?: string): Promise<Entity<M>>;
|
|
85
|
+
/**
|
|
86
|
+
* Delete an entity by ID
|
|
87
|
+
*/
|
|
88
|
+
deleteEntity(collectionPath: string, entityId: string | number, _databaseId?: string): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Check if a field value is unique in a collection
|
|
91
|
+
*/
|
|
92
|
+
checkUniqueField(collectionPath: string, fieldName: string, value: any, excludeEntityId?: string, _databaseId?: string): Promise<boolean>;
|
|
93
|
+
/**
|
|
94
|
+
* Generate a new entity ID
|
|
95
|
+
*/
|
|
96
|
+
generateEntityId(): string;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=MongoEntityService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MongoEntityService.d.ts","sourceRoot":"","sources":["../../../../src/db/MongoEntityService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,EAAE,EAAuD,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAG5F;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,gBAAgB;IAC3C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAE1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiC3B;;OAEG;IACG,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3C,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAWjC;;OAEG;IACG,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/C,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE;QACL,MAAM,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,GAAG,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,gBAAgB,CAAC;KAC5B,GACP,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAkCvB;;OAEG;IACG,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9C,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE;QACL,MAAM,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,gBAAgB,CAAC;KAC5B,GACP,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAOvB;;OAEG;IACG,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7C,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE;QACL,MAAM,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAChD,UAAU,CAAC,EAAE,MAAM,CAAC;KAClB,GACP,OAAO,CAAC,MAAM,CAAC;IAUlB;;OAEG;IACG,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1C,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAC1B,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAkCrB;;OAEG;IACG,YAAY,CACd,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;IACG,gBAAgB,CAClB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,GAAG,EACV,eAAe,CAAC,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC;IAcnB;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAG7B"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB Backend Factory
|
|
3
|
+
*
|
|
4
|
+
* This module provides factory functions for creating MongoDB backend instances.
|
|
5
|
+
* It abstracts the creation of drivers, realtime services, and entity services.
|
|
6
|
+
*/
|
|
7
|
+
import { Db, MongoClient } from "mongodb";
|
|
8
|
+
import { DataDriver, EntityCollection } from "@rebasepro/types";
|
|
9
|
+
import { MongoEntityService } from "./db/MongoEntityService";
|
|
10
|
+
import { MongoRealtimeService } from "./services/MongoRealtimeService";
|
|
11
|
+
import { MongoDriver } from "./services/MongoDriver";
|
|
12
|
+
import { MongoHistoryService, HistoryRetentionConfig } from "./services/MongoHistoryService";
|
|
13
|
+
import { BackendConfig, BackendInstance, CollectionRegistryInterface, EntityRepository, DatabaseAdmin } from "@rebasepro/types";
|
|
14
|
+
/**
|
|
15
|
+
* Configuration for creating a MongoDB backend.
|
|
16
|
+
*/
|
|
17
|
+
export interface MongoBackendConfig extends BackendConfig {
|
|
18
|
+
type: "mongodb";
|
|
19
|
+
/** MongoDB database instance */
|
|
20
|
+
connection: Db;
|
|
21
|
+
/** MongoDB client (for connection management) */
|
|
22
|
+
client: MongoClient;
|
|
23
|
+
/** Collections to register (optional, can be registered later) */
|
|
24
|
+
collections?: EntityCollection[];
|
|
25
|
+
/** History retention configuration */
|
|
26
|
+
historyRetention?: Partial<HistoryRetentionConfig>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* MongoDB-specific backend instance with additional MongoDB types.
|
|
30
|
+
*/
|
|
31
|
+
export interface MongoBackendInstance extends BackendInstance {
|
|
32
|
+
/** The MongoDB database instance */
|
|
33
|
+
db: Db;
|
|
34
|
+
/** The MongoDB client */
|
|
35
|
+
client: MongoClient;
|
|
36
|
+
/** MongoDB DataDriver for use with Rebase */
|
|
37
|
+
driver: DataDriver;
|
|
38
|
+
/** Entity service for direct database operations */
|
|
39
|
+
entityService: MongoEntityService;
|
|
40
|
+
/** Realtime service for subscriptions */
|
|
41
|
+
realtimeService: MongoRealtimeService;
|
|
42
|
+
/** Admin capabilities (DocumentAdmin + SchemaAdmin) */
|
|
43
|
+
admin: DatabaseAdmin;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Simple in-memory collection registry for MongoDB.
|
|
47
|
+
*/
|
|
48
|
+
export declare class MongoCollectionRegistry implements CollectionRegistryInterface {
|
|
49
|
+
private collections;
|
|
50
|
+
/**
|
|
51
|
+
* Register a collection
|
|
52
|
+
*/
|
|
53
|
+
register(collection: EntityCollection): void;
|
|
54
|
+
/**
|
|
55
|
+
* Get a collection by its path
|
|
56
|
+
*/
|
|
57
|
+
getCollectionByPath(path: string): EntityCollection | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Get all registered collections
|
|
60
|
+
*/
|
|
61
|
+
getCollections(): EntityCollection[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create a complete MongoDB backend instance.
|
|
65
|
+
*
|
|
66
|
+
* This factory function creates all the necessary services for a MongoDB backend:
|
|
67
|
+
* - MongoDBConnection (database connection wrapper)
|
|
68
|
+
* - MongoEntityService (implements EntityRepository)
|
|
69
|
+
* - MongoRealtimeService (implements RealtimeProvider)
|
|
70
|
+
* - MongoCollectionRegistry (implements CollectionRegistryInterface)
|
|
71
|
+
* - MongoDriver (for Rebase integration)
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* import { createMongoBackend } from "@rebasepro/server-mongodb";
|
|
76
|
+
*
|
|
77
|
+
* const client = new MongoClient("mongodb://localhost:27017");
|
|
78
|
+
* await client.connect();
|
|
79
|
+
* const db = client.db("my_database");
|
|
80
|
+
*
|
|
81
|
+
* const backend = createMongoBackend({
|
|
82
|
+
* type: "mongodb",
|
|
83
|
+
* connection: db,
|
|
84
|
+
* client: client,
|
|
85
|
+
* collections: myCollections
|
|
86
|
+
* });
|
|
87
|
+
*
|
|
88
|
+
* // Use the backend
|
|
89
|
+
* const entities = await backend.entityRepository.fetchCollection("users", {});
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function createMongoBackend(config: MongoBackendConfig): MongoBackendInstance;
|
|
93
|
+
/**
|
|
94
|
+
* Create a MongoDB DataDriver.
|
|
95
|
+
*
|
|
96
|
+
* This is a convenience function when you only need the DataDriver
|
|
97
|
+
* without the full backend instance.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* import { createMongoDelegate } from "@rebasepro/server-mongodb";
|
|
102
|
+
*
|
|
103
|
+
* const delegate = createMongoDelegate(db);
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export declare function createMongoDelegate(db: Db, realtimeService?: MongoRealtimeService, historyService?: MongoHistoryService): MongoDriver;
|
|
107
|
+
/**
|
|
108
|
+
* Create a RealtimeService for MongoDB.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* import { createMongoRealtimeService } from "@rebasepro/server-mongodb";
|
|
113
|
+
*
|
|
114
|
+
* const realtimeService = createMongoRealtimeService(db);
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
export declare function createMongoRealtimeService(db: Db): MongoRealtimeService;
|
|
118
|
+
/**
|
|
119
|
+
* Create a MongoDB entity repository.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* import { createMongoEntityRepository } from "@rebasepro/server-mongodb";
|
|
124
|
+
*
|
|
125
|
+
* const repository = createMongoEntityRepository(db);
|
|
126
|
+
* const users = await repository.fetchCollection("users", {});
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export declare function createMongoEntityRepository(db: Db): EntityRepository;
|
|
130
|
+
/**
|
|
131
|
+
* Check if a backend config is for MongoDB.
|
|
132
|
+
*/
|
|
133
|
+
export declare function isMongoBackendConfig(config: BackendConfig): config is MongoBackendConfig;
|
|
134
|
+
/**
|
|
135
|
+
* Check if a driver config is for MongoDB.
|
|
136
|
+
*/
|
|
137
|
+
export declare function isMongoDriverConfig(obj: unknown): obj is {
|
|
138
|
+
type: "mongodb";
|
|
139
|
+
connection: Db;
|
|
140
|
+
client: MongoClient;
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAE7F,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,2BAA2B,EAAE,gBAAgB,EAAwC,aAAa,EAAiD,MAAM,kBAAkB,CAAC;AAErN;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACrD,IAAI,EAAE,SAAS,CAAC;IAChB,gCAAgC;IAChC,UAAU,EAAE,EAAE,CAAC;IACf,iDAAiD;IACjD,MAAM,EAAE,WAAW,CAAC;IACpB,kEAAkE;IAClE,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,sCAAsC;IACtC,gBAAgB,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IACzD,oCAAoC;IACpC,EAAE,EAAE,EAAE,CAAC;IACP,yBAAyB;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,6CAA6C;IAC7C,MAAM,EAAE,UAAU,CAAC;IACnB,oDAAoD;IACpD,aAAa,EAAE,kBAAkB,CAAC;IAClC,yCAAyC;IACzC,eAAe,EAAE,oBAAoB,CAAC;IACtC,uDAAuD;IACvD,KAAK,EAAE,aAAa,CAAC;CACxB;AAMD;;GAEG;AACH,qBAAa,uBAAwB,YAAW,2BAA2B;IACvE,OAAO,CAAC,WAAW,CAAuC;IAE1D;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAI5C;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI/D;;OAEG;IACH,cAAc,IAAI,gBAAgB,EAAE;CAGvC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,oBAAoB,CAgGnF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAC/B,EAAE,EAAE,EAAE,EACN,eAAe,CAAC,EAAE,oBAAoB,EACtC,cAAc,CAAC,EAAE,mBAAmB,GACrC,WAAW,CAIb;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,EAAE,GAAG,oBAAoB,CAEvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAEpE;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,IAAI,kBAAkB,CAIxF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,EAAE,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAOjH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-history-collection.d.ts","sourceRoot":"","sources":["../../../../src/history/ensure-history-collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B,wBAAsB,6BAA6B,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBzE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rebasepro/server-mongodb
|
|
3
|
+
*
|
|
4
|
+
* MongoDB backend implementation for Rebase
|
|
5
|
+
* This package provides a complete backend solution for Rebase applications
|
|
6
|
+
* using MongoDB as the database.
|
|
7
|
+
*
|
|
8
|
+
* The package implements the abstract interfaces from @rebasepro/server-core
|
|
9
|
+
* (EntityRepository, RealtimeProvider, CollectionRegistryInterface, etc.)
|
|
10
|
+
*/
|
|
11
|
+
export * from "./connection";
|
|
12
|
+
export * from "./factory";
|
|
13
|
+
export * from "./db/MongoEntityService";
|
|
14
|
+
export * from "./db/MongoConditionBuilder";
|
|
15
|
+
export * from "./services/MongoRealtimeService";
|
|
16
|
+
export * from "./services/MongoDriver";
|
|
17
|
+
export * from "./MongoBootstrapper";
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,cAAc,CAAC;AAG7B,cAAc,WAAW,CAAC;AAG1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB DataDriver Delegate
|
|
3
|
+
*
|
|
4
|
+
* Implements the DataDriver interface for Rebase frontend integration.
|
|
5
|
+
* This is the main entry point for Rebase to interact with MongoDB.
|
|
6
|
+
*/
|
|
7
|
+
import { Db } from "mongodb";
|
|
8
|
+
import { DataDriver, DeleteEntityProps, Entity, EntityCollection, FetchCollectionProps, FetchEntityProps, ListenCollectionProps, ListenEntityProps, SaveEntityProps } from "@rebasepro/types";
|
|
9
|
+
import { MongoEntityService } from "../db/MongoEntityService";
|
|
10
|
+
import { MongoRealtimeService } from "./MongoRealtimeService";
|
|
11
|
+
import { MongoHistoryService } from "./MongoHistoryService";
|
|
12
|
+
/**
|
|
13
|
+
* MongoDB DataDriver Delegate
|
|
14
|
+
*
|
|
15
|
+
* Implements the DataDriver interface for Rebase.
|
|
16
|
+
* Provides all data operations needed by the Rebase frontend.
|
|
17
|
+
*/
|
|
18
|
+
export declare class MongoDriver implements DataDriver {
|
|
19
|
+
private db;
|
|
20
|
+
key: string;
|
|
21
|
+
initialised: boolean;
|
|
22
|
+
private entityService;
|
|
23
|
+
private realtimeService;
|
|
24
|
+
historyService: MongoHistoryService;
|
|
25
|
+
constructor(db: Db, realtimeService?: MongoRealtimeService, historyService?: MongoHistoryService);
|
|
26
|
+
/**
|
|
27
|
+
* Get the current timestamp
|
|
28
|
+
*/
|
|
29
|
+
currentTime(): Date;
|
|
30
|
+
/**
|
|
31
|
+
* Fetch a collection of entities
|
|
32
|
+
*/
|
|
33
|
+
fetchCollection<M extends Record<string, any>>({ path, collection, filter, limit, startAfter, orderBy, searchString, order }: FetchCollectionProps<M>): Promise<Entity<M>[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Listen to collection changes
|
|
36
|
+
*/
|
|
37
|
+
listenCollection<M extends Record<string, any>>({ path, collection, filter, limit, startAfter, orderBy, searchString, order, onUpdate, onError }: ListenCollectionProps<M>): () => void;
|
|
38
|
+
/**
|
|
39
|
+
* Fetch a single entity
|
|
40
|
+
*/
|
|
41
|
+
fetchEntity<M extends Record<string, any>>({ path, entityId, databaseId, collection }: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
|
|
42
|
+
/**
|
|
43
|
+
* Listen to entity changes
|
|
44
|
+
*/
|
|
45
|
+
listenEntity<M extends Record<string, any>>({ path, entityId, collection, onUpdate, onError }: ListenEntityProps<M>): () => void;
|
|
46
|
+
/**
|
|
47
|
+
* Save an entity (create or update)
|
|
48
|
+
*/
|
|
49
|
+
saveEntity<M extends Record<string, any>>({ path, entityId, values, previousValues, collection, status }: SaveEntityProps<M>): Promise<Entity<M>>;
|
|
50
|
+
/**
|
|
51
|
+
* Delete an entity
|
|
52
|
+
*/
|
|
53
|
+
deleteEntity<M extends Record<string, any>>({ entity, collection }: DeleteEntityProps<M>): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Check if a field value is unique
|
|
56
|
+
*/
|
|
57
|
+
checkUniqueField(path: string, name: string, value: any, entityId?: string, collection?: EntityCollection): Promise<boolean>;
|
|
58
|
+
/**
|
|
59
|
+
* Generate a new entity ID
|
|
60
|
+
*/
|
|
61
|
+
generateEntityId(path: string, collection?: EntityCollection): string;
|
|
62
|
+
/**
|
|
63
|
+
* Count entities in a collection
|
|
64
|
+
*/
|
|
65
|
+
countEntities<M extends Record<string, any>>({ path, collection, filter }: FetchCollectionProps<M>): Promise<number>;
|
|
66
|
+
/**
|
|
67
|
+
* Generate a unique subscription ID
|
|
68
|
+
*/
|
|
69
|
+
private generateSubscriptionId;
|
|
70
|
+
/**
|
|
71
|
+
* Check if the delegate is ready
|
|
72
|
+
*/
|
|
73
|
+
isReady(): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Get the underlying entity service for direct access
|
|
76
|
+
*/
|
|
77
|
+
getEntityService(): MongoEntityService;
|
|
78
|
+
/**
|
|
79
|
+
* Get the underlying realtime service for direct access
|
|
80
|
+
*/
|
|
81
|
+
getRealtimeService(): MongoRealtimeService;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=MongoDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MongoDriver.d.ts","sourceRoot":"","sources":["../../../../src/services/MongoDriver.ts"],"names":[],"mappings":"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"}
|