@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 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface JwtConfig {
|
|
2
|
+
secret: string;
|
|
3
|
+
accessExpiresIn?: string;
|
|
4
|
+
refreshExpiresIn?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface AccessTokenPayload {
|
|
7
|
+
userId: string;
|
|
8
|
+
roles: string[];
|
|
9
|
+
uid?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Configure JWT settings - call this during initialization.
|
|
13
|
+
* Validates the secret strength to prevent deployment with default/weak secrets.
|
|
14
|
+
*/
|
|
15
|
+
export declare function configureJwt(config: JwtConfig): void;
|
|
16
|
+
/**
|
|
17
|
+
* Generate an access token (short-lived, 1 hour by default)
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateAccessToken(userId: string, roles: string[]): string;
|
|
20
|
+
/**
|
|
21
|
+
* Get the expiration time of an access token in milliseconds from now
|
|
22
|
+
*/
|
|
23
|
+
export declare function getAccessTokenExpiryMs(): number;
|
|
24
|
+
/**
|
|
25
|
+
* Get the expiration timestamp for an access token
|
|
26
|
+
*/
|
|
27
|
+
export declare function getAccessTokenExpiry(): number;
|
|
28
|
+
/**
|
|
29
|
+
* Verify and decode an access token
|
|
30
|
+
*/
|
|
31
|
+
export declare function verifyAccessToken(token: string): AccessTokenPayload | null;
|
|
32
|
+
/**
|
|
33
|
+
* Generate a random refresh token (long-lived, 30 days by default)
|
|
34
|
+
*/
|
|
35
|
+
export declare function generateRefreshToken(): string;
|
|
36
|
+
/**
|
|
37
|
+
* Hash a refresh token for database storage (don't store raw tokens)
|
|
38
|
+
*/
|
|
39
|
+
export declare function hashRefreshToken(token: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Calculate refresh token expiration date
|
|
42
|
+
*/
|
|
43
|
+
export declare function getRefreshTokenExpiry(): Date;
|
|
44
|
+
//# sourceMappingURL=jwt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/jwt.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwCpD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAY3E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAmB/C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAqB1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAsB5C"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { OAuthProvider } from "./interfaces";
|
|
2
|
+
export interface LinkedinUserInfo {
|
|
3
|
+
linkedinId: string;
|
|
4
|
+
email: string;
|
|
5
|
+
displayName: string | null;
|
|
6
|
+
photoUrl: string | null;
|
|
7
|
+
emailVerified: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Creates a LinkedIn OAuth Provider integration
|
|
11
|
+
*/
|
|
12
|
+
export declare function createLinkedinProvider(config: {
|
|
13
|
+
clientId: string;
|
|
14
|
+
clientSecret: string;
|
|
15
|
+
}): OAuthProvider<{
|
|
16
|
+
code: string;
|
|
17
|
+
redirectUri: string;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=linkedin-oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkedin-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/linkedin-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGxE,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,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,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,CAkE/I"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { OAuthProvider } from "./interfaces";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a Microsoft / Entra ID (Azure AD) OAuth Provider integration.
|
|
4
|
+
*
|
|
5
|
+
* Supports both personal Microsoft accounts and work/school (Azure AD) accounts
|
|
6
|
+
* via the "common" tenant endpoint. Uses the authorization code flow.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createMicrosoftProvider(config: {
|
|
9
|
+
clientId: string;
|
|
10
|
+
clientSecret: string;
|
|
11
|
+
/** Tenant ID. Defaults to "common" which allows both personal and organizational accounts. */
|
|
12
|
+
tenantId?: string;
|
|
13
|
+
}): OAuthProvider<{
|
|
14
|
+
code: string;
|
|
15
|
+
redirectUri: string;
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=microsoft-oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microsoft-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/microsoft-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGxE;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAyEvD"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { MiddlewareHandler, Context } from "hono";
|
|
2
|
+
import { DataDriver } from "@rebasepro/types";
|
|
3
|
+
import { AccessTokenPayload } from "./jwt";
|
|
4
|
+
import { HonoEnv } from "../api/types";
|
|
5
|
+
/**
|
|
6
|
+
* Result from a custom auth validator.
|
|
7
|
+
* - `false`/`null`/`undefined` = not authenticated
|
|
8
|
+
* - `true` = authenticated as default user
|
|
9
|
+
* - object with `userId` or `uid` = authenticated with user info
|
|
10
|
+
*/
|
|
11
|
+
export type AuthResult = boolean | null | undefined | {
|
|
12
|
+
userId?: string;
|
|
13
|
+
uid?: string;
|
|
14
|
+
roles?: string[];
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Options for creating an auth middleware via createAuthMiddleware()
|
|
19
|
+
*/
|
|
20
|
+
export interface AuthMiddlewareOptions {
|
|
21
|
+
/** DataDriver to scope via withAuth() for RLS */
|
|
22
|
+
driver: DataDriver;
|
|
23
|
+
/**
|
|
24
|
+
* If true, return 401 when no valid token is present.
|
|
25
|
+
*
|
|
26
|
+
* **Defaults to `true` (secure by default).** Set to `false` only for
|
|
27
|
+
* intentionally public endpoints where access control is fully delegated
|
|
28
|
+
* to Postgres Row-Level Security policies.
|
|
29
|
+
*/
|
|
30
|
+
requireAuth?: boolean;
|
|
31
|
+
/** Optional custom validator (for non-JWT auth, e.g. Firebase Auth) */
|
|
32
|
+
validator?: (c: Context<HonoEnv>) => Promise<AuthResult>;
|
|
33
|
+
/**
|
|
34
|
+
* A static secret key for server-to-server / script authentication.
|
|
35
|
+
*
|
|
36
|
+
* When a request sends `Authorization: Bearer <key>` and the key matches
|
|
37
|
+
* this value, the request is granted admin-level access (uid: `service`,
|
|
38
|
+
* roles: `["admin"]`) **without** JWT verification. The driver is scoped
|
|
39
|
+
* via `withAuth()` with the service identity.
|
|
40
|
+
*
|
|
41
|
+
* This is the Rebase equivalent of a Firebase Service Account key.
|
|
42
|
+
* Set via `REBASE_SERVICE_KEY` in `.env` and pass through the backend config.
|
|
43
|
+
*
|
|
44
|
+
* **Security:** The comparison uses constant-time equality to prevent
|
|
45
|
+
* timing attacks. The key must be at least 32 characters.
|
|
46
|
+
*/
|
|
47
|
+
serviceKey?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Hono middleware that requires a valid JWT token
|
|
51
|
+
* Returns 401 if token is missing or invalid
|
|
52
|
+
*/
|
|
53
|
+
export declare const requireAuth: MiddlewareHandler<HonoEnv>;
|
|
54
|
+
/**
|
|
55
|
+
* Factory that creates a requireAuth middleware with optional service key support.
|
|
56
|
+
*
|
|
57
|
+
* When `serviceKey` is provided, the middleware will check if the Bearer token
|
|
58
|
+
* matches the service key using constant-time comparison. If it matches, the
|
|
59
|
+
* request is authenticated as a service user with admin privileges.
|
|
60
|
+
*
|
|
61
|
+
* This allows admin routes (which use standalone requireAuth + requireAdmin)
|
|
62
|
+
* to be accessed via service keys for scripts and server-to-server calls.
|
|
63
|
+
*/
|
|
64
|
+
export declare function createRequireAuth(options?: {
|
|
65
|
+
serviceKey?: string;
|
|
66
|
+
}): MiddlewareHandler<HonoEnv>;
|
|
67
|
+
/**
|
|
68
|
+
* Middleware that requires the user to have an admin or schema-admin role.
|
|
69
|
+
* Must be used AFTER requireAuth or on a route where user is guaranteed.
|
|
70
|
+
*/
|
|
71
|
+
export declare const requireAdmin: MiddlewareHandler<HonoEnv>;
|
|
72
|
+
/**
|
|
73
|
+
* Middleware that optionally extracts user from JWT
|
|
74
|
+
* Does not return 401 if token is missing - allows anonymous access
|
|
75
|
+
*/
|
|
76
|
+
export declare const optionalAuth: MiddlewareHandler<HonoEnv>;
|
|
77
|
+
/**
|
|
78
|
+
* Extract user from token - for WebSocket authentication
|
|
79
|
+
*/
|
|
80
|
+
export declare function extractUserFromToken(token: string): AccessTokenPayload | null;
|
|
81
|
+
export declare function createAuthMiddleware(options: AuthMiddlewareOptions): MiddlewareHandler<HonoEnv>;
|
|
82
|
+
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAqB,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAElI;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,iDAAiD;IACjD,MAAM,EAAE,UAAU,CAAC;IACnB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uEAAuE;IACvE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACzD;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,iBAAiB,CAAC,OAAO,CA+BlD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CA0C/F;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC,OAAO,CA6BnD,CAAC;AAGF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAiBnD,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAE7E;AAkED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAmH/F"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface PasswordValidationResult {
|
|
2
|
+
valid: boolean;
|
|
3
|
+
errors: string[];
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Password requirements:
|
|
7
|
+
* - Minimum 8 characters
|
|
8
|
+
* - At least 1 uppercase letter
|
|
9
|
+
* - At least 1 lowercase letter
|
|
10
|
+
* - At least 1 number
|
|
11
|
+
*/
|
|
12
|
+
export declare function validatePasswordStrength(password: string): PasswordValidationResult;
|
|
13
|
+
/**
|
|
14
|
+
* Hash a password using Node's built-in scrypt
|
|
15
|
+
* Returns format: salt:hash (both hex encoded)
|
|
16
|
+
*/
|
|
17
|
+
export declare function hashPassword(password: string): Promise<string>;
|
|
18
|
+
/**
|
|
19
|
+
* Verify a password against a scrypt hash
|
|
20
|
+
* Expects format: salt:hash (both hex encoded)
|
|
21
|
+
*/
|
|
22
|
+
export declare function verifyPassword(password: string, storedHash: string): Promise<boolean>;
|
|
23
|
+
//# sourceMappingURL=password.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/password.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,wBAAwB,CAuBnF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIpE;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAa3F"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { MiddlewareHandler } from "hono";
|
|
2
|
+
import { HonoEnv } from "../api/types";
|
|
3
|
+
interface RateLimiterOptions {
|
|
4
|
+
/** Time window in milliseconds (default: 15 minutes) */
|
|
5
|
+
windowMs?: number;
|
|
6
|
+
/** Maximum requests per window (default: 100) */
|
|
7
|
+
limit?: number;
|
|
8
|
+
/** Key generator function. Defaults to IP-based keying. */
|
|
9
|
+
keyGenerator?: (c: Parameters<MiddlewareHandler<HonoEnv>>[0]) => string;
|
|
10
|
+
/** Custom message for rate limit responses */
|
|
11
|
+
message?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Create a rate-limiting middleware.
|
|
15
|
+
*
|
|
16
|
+
* Uses a sliding window algorithm: only timestamps within the last
|
|
17
|
+
* `windowMs` milliseconds are counted. Old entries are garbage-collected
|
|
18
|
+
* every `windowMs` to prevent unbounded memory growth.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createRateLimiter(options?: RateLimiterOptions): MiddlewareHandler<HonoEnv>;
|
|
21
|
+
/**
|
|
22
|
+
* Pre-configured rate limiter for general auth endpoints (login, register).
|
|
23
|
+
* 200 requests per 15 minutes per IP.
|
|
24
|
+
*/
|
|
25
|
+
export declare const defaultAuthLimiter: MiddlewareHandler<HonoEnv>;
|
|
26
|
+
/**
|
|
27
|
+
* Pre-configured strict rate limiter for sensitive endpoints (password reset, verification).
|
|
28
|
+
* 50 requests per 15 minutes per IP.
|
|
29
|
+
*/
|
|
30
|
+
export declare const strictAuthLimiter: MiddlewareHandler<HonoEnv>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=rate-limiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/rate-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAcvC,UAAU,kBAAkB;IACxB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;IACxE,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAgE9F;AAaD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,4BAI7B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,4BAI5B,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import type { AuthRepository, OAuthProvider } from "./interfaces";
|
|
3
|
+
import { EmailService, EmailConfig } from "../email";
|
|
4
|
+
import { HonoEnv } from "../api/types";
|
|
5
|
+
/**
|
|
6
|
+
* Shared configuration for auth and admin route factories.
|
|
7
|
+
*/
|
|
8
|
+
export interface AuthModuleConfig {
|
|
9
|
+
authRepo: AuthRepository;
|
|
10
|
+
emailService?: EmailService;
|
|
11
|
+
emailConfig?: EmailConfig;
|
|
12
|
+
/** Allow new user registration (default: false). */
|
|
13
|
+
allowRegistration?: boolean;
|
|
14
|
+
/** Default role ID to assign to new users (default: none). Must NOT be "admin". */
|
|
15
|
+
defaultRole?: string;
|
|
16
|
+
/** Optional array of OAuth providers */
|
|
17
|
+
oauthProviders?: OAuthProvider[];
|
|
18
|
+
/** When true, blocks all self-registration regardless of `allowRegistration`. */
|
|
19
|
+
disableSelfRegistration?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Callback that checks if bootstrap has already been completed.
|
|
22
|
+
* Used by GET /auth/config to report `needsSetup` status.
|
|
23
|
+
* When not provided, falls back to checking if any users exist.
|
|
24
|
+
*/
|
|
25
|
+
isBootstrapCompleted?: () => Promise<boolean>;
|
|
26
|
+
}
|
|
27
|
+
export declare function createAuthRoutes(config: AuthModuleConfig): Hono<HonoEnv>;
|
|
28
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIvC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,iFAAiF;IACjF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAgDD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,CAisBxE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { OAuthProvider } from "./interfaces";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a Slack OAuth Provider integration (OAuth 2.0 / "Sign in with Slack").
|
|
4
|
+
* Uses the OpenID Connect flow with the "openid,email,profile" scopes.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createSlackProvider(config: {
|
|
7
|
+
clientId: string;
|
|
8
|
+
clientSecret: string;
|
|
9
|
+
}): OAuthProvider<{
|
|
10
|
+
code: string;
|
|
11
|
+
redirectUri: string;
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=slack-oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/slack-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGxE;;;GAGG;AACH,wBAAgB,mBAAmB,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,CA+D5I"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { OAuthProvider } from "./interfaces";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a Spotify OAuth Provider integration.
|
|
4
|
+
* Uses the authorization code flow with the "user-read-email" scope.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createSpotifyProvider(config: {
|
|
7
|
+
clientId: string;
|
|
8
|
+
clientSecret: string;
|
|
9
|
+
}): OAuthProvider<{
|
|
10
|
+
code: string;
|
|
11
|
+
redirectUri: string;
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=spotify-oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spotify-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/spotify-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGxE;;;GAGG;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,CA2D9I"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { OAuthProvider } from "./interfaces";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a Twitter/X OAuth 2.0 Provider integration.
|
|
4
|
+
*
|
|
5
|
+
* Uses OAuth 2.0 with PKCE (authorization code flow). The frontend must include
|
|
6
|
+
* the PKCE `code_verifier` when sending the authorization code.
|
|
7
|
+
*
|
|
8
|
+
* Twitter API v2 requires the "tweet.read" and "users.read" scopes at minimum,
|
|
9
|
+
* plus "offline.access" if refresh tokens are needed on Twitter's side.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createTwitterProvider(config: {
|
|
12
|
+
clientId: string;
|
|
13
|
+
clientSecret: string;
|
|
14
|
+
}): OAuthProvider<{
|
|
15
|
+
code: string;
|
|
16
|
+
redirectUri: string;
|
|
17
|
+
codeVerifier: string;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=twitter-oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"twitter-oauth.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/auth/twitter-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGxE;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAAC;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACxB,CAAC,CAuGT"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CollectionRegistry } from "@rebasepro/common";
|
|
2
|
+
import { CollectionRegistryInterface } from "../db/interfaces";
|
|
3
|
+
/**
|
|
4
|
+
* Backend-agnostic collection registry.
|
|
5
|
+
* Satisfies CollectionRegistryInterface through inheritance from CollectionRegistry.
|
|
6
|
+
*/
|
|
7
|
+
export declare class BackendCollectionRegistry extends CollectionRegistry implements CollectionRegistryInterface {
|
|
8
|
+
/**
|
|
9
|
+
* Get the available relation keys for a given collection path.
|
|
10
|
+
* Maps from the collection's relation property names to the relation names.
|
|
11
|
+
*/
|
|
12
|
+
getRelationKeysForCollection(collectionPath: string): string[];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=BackendCollectionRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackendCollectionRegistry.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/collections/BackendCollectionRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAG/D;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,kBAAmB,YAAW,2BAA2B;IAEpG;;;OAGG;IACH,4BAA4B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE;CAKjE"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { EntityCollection } from "@rebasepro/types";
|
|
2
|
+
/**
|
|
3
|
+
* Asynchronously load collection files from a directory for backend initialization
|
|
4
|
+
*/
|
|
5
|
+
export declare function loadCollectionsFromDirectory(directory: string): Promise<EntityCollection[]>;
|
|
6
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/collections/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKpD;;GAEG;AACH,wBAAsB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAwCjG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CronJobDefinition } from "@rebasepro/types";
|
|
2
|
+
export interface LoadedCronJob {
|
|
3
|
+
/** Job ID derived from filename (e.g. "cleanup-sessions"). */
|
|
4
|
+
id: string;
|
|
5
|
+
/** The full definition. */
|
|
6
|
+
definition: CronJobDefinition;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Auto-discover cron job files from a directory.
|
|
10
|
+
*
|
|
11
|
+
* Each file should default-export a `CronJobDefinition`.
|
|
12
|
+
* The filename (without extension) becomes the job ID:
|
|
13
|
+
* `crons/cleanup-sessions.ts` → id = "cleanup-sessions"
|
|
14
|
+
*
|
|
15
|
+
* Follows the same discovery pattern as `loadFunctionsFromDirectory`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function loadCronJobsFromDirectory(directory: string): Promise<LoadedCronJob[]>;
|
|
18
|
+
//# sourceMappingURL=cron-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-loader.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/cron/cron-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC1B,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,UAAU,EAAE,iBAAiB,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC3C,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,EAAE,CAAC,CAiE1B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import type { HonoEnv } from "../api/types";
|
|
3
|
+
import type { CronScheduler } from "./cron-scheduler";
|
|
4
|
+
/**
|
|
5
|
+
* Create admin REST routes for managing cron jobs.
|
|
6
|
+
*
|
|
7
|
+
* Routes:
|
|
8
|
+
* GET / → list all cron jobs
|
|
9
|
+
* GET /:id → get a single job's status
|
|
10
|
+
* POST /:id/trigger → manually trigger a job
|
|
11
|
+
* GET /:id/logs → get execution logs for a job
|
|
12
|
+
* PUT /:id → update job (enable/disable)
|
|
13
|
+
*/
|
|
14
|
+
export declare function createCronRoutes(scheduler: CronScheduler): Hono<HonoEnv>;
|
|
15
|
+
//# sourceMappingURL=cron-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-routes.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/cron/cron-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAsExE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { CronJobStatus, CronJobLogEntry } from "@rebasepro/types";
|
|
2
|
+
import type { RebaseClient } from "@rebasepro/client";
|
|
3
|
+
import type { LoadedCronJob } from "./cron-loader";
|
|
4
|
+
import type { CronStore } from "./cron-store";
|
|
5
|
+
export declare class CronScheduler {
|
|
6
|
+
private jobs;
|
|
7
|
+
private started;
|
|
8
|
+
private store?;
|
|
9
|
+
private client?;
|
|
10
|
+
/**
|
|
11
|
+
* Set the RebaseClient instance to make it available to cron job handlers.
|
|
12
|
+
*/
|
|
13
|
+
setClient(client: RebaseClient): void;
|
|
14
|
+
/**
|
|
15
|
+
* Attach a persistence store for cron logs.
|
|
16
|
+
* When set, execution logs are written to the database after each run,
|
|
17
|
+
* and counters are seeded from the database on start.
|
|
18
|
+
*/
|
|
19
|
+
setStore(store: CronStore): void;
|
|
20
|
+
/**
|
|
21
|
+
* Register a batch of loaded cron jobs.
|
|
22
|
+
*/
|
|
23
|
+
registerJobs(loadedJobs: LoadedCronJob[]): void;
|
|
24
|
+
/**
|
|
25
|
+
* Start the scheduler — begins ticking all enabled jobs.
|
|
26
|
+
*/
|
|
27
|
+
start(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Stop the scheduler and clear all timers.
|
|
30
|
+
*/
|
|
31
|
+
stop(): void;
|
|
32
|
+
/**
|
|
33
|
+
* List all registered jobs with their current status.
|
|
34
|
+
*/
|
|
35
|
+
listJobs(): CronJobStatus[];
|
|
36
|
+
/**
|
|
37
|
+
* Get a single job status by ID.
|
|
38
|
+
*/
|
|
39
|
+
getJob(id: string): CronJobStatus | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Get log entries for a job.
|
|
42
|
+
*/
|
|
43
|
+
getJobLogs(id: string, limit?: number): CronJobLogEntry[];
|
|
44
|
+
/**
|
|
45
|
+
* Get log entries for a job from the database (if store is available).
|
|
46
|
+
* Falls back to in-memory logs if no store is configured.
|
|
47
|
+
*/
|
|
48
|
+
getJobLogsFromDb(id: string, limit?: number): Promise<CronJobLogEntry[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Enable or disable a job at runtime.
|
|
51
|
+
*/
|
|
52
|
+
setJobEnabled(id: string, enabled: boolean): CronJobStatus | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Manually trigger a job execution immediately.
|
|
55
|
+
*/
|
|
56
|
+
triggerJob(id: string): Promise<CronJobLogEntry | undefined>;
|
|
57
|
+
private scheduleNext;
|
|
58
|
+
private stopJob;
|
|
59
|
+
private executeJob;
|
|
60
|
+
private toStatus;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=cron-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-scheduler.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/cron/cron-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,aAAa,EACb,eAAe,EAGlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAkH9C,qBAAa,aAAa;IACtB,OAAO,CAAC,IAAI,CAAoC;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAC,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAC,CAAe;IAE9B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIrC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIhC;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,IAAI;IAoB/C;;OAEG;IACH,KAAK,IAAI,IAAI;IA8Bb;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACH,QAAQ,IAAI,aAAa,EAAE;IAI3B;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAK7C;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE;IAOzD;;;OAGG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAS9E;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS;IAiBtE;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAQlE,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,OAAO;YASD,UAAU;IAmFxB,OAAO,CAAC,QAAQ;CAgBnB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CronJobLogEntry } from "@rebasepro/types";
|
|
2
|
+
import type { DataDriver } from "@rebasepro/types";
|
|
3
|
+
/**
|
|
4
|
+
* Persistence layer for cron job execution logs.
|
|
5
|
+
*
|
|
6
|
+
* Uses the DataDriver's `admin.executeSql` capability to store logs in a
|
|
7
|
+
* `rebase.cron_logs` table. Falls back gracefully if the driver doesn't
|
|
8
|
+
* support SQL (e.g. MongoDB) — in that case, no persistence occurs.
|
|
9
|
+
*/
|
|
10
|
+
export interface CronStore {
|
|
11
|
+
/** Ensure the backing table exists. Called once on startup. */
|
|
12
|
+
ensureTable(): Promise<void>;
|
|
13
|
+
/** Persist a single log entry after execution. */
|
|
14
|
+
insertLog(entry: CronJobLogEntry): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Fetch the most recent logs for a job.
|
|
17
|
+
* @param jobId The job identifier
|
|
18
|
+
* @param limit Max entries to return (default 50)
|
|
19
|
+
* @returns Logs sorted newest-first
|
|
20
|
+
*/
|
|
21
|
+
fetchLogs(jobId: string, limit?: number): Promise<CronJobLogEntry[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Fetch aggregate stats for all jobs (totalRuns, totalFailures, lastRunAt).
|
|
24
|
+
* Used to seed in-memory counters on startup.
|
|
25
|
+
*/
|
|
26
|
+
fetchJobStats(): Promise<Map<string, {
|
|
27
|
+
totalRuns: number;
|
|
28
|
+
totalFailures: number;
|
|
29
|
+
lastRunAt?: string;
|
|
30
|
+
}>>;
|
|
31
|
+
}
|
|
32
|
+
export declare function createCronStore(driver: DataDriver): CronStore | undefined;
|
|
33
|
+
//# sourceMappingURL=cron-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-store.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/cron/cron-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACtB,+DAA+D;IAC/D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B,kDAAkD;IAClD,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAErE;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC3G;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CA6GzE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { loadCronJobsFromDirectory } from "./cron-loader";
|
|
2
|
+
export type { LoadedCronJob } from "./cron-loader";
|
|
3
|
+
export { CronScheduler } from "./cron-scheduler";
|
|
4
|
+
export { createCronRoutes } from "./cron-routes";
|
|
5
|
+
export { createCronStore } from "./cron-store";
|
|
6
|
+
export type { CronStore } from "./cron-store";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/cron/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Abstraction Interfaces
|
|
3
|
+
*
|
|
4
|
+
* These interfaces define the contracts that any database backend must implement
|
|
5
|
+
* to be used with Rebase. This allows for pluggable database backends like
|
|
6
|
+
* PostgreSQL, MongoDB, MySQL, etc.
|
|
7
|
+
*/
|
|
8
|
+
import { DatabaseConnection, QueryFilter, FetchCollectionOptions, SearchOptions, CountOptions, ConditionBuilder, ConditionBuilderStatic, EntityRepository, CollectionSubscriptionConfig, EntitySubscriptionConfig, RealtimeProvider, CollectionRegistryInterface, DataTransformer, BackendConfig, BackendInstance, BackendFactory } from "@rebasepro/types";
|
|
9
|
+
import { NodePgDatabase } from "drizzle-orm/node-postgres";
|
|
10
|
+
import { PgTransaction } from "drizzle-orm/pg-core";
|
|
11
|
+
/**
|
|
12
|
+
* Type representing either a direct database connection or a transaction.
|
|
13
|
+
* Used to allow services to operate within a transaction context.
|
|
14
|
+
* Note: `any` is intentional here — it represents a Drizzle client with
|
|
15
|
+
* a dynamic schema, enabling `db.query[tableName]` access without casts.
|
|
16
|
+
*/
|
|
17
|
+
export type DrizzleClient = NodePgDatabase<Record<string, unknown>> | PgTransaction<any, any, any>;
|
|
18
|
+
export type { DatabaseConnection, QueryFilter, FetchCollectionOptions, SearchOptions, CountOptions, ConditionBuilder, ConditionBuilderStatic, EntityRepository, CollectionSubscriptionConfig, EntitySubscriptionConfig, RealtimeProvider, CollectionRegistryInterface, DataTransformer, BackendConfig, BackendInstance, BackendFactory };
|
|
19
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/db/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAKH,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,eAAe,EACf,aAAa,EACb,eAAe,EACf,cAAc,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;GAKG;AAEH,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnG,YAAY,EACR,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,eAAe,EACf,aAAa,EACb,eAAe,EACf,cAAc,EACjB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email module exports
|
|
3
|
+
*/
|
|
4
|
+
export type { EmailService, EmailSendOptions, SMTPConfig, EmailConfig, PasswordResetTemplateFunction, EmailVerificationTemplateFunction, UserInvitationTemplateFunction, WelcomeEmailTemplateFunction } from "./types";
|
|
5
|
+
export { SMTPEmailService, createEmailService } from "./smtp-email-service";
|
|
6
|
+
export { getPasswordResetTemplate, getEmailVerificationTemplate, getUserInvitationTemplate, getWelcomeEmailTemplate } from "./templates";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/email/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACR,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,6BAA6B,EAC7B,iCAAiC,EACjC,8BAA8B,EAC9B,4BAA4B,EAC/B,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { EmailService, EmailSendOptions, EmailConfig } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* SMTP Email Service implementation using Nodemailer
|
|
4
|
+
*/
|
|
5
|
+
export declare class SMTPEmailService implements EmailService {
|
|
6
|
+
private transporter;
|
|
7
|
+
private config;
|
|
8
|
+
constructor(config: EmailConfig);
|
|
9
|
+
/**
|
|
10
|
+
* Check if the email service is properly configured
|
|
11
|
+
*/
|
|
12
|
+
isConfigured(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Send an email using SMTP or custom send function
|
|
15
|
+
*/
|
|
16
|
+
send(options: EmailSendOptions): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Verify SMTP connection (useful for startup checks)
|
|
19
|
+
*/
|
|
20
|
+
verifyConnection(): Promise<boolean>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create an email service from configuration
|
|
24
|
+
*/
|
|
25
|
+
export declare function createEmailService(config: EmailConfig): EmailService;
|
|
26
|
+
//# sourceMappingURL=smtp-email-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smtp-email-service.d.ts","sourceRoot":"","sources":["../../../../../server-core/src/email/smtp-email-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtE;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACjD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,WAAW;IAgB/B;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BpD;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;CAc7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAEpE"}
|