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